diff --git a/resource/sql/分权.sql b/resource/sql/分权.sql new file mode 100644 index 000000000..66283c1d3 --- /dev/null +++ b/resource/sql/分权.sql @@ -0,0 +1,134 @@ +DROP TABLE IF EXISTS hrsa_tax_agent_emp; +CREATE TABLE hrsa_tax_agent_emp +( + id bigint(20) NOT NULL COMMENT 'ID', + create_time datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + update_time datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + creator bigint(20) NULL DEFAULT NULL COMMENT '创建人id', + delete_type int(11) NULL DEFAULT 0, + tenant_key varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '租户KEY', + tax_agent_id bigint(20) NULL DEFAULT NULL COMMENT '个税扣缴义务人的主键id', + employee_id bigint(20) NULL DEFAULT NULL COMMENT '人员信息表的主键id', + employee_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (id) USING BTREE, + INDEX idx_tenant_key(tenant_key) USING BTREE, + INDEX idx_tax_agent(tax_agent_id) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +DROP TABLE IF EXISTS hrsa_tax_agent_emp_change; +CREATE TABLE hrsa_tax_agent_emp_change +( + id bigint(20) NOT NULL COMMENT 'ID', + create_time datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + update_time datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + creator bigint(20) NULL DEFAULT NULL COMMENT '创建人id', + delete_type int(11) NULL DEFAULT 0 COMMENT '是否删除', + tenant_key varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '租户KEY', + tax_agent_id bigint(20) NOT NULL COMMENT '个税扣缴义务人的主键id', + employee_id bigint(20) NOT NULL COMMENT '人员信息表的主键id', + change_type int(11) NOT NULL DEFAULT 0 COMMENT '增量类型。1:新增、2:删除', + employee_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + module_type int(4) NOT NULL DEFAULT 0, + PRIMARY KEY (id) USING BTREE, + INDEX idx_tenant_key(tenant_key) USING BTREE, + INDEX idx_tax_agent(tax_agent_id) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + + +DROP TABLE IF EXISTS hrsa_tax_agent_admin; +CREATE TABLE hrsa_tax_agent_admin +( + id bigint(20) NOT NULL COMMENT '主键', + tax_agent_id bigint(20) NOT NULL COMMENT '个税扣缴义务人的主键id', + employee_id bigint(20) NOT NULL COMMENT '人员信息表的主键id', + create_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间', + update_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0) ON UPDATE CURRENT_TIMESTAMP (0) COMMENT '更新时间', + creator bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人', + delete_type int(11) NOT NULL DEFAULT 0 COMMENT '是否已删除。0:未删除、1:已删除', + tenant_key varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '租户ID', + PRIMARY KEY (id) USING BTREE, + INDEX idx_tenant_key(tenant_key) USING BTREE, + INDEX idx_employee_id(employee_id) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '个税扣缴义务人管理员表' ROW_FORMAT = Dynamic; + +DROP TABLE IF EXISTS hrsa_tax_agent_manage_range; +CREATE TABLE hrsa_tax_agent_manage_range +( + id bigint(20) NOT NULL COMMENT '主键id', + tax_agent_id bigint(20) NOT NULL DEFAULT 0 COMMENT '个税扣缴义务人的id', + employee_id bigint(20) NOT NULL DEFAULT 0 COMMENT '人员表的主键id', + tax_agent_sub_admin_id bigint(20) NOT NULL DEFAULT 0 COMMENT '个税扣缴义务人的分管理员的id', + target_type tinyint(4) NOT NULL DEFAULT 1 COMMENT '对象类型。1:人员、2:部门、3:岗位', + target_id bigint(20) NOT NULL DEFAULT 0 COMMENT '对象id', + employee_status varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + include_type int(4) NOT NULL DEFAULT 1, + creator bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人', + create_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间', + update_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0) ON UPDATE CURRENT_TIMESTAMP (0) COMMENT '更新时间', + delete_type int(11) NOT NULL DEFAULT 0 COMMENT '是否已删除。0:未删除、1:已删除', + tenant_key varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '租户ID', + range_type int(4) NOT NULL DEFAULT 0, + PRIMARY KEY (id) USING BTREE, + INDEX idx_tenant(tenant_key) USING BTREE, + INDEX idx_tax_agent_sub_admin_id(tax_agent_sub_admin_id) USING BTREE, + INDEX idx_tenant_key(tenant_key) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '个税扣缴义务人的管理范围表' ROW_FORMAT = Dynamic; + +DROP TABLE IF EXISTS hrsa_tax_agent_base; +CREATE TABLE hrsa_tax_agent_base +( + id bigint(20) NOT NULL COMMENT '主键', + devolution_status int(11) NOT NULL DEFAULT 0 COMMENT '分权开启状态。0:关、1:开', + create_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间', + update_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0) ON UPDATE CURRENT_TIMESTAMP (0) COMMENT '更新时间', + creator bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人', + delete_type int(11) NOT NULL DEFAULT 0 COMMENT '是否已删除。0:未删除、1:已删除', + tenant_key varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '租户ID', + PRIMARY KEY (id) USING BTREE, + INDEX idx_tenant_key(tenant_key) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '个税扣缴义务人基础信息表' ROW_FORMAT = Dynamic; + +DROP TABLE IF EXISTS hrsa_tax_agent_sub_admin; +CREATE TABLE hrsa_tax_agent_sub_admin +( + id bigint(20) NOT NULL COMMENT '主键', + tax_agent_id bigint(20) NOT NULL COMMENT '个税扣缴义务人的主键id', + employee_id bigint(20) NOT NULL COMMENT '人员信息表的主键id', + description varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + create_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + update_time datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP (0) COMMENT '更新时间', + creator bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人', + delete_type int(11) NOT NULL DEFAULT 0 COMMENT '是否已删除。0:未删除、1:已删除', + tenant_key varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '租户ID', + remark text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + PRIMARY KEY (id) USING BTREE, + INDEX idx_tenant_key(tenant_key) USING BTREE, + INDEX idx_tax_agent_id(tax_agent_id) USING BTREE, + INDEX idx_employee_id(employee_id) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '个税扣缴义务人分管理员表' ROW_FORMAT = Dynamic; + +DROP TABLE IF EXISTS hrsa_tax_agent_sub_admin_emp; +CREATE TABLE hrsa_tax_agent_sub_admin_emp +( + id bigint(20) NOT NULL COMMENT 'ID', + create_time datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + update_time datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + creator bigint(20) NULL DEFAULT NULL COMMENT '创建人id', + delete_type int(11) NULL DEFAULT 0 COMMENT '是否删除', + tenant_key varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '租户KEY', + tax_agent_id bigint(20) NOT NULL DEFAULT 0 COMMENT '个税扣缴义务人的主键id', + tax_agent_sub_admin_id bigint(20) NOT NULL DEFAULT 0 COMMENT '个税扣缴义务人的分管理员的id', + employee_id bigint(20) NOT NULL DEFAULT 0 COMMENT '人员信息表的主键id', + employee_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '人员姓名', + PRIMARY KEY (id) USING BTREE, + INDEX idx_tenant_key(tenant_key) USING BTREE, + INDEX idx_tax_agent(tax_agent_id) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + + + +ALTER TABLE hrsa_tax_agent ADD COLUMN payment_agency varchar(255) NULL COMMENT '代缴机构' AFTER tenant_key; + + +ALTER TABLE hrsa_salary_sob ADD COLUMN tax_agent_id bigint(0) NULL COMMENT '个税扣缴义务人的主键id' AFTER tenant_key; + diff --git a/src/com/engine/salary/biz/AddUpDeductionBiz.java b/src/com/engine/salary/biz/AddUpDeductionBiz.java index 89b1b6212..3560bdb5f 100644 --- a/src/com/engine/salary/biz/AddUpDeductionBiz.java +++ b/src/com/engine/salary/biz/AddUpDeductionBiz.java @@ -9,12 +9,9 @@ import com.engine.salary.util.excel.ExcelUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.ibatis.session.SqlSession; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.conn.mybatis.MyBatisFactory; import weaver.general.BaseBean; -import weaver.general.Util; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -130,118 +127,10 @@ public class AddUpDeductionBiz extends BaseBean { } - /** - * 导出 - * - * @param param - * @return - */ - public XSSFWorkbook export(AddUpDeductionQueryParam param) { - - //获取操作按钮资源 - List> rowList = getExcelRowList(param); - - //获取excel - return ExcelUtil.genWorkbook(rowList, "累计专项附加扣除"); - } - /** - * 获取excel数据行 - * - * @return 导出数据行集合 - */ - private List> getExcelRowList(AddUpDeductionQueryParam param) { - //excel标题 - List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计婴幼儿照护"); - - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - List list = list(param); - final List> dataRowList = Optional.ofNullable(list) - .map(List::stream) - .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); - cellList.add(Util.null2String(dto.getUsername())); - cellList.add(Util.null2String(dto.getTaxAgentName())); - cellList.add(Util.null2String(dto.getDepartmentName())); - cellList.add(Util.null2String(dto.getMobile())); - cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getIdNo())); - cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); - return cellList; - }).collect(Collectors.toList())) - .orElse(Collections.emptyList()); - - List> rowList = new ArrayList<>(); - rowList.add(title); - rowList.addAll(dataRowList); - return rowList; - } - /** - * 导出详情列表 - * - * @param param - * @return - */ - public XSSFWorkbook exportDetail(AddUpDeductionQueryParam param) { - - //获取操作按钮资源 - List> rowList = getExcelRowDetailList(param); - - //获取excel - return ExcelUtil.genWorkbook(rowList, "累计专项附加扣除明细"); - } - - - /** - * 导出详情 - * - * @param param - * @return - */ - private List> getExcelRowDetailList(AddUpDeductionQueryParam param) { - - //excel标题 - List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "工号", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计婴幼儿照护"); - - - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - //查询详细信息 - List list = recordList(param); - final List> dataRowList = Optional.ofNullable(list) - .map(List::stream) - .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); - cellList.add(Util.null2String(dto.getUsername())); - cellList.add(Util.null2String(dto.getDeclareMonth() == null ? "" : formatter.format(dto.getDeclareMonth()))); - cellList.add(Util.null2String(dto.getTaxAgentName())); - cellList.add(Util.null2String(dto.getDepartmentName())); - cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); - return cellList; - }).collect(Collectors.toList())) - .orElse(Collections.emptyList()); - - List> rowList = new ArrayList<>(); - rowList.add(title); - rowList.addAll(dataRowList); - return rowList; - } /** * 处理导入数据 diff --git a/src/com/engine/salary/biz/AddUpSituationBiz.java b/src/com/engine/salary/biz/AddUpSituationBiz.java index bcae1b79e..d110adda3 100644 --- a/src/com/engine/salary/biz/AddUpSituationBiz.java +++ b/src/com/engine/salary/biz/AddUpSituationBiz.java @@ -9,12 +9,9 @@ import com.engine.salary.util.excel.ExcelUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.ibatis.session.SqlSession; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.conn.mybatis.MyBatisFactory; import weaver.general.BaseBean; -import weaver.general.Util; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -32,7 +29,6 @@ public class AddUpSituationBiz extends BaseBean { try { AddUpSituationMapper mapper = sqlSession.getMapper(AddUpSituationMapper.class); return mapper.list(param); - } finally { sqlSession.close(); } @@ -130,142 +126,7 @@ public class AddUpSituationBiz extends BaseBean { } - /** - * 导出 - * - * @param param - * @return - */ - public XSSFWorkbook export(AddUpSituationQueryParam param) { - //获取操作按钮资源 - List> rowList = getExcelRowList(param); - - //获取excel - return ExcelUtil.genWorkbook(rowList, "累计情况"); - } - - - /** - * 获取excel数据行 - * - * @return 导出数据行集合 - */ - private List> getExcelRowList(AddUpSituationQueryParam param) { - // excel标题 - final List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "累计收入额", "累计减除费用", - "累计社保个人合计", "累计公积金个人合计", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", - "累计大病医疗", "累计企业(职业)年金及其他福利", "累计其他扣除", "累计免税收入", "累计准予扣除的捐赠额", "累计减免税额", "累计已预扣预缴税额", "累计婴幼儿照护"); - - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - List list = list(param); - final List> dataRowList = Optional.ofNullable(list) - .map(List::stream) - .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); - cellList.add(Util.null2String(dto.getUsername())); - cellList.add(Util.null2String(dto.getTaxAgentName())); - cellList.add(Util.null2String(dto.getDepartmentName())); - cellList.add(Util.null2String(dto.getMobile())); - cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getIdNo())); - cellList.add(dto.getHiredate() == null ? "" : formatter.format(dto.getHiredate())); - cellList.add(String.valueOf(dto.getAddUpIncome())); - cellList.add(String.valueOf(dto.getAddUpSubtraction())); - cellList.add(String.valueOf(dto.getAddUpSocialSecurityTotal())); - cellList.add(String.valueOf(dto.getAddUpAccumulationFundTotal())); - cellList.add(String.valueOf(dto.getAddUpChildEducation())); - cellList.add(String.valueOf(dto.getAddUpContinuingEducation())); - cellList.add(String.valueOf(dto.getAddUpHousingLoanInterest())); - cellList.add(String.valueOf(dto.getAddUpHousingRent())); - cellList.add(String.valueOf(dto.getAddUpSupportElderly())); - cellList.add(String.valueOf(dto.getAddUpIllnessMedical())); - cellList.add(String.valueOf(dto.getAddUpEnterpriseAndOther())); - cellList.add(String.valueOf(dto.getAddUpOtherDeduction())); - cellList.add(String.valueOf(dto.getAddUpTaxExemptIncome())); - cellList.add(String.valueOf(dto.getAddUpAllowedDonation())); - cellList.add(String.valueOf(dto.getAddUpTaxSavings())); - cellList.add(String.valueOf(dto.getAddUpAdvanceTax())); - cellList.add(String.valueOf(dto.getAddUpInfantCare())); - return cellList; - }).collect(Collectors.toList())) - .orElse(Collections.emptyList()); - - List> rowList = new ArrayList<>(); - rowList.add(title); - rowList.addAll(dataRowList); - return rowList; - } - - - /** - * 导出详情列表 - * - * @param param - * @return - */ - public XSSFWorkbook exportDetail(AddUpSituationQueryParam param) { - - //获取操作按钮资源 - List> rowList = getExcelRowDetailList(param); - - //获取excel - return ExcelUtil.genWorkbook(rowList, "累计情况明细"); - } - - - /** - * 导出详情 - * - * @param param - * @return - */ - private List> getExcelRowDetailList(AddUpSituationQueryParam param) { - - //excel标题 - List title = Arrays.asList("姓名", "税款所属期", "个税扣缴义务人", "部门", "手机号", "工号", "累计收入额", "累计减除费用", "累计社保个人合计", - "累计公积金个人合计", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计企业(职业)年金及其他福利", - "累计其他扣除", "累计免税收入", "累计准予扣除的捐赠额", "累计减免税额", "累计已预扣预缴税额", "累计婴幼儿照护"); - - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - //查询详细信息 - List list = recordList(param); - final List> dataRowList = Optional.ofNullable(list) - .map(List::stream) - .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); - cellList.add(Util.null2String(dto.getUsername())); - cellList.add(Util.null2String(dto.getTaxYearMonth() == null ? "" : formatter.format(dto.getTaxYearMonth()))); - cellList.add(Util.null2String(dto.getTaxAgentName())); - cellList.add(Util.null2String(dto.getDepartmentName())); - cellList.add(Util.null2String(dto.getMobile())); - cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getAddUpIncome())); - cellList.add(Util.null2String(dto.getAddUpSubtraction())); - cellList.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); - cellList.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); - cellList.add(Util.null2String(dto.getAddUpOtherDeduction())); - cellList.add(Util.null2String(dto.getAddUpTaxExemptIncome())); - cellList.add(Util.null2String(dto.getAddUpAllowedDonation())); - cellList.add(Util.null2String(dto.getAddUpTaxSavings())); - cellList.add(Util.null2String(dto.getAddUpAdvanceTax())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); - return cellList; - }).collect(Collectors.toList())) - .orElse(Collections.emptyList()); - - List> rowList = new ArrayList<>(); - rowList.add(title); - rowList.addAll(dataRowList); - return rowList; - } public void handleImportData(List pos) { diff --git a/src/com/engine/salary/biz/EmployBiz.java b/src/com/engine/salary/biz/EmployBiz.java index 08fdb9ec8..338738087 100644 --- a/src/com/engine/salary/biz/EmployBiz.java +++ b/src/com/engine/salary/biz/EmployBiz.java @@ -1,7 +1,9 @@ package com.engine.salary.biz; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; +import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.mapper.datacollection.EmployMapper; import org.apache.ibatis.session.SqlSession; @@ -93,4 +95,26 @@ public class EmployBiz extends BaseBean { sqlSession.close(); } } + + public List getDeptInfoList(List departmentIds) { + + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + EmployMapper mapper = sqlSession.getMapper(EmployMapper.class); + return mapper.getDeptInfoList(departmentIds); + } finally { + sqlSession.close(); + } + } + + + public List getSubCompanyInfoList(List subDepartmentIds) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + EmployMapper mapper = sqlSession.getMapper(EmployMapper.class); + return mapper.getSubCompanyInfoList(subDepartmentIds); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 128d21b61..1b1c62705 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -28,15 +28,13 @@ import com.engine.salary.mapper.siaccount.SIAccountDetailTempMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; -import com.engine.salary.service.SIAccountService; -import com.engine.salary.service.impl.SIAccountServiceImpl; import com.engine.salary.util.SalaryAssert; 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.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; @@ -45,9 +43,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.SqlSession; import org.springframework.beans.BeanUtils; -import org.springframework.transaction.annotation.Transactional; import weaver.conn.mybatis.MyBatisFactory; -import weaver.hrm.User; import java.math.BigDecimal; import java.util.*; @@ -74,7 +70,7 @@ public class SIAccountBiz extends Service{ SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { InsuranceAccountBatchMapper insuranceAccountBatchMapper = sqlSession.getMapper(InsuranceAccountBatchMapper.class); - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List list = insuranceAccountBatchMapper.list(queryParam); PageInfo pageInfo = new PageInfo<>(list,InsuranceAccountBatchPO.class); return pageInfo; @@ -88,7 +84,7 @@ public class SIAccountBiz extends Service{ SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { InsuranceAccountDetailMapper insuranceAccountDetailMapper = sqlSession.getMapper(InsuranceAccountDetailMapper.class); - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); queryParam.setPaymentStatus(PaymentStatusEnum.COMMON.getValue()); List list = insuranceAccountDetailMapper.list(queryParam); PageInfo pageInfo = new PageInfo<>(list,InsuranceAccountDetailPO.class); @@ -1349,7 +1345,7 @@ public class SIAccountBiz extends Service{ public PageInfo overView(InsuranceAccountDetailParam queryParam) { -// PageUtil.start(queryParam.getCurrent(),queryParam.getPageSize()); +// SalaryPageUtil.start(queryParam.getCurrent(),queryParam.getPageSize()); List insuranceAccountDetailPOS = MapperProxyFactory.getProxy(InsuranceAccountDetailMapper.class).selectList(queryParam.getBillMonth()); //获取扣缴义务人信息 diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 7ab2fbddd..7ed963ee3 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -9,7 +9,6 @@ import com.api.browser.bean.SearchConditionItem; import com.api.browser.bean.SearchConditionOption; import com.api.browser.util.ConditionFactory; import com.api.browser.util.ConditionType; -import com.cloudstore.eccom.constant.WeaInputType; import com.cloudstore.eccom.pc.table.WeaTable; import com.cloudstore.eccom.pc.table.WeaTableCheckboxpopedom; import com.cloudstore.eccom.pc.table.WeaTableColumn; @@ -44,6 +43,7 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageUtil; import com.google.common.collect.Maps; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -611,7 +611,7 @@ public class SIArchivesBiz { Map datas = new HashMap<>(16); try { SocialSchemeMapper socialSchemeMapper = sqlSession.getMapper(SocialSchemeMapper.class); - PageUtil.start(param.getCurrent(), param.getPageSize()); + SalaryPageUtil.start(param.getCurrent(), param.getPageSize()); // List page = socialSchemeMapper.listPageEmployeePOS(param); List page = socialSchemeMapper.queryEmployeeList(param); PageInfo pageInfo = new PageInfo<>(page, InsuranceArchivesEmployeePO.class); diff --git a/src/com/engine/salary/biz/SalaryArchiveBiz.java b/src/com/engine/salary/biz/SalaryArchiveBiz.java index 796ec2a5f..5f2483cf2 100644 --- a/src/com/engine/salary/biz/SalaryArchiveBiz.java +++ b/src/com/engine/salary/biz/SalaryArchiveBiz.java @@ -8,6 +8,7 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -30,7 +31,7 @@ public class SalaryArchiveBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalaryArchiveMapper mapper = sqlSession.getMapper(SalaryArchiveMapper.class); - PageUtil.start(param.getCurrent(), param.getPageSize()); + SalaryPageUtil.start(param.getCurrent(), param.getPageSize()); List list = mapper.list(param); PageInfo pageInfo = new PageInfo(list, SalaryArchiveListDTO.class); return pageInfo; diff --git a/src/com/engine/salary/biz/SalaryArchiveItemBiz.java b/src/com/engine/salary/biz/SalaryArchiveItemBiz.java index 9fde456ff..22e99cc95 100644 --- a/src/com/engine/salary/biz/SalaryArchiveItemBiz.java +++ b/src/com/engine/salary/biz/SalaryArchiveItemBiz.java @@ -9,6 +9,7 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -129,7 +130,7 @@ public class SalaryArchiveItemBiz { public PageInfo salaryItemAdjustRecordListPage(SalaryItemAdjustRecordQueryParam queryParam, List salaryItemIds) { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class); List salaryItemAdjustRecordListDTOS = mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds); PageInfo page = new PageInfo(salaryItemAdjustRecordListDTOS, SalaryItemAdjustRecordListDTO.class); diff --git a/src/com/engine/salary/biz/SalaryItemBiz.java b/src/com/engine/salary/biz/SalaryItemBiz.java index ce9d120e7..9c7611ba4 100644 --- a/src/com/engine/salary/biz/SalaryItemBiz.java +++ b/src/com/engine/salary/biz/SalaryItemBiz.java @@ -8,6 +8,7 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -98,7 +99,7 @@ public class SalaryItemBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalaryItemMapper mapper = sqlSession.getMapper(SalaryItemMapper.class); - PageUtil.start(searchParam.getCurrent(), searchParam.getPageSize()); + SalaryPageUtil.start(searchParam.getCurrent(), searchParam.getPageSize()); List salaryItemPOList = mapper.listByParam(searchParam); return new PageInfo(salaryItemPOList); } finally { diff --git a/src/com/engine/salary/biz/SalaryRoleBiz.java b/src/com/engine/salary/biz/SalaryRoleBiz.java new file mode 100644 index 000000000..1da78f715 --- /dev/null +++ b/src/com/engine/salary/biz/SalaryRoleBiz.java @@ -0,0 +1,11 @@ +package com.engine.salary.biz; + +import weaver.general.BaseBean; + +public class SalaryRoleBiz { + public String getAllAdminRoleId() { + BaseBean baseBean = new BaseBean(); + String salaryAdminRoleId = baseBean.getPropValue("hrmSalary", "chiefAdminRoleId"); + return salaryAdminRoleId; + } +} diff --git a/src/com/engine/salary/biz/SalarySobCheckRuleBiz.java b/src/com/engine/salary/biz/SalarySobCheckRuleBiz.java index f78422684..71d29bccb 100644 --- a/src/com/engine/salary/biz/SalarySobCheckRuleBiz.java +++ b/src/com/engine/salary/biz/SalarySobCheckRuleBiz.java @@ -7,6 +7,7 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -99,7 +100,7 @@ public class SalarySobCheckRuleBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalarySobCheckRuleMapper mapper = sqlSession.getMapper(SalarySobCheckRuleMapper.class); - PageUtil.start(param.getCurrent(), param.getPageSize()); + SalaryPageUtil.start(param.getCurrent(), param.getPageSize()); List list = mapper.listByParam(param); PageInfo pageInfo = new PageInfo(list, SalarySobCheckRulePO.class); return pageInfo; diff --git a/src/com/engine/salary/cmd/TaxAgent/TaxAgentGetFromCmd.java b/src/com/engine/salary/cmd/TaxAgent/TaxAgentGetFromCmd.java deleted file mode 100644 index 98ea603ff..000000000 --- a/src/com/engine/salary/cmd/TaxAgent/TaxAgentGetFromCmd.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.engine.salary.cmd.TaxAgent; - -import com.api.browser.bean.SearchConditionGroup; -import com.api.browser.bean.SearchConditionItem; -import com.api.browser.util.ConditionFactory; -import com.api.browser.util.ConditionType; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import weaver.hrm.User; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class TaxAgentGetFromCmd extends AbstractCommonCommand> { - - public TaxAgentGetFromCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - //定义返回数据 - Map apidatas = new HashMap(); - - if (null == user) { - apidatas.put("hasRight", false); - return apidatas; - } - apidatas.put("hasRight", true); - - ConditionFactory conditionFactory = new ConditionFactory(user); - - List addGroups = new ArrayList(); - List inputItems = new ArrayList(); - - //名称 - SearchConditionItem nameInput = conditionFactory.createCondition(ConditionType.INPUT, 502327, "name"); - nameInput.setColSpan(1);//定义一行显示条件数,默认值为2,当值为1时标识该条件单独占一行 - nameInput.setFieldcol(12); //条件输入框所占宽度,默认值18 - nameInput.setViewAttr(3); // 编辑权限 1:只读,2:可编辑, 3:必填 默认2 - nameInput.setLength(10); // 设置输入长度 - nameInput.setLabel("名称"); //设置文本值 这个将覆盖多语言标签的值 - nameInput.setRules("required"); //设置字段填入规则 - inputItems.add(nameInput); - - //描述 - SearchConditionItem descriptionInput = conditionFactory.createCondition(ConditionType.INPUT, 502327, "description"); - descriptionInput.setColSpan(1);//定义一行显示条件数,默认值为2,当值为1时标识该条件单独占一行 - descriptionInput.setFieldcol(12); //条件输入框所占宽度,默认值18 - descriptionInput.setViewAttr(3); // 编辑权限 1:只读,2:可编辑, 3:必填 默认2 - descriptionInput.setLength(10); // 设置输入长度 - descriptionInput.setLabel("描述"); //设置文本值 这个将覆盖多语言标签的值 - inputItems.add(nameInput); - - - addGroups.add(new SearchConditionGroup("", true, inputItems)); - - apidatas.put("condition", addGroups ); - - return apidatas; - } - - -} diff --git a/src/com/engine/salary/cmd/TaxAgent/TaxAgentListCmd.java b/src/com/engine/salary/cmd/TaxAgent/TaxAgentListCmd.java deleted file mode 100644 index cd28835da..000000000 --- a/src/com/engine/salary/cmd/TaxAgent/TaxAgentListCmd.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.engine.salary.cmd.TaxAgent; - -import com.cloudstore.eccom.result.WeaResultMsg; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.component.SalaryWeaTable; -import com.engine.salary.entity.taxrate.vo.TaxAgentTableVO; -import com.engine.salary.util.db.DBType; -import org.apache.commons.lang3.StringUtils; -import weaver.conn.RecordSet; -import weaver.hrm.User; - -import java.util.Map; - -public class TaxAgentListCmd extends AbstractCommonCommand> { - - public TaxAgentListCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - - SalaryWeaTable table = new SalaryWeaTable(user, TaxAgentTableVO.class); - - //sql条件 - String sqlWhere = makeSqlWhere(params); - table.setSqlwhere(sqlWhere); - - WeaResultMsg result = new WeaResultMsg(false); - result.putAll(table.makeDataResult()); - result.success(); - return result.getResultMap(); - } - - /** - * sql条件 - * - * @param params - * @return - */ - private String makeSqlWhere(Map params) { - DBType dbType = DBType.get(new RecordSet().getDBType()); - String sqlWhere = "where delete_Type = 0"; - //模糊查询 - String name = (String) params.get("name"); - if (StringUtils.isNotBlank(name)) { - sqlWhere += " AND name " + dbType.like(name); - } - return sqlWhere; - } - - -} diff --git a/src/com/engine/salary/cmd/TaxAgent/TaxAgentSaveCmd.java b/src/com/engine/salary/cmd/TaxAgent/TaxAgentSaveCmd.java deleted file mode 100644 index 5665e2269..000000000 --- a/src/com/engine/salary/cmd/TaxAgent/TaxAgentSaveCmd.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.engine.salary.cmd.TaxAgent; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.entity.taxrate.TaxAgent; -import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.mapper.TaxAgentMapper; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.ibatis.session.SqlSession; -import weaver.conn.mybatis.MyBatisFactory; -import weaver.general.Util; -import weaver.hrm.User; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class TaxAgentSaveCmd extends AbstractCommonCommand> { - - public TaxAgentSaveCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(16); - SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); - try { - TaxAgentMapper mapper = sqlSession.getMapper(TaxAgentMapper.class); - - List list = mapper.listByName(Util.null2String(this.params.get("name"))); - if (CollectionUtils.isNotEmpty(list)) { - throw new SalaryRunTimeException("名称不允许重复"); - } - - TaxAgent taxAgent = TaxAgent.convertToPO(params, (long) user.getUID()); - mapper.insertIgnoreNull(taxAgent); - - sqlSession.commit(); - } finally { - sqlSession.close(); - } - return apidatas; - } - - -} diff --git a/src/com/engine/salary/cmd/TaxAgent/TaxAgentSelectListCmd.java b/src/com/engine/salary/cmd/TaxAgent/TaxAgentSelectListCmd.java deleted file mode 100644 index 116401219..000000000 --- a/src/com/engine/salary/cmd/TaxAgent/TaxAgentSelectListCmd.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.engine.salary.cmd.TaxAgent; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.entity.taxrate.TaxAgent; -import com.engine.salary.entity.taxrate.param.TaxAgentQueryParam; -import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.mapper.TaxAgentMapper; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.compress.utils.Lists; -import org.apache.ibatis.session.SqlSession; -import weaver.conn.mybatis.MyBatisFactory; -import weaver.hrm.User; - -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class TaxAgentSelectListCmd extends AbstractCommonCommand> { - - public TaxAgentSelectListCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(16); - List> list = Lists.newArrayList(); - SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); - try { - TaxAgentMapper taxAgentMapper = sqlSession.getMapper(TaxAgentMapper.class); - - List taxAgents = taxAgentMapper.listAll(); - - taxAgents.forEach(m -> { - Map map = new HashMap<>(2); - map.put("id", String.valueOf(m.getId())); - map.put("content", m.getName()); - list.add(map); - }); - - apidatas.put("list", list); - - sqlSession.commit(); - } finally { - sqlSession.close(); - } - - return apidatas; - } - - -} diff --git a/src/com/engine/salary/cmd/TaxAgent/TaxAgentUpdateCmd.java b/src/com/engine/salary/cmd/TaxAgent/TaxAgentUpdateCmd.java deleted file mode 100644 index a675c8fe2..000000000 --- a/src/com/engine/salary/cmd/TaxAgent/TaxAgentUpdateCmd.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.engine.salary.cmd.TaxAgent; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.entity.taxrate.TaxAgent; -import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.mapper.TaxAgentMapper; -import org.apache.commons.lang3.StringUtils; -import org.apache.ibatis.session.SqlSession; -import org.springframework.beans.BeanUtils; -import weaver.conn.mybatis.MyBatisFactory; -import weaver.general.Util; -import weaver.hrm.User; - -import java.util.*; - -public class TaxAgentUpdateCmd extends AbstractCommonCommand> { - - public TaxAgentUpdateCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(16); - String name = Util.null2String(params.get("name")); - if (StringUtils.isBlank(name)) { - throw new SalaryRunTimeException("名称必填"); - } - Long id = Long.valueOf((Util.null2String(params.get("id")))); - if (params.get("id") == null) { - throw new SalaryRunTimeException("参数错误"); - } - - SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); - try { - TaxAgentMapper taxAgentMapper = sqlSession.getMapper(TaxAgentMapper.class); - - TaxAgent taxAgent = taxAgentMapper.getById(id); - if (taxAgent == null) { - throw new SalaryRunTimeException("个税扣缴义务人不存在"); - } - List individualTaxWithholdingAgents = taxAgentMapper.listByName(name); - boolean nameExist = individualTaxWithholdingAgents.stream().anyMatch(e -> !Objects.equals(e.getId(), id)); - if (nameExist) { - throw new SalaryRunTimeException("名称不允许重复"); - } - - TaxAgent taxAgentNew = new TaxAgent(); - BeanUtils.copyProperties(taxAgent, taxAgentNew); - taxAgentNew.setName(name); - taxAgentNew.setDescription(Util.null2String(params.get("description"))); - taxAgentNew.setUpdateTime(new Date()); - - taxAgentMapper.updateIgnoreNull(taxAgentNew); - -// taxAgentMapper.updateById(taxAgentNew); -// // todo 记录日志 -// SalaryLoggerUtil.recordUpdateSingleLog(taxAgentLoggerTemplate, -// taxAgent.getId(), -// taxAgentNew.getName(), -// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 93767, "编辑个税扣缴义务人"), -// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 93767, "编辑个税扣缴义务人"), -// taxAgent, -// taxAgentNew); - - sqlSession.commit(); - } finally { - sqlSession.close(); - } - - return apidatas; - } - - -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpDeductionExportCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpDeductionExportCmd.java deleted file mode 100644 index 8db98484f..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpDeductionExportCmd.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpDeductionBiz; -import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import weaver.hrm.User; - -import java.util.Map; - -public class AddUpDeductionExportCmd extends AbstractCommonCommand { - - public AddUpDeductionExportCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public XSSFWorkbook execute(CommandContext commandContext) { - AddUpDeductionQueryParam addUpDeductionQueryParam = (AddUpDeductionQueryParam) params.get("addUpDeductionQueryParam"); - - AddUpDeductionBiz addUpDeductionBiz = new AddUpDeductionBiz(); - XSSFWorkbook workbook = addUpDeductionBiz.export(addUpDeductionQueryParam); - - return workbook; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpDeductionExportDetailCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpDeductionExportDetailCmd.java deleted file mode 100644 index 6a5370981..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpDeductionExportDetailCmd.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpDeductionBiz; -import com.engine.salary.biz.EmployBiz; -import com.engine.salary.entity.datacollection.AddUpDeduction; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; -import com.engine.salary.exception.SalaryRunTimeException; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import weaver.hrm.User; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class AddUpDeductionExportDetailCmd extends AbstractCommonCommand { - - public AddUpDeductionExportDetailCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public XSSFWorkbook execute(CommandContext commandContext) { - AddUpDeductionQueryParam queryParam = (AddUpDeductionQueryParam) params.get("addUpDeductionQueryParam"); - EmployBiz employBiz = new EmployBiz(); - AddUpDeductionBiz biz = new AddUpDeductionBiz(); - - Long id = queryParam.getAccumulatedSpecialAdditionalDeductionId(); - if (id == null) { - throw new SalaryRunTimeException("id不能为空"); - } - - AddUpDeduction po = biz.getById(id); - if (po == null) { - throw new SalaryRunTimeException(String.format("累计专项附加扣除不存在"+"[id:%s]", id)); - } - - List employeeList = employBiz.getEmployeeByIds(Collections.singletonList(po.getEmployeeId())); - if (CollectionUtils.isEmpty(employeeList)) { - throw new SalaryRunTimeException("员工信息不存在"); - } - - //查询参数 - queryParam.setEmployeeId(po.getEmployeeId()); - //申报月份 - List declareMonth = queryParam.getDeclareMonth(); - if (CollectionUtils.isNotEmpty(declareMonth)) { - queryParam.setDeclareMonth(declareMonth.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); - } - - XSSFWorkbook workbook = biz.exportDetail(queryParam); - - return workbook; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpDeductionGetDetailListCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpDeductionGetDetailListCmd.java deleted file mode 100644 index c9110e258..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpDeductionGetDetailListCmd.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.cloudstore.eccom.result.WeaResultMsg; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpDeductionBiz; -import com.engine.salary.biz.EmployBiz; -import com.engine.salary.component.SalaryWeaTable; -import com.engine.salary.entity.datacollection.AddUpDeduction; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.datacollection.dto.AddUpDeductionRecordDTO; -import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; -import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.util.db.DBType; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import weaver.conn.RecordSet; -import weaver.hrm.User; - -import java.util.*; -import java.util.stream.Collectors; - -public class AddUpDeductionGetDetailListCmd extends AbstractCommonCommand> { - - public AddUpDeductionGetDetailListCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - - EmployBiz employBiz = new EmployBiz(); - AddUpDeductionBiz biz = new AddUpDeductionBiz(); - - AddUpDeductionQueryParam queryParam = (AddUpDeductionQueryParam) params.get("queryParam"); - if (queryParam == null) { - throw new SalaryRunTimeException("参数异常"); - } - - Long id = queryParam.getAccumulatedSpecialAdditionalDeductionId(); - if (id == null) { - throw new SalaryRunTimeException("累计专项附加扣除id不能为空"); - } - - AddUpDeduction po = biz.getById(id); - if (po == null) { - throw new SalaryRunTimeException(String.format("累计专项附加扣除不存在[id:%s]", id)); - } - - List employeeList = employBiz.getEmployeeByIds(Collections.singletonList(po.getEmployeeId())); - if (CollectionUtils.isEmpty(employeeList)) { - throw new SalaryRunTimeException("员工信息不存在"); - } - - //查询参数 - queryParam.setEmployeeId(po.getEmployeeId()); - //申报月份 - List declareMonth = queryParam.getDeclareMonth(); - if (CollectionUtils.isNotEmpty(declareMonth)) { - queryParam.setDeclareMonth(declareMonth.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); - } - - String fields = " t1.id," + - " t1.declare_month as declareMonth," + - " t1.employee_id as employeeId," + - " e.lastname as username," + - " d.departmentname AS departmentName," + - " e.mobile," + - " e.workcode as jobNum," + - " e.companystartdate as hiredate," + - " t2.name AS taxAgentName," + - " t1.add_up_child_education as addUpChildEducation," + - " t1.add_up_continuing_education as addUpContinuingEducation," + - " t1.add_up_housing_loan_interest as addUpHousingLoanInterest," + - " t1.add_up_housing_rent as addUpHousingRent," + - " t1.add_up_support_elderly as addUpSupportElderly," + - " t1.add_up_illness_medical as addUpIllnessMedical," + - " t1.add_up_infant_care as addUpInfantCare"; - - String fromSql = " FROM" + - " hrsa_add_up_deduction t1" + - " LEFT JOIN hrsa_tax_agent t2 ON t1.tax_agent_id = t2.id" + - " LEFT JOIN hrmresource e ON t1.employee_id = e.id" + - " LEFT JOIN hrmdepartment d ON e.departmentid = d.id"; - - SalaryWeaTable table = new SalaryWeaTable(user, AddUpDeductionRecordDTO.class); - table.setBackfields(fields); - table.setSqlform(fromSql); - table.setSqlwhere(makeSqlWhere(queryParam)); - table.setSqlorderby("t1.declare_month DESC"); - table.setSqlprimarykey("t1.id"); - table.setSqlisdistinct("false"); - - - WeaResultMsg result = new WeaResultMsg(false); - result.putAll(table.makeDataResult()); - result.success(); - return result.getResultMap(); - } - - - private String makeSqlWhere(AddUpDeductionQueryParam queryParam) { - DBType dbType = DBType.get(new RecordSet().getDBType()); - String sqlWhere = "t1.delete_type = 0 AND t2.delete_type = 0"; - Collection ids = queryParam.getIds(); - if (CollectionUtils.isNotEmpty(ids)) { - String idsStr = ids.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND t1.id IN (" + idsStr + ")"; - } - Long employeeId = queryParam.getEmployeeId(); - if (employeeId != null) { - sqlWhere += " AND t1.employee_id =" + employeeId; - } - String keyword = queryParam.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - sqlWhere += " AND (" + - " e.lastname " + dbType.like(keyword) + - " OR d.departmentname " + dbType.like(keyword) + - " OR e.workcode " + dbType.like(keyword) + - " )"; - } - // 申报月份 - List declareMonths = queryParam.getDeclareMonth(); - if (CollectionUtils.isNotEmpty(declareMonths)) { - if (declareMonths.size() == 1) { - sqlWhere += " AND t1.declare_month = '" + declareMonths.get(0) + ","; - } - if (declareMonths.size() == 2) { - sqlWhere += " AND (t1.declare_month BETWEEN '" + declareMonths.get(0) + "' AND '" + declareMonths.get(1) + "')"; - } - } - //姓名 - String username = queryParam.getUsername(); - if (StringUtils.isNotBlank(username)) { - sqlWhere += " AND e.lastname " + dbType.like(username); - } - //个税扣缴义务人 - Long taxAgentId = queryParam.getTaxAgentId(); - if (taxAgentId != null) { - sqlWhere += " AND t1.tax_agent_id = " + taxAgentId; - } - //部门 - List departmentIds = queryParam.getDepartmentIds(); - if (CollectionUtils.isNotEmpty(departmentIds)) { - String departmentStrIds = departmentIds.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND d.id IN (" + departmentStrIds + ")"; - } - //工号 - String jobNum = queryParam.getJobNum(); - if (StringUtils.isNotBlank(jobNum)) { - sqlWhere += " AND e.workcode " + dbType.like(jobNum); - } - //入职日期 - List hiredate = queryParam.getHiredate(); - if (CollectionUtils.isNotEmpty(hiredate) && hiredate.size() == 2) { - sqlWhere += " AND (e.companystartdate BETWEEN " + hiredate.get(0) + " AND " + hiredate.get(1) + ")"; - } - //手机号 - String mobile = queryParam.getMobile(); - if (StringUtils.isNotBlank(mobile)) { - sqlWhere += " AND e.mobile " + dbType.like(mobile); - } - - return sqlWhere; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpDeductionGetSearchConditionCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpDeductionGetSearchConditionCmd.java deleted file mode 100644 index 3cf8ccd29..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpDeductionGetSearchConditionCmd.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.api.browser.bean.SearchConditionGroup; -import com.api.browser.bean.SearchConditionItem; -import com.api.browser.bean.SearchConditionOption; -import com.api.browser.util.ConditionFactory; -import com.api.browser.util.ConditionType; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import weaver.hrm.User; -import weaver.systeminfo.SystemEnv; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class AddUpDeductionGetSearchConditionCmd extends AbstractCommonCommand> { - - public AddUpDeductionGetSearchConditionCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(); - ConditionFactory conditionFactory = new ConditionFactory(user); - - //条件组 - List addGroups = new ArrayList(); - - List conditionItems = new ArrayList(); - - //文本输入框 - SearchConditionItem username = conditionFactory.createCondition(ConditionType.INPUT,25034, "username"); - username.setInputType("input"); - username.setColSpan(2);//定义一行显示条件数,默认值为2,当值为1时标识该条件单独占一行 - username.setFieldcol(16); //条件输入框所占宽度,默认值18 - username.setLabelcol(8); - username.setViewAttr(2); // 编辑权限 1:只读,2:可编辑, 3:必填 默认2 - username.setLabel("姓名"); //设置文本值 这个将覆盖多语言标签的值 - conditionItems.add(username); - - - SearchConditionItem departmentName = conditionFactory.createCondition(ConditionType.BROWSER,502227,"departmentIds","4"); - departmentName.setInputType("browser"); - departmentName.setColSpan(2); - departmentName.setFieldcol(16); - departmentName.setLabelcol(8); - departmentName.setViewAttr(2); - departmentName.setIsQuickSearch(false); - departmentName.setLabel("部门"); - conditionItems.add(departmentName); - - - SearchConditionItem jobNum = conditionFactory.createCondition(ConditionType.INPUT,25034, "jobNum"); - jobNum.setInputType("input"); - jobNum.setColSpan(2); - jobNum.setFieldcol(16); - jobNum.setLabelcol(8); - jobNum.setViewAttr(2); - jobNum.setLabel("工号"); - conditionItems.add(jobNum); - - - - SearchConditionItem idNo = conditionFactory.createCondition(ConditionType.INPUT,25034, "idNo"); - idNo.setInputType("input"); - idNo.setColSpan(2); - idNo.setFieldcol(16); - idNo.setLabelcol(8); - idNo.setViewAttr(2); - idNo.setLabel("证件号码"); - conditionItems.add(idNo); - - //日期范围选项 - List dateOptions = new ArrayList(); - dateOptions.add(new SearchConditionOption("6", SystemEnv.getHtmlLabelName(32530, user.getLanguage()),true));//指定日期范围(必须为6) - SearchConditionItem hiredate = conditionFactory.createCondition(ConditionType.RANGEPICKER, 18648, new String[]{"hiredate","hiredate"}); - hiredate.setInputType("rangepicker"); - hiredate.setFormat("yyyy-MM-dd"); - hiredate.setFieldcol(16); - hiredate.setLabelcol(8); - hiredate.setViewAttr(2); - hiredate.setLabel("入职日期"); - hiredate.setOptions(dateOptions); - conditionItems.add(hiredate); - - - SearchConditionItem mobile = conditionFactory.createCondition(ConditionType.INPUT,25034, "mobile"); - mobile.setInputType("input"); - mobile.setColSpan(2); - mobile.setFieldcol(16); - mobile.setLabelcol(8); - mobile.setViewAttr(2); - mobile.setLabel("手机号"); - conditionItems.add(mobile); - - addGroups.add(new SearchConditionGroup("常用条件",true,conditionItems)); - - apidatas.put("condition",addGroups); - return apidatas; - } - -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpDeductionListCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpDeductionListCmd.java deleted file mode 100644 index e38a7a8ec..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpDeductionListCmd.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.cloudstore.eccom.result.WeaResultMsg; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.component.SalaryWeaTable; -import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO; -import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import weaver.hrm.User; - -import java.util.Collection; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class AddUpDeductionListCmd extends AbstractCommonCommand> { - - public AddUpDeductionListCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - - String fields = " t1.id," + - " t1.declare_month as declareMonth," + - " t1.employee_id as employeeId," + - " e.lastname as username," + - " d.departmentname AS departmentName," + - " e.mobile," + - " e.workcode as jobNum," + - " e.companystartdate as hiredate," + - " t2.name AS taxAgentName," + - " t1.add_up_child_education as addUpChildEducation," + - " t1.add_up_continuing_education as addUpContinuingEducation," + - " t1.add_up_housing_loan_interest as addUpHousingLoanInterest," + - " t1.add_up_housing_rent as addUpHousingRent," + - " t1.add_up_support_elderly as addUpSupportElderly,"+ - " t1.add_up_illness_medical as addUpIllnessMedical,"+ - " t1.add_up_infant_care as addUpInfantCare"; - - String fromSql = " FROM" + - " hrsa_add_up_deduction t1" + - " LEFT JOIN hrsa_tax_agent t2 ON t1.tax_agent_id = t2.id" + - " LEFT JOIN hrmresource e ON t1.employee_id = e.id" + - " LEFT JOIN hrmdepartment d ON e.departmentid = d.id"; - - SalaryWeaTable table = new SalaryWeaTable(user, AddUpDeductionDTO.class); - table.setBackfields(fields); - table.setSqlform(fromSql); - table.setSqlwhere(makeSqlWhere()); - table.setSqlorderby("t1.id DESC"); - table.setSqlprimarykey("t1.id"); - table.setSqlisdistinct("false"); - - WeaResultMsg result = new WeaResultMsg(false); - result.putAll(table.makeDataResult()); - result.success(); - return result.getResultMap(); - } - - - private String makeSqlWhere() { - - AddUpDeductionQueryParam queryParam = (AddUpDeductionQueryParam) params.get("queryParam"); - //申报月份 - List declareMonth = queryParam.getDeclareMonth(); - if (CollectionUtils.isNotEmpty(declareMonth)) { - queryParam.setDeclareMonth(declareMonth.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); - } - - String sqlWhere = "t1.delete_type = 0 AND t2.delete_type = 0"; - Collection ids = queryParam.getIds(); - if (CollectionUtils.isNotEmpty(ids)) { - String idsStr = ids.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND t1.id IN (" + idsStr + ")"; - } - Long employeeId = queryParam.getEmployeeId(); - if (employeeId != null) { - sqlWhere += " AND t1.employee_id =" + employeeId; - } - String keyword = queryParam.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - sqlWhere += " AND (" + - " e.lastname like '%" + keyword + "%'" + - " OR d.departmentname like '%" + keyword + "%'" + - " OR e.workcode like ''%"+keyword+"%'" + - " )"; - } - // 申报月份 - List declareMonths = queryParam.getDeclareMonth(); - if (CollectionUtils.isNotEmpty(declareMonths)) { - if (declareMonths.size() == 1) { - sqlWhere += " AND t1.declare_month = '" + declareMonths.get(0)+"'"; - } - if (declareMonths.size() == 2) { - sqlWhere += " AND (t1.declare_month BETWEEN '" + declareMonths.get(0) + "' AND '" + declareMonths.get(1) + "')"; - } - } - //姓名 - String username = queryParam.getUsername(); - if (StringUtils.isNotBlank(username)) { - sqlWhere += " AND e.lastname like '%" + username + "%'"; - } - //个税扣缴义务人 - Long taxAgentId = queryParam.getTaxAgentId(); - if (taxAgentId != null) { - sqlWhere += " AND t1.tax_agent_id = " + taxAgentId; - } - //部门 - List departmentIds = queryParam.getDepartmentIds(); - if (CollectionUtils.isNotEmpty(departmentIds)) { - String departmentStrIds = departmentIds.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND d.id IN (" + departmentStrIds + ")"; - } - //工号 - String jobNum = queryParam.getJobNum(); - if (StringUtils.isNotBlank(jobNum)) { - sqlWhere += " AND e.workcode like '%" + jobNum + "%'"; - } - //入职日期 - List hiredate = queryParam.getHiredate(); - if (CollectionUtils.isNotEmpty(hiredate) && hiredate.size() == 2) { - sqlWhere += " AND (e.companystartdate BETWEEN '"+hiredate.get(0)+"' AND '"+hiredate.get(1)+"')"; - } - //手机号 - String mobile = queryParam.getMobile(); - if (StringUtils.isNotBlank(mobile)) { - sqlWhere += " AND e.mobile like '%" + mobile + "%'"; - } - - return sqlWhere; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpDeductionPreviewCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpDeductionPreviewCmd.java deleted file mode 100644 index a0e9ca166..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpDeductionPreviewCmd.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpDeductionBiz; -import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO; -import com.engine.salary.entity.datacollection.param.AddUpDeductionImportParam; -import com.engine.salary.util.excel.ExcelParseHelper; -import org.apache.commons.lang3.Validate; -import org.apache.poi.util.IOUtils; -import weaver.file.ImageFileManager; -import weaver.general.Util; -import weaver.hrm.User; - -import javax.servlet.http.HttpServletRequest; -import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class AddUpDeductionPreviewCmd extends AbstractCommonCommand> { - - protected HttpServletRequest request; - - public AddUpDeductionPreviewCmd(Map params, User user) { - this.user = user; - this.params = params; - - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(); - AddUpDeductionBiz addUpDeductionBiz = new AddUpDeductionBiz(); - - //导入参数 - AddUpDeductionImportParam importParam = (AddUpDeductionImportParam) params.get("importParam"); - //excel文件id - String imageId = Util.null2String(importParam.getImageId()); - Validate.notBlank(imageId, "imageId为空"); - - InputStream fileInputStream = null; - try { - fileInputStream = ImageFileManager.getInputStreamById(Integer.valueOf(imageId)); - List addUpDeductions = ExcelParseHelper.parse2Map(fileInputStream, AddUpDeductionDTO.class, 0, 1, 14, "addUpDeductionTemplate.xlsx"); - apidatas.put("preview", addUpDeductions); - } finally { - IOUtils.closeQuietly(fileInputStream); - } - return apidatas; - } - - -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpSituationExportCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpSituationExportCmd.java deleted file mode 100644 index f302c424f..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpSituationExportCmd.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpSituationBiz; -import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import weaver.hrm.User; - -import java.util.Map; - -public class AddUpSituationExportCmd extends AbstractCommonCommand { - - public AddUpSituationExportCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public XSSFWorkbook execute(CommandContext commandContext) { - AddUpSituationQueryParam queryParam = (AddUpSituationQueryParam) params.get("queryParam"); - AddUpSituationBiz biz = new AddUpSituationBiz(); - XSSFWorkbook workbook = biz.export(queryParam); - return workbook; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpSituationExportDetailCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpSituationExportDetailCmd.java deleted file mode 100644 index 2e73ce9d6..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpSituationExportDetailCmd.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpSituationBiz; -import com.engine.salary.biz.EmployBiz; -import com.engine.salary.entity.datacollection.AddUpSituation; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; -import com.engine.salary.exception.SalaryRunTimeException; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import weaver.hrm.User; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class AddUpSituationExportDetailCmd extends AbstractCommonCommand { - - public AddUpSituationExportDetailCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public XSSFWorkbook execute(CommandContext commandContext) { - AddUpSituationQueryParam queryParam = (AddUpSituationQueryParam) params.get("queryParam"); - AddUpSituationBiz biz = new AddUpSituationBiz(); - EmployBiz employBiz = new EmployBiz(); - - Long id = queryParam.getAccumulatedSituationId(); - if (id == null) { - throw new SalaryRunTimeException("id不能为空"); - } - - AddUpSituation po = biz.getById(id); - if (po == null) { - throw new SalaryRunTimeException(String.format("累计情况不存在"+"[id:%s]", id)); - } - - List employeeList = employBiz.getEmployeeByIds(Collections.singletonList(po.getEmployeeId())); - if (CollectionUtils.isEmpty(employeeList)) { - throw new SalaryRunTimeException("员工信息不存在"); - } - - //查询参数 - queryParam.setEmployeeId(po.getEmployeeId()); - //申报月份 - List taxYearMonths = queryParam.getTaxYearMonth(); - if (CollectionUtils.isNotEmpty(taxYearMonths)) { - queryParam.setTaxYearMonth(taxYearMonths.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); - } - - XSSFWorkbook workbook = biz.exportDetail(queryParam); - return workbook; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpSituationGetDetailListCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpSituationGetDetailListCmd.java deleted file mode 100644 index a1dfc98f0..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpSituationGetDetailListCmd.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.cloudstore.eccom.result.WeaResultMsg; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpSituationBiz; -import com.engine.salary.biz.EmployBiz; -import com.engine.salary.component.SalaryWeaTable; -import com.engine.salary.entity.datacollection.AddUpSituation; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.datacollection.dto.AddUpSituationRecordDTO; -import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; -import com.engine.salary.exception.SalaryRunTimeException; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import weaver.hrm.User; - -import java.util.*; -import java.util.stream.Collectors; - -public class AddUpSituationGetDetailListCmd extends AbstractCommonCommand> { - - public AddUpSituationGetDetailListCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - - EmployBiz employBiz = new EmployBiz(); - AddUpSituationBiz biz = new AddUpSituationBiz(); - - AddUpSituationQueryParam queryParam = (AddUpSituationQueryParam) params.get("queryParam"); - if (queryParam == null) { - throw new SalaryRunTimeException("参数异常"); - } - - Long id = queryParam.getAccumulatedSituationId(); - if (id == null) { - throw new SalaryRunTimeException("累计情况id不能为空"); - } - - AddUpSituation po = biz.getById(id); - if (po == null) { - throw new SalaryRunTimeException(String.format("累计情况不存在[id:%s]", id)); - } - - List employeeList = employBiz.getEmployeeByIds(Collections.singletonList(po.getEmployeeId())); - if (CollectionUtils.isEmpty(employeeList)) { - throw new SalaryRunTimeException("员工信息不存在"); - } - - //构建查询参数 - queryParam.setEmployeeId(po.getEmployeeId()); - //申报月份 - List taxYearMonths = queryParam.getTaxYearMonth(); - if (CollectionUtils.isNotEmpty(taxYearMonths)) { - queryParam.setTaxYearMonth(taxYearMonths.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); - } - - - String fields = " t1.id," + - " t1.tax_year_month as taxYearMonth," + - " t1.employee_id as employeeId," + - " e.lastname as username," + - " d.departmentName AS departmentName," + - " e.mobile," + - " e.workcode as jobNum," + - " e.companystartdate as hiredate," + - " t2.name AS taxAgentName," + - " t1.add_up_income as addUpIncome," + - " t1.add_up_subtraction as addUpSubtraction," + - " t1.add_up_social_security_total as addUpSocialSecurityTotal," + - " t1.add_up_accumulation_fund_total as addUpAccumulationFundTotal," + - " t1.add_up_child_education as addUpChildEducation," + - " t1.add_up_continuing_education as addUpContinuingEducation," + - " t1.add_up_housing_loan_interest as addUpHousingLoanInterest," + - " t1.add_up_housing_rent as addUpHousingRent," + - " t1.add_up_support_elderly as addUpSupportElderly," + - " t1.add_up_enterprise_and_other as addUpEnterpriseAndOther," + - " t1.add_up_other_deduction as addUpOtherDeduction," + - " t1.add_up_tax_exempt_income as addUpTaxExemptIncome," + - " t1.add_up_allowed_donation as addUpAllowedDonation," + - " t1.add_up_infant_care as addUpInfantCare," + - " t1.add_up_tax_savings as addUpTaxSavings," + - " t1.add_up_illness_medical as addUpIllnessMedical," + - " t1.add_up_advance_tax as addUpAdvanceTax"; - - String fromSql = " FROM " + - " hrsa_add_up_situation t1" + - " INNER JOIN" + - " (SELECT employee_id, MAX(tax_year_month) tax_year_month FROM hrsa_add_up_situation GROUP BY employee_id) t ON" + - " t.employee_id = t1.employee_id AND t.tax_year_month = t1.tax_year_month" + - " LEFT JOIN hrmresource e ON e.id = t1.employee_id" + - " LEFT JOIN hrmdepartment d ON d.id = e.departmentid" + - " LEFT JOIN hrsa_tax_agent t2 ON t1.tax_agent_id = t2.id"; - - SalaryWeaTable table = new SalaryWeaTable(user, AddUpSituationRecordDTO.class); - table.setBackfields(fields); - table.setSqlform(fromSql); - table.setSqlwhere(makeSqlWhere(queryParam)); - table.setSqlorderby("t1.id DESC"); - table.setSqlprimarykey("t1.id"); - table.setSqlisdistinct("false"); - - WeaResultMsg result = new WeaResultMsg(false); - result.putAll(table.makeDataResult()); - result.success(); - return result.getResultMap(); - } - - - private String makeSqlWhere(AddUpSituationQueryParam queryParam) { - - - String sqlWhere = "t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7)"; - Collection ids = queryParam.getIds(); - if (CollectionUtils.isNotEmpty(ids)) { - String idsStr = ids.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND t1.id IN (" + idsStr + ")"; - } - Integer year = queryParam.getYear(); - if (year != null) { - sqlWhere += " AND t1.year =" + year; - } - Long employeeId = queryParam.getEmployeeId(); - if (employeeId != null) { - sqlWhere += " AND t1.employee_id =" + employeeId; - } - String keyword = queryParam.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - sqlWhere += " AND (" + - " e.lastname like '%" + keyword + "%'" + - " OR d.departmentname like '%" + keyword + "%'" + - " OR e.workcode like ''%" + keyword + "%'" + - " )"; - } - // 税款所属期 - List taxYearMonth = queryParam.getTaxYearMonth(); - if (CollectionUtils.isNotEmpty(taxYearMonth)) { - if (taxYearMonth.size() == 1) { - sqlWhere += " AND t1.tax_year_month = '" + taxYearMonth.get(0) + "'"; - } - if (taxYearMonth.size() == 2) { - sqlWhere += " AND (t1.tax_year_month BETWEEN '" + taxYearMonth.get(0) + "' AND '" + taxYearMonth.get(1) + "')"; - } - } - //姓名 - String username = queryParam.getUsername(); - if (StringUtils.isNotBlank(username)) { - sqlWhere += " AND e.lastname like '%" + username + "%'"; - } - //个税扣缴义务人 - Long taxAgentId = queryParam.getTaxAgentId(); - if (taxAgentId != null) { - sqlWhere += " AND t1.tax_agent_id = " + taxAgentId; - } - //部门 - List departmentIds = queryParam.getDepartmentIds(); - if (CollectionUtils.isNotEmpty(departmentIds)) { - String departmentStrIds = departmentIds.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND d.id IN (" + departmentStrIds + ")"; - } - //工号 - String jobNum = queryParam.getJobNum(); - if (StringUtils.isNotBlank(jobNum)) { - sqlWhere += " AND e.workcode like '%" + jobNum + "%'"; - } - //入职日期 - List hiredate = queryParam.getHiredate(); - if (CollectionUtils.isNotEmpty(hiredate) && hiredate.size() == 2) { - sqlWhere += " AND (e.companystartdate BETWEEN '" + hiredate.get(0) + "' AND '" + hiredate.get(1) + "')"; - } - //手机号 - String mobile = queryParam.getMobile(); - if (StringUtils.isNotBlank(mobile)) { - sqlWhere += " AND e.mobile like '%" + mobile + "%'"; - } - - return sqlWhere; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpSituationGetSearchConditionCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpSituationGetSearchConditionCmd.java deleted file mode 100644 index 0b2e3e2fa..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpSituationGetSearchConditionCmd.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.api.browser.bean.SearchConditionGroup; -import com.api.browser.bean.SearchConditionItem; -import com.api.browser.bean.SearchConditionOption; -import com.api.browser.util.ConditionFactory; -import com.api.browser.util.ConditionType; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import weaver.hrm.User; -import weaver.systeminfo.SystemEnv; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class AddUpSituationGetSearchConditionCmd extends AbstractCommonCommand> { - - public AddUpSituationGetSearchConditionCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(); - ConditionFactory conditionFactory = new ConditionFactory(user); - - //条件组 - List addGroups = new ArrayList(); - - List conditionItems = new ArrayList(); - - //文本输入框 - SearchConditionItem username = conditionFactory.createCondition(ConditionType.INPUT,25034, "username"); - username.setInputType("input"); - username.setColSpan(2);//定义一行显示条件数,默认值为2,当值为1时标识该条件单独占一行 - username.setFieldcol(16); //条件输入框所占宽度,默认值18 - username.setLabelcol(8); - username.setViewAttr(2); // 编辑权限 1:只读,2:可编辑, 3:必填 默认2 - username.setLabel("姓名"); //设置文本值 这个将覆盖多语言标签的值 - conditionItems.add(username); - - - SearchConditionItem departmentName = conditionFactory.createCondition(ConditionType.BROWSER,502227,"departmentName","4"); - departmentName.setInputType("browser"); - departmentName.setColSpan(2); - departmentName.setFieldcol(16); - departmentName.setLabelcol(8); - departmentName.setViewAttr(2); - departmentName.setIsQuickSearch(false); - departmentName.setLabel("部门"); - conditionItems.add(departmentName); - - - SearchConditionItem jobNum = conditionFactory.createCondition(ConditionType.INPUT,25034, "jobNum"); - jobNum.setInputType("input"); - jobNum.setColSpan(2); - jobNum.setFieldcol(16); - jobNum.setLabelcol(8); - jobNum.setViewAttr(2); - jobNum.setLabel("工号"); - conditionItems.add(jobNum); - - - - SearchConditionItem idNo = conditionFactory.createCondition(ConditionType.INPUT,25034, "idNo"); - idNo.setInputType("input"); - idNo.setColSpan(2); - idNo.setFieldcol(16); - idNo.setLabelcol(8); - idNo.setViewAttr(2); - idNo.setLabel("证件号码"); - conditionItems.add(idNo); - - //日期范围选项 - List dateOptions = new ArrayList(); - dateOptions.add(new SearchConditionOption("6", SystemEnv.getHtmlLabelName(32530, user.getLanguage()),true));//指定日期范围(必须为6) - SearchConditionItem hiredate = conditionFactory.createCondition(ConditionType.RANGEPICKER, 18648, new String[]{"hiredate","hiredate"}); - hiredate.setInputType("rangepicker"); - hiredate.setFormat("yyyy-MM-dd"); - hiredate.setFieldcol(16); - hiredate.setLabelcol(8); - hiredate.setViewAttr(2); - hiredate.setLabel("入职日期"); - hiredate.setOptions(dateOptions); - conditionItems.add(hiredate); - - - SearchConditionItem mobile = conditionFactory.createCondition(ConditionType.INPUT,25034, "mobile"); - mobile.setInputType("input"); - mobile.setColSpan(2); - mobile.setFieldcol(16); - mobile.setLabelcol(8); - mobile.setViewAttr(2); - mobile.setLabel("手机号"); - conditionItems.add(mobile); - - addGroups.add(new SearchConditionGroup("常用条件",true,conditionItems)); - - apidatas.put("condition",addGroups); - return apidatas; - } - -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpSituationImportCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpSituationImportCmd.java deleted file mode 100644 index 66dee0ff7..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpSituationImportCmd.java +++ /dev/null @@ -1,269 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.biz.AddUpSituationBiz; -import com.engine.salary.biz.EmployBiz; -import com.engine.salary.biz.TaxAgentBiz; -import com.engine.salary.entity.datacollection.AddUpSituation; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.datacollection.dto.AddUpSituationDTO; -import com.engine.salary.entity.datacollection.param.AddUpSituationImportParam; -import com.engine.salary.entity.taxrate.TaxAgent; -import com.engine.salary.enums.UserStatusEnum; -import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.util.excel.ExcelParseHelper; -import com.google.common.collect.Maps; -import lombok.SneakyThrows; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.util.IOUtils; -import weaver.file.ImageFileManager; -import weaver.general.Util; -import weaver.hrm.User; - -import javax.servlet.http.HttpServletRequest; -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - -import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; - -public class AddUpSituationImportCmd extends AbstractCommonCommand> { - - protected HttpServletRequest request; - - public AddUpSituationImportCmd(Map params, User user) { - this.user = user; - this.params = params; - - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @SneakyThrows - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(); - EmployBiz employBiz = new EmployBiz(); - AddUpSituationBiz biz = new AddUpSituationBiz(); - - //检验参数 - checkImportParam(); - - //导入参数 - AddUpSituationImportParam importParam = (AddUpSituationImportParam) params.get("importParam"); - //excel文件id - String imageId = Util.null2String(importParam.getImageId()); - //税款所属期 - String taxYearMonthStr = Util.null2String(importParam.getTaxYearMonth()); - - - InputStream fileInputStream = null; - try { - fileInputStream = ImageFileManager.getInputStreamById(Integer.valueOf(imageId)); - - List excelDates = ExcelParseHelper.parse2Map(fileInputStream, AddUpSituationDTO.class, 0, 1, 24, "template.xlsx"); - - int total = excelDates.size(); - int index = 0; - int successCount = 0; - int errorCount = 0; - - //人员信息 - List employees = employBiz.listEmployee(); - List taxAgents = new TaxAgentBiz().listAll(); - - //税款所属期 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Date taxYearMonth = simpleDateFormat.parse(taxYearMonthStr + "-01"); - Date now = new Date(); - - // 错误excel内容 - List errorData = new ArrayList<>(); - //合规数据 - List eligibleData = new ArrayList<>(); - - - for (int i = 0; i < excelDates.size(); i++) { - //excel中的数据 - AddUpSituationDTO dto = excelDates.get(i); - //待插入数据库对象 - AddUpSituation po = AddUpSituation.builder().tenantKey(DEFAULT_TENANT_KEY) - .createTime(now) - .updateTime(now) - .creator((long) user.getUID()) - .year(Integer.valueOf(taxYearMonthStr.split("-")[0])) - .taxYearMonth(taxYearMonth) - .build(); - - - //异常点数量 - int errorSum = 0; - - //行号 - String rowIndex = String.format("第%s行", i + 2); - - //相同的姓名 - String userName = dto.getUsername(); - String deparmentName = dto.getDepartmentName(); - List employeeSameIds = new ArrayList<>(); - - List emps = employees.stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) - && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName))) - .collect(Collectors.toList()); - //含在职和离职,选在职数据 - if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { - employeeSameIds = emps.stream() - .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); - } - if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { - employeeSameIds = emps.stream() - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); - } - - - if (StringUtils.isBlank(userName)) { - //姓名 不能为空 - //错误消息对象 - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + "姓名不能为空"); - errorData.add(errorMessageMap); - errorSum += 1; - } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + "员工信息不能为空且不可重复(姓名与部门同时确认唯一)"); - errorData.add(errorMessageMap); - errorSum += 1; - } else { - Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; - if (employeeId != null && employeeId > 0) { - po.setEmployeeId(employeeId); - } else { - //姓名错误,系统内不存在该姓名 - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); - errorData.add(errorMessageMap); - errorSum += 1; - } - } - - - String taxAgentName = dto.getTaxAgentName(); - if (StringUtils.isBlank(taxAgentName)) { - //个税扣缴义务人不能为空 - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); - errorData.add(errorMessageMap); - errorSum += 1; - } else { - Optional optionalTemp = taxAgents.stream().filter(m -> m.getName().equals(taxAgentName)).findFirst(); - if (optionalTemp.isPresent()) { - po.setTaxAgentId(optionalTemp.get().getId()); - } else { - //个税扣缴义务人不存在 - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在"); - errorData.add(errorMessageMap); - errorSum += 1; - } - } - - //累计收入额 - String addUpIncome = dto.getAddUpIncome(); - po.setAddUpIncome(Util.null2String(addUpIncome)); - //累计减除费用 - String addUpSubtraction = dto.getAddUpSubtraction(); - po.setAddUpSubtraction(addUpSubtraction); - //累计社保个人合计 - String addUpSocialSecurityTotal = dto.getAddUpSocialSecurityTotal(); - po.setAddUpSocialSecurityTotal(addUpSocialSecurityTotal); - //累计公积金个人合计 - String addUpAccumulationFundTotal = dto.getAddUpAccumulationFundTotal(); - po.setAddUpAccumulationFundTotal(addUpAccumulationFundTotal); - //累计子女教育 - String addUpChildEducation = dto.getAddUpChildEducation(); - po.setAddUpChildEducation(Util.null2String(addUpChildEducation)); - //累计继续教育 - String addUpContinuingEducation = dto.getAddUpContinuingEducation(); - po.setAddUpContinuingEducation(Util.null2String(addUpContinuingEducation)); - //累计住房贷款利息 - String addUpHousingLoanInterest = dto.getAddUpHousingLoanInterest(); - po.setAddUpHousingLoanInterest(Util.null2String(addUpHousingLoanInterest)); - //累计住房租金 - String addUpHousingRent = dto.getAddUpHousingRent(); - po.setAddUpHousingRent(Util.null2String(addUpHousingRent)); - //累计赡养老人 - String addUpSupportElderly = dto.getAddUpSupportElderly(); - po.setAddUpSupportElderly(Util.null2String(addUpSupportElderly)); - //累计企业(职业)年金及其他福利 - String addUpEnterpriseAndOther = dto.getAddUpEnterpriseAndOther(); - po.setAddUpEnterpriseAndOther(addUpEnterpriseAndOther); - //累计其他扣除 - String addUpOtherDeduction = dto.getAddUpOtherDeduction(); - po.setAddUpOtherDeduction(addUpOtherDeduction); - //累计免税收入 - String addUpTaxExemptIncome = dto.getAddUpTaxExemptIncome(); - po.setAddUpTaxExemptIncome(addUpTaxExemptIncome); - //累计准予扣除的捐赠额 - String addUpAllowedDonation = dto.getAddUpAllowedDonation(); - po.setAddUpAllowedDonation(addUpAllowedDonation); - //累计已预扣预缴税额 - String addUpAdvanceTax = dto.getAddUpAdvanceTax(); - po.setAddUpAdvanceTax(addUpAdvanceTax); - - po.setAddUpIllnessMedical(dto.getAddUpIllnessMedical()); - po.setAddUpTaxSavings(dto.getAddUpTaxSavings()); - po.setAddUpInfantCare(dto.getAddUpInfantCare()); - - if (errorSum == 0) { - successCount += 1; - // 合格数据 - eligibleData.add(po); - } else { - errorCount += 1; - // 添加错误数据 - } - } - - //入库 - biz.handleImportData(eligibleData); - - apidatas.put("successCount", successCount); - apidatas.put("errorCount", errorCount); - apidatas.put("errorData", errorData); - - } finally { - IOUtils.closeQuietly(fileInputStream); - } - return apidatas; - } - - private void checkImportParam() { - - AddUpSituationImportParam importParam = (AddUpSituationImportParam) params.get("importParam"); - - //excel文件id - String imageId = Util.null2String(importParam.getImageId()); - //税款所属期 - String declareMonthStr = Util.null2String(importParam.getTaxYearMonth()); - - - if (StringUtils.isBlank(imageId)) { - throw new SalaryRunTimeException("文件不存在"); - } - if (StringUtils.isBlank(declareMonthStr)) { - throw new SalaryRunTimeException("税款所属期为空"); - } - } - - -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpSituationListCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpSituationListCmd.java deleted file mode 100644 index 62824fa66..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpSituationListCmd.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.cloudstore.eccom.result.WeaResultMsg; -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.component.SalaryWeaTable; -import com.engine.salary.entity.datacollection.dto.AddUpSituationDTO; -import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import weaver.hrm.User; - -import java.util.Collection; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class AddUpSituationListCmd extends AbstractCommonCommand> { - - public AddUpSituationListCmd(Map params, User user) { - this.user = user; - this.params = params; - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @Override - public Map execute(CommandContext commandContext) { - - String fields = " t1.id," + - " t1.tax_year_month as taxYearMonth," + - " t1.employee_id as employeeId," + - " e.lastname as username," + - " d.departmentName AS departmentName," + - " e.mobile," + - " e.workcode as jobNum," + - " e.companystartdate as hiredate," + - " t2.name AS taxAgentName," + - " t1.add_up_income as addUpIncome," + - " t1.add_up_subtraction as addUpSubtraction," + - " t1.add_up_social_security_total as addUpSocialSecurityTotal," + - " t1.add_up_accumulation_fund_total as addUpAccumulationFundTotal," + - " t1.add_up_child_education as addUpChildEducation," + - " t1.add_up_continuing_education as addUpContinuingEducation," + - " t1.add_up_housing_loan_interest as addUpHousingLoanInterest," + - " t1.add_up_housing_rent as addUpHousingRent," + - " t1.add_up_support_elderly as addUpSupportElderly," + - " t1.add_up_enterprise_and_other as addUpEnterpriseAndOther," + - " t1.add_up_other_deduction as addUpOtherDeduction," + - " t1.add_up_tax_exempt_income as addUpTaxExemptIncome," + - " t1.add_up_allowed_donation as addUpAllowedDonation," + - " t1.add_up_infant_care as addUpInfantCare," + - " t1.add_up_tax_savings as addUpTaxSavings," + - " t1.add_up_illness_medical as addUpIllnessMedical," + - " t1.add_up_advance_tax as addUpAdvanceTax"; - - String fromSql = " FROM " + - " hrsa_add_up_situation t1" + - " LEFT JOIN" + - " (SELECT employee_id, MAX(tax_year_month) tax_year_month FROM hrsa_add_up_situation GROUP BY employee_id) t ON" + - " t.employee_id = t1.employee_id AND t.tax_year_month = t1.tax_year_month" + - " LEFT JOIN hrmresource e ON e.id = t1.employee_id" + - " LEFT JOIN hrmdepartment d ON d.id = e.departmentid" + - " LEFT JOIN hrsa_tax_agent t2 ON t1.tax_agent_id = t2.id"; - - SalaryWeaTable table = new SalaryWeaTable(user, AddUpSituationDTO.class); - table.setBackfields(fields); - table.setSqlform(fromSql); - table.setSqlwhere(makeSqlWhere()); - table.setSqlorderby("t1.id DESC"); - table.setSqlprimarykey("t1.id"); - table.setSqlisdistinct("false"); - - WeaResultMsg result = new WeaResultMsg(false); - result.putAll(table.makeDataResult()); - result.success(); - return result.getResultMap(); - } - - - private String makeSqlWhere() { - - AddUpSituationQueryParam queryParam = (AddUpSituationQueryParam) params.get("queryParam"); - //申报月份 - List taxYearMonths = queryParam.getTaxYearMonth(); - if (CollectionUtils.isNotEmpty(taxYearMonths)) { - queryParam.setTaxYearMonth(taxYearMonths.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); - } - - String sqlWhere = "t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7)"; - Collection ids = queryParam.getIds(); - if (CollectionUtils.isNotEmpty(ids)) { - String idsStr = ids.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND t1.id IN (" + idsStr + ")"; - } - Integer year = queryParam.getYear(); - if (year != null) { - sqlWhere += " AND t1.year =" + year; - } - Long employeeId = queryParam.getEmployeeId(); - if (employeeId != null) { - sqlWhere += " AND t1.employee_id =" + employeeId; - } - String keyword = queryParam.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - sqlWhere += " AND (" + - " e.lastname like '%" + keyword + "%'" + - " OR d.departmentname like '%" + keyword + "%'" + - " OR e.workcode like ''%" + keyword + "%'" + - " )"; - } - // 税款所属期 - List taxYearMonth = queryParam.getTaxYearMonth(); - if (CollectionUtils.isNotEmpty(taxYearMonth)) { - if (taxYearMonth.size() == 1) { - sqlWhere += " AND t1.tax_year_month = '" + taxYearMonth.get(0) + "'"; - } - if (taxYearMonth.size() == 2) { - sqlWhere += " AND (t1.tax_year_month BETWEEN '" + taxYearMonth.get(0) + "' AND '" + taxYearMonth.get(1) + "')"; - } - } - //姓名 - String username = queryParam.getUsername(); - if (StringUtils.isNotBlank(username)) { - sqlWhere += " AND e.lastname like '%" + username + "%'"; - } - //个税扣缴义务人 - Long taxAgentId = queryParam.getTaxAgentId(); - if (taxAgentId != null) { - sqlWhere += " AND t1.tax_agent_id = " + taxAgentId; - } - //部门 - List departmentIds = queryParam.getDepartmentIds(); - if (CollectionUtils.isNotEmpty(departmentIds)) { - String departmentStrIds = departmentIds.stream().map(String::valueOf).collect(Collectors.joining(",")); - sqlWhere += " AND d.id IN (" + departmentStrIds + ")"; - } - //工号 - String jobNum = queryParam.getJobNum(); - if (StringUtils.isNotBlank(jobNum)) { - sqlWhere += " AND e.workcode like '%" + jobNum + "%'"; - } - //入职日期 - List hiredate = queryParam.getHiredate(); - if (CollectionUtils.isNotEmpty(hiredate) && hiredate.size() == 2) { - sqlWhere += " AND (e.companystartdate BETWEEN '" + hiredate.get(0) + "' AND '" + hiredate.get(1) + "')"; - } - //手机号 - String mobile = queryParam.getMobile(); - if (StringUtils.isNotBlank(mobile)) { - sqlWhere += " AND e.mobile like '%" + mobile + "%'"; - } - - return sqlWhere; - } -} diff --git a/src/com/engine/salary/cmd/datacollection/AddUpSituationPreviewCmd.java b/src/com/engine/salary/cmd/datacollection/AddUpSituationPreviewCmd.java deleted file mode 100644 index 09188175d..000000000 --- a/src/com/engine/salary/cmd/datacollection/AddUpSituationPreviewCmd.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.engine.salary.cmd.datacollection; - -import com.engine.common.biz.AbstractCommonCommand; -import com.engine.common.entity.BizLogContext; -import com.engine.core.interceptor.CommandContext; -import com.engine.salary.entity.datacollection.dto.AddUpSituationDTO; -import com.engine.salary.entity.datacollection.param.AddUpSituationImportParam; -import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.util.excel.ExcelParseHelper; -import lombok.SneakyThrows; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.util.IOUtils; -import weaver.file.ImageFileManager; -import weaver.general.Util; -import weaver.hrm.User; - -import javax.servlet.http.HttpServletRequest; -import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class AddUpSituationPreviewCmd extends AbstractCommonCommand> { - - protected HttpServletRequest request; - - public AddUpSituationPreviewCmd(Map params, User user) { - this.user = user; - this.params = params; - - } - - @Override - public BizLogContext getLogContext() { - return null; - } - - @SneakyThrows - @Override - public Map execute(CommandContext commandContext) { - Map apidatas = new HashMap(); - - //检验参数 - checkImportParam(); - - //导入参数 - AddUpSituationImportParam importParam = (AddUpSituationImportParam) params.get("importParam"); - //excel文件id - String imageId = Util.null2String(importParam.getImageId()); - - InputStream fileInputStream = null; - try { - fileInputStream = ImageFileManager.getInputStreamById(Integer.valueOf(imageId)); - List excelDates = ExcelParseHelper.parse2Map(fileInputStream, AddUpSituationDTO.class, 0, 1, 24, "template.xlsx"); - apidatas.put("preview", excelDates); - } finally { - IOUtils.closeQuietly(fileInputStream); - } - return apidatas; - } - - private void checkImportParam() { - - AddUpSituationImportParam importParam = (AddUpSituationImportParam) params.get("importParam"); - - //excel文件id - String imageId = Util.null2String(importParam.getImageId()); - //税款所属期 - String declareMonthStr = Util.null2String(importParam.getTaxYearMonth()); - - - if (StringUtils.isBlank(imageId)) { - throw new SalaryRunTimeException("文件不存在"); - } - if (StringUtils.isBlank(declareMonthStr)) { - throw new SalaryRunTimeException("税款所属期为空"); - } - } - -} diff --git a/src/com/engine/salary/constant/TaxAgentPermissionConstant.java b/src/com/engine/salary/constant/TaxAgentPermissionConstant.java new file mode 100644 index 000000000..85f16ec74 --- /dev/null +++ b/src/com/engine/salary/constant/TaxAgentPermissionConstant.java @@ -0,0 +1,24 @@ +package com.engine.salary.constant; + +/** + * @Description: 个税扣缴义务人分权 + * @Author: wangxiangzhong + * @Date: 2022/5/2 10:09 + */ +public class TaxAgentPermissionConstant { + + /** + * 菜单编码 + */ + public static final String MENU_CODE = "TaxAgent"; + + /** + * 权限编码-默认权限项 + */ + public static final String ITEM_CODE_DEFAULT = "TaxAgent.default"; + + /** + * 权限编码-分权开关 + */ + public static final String ITEM_CODE_DEVOLUTION = "TaxAgent.devolution"; +} diff --git a/src/com/engine/salary/entity/agency/bo/PaymentAgencyBO.java b/src/com/engine/salary/entity/agency/bo/PaymentAgencyBO.java new file mode 100644 index 000000000..0fbe29e78 --- /dev/null +++ b/src/com/engine/salary/entity/agency/bo/PaymentAgencyBO.java @@ -0,0 +1,57 @@ +package com.engine.salary.entity.agency.bo; + +import com.engine.salary.entity.agency.dto.PaymentAgencyFormDTO; +import com.engine.salary.entity.agency.dto.PaymentAgencyListDTO; +import com.engine.salary.entity.agency.po.PaymentAgencyPO; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import dm.jdbc.util.IdGenerator; +import org.apache.commons.collections4.CollectionUtils; + +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + + +public class PaymentAgencyBO { + +// public static Wrapper buildPaymentAgencyListWrapper(Long employeeId, String tenantKey) { +// LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); +// lambdaQueryWrapper.eq(PaymentAgencyPO::getTenantKey, tenantKey); +// lambdaQueryWrapper.eq(PaymentAgencyPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()); +// lambdaQueryWrapper.orderByDesc(PaymentAgencyPO::getUpdateTime); +// return lambdaQueryWrapper; +// } + + public static List buildPaymentAgencyDTOList(List paymentAgencyPOS, Long employeeId, String tenantKey) { + if (CollectionUtils.isEmpty(paymentAgencyPOS)) { + return Collections.emptyList(); + } + return paymentAgencyPOS.stream().map(e -> PaymentAgencyListDTO.builder() + .id(e.getId()) + .agencyName(e.getAgencyName()) + .remarks(e.getRemarks()).build() + ).collect(Collectors.toList()); + } + + public static PaymentAgencyFormDTO buildPaymentAgencyFormDTO(PaymentAgencyPO paymentAgencyPO, Long employeeId, String tenantKey) { + PaymentAgencyFormDTO paymentAgencyFormDTO = PaymentAgencyFormDTO.builder().build(); + paymentAgencyFormDTO.setId(paymentAgencyPO.getId()); + paymentAgencyFormDTO.setAgencyName(paymentAgencyPO.getAgencyName()); + paymentAgencyFormDTO.setRemarks(paymentAgencyFormDTO.getRemarks()); + return paymentAgencyFormDTO; + } + + public static PaymentAgencyPO buildPaymentAgencyPO(PaymentAgencyFormDTO paymentAgencyFormDTO, Long employeeId, String tenantKey) { + return PaymentAgencyPO.builder() + .id(IdGenerator.generate()) + .agencyName(paymentAgencyFormDTO.getAgencyName()) + .createTime(LocalDateTime.now()) + .creator(employeeId) + .tenantKey(tenantKey) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .updateTime(LocalDateTime.now()) + .remarks(paymentAgencyFormDTO.getRemarks()) + .build(); + } +} diff --git a/src/com/engine/salary/entity/agency/dto/PaymentAgencyFormDTO.java b/src/com/engine/salary/entity/agency/dto/PaymentAgencyFormDTO.java new file mode 100644 index 000000000..d6fcbc80d --- /dev/null +++ b/src/com/engine/salary/entity/agency/dto/PaymentAgencyFormDTO.java @@ -0,0 +1,58 @@ +package com.engine.salary.entity.agency.dto; + +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; + +/** + * 代缴机构表单 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PaymentAgencyFormDTO { + + //主键id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + +// @SalaryForm( +// label = "名称", +// labelId = 84756, +// items = { +// @SalaryFormItem( +// itemType = WeaFormItemType.INPUT, +// required = true, +// maxLength = "50" +// ) +// } +// ) +// @NotBlank(message = "name is required") +// @Size(max = 50, message = "the maximum lenth is 50") +// //名称") + private String agencyName; + +// @SalaryForm( +// label = "备注", +// labelId = 84961, +// items = { +// @SalaryFormItem( +// itemType = WeaFormItemType.TEXTAREA, +// maxLength = "50" +// ) +// } +// ) +// @NotBlank(message = "name is required") +// @Size(max = 60, message = "the maximum lenth is 60") +// //名称") + private String remarks; +} diff --git a/src/com/engine/salary/entity/agency/dto/PaymentAgencyListDTO.java b/src/com/engine/salary/entity/agency/dto/PaymentAgencyListDTO.java new file mode 100644 index 000000000..8f554125d --- /dev/null +++ b/src/com/engine/salary/entity/agency/dto/PaymentAgencyListDTO.java @@ -0,0 +1,55 @@ +package com.engine.salary.entity.agency.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 代缴机构列表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//@ApiModel("") +//@TableOperates(value = { +// @Operates(index = 0, text = "编辑", labelId = 87058), +// @Operates(index = 1, text = "删除", labelId = 87061) +//}) +public class PaymentAgencyListDTO { + + /** + * 主键id + */ +// @ApiModelProperty("主键id") +// @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 社保福利代缴机构 + */ +// @WeaFormat( +// label = "社保福利代缴机构", +// labelId = 112448, +// tableColumn = @TableColumn(width = "200") +// ) +// @ApiModelProperty("社保福利代缴机构") + private String agencyName; + + /** + * 备注 + */ +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "300") +// ) +// @ApiModelProperty("备注") + private String remarks; +} diff --git a/src/com/engine/salary/entity/agency/po/PaymentAgencyPO.java b/src/com/engine/salary/entity/agency/po/PaymentAgencyPO.java new file mode 100644 index 000000000..93045f86e --- /dev/null +++ b/src/com/engine/salary/entity/agency/po/PaymentAgencyPO.java @@ -0,0 +1,56 @@ +package com.engine.salary.entity.agency.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_payment_agency +public class PaymentAgencyPO { + + /** + * 主键id + */ + private Long id; + + /** + * 机构名称 + */ + private String agencyName; + + /** + * 备注 + */ + private String remarks; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 创建人 + */ + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + private Integer deleteType; + + /** + * 租户ID + */ + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java index efb57e7b3..7e74d2114 100644 --- a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java +++ b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java @@ -83,6 +83,8 @@ public class DataCollectionEmployee { @SalaryFormulaVar(defaultLabel = "出生日期", labelId = 98624, dataType = "string") private String birthday; + private String idNo; + //是否是系统管理员 private Boolean isAdmin; diff --git a/src/com/engine/salary/entity/datacollection/bo/DataCollectionBO.java b/src/com/engine/salary/entity/datacollection/bo/DataCollectionBO.java new file mode 100644 index 000000000..e216ddc7d --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/bo/DataCollectionBO.java @@ -0,0 +1,52 @@ +package com.engine.salary.entity.datacollection.bo; + +/** + * @Description: 数据采集 + * @Author: wangxiangzhong + * @Date: 2021/11/29 13:28 + */ +public class DataCollectionBO { + + @Override + public String toString() { + return "DataCollectionBO{}"; + } + +// /** +// * 添加日期范围 +// * +// * @param weaSearchCondition +// * @param employeeId +// * @param tenantKey +// */ +// public static void addDatePickerRangeOtherParams(WeaSearchCondition weaSearchCondition, String datePickerKey, Long employeeId, String tenantKey) { +// WeaSearchConditionItem datePickerItem = weaSearchCondition.getItems().get(datePickerKey); +// Map otherParams = Maps.newHashMap(); +// otherParams.put("isRange", true); +// otherParams.put("type", "day"); +// otherParams.put("startPlaceholder", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 90648, "开始日期")); +// otherParams.put("endPlaceholder", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 90649, "结束日期")); +// datePickerItem.setOtherParams(otherParams); +// weaSearchCondition.getItems().put(datePickerKey, datePickerItem); +// } +// +// /** +// * 获取身份证号 +// * +// * @param employeeId +// * @param simpleUserInfos +// */ +// public static String getIdNo(Long employeeId, List simpleUserInfos) { +// if (employeeId == null || CollectionUtils.isEmpty(simpleUserInfos)) { +// return StringUtils.EMPTY; +// } +// Optional optionalSimpleUserInfo = simpleUserInfos.stream() +// .filter(simpleUserInfo -> Objects.nonNull(simpleUserInfo) && Objects.nonNull(simpleUserInfo.getUser())).findFirst(); +// String idNo = StringUtils.EMPTY; +// if (optionalSimpleUserInfo.isPresent()) { +// SimpleUserInfo simpleUserInfo = optionalSimpleUserInfo.get(); +// idNo = Optional.of(simpleUserInfo).map(SimpleUserInfo::getIdNo).orElse(StringUtils.EMPTY); +// } +// return idNo; +// } +} diff --git a/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionDTO.java b/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionDTO.java index 78b0d8676..0935a4d76 100644 --- a/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionDTO.java @@ -4,6 +4,7 @@ import com.cloudstore.eccom.pc.table.WeaTableType; import com.engine.salary.annotation.SalaryTable; import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.SalaryTableOperate; +import com.engine.salary.annotation.TableTitle; import com.engine.salary.util.excel.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; @@ -44,6 +45,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 0) @SalaryTableColumn(text = "姓名", width = "10%", column = "username") + @TableTitle(title = "姓名", dataIndex = "username", key = "username") private String username; /** @@ -51,13 +53,20 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 1) @SalaryTableColumn(text = "个税扣缴义务人", width = "10%", column = "taxAgentName") + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") private String taxAgentName; + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + /** * 部门 */ @ExcelProperty(index = 2) @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") private String departmentName; /** @@ -65,6 +74,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 3) @SalaryTableColumn(text = "手机号", width = "10%", column = "mobile") + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") private String mobile; /** @@ -72,6 +82,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 4) @SalaryTableColumn(text = "工号", width = "10%", column = "jobNum") + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") private String jobNum; /** @@ -79,6 +90,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 5) @SalaryTableColumn(text = "证件号码", width = "10%", column = "idNo") + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") private String idNo; /** @@ -87,6 +99,7 @@ public class AddUpDeductionDTO { @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @ExcelProperty(index = 6, msg = "第7列,入职日期解析错误,标准格式应为yyyy-MM-dd,例如:2022-01-01") @SalaryTableColumn(text = "入职日期", width = "10%", column = "hiredate") + @TableTitle(title = "入职日期", dataIndex = "hiredate", key = "hiredate") private String hiredate; /** @@ -94,6 +107,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 7, msg = "第8列,累计子女教育解析错误,请输入数字") @SalaryTableColumn(text = "累计子女教育", width = "10%", column = "addUpChildEducation") + @TableTitle(title = "累计子女教育", dataIndex = "addUpChildEducation", key = "addUpChildEducation") private String addUpChildEducation; /** @@ -101,6 +115,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 8, msg = "第9列,累计继续教育教育解析错误,请输入数字") @SalaryTableColumn(text = "累计继续教育", width = "10%", column = "addUpContinuingEducation") + @TableTitle(title = "累计继续教育", dataIndex = "addUpContinuingEducation", key = "addUpContinuingEducation") private String addUpContinuingEducation; /** @@ -108,6 +123,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 9, msg = "第10列,累计住房贷款利息解析错误,请输入数字") @SalaryTableColumn(text = "累计住房贷款利息", width = "10%", column = "addUpHousingLoanInterest") + @TableTitle(title = "累计住房贷款利息", dataIndex = "addUpHousingLoanInterest", key = "addUpHousingLoanInterest") private String addUpHousingLoanInterest; /** @@ -115,6 +131,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 10, msg = "第11列,累计住房租金解析错误,请输入数字") @SalaryTableColumn(text = "累计住房租金", width = "10%", column = "addUpHousingRent") + @TableTitle(title = "累计住房租金", dataIndex = "addUpHousingRent", key = "addUpHousingRent") private String addUpHousingRent; /** @@ -122,6 +139,7 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 11, msg = "第12列,累计赡养老人解析错误,请输入数字") @SalaryTableColumn(text = "累计赡养老人", width = "10%", column = "addUpSupportElderly") + @TableTitle(title = "累计赡养老人", dataIndex = "addUpSupportElderly", key = "addUpSupportElderly") private String addUpSupportElderly; /** @@ -129,12 +147,15 @@ public class AddUpDeductionDTO { */ @ExcelProperty(index = 12, msg = "第13列,累计大病医疗解析错误,请输入数字") @SalaryTableColumn(text = "累计大病医疗", width = "10%", column = "addUpIllnessMedical") + @TableTitle(title = "累计大病医疗", dataIndex = "addUpIllnessMedical", key = "addUpIllnessMedical") private String addUpIllnessMedical; @ExcelProperty(index = 13, msg = "第14列,累计婴幼儿照护解析错误,请输入数字") @SalaryTableColumn(text = "累计婴幼儿照护", width = "10%", column = "addUpInfantCare") + @TableTitle(title = "累计婴幼儿照护", dataIndex = "addUpInfantCare", key = "addUpInfantCare") private String addUpInfantCare; @SalaryTableColumn(text = "操作", width = "20%", column = "operate") + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") private String operate; } diff --git a/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionRecordDTO.java b/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionRecordDTO.java index 826d58796..df67bda86 100644 --- a/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionRecordDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/AddUpDeductionRecordDTO.java @@ -42,6 +42,11 @@ public class AddUpDeductionRecordDTO { @ExcelProperty(index = 2) private String taxAgentName; + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + //部门 @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") diff --git a/src/com/engine/salary/entity/datacollection/dto/AddUpSituationDTO.java b/src/com/engine/salary/entity/datacollection/dto/AddUpSituationDTO.java index 1a8c71d36..084d2c485 100644 --- a/src/com/engine/salary/entity/datacollection/dto/AddUpSituationDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/AddUpSituationDTO.java @@ -50,6 +50,11 @@ public class AddUpSituationDTO { @ExcelProperty(index = 1) private String taxAgentName; + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + //部门 @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") @ExcelProperty(index = 2) diff --git a/src/com/engine/salary/entity/datacollection/dto/AddUpSituationRecordDTO.java b/src/com/engine/salary/entity/datacollection/dto/AddUpSituationRecordDTO.java index c942ece1d..decbfe679 100644 --- a/src/com/engine/salary/entity/datacollection/dto/AddUpSituationRecordDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/AddUpSituationRecordDTO.java @@ -45,6 +45,11 @@ public class AddUpSituationRecordDTO { @ExcelProperty(index = 2) private String taxAgentName; + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") @ExcelProperty(index = 3) private String departmentName; diff --git a/src/com/engine/salary/entity/datacollection/param/AddUpDeductionQueryParam.java b/src/com/engine/salary/entity/datacollection/param/AddUpDeductionQueryParam.java index 3d6c2ce3e..e3a68a51f 100644 --- a/src/com/engine/salary/entity/datacollection/param/AddUpDeductionQueryParam.java +++ b/src/com/engine/salary/entity/datacollection/param/AddUpDeductionQueryParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.datacollection.param; +import com.engine.salary.common.BaseQueryParam; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,7 +22,7 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -public class AddUpDeductionQueryParam { +public class AddUpDeductionQueryParam extends BaseQueryParam { /** * 主键id diff --git a/src/com/engine/salary/entity/datacollection/param/AddUpSituationQueryParam.java b/src/com/engine/salary/entity/datacollection/param/AddUpSituationQueryParam.java index a7d932efb..604e4cf3f 100644 --- a/src/com/engine/salary/entity/datacollection/param/AddUpSituationQueryParam.java +++ b/src/com/engine/salary/entity/datacollection/param/AddUpSituationQueryParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.datacollection.param; +import com.engine.salary.common.BaseQueryParam; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -16,7 +17,7 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -public class AddUpSituationQueryParam{ +public class AddUpSituationQueryParam extends BaseQueryParam { //主键id private Collection ids; diff --git a/src/com/engine/salary/entity/datacollection/param/AttendQuoteCheckOperationParam.java b/src/com/engine/salary/entity/datacollection/param/AttendQuoteCheckOperationParam.java new file mode 100644 index 000000000..1efec4268 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/AttendQuoteCheckOperationParam.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.YearMonth; + +/** + * 考勤引用是否可以操作参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AttendQuoteCheckOperationParam { + + //薪资所属月 + @DataCheck(require = true, message = "薪资所属月必传") + private YearMonth salaryYearMonth; + + //关联账套id + @DataCheck(require = true, message = "关联账套id必传") + private Long salarySobId; +} diff --git a/src/com/engine/salary/entity/hrm/HrmStatus.java b/src/com/engine/salary/entity/hrm/HrmStatus.java new file mode 100644 index 000000000..26fbdb755 --- /dev/null +++ b/src/com/engine/salary/entity/hrm/HrmStatus.java @@ -0,0 +1,16 @@ +package com.engine.salary.entity.hrm; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class HrmStatus { + String id; + + String name; +} diff --git a/src/com/engine/salary/entity/hrm/SubCompanyInfo.java b/src/com/engine/salary/entity/hrm/SubCompanyInfo.java new file mode 100644 index 000000000..84fb417f9 --- /dev/null +++ b/src/com/engine/salary/entity/hrm/SubCompanyInfo.java @@ -0,0 +1,28 @@ +package com.engine.salary.entity.hrm; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 分部信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SubCompanyInfo { + + private Long id; + + /** + * 名称 + */ + private String name; +} diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java index f30052f62..47d904a07 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java @@ -54,6 +54,7 @@ public class SalarySobBO { .updateTime(now) .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .taxAgentId(saveParam.getTaxAgentId()) .build(); } diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java index dc91b3ca3..bd86de4d6 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java @@ -33,6 +33,12 @@ public class SalarySobBasicSaveParam { @DataCheck(require = true, max = 40, message = "名称不允许为空且不能超过40个字符长度") private String name; + /** + * 个税扣缴义务人的主键id + */ + @DataCheck(require = true, message = "个税扣缴义务人的主键id不允许为空") + private Long taxAgentId; + /** * 薪资类型不允许为空 * diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java index 18a01d44e..921fad01c 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java @@ -27,6 +27,12 @@ public class SalarySobPO { * 名称 */ private String name; + + /** + * 个税扣缴义务人的主键id + */ + private Long taxAgentId; + /** * 应税项目。1:正常工资薪金所得 */ @@ -85,5 +91,6 @@ public class SalarySobPO { private String tenantKey; Collection ids; + Collection taxAgentIds; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java new file mode 100644 index 000000000..f1e97ac2e --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java @@ -0,0 +1,434 @@ +package com.engine.salary.entity.taxagent.bo; + +import com.cloudstore.eccom.pc.table.WeaTable; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.cloudstore.eccom.pc.table.WeaTableOperate; +import com.cloudstore.eccom.pc.table.WeaTableOperates; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.agency.po.PaymentAgencyPO; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.hrm.DeptInfo; +import com.engine.salary.entity.hrm.HrmStatus; +import com.engine.salary.entity.hrm.PositionInfo; +import com.engine.salary.entity.hrm.SubCompanyInfo; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentListDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentSubAdminListDTO; +import com.engine.salary.entity.taxagent.param.TaxAgentManageRangeSaveParam; +import com.engine.salary.entity.taxagent.param.TaxAgentSaveParam; +import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminRangeSaveParam; +import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; +import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxagent.po.TaxAgentSubAdminPO; +import com.engine.salary.enums.salarysob.TargetTypeEnum; +import com.engine.salary.enums.taxagent.TaxAgentRangeTypeEnum; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 个税扣缴义务人 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentBO { + + @Override + public String toString() { + return "TaxAgentBO{}"; + } + + /** + * 根据个税扣缴义务人id和用户id判断是否匹配 + * + * @param taxAgentEmployees + * @param taxAgentId + * @param employeeId + * @return + */ + public static boolean checkTaxAgentAndEmployee(List taxAgentEmployees, Long taxAgentId, Long employeeId) { + if (CollectionUtils.isEmpty(taxAgentEmployees) && taxAgentId == null) { + return false; + } + return taxAgentEmployees.stream().anyMatch(t -> t.getTaxAgentId().equals(taxAgentId) && employeeId.equals(t.getEmployeeId())); + } + + /** + * 构建表格 + * + * @param weaTable + * @param isOpenDevolution + */ + public static void buildTaxAgentTable(WeaTable weaTable, boolean isOpenDevolution) { + // 表格表头 + List columns = new ArrayList<>(); + String name = SalaryI18nUtil.getI18nLabel(91558, "个税扣缴义务人名称"); + String employeeRange = SalaryI18nUtil.getI18nLabel(86125, "人员范围"); + String admins = SalaryI18nUtil.getI18nLabel(106259, "管理员"); + String subAdmins = SalaryI18nUtil.getI18nLabel(106283, "分管理员"); +// String paymentAgency = SalaryI18nUtil.getI18nLabel(112448, "社保福利代缴机构"); + String description = SalaryI18nUtil.getI18nLabel(84961, "备注"); + if (isOpenDevolution) { + columns.add(new WeaTableColumn(name, "name", "20%")); + columns.add(new WeaTableColumn(employeeRange, "employeeRange", "20%")); + columns.add(new WeaTableColumn(admins, "admins", "20%")); +// columns.add(new WeaTableColumn(subAdmins, "subAdmins", "20%")); +// columns.add(new WeaTableColumn(paymentAgency, "paymentAgency", "30%")); + columns.add(new WeaTableColumn(description, "description", "20%")); + } else { + columns.add(new WeaTableColumn(name, "name", "40%")); + columns.add(new WeaTableColumn(employeeRange, "employeeRange", "20%")); +// columns.add(new WeaTableColumn(paymentAgency, "paymentAgency", "30%")); + columns.add(new WeaTableColumn(description, "description", "40%")); + } + weaTable.setColumns(columns); + + WeaTableOperates operates = weaTable.getOperates(); + operates.getOperate().add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(59943, "编辑"), null, "0")); + operates.getOperate().add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(59942, "删除"), null, "1")); +// if (isOpenDevolution) { +// operates.add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel( 106247, "管理范围及分权设置"), 2)); +// } +// weaTable.setOperatesPermission(getDefaultOperatesPermission(operates.getOperate().size(), size)); +// weaTable.setCheckBoxPermission(getDefaultCheckBoxPermission(size)); +// +// weaTable.setTableType(WeaTableTypeEnum.CHECKBOX); + } + +// private static List> getDefaultOperatesPermission(int operateSize, int recordSize) { +// List> permissionList = Lists.newArrayList(); +// for (int i = 0; i < recordSize; i++) { +// List permissions = Lists.newArrayList(); +// for (int j = 0; j < operateSize; j++) { +// permissions.add(new Permission(true, false)); +// } +// permissionList.add(permissions); +// } +// return permissionList; +// } +// +// private static List getDefaultCheckBoxPermission(int recordSize) { +// List permissionList = Lists.newArrayList(); +// for (int i = 0; i < recordSize; i++) { +// permissionList.add(new Permission(true, false)); +// } +// return permissionList; +// } + + /** + * 表数据转列表数据 + * + * @param taxAgents + * @return + */ + public static List convertToListDTO(Collection taxAgents) { + if (CollectionUtils.isEmpty(taxAgents)) { + return Collections.emptyList(); + } + return taxAgents.stream() + .map(e -> TaxAgentListDTO.builder() + .id(e.getId()) + .name(e.getName()) + .description(e.getDescription()) + .build()) + .collect(Collectors.toList()); + } + + /** + * 表数据转列表数据 + * + * @param taxAgents + * @return + */ + public static List> convertToTableListDTO(List taxAgents, List paymentAgencyPOS, String setLabel) { + return convertToTableListDTO(Boolean.FALSE, taxAgents, paymentAgencyPOS, null, null, setLabel); + } + + /** + * 表数据转列表数据 + * + * @param taxAgents + * @return + */ + public static List> convertToTableListDTO(List taxAgents, List paymentAgencyPOS, List taxAgentAdmins, + List adminList, + String setLabel) { + return convertToTableListDTO(Boolean.TRUE, taxAgents, paymentAgencyPOS, taxAgentAdmins, adminList, setLabel); + } + + /** + * 表数据转列表数据 + * + * @param taxAgents + * @param adminList + * @return + */ + public static List> convertToTableListDTO(Boolean isDevolution, List taxAgents, List paymentAgencyPOS, + List taxAgentAdmins, + List adminList, String setLabel) { + if (CollectionUtils.isEmpty(taxAgents)) { + return Collections.emptyList(); + } + return taxAgents.stream() + .map(e -> { + Map map = new LinkedHashMap<>(); + map.put("id", e.getId()); + map.put("name", e.getName()); + map.put("employeeRange", setLabel); + if (isDevolution) { + List empIds = taxAgentAdmins.stream().filter(t -> t.getTaxAgentId().equals(e.getId())).map(TaxAgentAdminPO::getEmployeeId).collect(Collectors.toList()); + List admins = adminList.stream().filter(a -> empIds.contains(a.getEmployeeId())).map(DataCollectionEmployee::getUsername).collect(Collectors.toList()); + map.put("admins", CollectionUtils.isEmpty(admins) ? "" : Joiner.on(",").join((Iterable) admins)); + map.put("subAdmins", setLabel); + } + map.put("paymentAgency", buildPaymentAgency(e.getPaymentAgency(), paymentAgencyPOS)); + map.put("description", e.getDescription()); + return map; + }).collect(Collectors.toList()); + } + + public static List> buildPaymentAgency(String originStr, List paymentAgencyPOS) { + List> paymentAgencyList = new ArrayList<>(); + if (CollectionUtils.isEmpty(paymentAgencyPOS)) { + return paymentAgencyList; + } + originStr = StringUtils.isBlank(originStr) ? "" : originStr; + String finalOriginStr = originStr; + return paymentAgencyPOS.stream().map(e -> { + HashMap temp = new HashMap<>(); + temp.put("id", e.getId()); + temp.put("agencyName", e.getAgencyName()); + if (finalOriginStr.contains(String.valueOf(e.getId()))) { + temp.put("status", true); + } else { + temp.put("status", false); + } + return temp; + }).collect(Collectors.toList()); + } + + /** + * 保存参数转表数据 + * + * @param saveParam + * @param employeeId + * @return + */ + public static TaxAgentPO convertToPO(TaxAgentSaveParam saveParam, Long employeeId) { + if (saveParam == null) { + return null; + } + Date now = new Date(); + return TaxAgentPO.builder() + .id(saveParam.getId()) + .name(saveParam.getName()) + .description(saveParam.getDescription()) + .createTime(now) + .updateTime(now) + .creator(employeeId) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + } + + /** + * 表数据转列表数据(分管理员) + * + * @param list + * @param range + * @param subAdminList + * @return + */ + public static List convertToSubAdminListDTO(List list, String range, List subAdminList) { + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream() + .map(e -> { + Optional optionalUsername = subAdminList.stream().filter(a -> e.getEmployeeId().equals(a.getEmployeeId())).map(DataCollectionEmployee::getUsername).findFirst(); + return TaxAgentSubAdminListDTO.builder() + .id(e.getId()) + .subAdmin(optionalUsername.isPresent() ? optionalUsername.get() : "") + .range(range) + .description(e.getRemark()) + .build(); + }) + .collect(Collectors.toList()); + } + + /** + * 管理范围列表转换 + * + * @param taxAgentManageRanges + * @param employeeComInfos + * @param departmentComInfos + * @param subDepartmentComInfos + * @param positionComInfos + * @param hrmStatusList + * @return + */ + public static List convert2ListDTO(List taxAgentManageRanges, List employeeComInfos, + List departmentComInfos, List subDepartmentComInfos, + List positionComInfos, List hrmStatusList) { + if (CollectionUtils.isEmpty(taxAgentManageRanges)) { + return Collections.emptyList(); + } + Map employeeComInfoMap = SalaryEntityUtil.convert2Map(employeeComInfos, DataCollectionEmployee::getEmployeeId, DataCollectionEmployee::getUsername); + Map departmentComInfoMap = SalaryEntityUtil.convert2Map(departmentComInfos, DeptInfo::getId, DeptInfo::getName); + Map subDepartmentComInfoMap = SalaryEntityUtil.convert2Map(subDepartmentComInfos, SubCompanyInfo::getId, SubCompanyInfo::getName); + Map positionComInfoMap = SalaryEntityUtil.convert2Map(positionComInfos, PositionInfo::getId, PositionInfo::getName); + + Map hrmStatusNameMap = SalaryEntityUtil.convert2Map(hrmStatusList, hrmStatus -> String.valueOf(hrmStatus.getId()), HrmStatus::getName); + + return taxAgentManageRanges.stream() + .map(taxAgentManageRange -> { + TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(taxAgentManageRange.getTargetType()); + return TaxAgentManageRangeListDTO.builder() + .id(taxAgentManageRange.getId()) + .targetType(targetTypeEnum) + .targetTypeName(Optional.ofNullable(targetTypeEnum) + .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) + .orElse(StringUtils.EMPTY)) + .targetId(taxAgentManageRange.getTargetId()) + .targetName(buildTargetName(taxAgentManageRange, employeeComInfoMap, departmentComInfoMap, subDepartmentComInfoMap, positionComInfoMap)) + .employeeStatus(buildEmployeeStatus(hrmStatusNameMap, taxAgentManageRange.getEmployeeStatus())) + .build(); + }) + .collect(Collectors.toList()); + } + + private static String buildEmployeeStatus(Map hrmStatusNameMap, String employeeStatus) { + List employeeStatusList = JsonUtil.parseList(employeeStatus, String.class); + if (CollectionUtils.isEmpty(employeeStatusList)) { + return StringUtils.EMPTY; + } + return employeeStatusList.stream() + .map(hrmStatusNameMap::get) + .collect(Collectors.joining(",")); + } + + /** + * 构建对象名 + * + * @param taxAgentManageRange + * @param employeeComInfoMap + * @param departmentComInfoMap + * @param subDepartmentComInfoMap + * @param positionComInfoMap + * @return + */ + private static String buildTargetName(TaxAgentManageRangePO taxAgentManageRange, Map employeeComInfoMap, Map departmentComInfoMap, + Map subDepartmentComInfoMap, Map positionComInfoMap) { + TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(taxAgentManageRange.getTargetType()); + if (Objects.isNull(targetTypeEnum)) { + return StringUtils.EMPTY; + } + switch (targetTypeEnum) { + case EMPLOYEE: + return employeeComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); + case DEPT: + return departmentComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); + case SUBCOMPANY: + return subDepartmentComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); + case POSITION: + return positionComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); + default: + return StringUtils.EMPTY; + } + } + + public static Result handleTaxAgentRange(List taxAgentManageRanges, TaxAgentManageRangeSaveParam saveParam, Long taxAgentId, Long employeeId + ) { + return handleManageRange(taxAgentManageRanges, saveParam, TaxAgentRangeTypeEnum.TAXAGENT, taxAgentId, 0L, employeeId); + } + + public static Result handleSubAdminRange(List taxAgentManageRanges, TaxAgentManageRangeSaveParam saveParam, Long taxAgentId, Long subAdminId, + Long employeeId) { + return handleManageRange(taxAgentManageRanges, saveParam, TaxAgentRangeTypeEnum.SUBADMIN, taxAgentId, subAdminId, employeeId); + } + + /** + * 处理前端传回的保存参数,转换成对应的po(如果保存参数中的人员、部门、岗位等之前就已经添加过了,就不需要再次保存了) + * + * @param taxAgentManageRanges + * @param saveParam + * @param taxAgentId + * @param subAdminId + * @param employeeId + * @return + */ + private static Result handleManageRange(List taxAgentManageRanges, TaxAgentManageRangeSaveParam saveParam, + TaxAgentRangeTypeEnum rangeTypeEnum, Long taxAgentId, Long subAdminId, Long employeeId) { + Date now = new Date(); + Result handleResult = Result.builder() + .needInsertTaxAgentManageRanges(Lists.newArrayList()) + .needUpdateTaxAgentManageRanges(Lists.newArrayList()) + .build(); + if (CollectionUtils.isEmpty(saveParam.getTargetParams())) { + return handleResult; + } + Map taxAgentManageRangeMap = SalaryEntityUtil.convert2Map(taxAgentManageRanges, + e -> e.getIncludeType() + "-" + e.getTargetType() + "-" + e.getTargetId() + "-" + e.getRangeType()); + for (TaxAgentSubAdminRangeSaveParam.TaxAgentSubAdminRangeTargetParam targetParam : saveParam.getTargetParams()) { + String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId() + "-" + rangeTypeEnum.getValue(); + if (taxAgentManageRangeMap.containsKey(key)) { + TaxAgentManageRangePO taxAgentManageRange = taxAgentManageRangeMap.get(key); + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); + taxAgentManageRange.setUpdateTime(now); + handleResult.getNeedUpdateTaxAgentManageRanges().add(taxAgentManageRange); + continue; + } + TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(taxAgentId) + .taxAgentSubAdminId(subAdminId) + .rangeType(rangeTypeEnum.getValue()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(targetParam.getTargetId()) + .employeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())) + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange); + } + return handleResult; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Result { + + /** + * 需要更新的人员范围 + */ + private Collection needUpdateTaxAgentManageRanges; + + /** + * 需要新增的人员范围 + */ + private Collection needInsertTaxAgentManageRanges; + } +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordForFormSearchConditionDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordForFormSearchConditionDTO.java new file mode 100644 index 000000000..0316a764b --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordForFormSearchConditionDTO.java @@ -0,0 +1,99 @@ +//package com.engine.salary.entity.taxagent.dto; +// +//import com.weaver.common.component.search.item.WeaSearchConditionItemType; +//import com.weaver.common.component.search.item.WeaSearchConditionOption; +//import com.weaver.hrm.salary.annotation.SalarySearchCondition; +//import com.weaver.hrm.salary.annotation.SalarySearchConditionItem; +//import com.weaver.hrm.salary.enums.SalaryUserStatusEnum; +//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum; +//import com.weaver.hrm.salary.util.SalaryI18nUtil; +//import com.weaver.teams.security.context.TenantContext; +//import com.weaver.teams.security.context.UserContext; +//import lombok.AllArgsConstructor; +//import lombok.Builder; +//import lombok.Data; +//import lombok.NoArgsConstructor; +// +//import java.util.Arrays; +//import java.util.List; +//import java.util.stream.Collectors; +// +///** +// * @Description: 薪资档案操作记录 +// * @Author: wangxiangzhong +// * @Date: 2021/11/24 17:09 +// */ +//@Data +//@Builder +//@NoArgsConstructor +//@AllArgsConstructor +//public class TaxAgentAdjustRecordForFormSearchConditionDTO { +// +// @SalarySearchCondition( +// label = "个税扣缴义务人", +// labelId = 86184, +// needQuickSearch = true, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.SELECT, name = "taxAgent", options = "getTaxAgentOptions()"), +// } +// ) +// private String taxAgent; +// +// /** +// * 个税扣缴义务人选项 +// */ +// private List taxAgentOptions; +// +// @SalarySearchCondition( +// label = "调整原因", +// labelId = 85431, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.SELECT, name = "adjustReason", options = "getAdjustReasonOptions()"), +// } +// ) +// private SalaryArchiveTaxAgentAdjustReasonEnum adjustReason; +// +// @SalarySearchCondition( +// label = "生效日期", +// labelId = 85904, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.DATEPICKER, name = "effectiveTime") +// } +// ) +// private String effectiveTime; +// +// @SalarySearchCondition( +// label = "操作日期", +// labelId = 91058, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.DATEPICKER, name = "operateTime") +// } +// ) +// private String operateTime; +// +// @SalarySearchCondition( +// label = "操作人", +// labelId = 85435, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.BROWSER, browserType = "resource", browserMultiple = true, name = "operator", browserModule = "hrmsalary") +// } +// ) +// private String operator; +// +// @SalarySearchCondition( +// label = "备注", +// labelId = 84961, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.INPUT, name = "description"), +// } +// ) +// private String description; +// +// private List getUserStatus(){ +// return Arrays.stream(SalaryUserStatusEnum.values()).map(m->new WeaSearchConditionOption(m.name(), SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), m.getLabelId(), m.getDefaultLabel()))).collect(Collectors.toList()); +// } +// +// private List getAdjustReasonOptions(){ +// return Arrays.stream(SalaryArchiveTaxAgentAdjustReasonEnum.values()).map(m->new WeaSearchConditionOption(m.name(), SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), m.getLabelId(), m.getDefaultLabel()))).collect(Collectors.toList()); +// } +//} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordListDTO.java new file mode 100644 index 000000000..36cb60e2b --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordListDTO.java @@ -0,0 +1,136 @@ +//package com.engine.salary.entity.taxagent.dto; +// +//import com.fasterxml.jackson.annotation.JsonFormat; +//import com.fasterxml.jackson.annotation.JsonIgnore; +//import com.fasterxml.jackson.databind.annotation.JsonSerialize; +//import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +//import com.weaver.common.authority.format.TableColumn; +//import com.weaver.common.authority.format.TableOperates; +//import com.weaver.common.authority.format.WeaFormat; +//import com.weaver.common.component.table.type.WeaTableTypeEnum; +//import io.swagger.annotations.ApiModel; +//import io.swagger.annotations.ApiModelProperty; +//import lombok.AllArgsConstructor; +//import lombok.Builder; +//import lombok.Data; +//import lombok.NoArgsConstructor; +// +//import java.time.LocalDate; +//import java.util.Date; +// +///** +// * @Description: 个税扣缴义务人调整记录列表 +// * @Author: wangxiangzhong +// * @Date: 2021/11/1 16:34 +// */ +//@Data +//@Builder +//@NoArgsConstructor +//@AllArgsConstructor +//@ApiModel("个税扣缴义务人调整记录列表") +//@TableOperates(tableType = WeaTableTypeEnum.CHECKBOX) +//public class TaxAgentAdjustRecordListDTO { +// @ApiModelProperty("主键id") +// @JsonSerialize(using = ToStringSerializer.class) +// private Long id; +// +// /** +// * 人员信息表的主键id +// */ +// private Long employeeId; +// +// @ApiModelProperty("姓名") +// @WeaFormat( +// label = "姓名", +// labelId = 85429, +// tableColumn = @TableColumn(width = "100") +// ) +// private String username; +// +// @ApiModelProperty("部门") +// @WeaFormat( +// label = "部门", +// labelId = 86185, +// tableColumn = @TableColumn(width = "100") +// ) +// private String departmentName; +// +// @ApiModelProperty("员工状态") +// @WeaFormat( +// label = "员工状态", +// labelId = 86187, +// tableColumn = @TableColumn(width = "100") +// ) +// private String employeeStatus; +// +// @ApiModelProperty("调整前") +// @WeaFormat( +// label = "调整前", +// labelId = 85433, +// tableColumn = @TableColumn(width = "100") +// ) +// private String adjustBefore; +// +// @ApiModelProperty("调整后") +// @WeaFormat( +// label = "调整后", +// labelId = 85434, +// tableColumn = @TableColumn(width = "100") +// ) +// private String adjustAfter; +// +// @ApiModelProperty("调整原因") +// @WeaFormat( +// label = "调整原因", +// labelId = 85431, +// tableColumn = @TableColumn(width = "100") +// ) +// private String adjustReason; +// +// @ApiModelProperty("生效日期") +// @WeaFormat( +// label = "生效日期", +// labelId = 85904, +// tableColumn = @TableColumn(width = "100") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd") +// private LocalDate effectiveTime; +// +// @ApiModelProperty("操作人") +// @WeaFormat( +// label = "操作人", +// labelId = 85435, +// tableColumn = @TableColumn(width = "100") +// ) +// private String operator; +// +// @ApiModelProperty("操作时间") +// @WeaFormat( +// label = "操作时间", +// labelId = 85436, +// tableColumn = @TableColumn(width = "150") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// private Date operateTime; +// +// @ApiModelProperty("备注") +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "100") +// ) +// private String description; +// +// /** +// * 薪资档案id +// */ +// @JsonIgnore +// private Long salaryArchiveId; +// +// /** +// * 个税扣缴义务人id +// */ +// @JsonIgnore +// private Long taxAgentId; +// +//} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordSearchConditionDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordSearchConditionDTO.java new file mode 100644 index 000000000..e2e7ef399 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentAdjustRecordSearchConditionDTO.java @@ -0,0 +1,139 @@ +//package com.engine.salary.entity.taxagent.dto; +// +//import com.weaver.common.component.search.item.WeaSearchConditionItemType; +//import com.weaver.common.component.search.item.WeaSearchConditionOption; +//import com.weaver.hrm.salary.annotation.SalarySearchCondition; +//import com.weaver.hrm.salary.annotation.SalarySearchConditionItem; +//import com.weaver.hrm.salary.enums.SalaryUserStatusEnum; +//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum; +//import com.weaver.hrm.salary.util.SalaryI18nUtil; +//import com.weaver.teams.api.user.UserStatus; +//import com.weaver.teams.security.context.TenantContext; +//import com.weaver.teams.security.context.UserContext; +//import lombok.AllArgsConstructor; +//import lombok.Builder; +//import lombok.Data; +//import lombok.NoArgsConstructor; +// +//import java.util.Arrays; +//import java.util.List; +//import java.util.stream.Collectors; +// +///** +// * @Description: 薪资档案操作记录 +// * @Author: wangxiangzhong +// * @Date: 2021/11/24 17:09 +// */ +//@Data +//@Builder +//@NoArgsConstructor +//@AllArgsConstructor +//public class TaxAgentAdjustRecordSearchConditionDTO { +// +// @SalarySearchCondition( +// label = "姓名", +// labelId = 85429, +// needQuickSearch = true, +// quickSearchKey = "username", +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.INPUT, name = "username"), +// } +// ) +// private String username; +// +// @SalarySearchCondition( +// label = "岗位", +// labelId = 90633, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.BROWSER, browserType = "position", browserMultiple = true, name = "position", browserModule = "hrmsalary") +// } +// ) +// private String position; +// +// @SalarySearchCondition( +// label = "状态", +// labelId = 91075, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.SELECT, name = "status", options = "getUserStatus()") +// } +// ) +// private UserStatus status; +// +// @SalarySearchCondition( +// label = "部门", +// labelId = 86185, +// needQuickSearch = true, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.BROWSER, browserType = "department", browserMultiple = true, name = "department", browserModule = "hrmsalary") +// } +// ) +// private String department; +// +// @SalarySearchCondition( +// label = "个税扣缴义务人", +// labelId = 86184, +// needQuickSearch = true, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.SELECT, name = "taxAgent", options = "getTaxAgentOptions()"), +// } +// ) +// private String taxAgent; +// +// /** +// * 个税扣缴义务人选项 +// */ +// private List taxAgentOptions; +// +// @SalarySearchCondition( +// label = "调整原因", +// labelId = 85431, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.SELECT, name = "adjustReason", options = "getAdjustReasonOptions()"), +// } +// ) +// private SalaryArchiveTaxAgentAdjustReasonEnum adjustReason; +// +// @SalarySearchCondition( +// label = "生效日期", +// labelId = 85904, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.DATEPICKER, name = "effectiveTime") +// } +// ) +// private String effectiveTime; +// +// @SalarySearchCondition( +// label = "操作日期", +// labelId = 91058, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.DATEPICKER, name = "operateTime") +// } +// ) +// private String operateTime; +// +// @SalarySearchCondition( +// label = "操作人", +// labelId = 85435, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.BROWSER, browserType = "resource", browserMultiple = true, name = "operator", browserModule = "hrmsalary") +// } +// ) +// private String operator; +// +// @SalarySearchCondition( +// label = "备注", +// labelId = 84961, +// items = { +// @SalarySearchConditionItem(itemType = WeaSearchConditionItemType.INPUT, name = "description"), +// } +// ) +// private String description; +// +// private List getUserStatus(){ +// return Arrays.stream(SalaryUserStatusEnum.values()).map(m->new WeaSearchConditionOption(m.name(), SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), m.getLabelId(), m.getDefaultLabel()))).collect(Collectors.toList()); +// } +// +// private List getAdjustReasonOptions(){ +// return Arrays.stream(SalaryUserStatusEnum.values()).map(m->new WeaSearchConditionOption(m.name(), SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), m.getLabelId(), m.getDefaultLabel()))).collect(Collectors.toList()); +// } +//} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentBaseFormDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentBaseFormDTO.java new file mode 100644 index 000000000..580ddd585 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentBaseFormDTO.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.taxagent.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人基础信息表单 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentBaseFormDTO { + +// @SalaryForm( +// label = "启用分权", +// labelId = 106270, +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.SWITCH) +// } +// ) + private Boolean devolutionStatus; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeDTO.java new file mode 100644 index 000000000..aae1dd4e9 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeDTO.java @@ -0,0 +1,37 @@ +package com.engine.salary.entity.taxagent.dto; + +import lombok.Builder; +import lombok.Data; + +/** + * 个税扣缴义务人以及管理范围中的人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +public class TaxAgentEmployeeDTO { + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + /** + * 个税扣缴义务人名称 + */ + private String taxAgentName; + + /** + * 人员id + */ + private Long employeeId; + + /** + * 名字 + */ + private String username; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeOptionDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeOptionDTO.java new file mode 100644 index 000000000..3a1264cff --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeOptionDTO.java @@ -0,0 +1,25 @@ +package com.engine.salary.entity.taxagent.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人人员选项 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentEmployeeOptionDTO { + + private Long id; + + private String content; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeTaxAgentDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeTaxAgentDTO.java new file mode 100644 index 000000000..976fcddc1 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentEmployeeTaxAgentDTO.java @@ -0,0 +1,29 @@ +package com.engine.salary.entity.taxagent.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * 管理范围的人员与个税扣缴义务人的关联数据 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +public class TaxAgentEmployeeTaxAgentDTO { + + /** + * 人员id + */ + private Long employeeId; + + /** + * 个税扣缴义务人id列表 + */ + private List taxAgentIds; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentFormDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentFormDTO.java new file mode 100644 index 000000000..959a3c7e0 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentFormDTO.java @@ -0,0 +1,34 @@ +package com.engine.salary.entity.taxagent.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 个税扣缴义务人表单 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentFormDTO { + + private Long id; + + //名称 + private String name; + + //管理员 + private List adminUser; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentListDTO.java new file mode 100644 index 000000000..78b35c633 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentListDTO.java @@ -0,0 +1,42 @@ +package com.engine.salary.entity.taxagent.dto; + +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: wangxiangzhong + * @Date: 2021/10/29 15:39 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//@ApiModel("个税扣缴义务人列表") +//@TableOperates(value = { +// @Operates(index = 0, text = "编辑" ,labelId = 59943), +// @Operates(index = 1, text = "删除" ,labelId = 59942) +//}, tableType = WeaTableTypeEnum.NONE) +public class TaxAgentListDTO { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + +// @WeaFormat( +// label = "个税扣缴义务人名称", +// labelId = 91558, +// tableColumn = @TableColumn(width = "40%") +// ) + private String name; + +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "40%") +// ) + private String description; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeEmployeeDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeEmployeeDTO.java new file mode 100644 index 000000000..367f71d53 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeEmployeeDTO.java @@ -0,0 +1,47 @@ +package com.engine.salary.entity.taxagent.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * 个税扣缴义务人以及管理范围中的人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +public class TaxAgentManageRangeEmployeeDTO { + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + /** + * 名称 + */ + private String taxAgentName; + + /** + * 人员列表 + */ + private List employeeList; + + @Data + public static class TaxAgentEmployee { + /** + * 人员id + */ + private Long employeeId; + + /** + * 名字 + */ + private String username; + } +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeFormDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeFormDTO.java new file mode 100644 index 000000000..84fe665f3 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeFormDTO.java @@ -0,0 +1,35 @@ +package com.engine.salary.entity.taxagent.dto; + +import com.engine.salary.entity.hrm.HrmStatus; +import com.engine.salary.enums.salarysob.TargetTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * 范围表单 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentManageRangeFormDTO { + + //对象类型 + private TargetTypeEnum targetType; + +// private List targetOptions; + + //对象id") + private Long targetId; + + private Collection employeeStatus; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java new file mode 100644 index 000000000..eb858a077 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java @@ -0,0 +1,61 @@ +package com.engine.salary.entity.taxagent.dto; + +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.salarysob.TargetTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人管理范围列表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentManageRangeListDTO { + + //主键id + private Long id; + + //对象类型 + private TargetTypeEnum targetType; + + @SalaryTableColumn( + text = "对象类型", + labelId = 90394, + width = "30%", + column="targetTypeName" + ) + //对象类型") + @TableTitle(title ="对象类型",key = "targetTypeName",dataIndex = "targetTypeName") + private String targetTypeName; + + @SalaryTableColumn( + text = "对象", + labelId = 90396, + width = "30%", + column="targetName" + ) + @TableTitle(title ="对象",key = "targetName",dataIndex = "targetName") + private String targetName; + + //对象id") + private Long targetId; + + @SalaryTableColumn( + text = "员工状态", + labelId = 86187, + width = "30%", + column="employeeStatus" + ) + @TableTitle(title ="员工状态",key = "employeeStatus",dataIndex = "employeeStatus") + private String employeeStatus; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentSubAdminBaseFormDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentSubAdminBaseFormDTO.java new file mode 100644 index 000000000..8fa634d4f --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentSubAdminBaseFormDTO.java @@ -0,0 +1,33 @@ +package com.engine.salary.entity.taxagent.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 个税扣缴义务人分管理员基础设置表单 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentSubAdminBaseFormDTO { + + //主键id + private Long id; + + + //分管理员 + private List subAdminUser; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentSubAdminListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentSubAdminListDTO.java new file mode 100644 index 000000000..3b7936356 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentSubAdminListDTO.java @@ -0,0 +1,40 @@ +package com.engine.salary.entity.taxagent.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; + +/** + * 个税扣缴义务人分管理员列表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentSubAdminListDTO { + + //主键id + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + //分管理员 + @TableTitle(title = "分管理员", key = "subAdmin", dataIndex = "subAdmin") + private String subAdmin; + + //管理范围 + @TableTitle(title = "管理范围", key = "range", dataIndex = "range") + private String range; + + //备注 + @TableTitle(title = "备注", key = "description", dataIndex = "description") + private String description; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentAdjustRecordQueryParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentAdjustRecordQueryParam.java new file mode 100644 index 000000000..3c3bce1d5 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentAdjustRecordQueryParam.java @@ -0,0 +1,65 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +/** + * 个税扣缴义务人调整记录查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentAdjustRecordQueryParam extends BaseQueryParam { + + //主键id + private Collection ids; + + //薪资档案id + private Long salaryArchiveId; + + //关键字(姓名、部门、个税扣缴义务人) + private String keyword; + + //姓名 + private String username; + + //部门id + private List departmentIds; + + //岗位id + private List positionIds; + + //状态 + private String userstatus; + + //个税扣缴义务人id + private Long taxAgentId; + + //调整原因 + private String adjustReason; + + //生效日期 + private List effectiveTime; + + //操作日期 + private List operateTime; + + //操作人id + private List operatorIds; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentAdminChangeCheckParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentAdminChangeCheckParam.java new file mode 100644 index 000000000..f25474c2b --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentAdminChangeCheckParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentAdminChangeCheckParam { + + //个税扣缴义务人id + @DataCheck(require = true,message = "个税扣缴义务人id为空") + private Long taxAgentId; + + //管理员主键id + @DataCheck(require = true,message = "管理员主键为空") + private Long adminUserId; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentEmpSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentEmpSaveParam.java new file mode 100644 index 000000000..259580ee3 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentEmpSaveParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 个税扣缴义务人的关联人员保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentEmpSaveParam { + + //个税口角义务人的主键id + private Long taxAgentId; + + //关联人员列表 + private List salaryEmployeeList; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeEmpQueryParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeEmpQueryParam.java new file mode 100644 index 000000000..9a21b9ee8 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeEmpQueryParam.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.taxagent.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * 管理范围转人员-查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentManageRangeEmpQueryParam { + + //对象类型 + private String targetType; + + //对象id + private Collection targetIds; + + //人员状态 + private Collection employeeStatus; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeQueryParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeQueryParam.java new file mode 100644 index 000000000..e7f5020f1 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeQueryParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.Data; + +/** + * 管理范围查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +//@Builder +//@NoArgsConstructor +//@AllArgsConstructor +public class TaxAgentManageRangeQueryParam extends BaseQueryParam { + + //对象") + private String targetName; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java new file mode 100644 index 000000000..fdfc38396 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java @@ -0,0 +1,57 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.enums.salarysob.TargetTypeEnum; +import com.engine.salary.util.valid.DataCheck; +import lombok.Data; + +import java.util.Collection; +import java.util.List; + +/** + * 管理范围保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class TaxAgentManageRangeSaveParam { + + /** + * 只能选择 关联人员范围/从范围中排除 + */ + @DataCheck(require = true, max = 1, min = 0, message = "只能选择。0:排除、1:包含") + private Integer includeType; + + /** + * 对象不能为空 + */ + @DataCheck(require = true, message = "对象不能为空") + private List targetParams; + + /** + * 员工状态不允许为空 + */ + @DataCheck(require = true,message = "员工状态不允许为空") + private Collection employeeStatus; + + /** + * 个税扣缴义务人分管理员管理范围保存参数中的对象 + */ + @Data + public static class TaxAgentSubAdminRangeTargetParam { + + /** + * 对象类型不能为空 + */ + @DataCheck(require = true,message = "对象类型不能为空") + private TargetTypeEnum targetType; + + /** + * 对象不能为空 + */ + @DataCheck(require = true,message = "对象不能为空") + private Long targetId; + } +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentQueryParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentQueryParam.java new file mode 100644 index 000000000..410b0b2b4 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentQueryParam.java @@ -0,0 +1,29 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * 个税扣缴义务人查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentQueryParam extends BaseQueryParam { + + private Collection ids; + + //个税扣缴义务人名称 + private String name; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentRangeQueryParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentRangeQueryParam.java new file mode 100644 index 000000000..f6c2a34aa --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentRangeQueryParam.java @@ -0,0 +1,25 @@ +package com.engine.salary.entity.taxagent.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人人员范围查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人人员范围查询参数 +public class TaxAgentRangeQueryParam extends TaxAgentManageRangeQueryParam { + + //个税扣缴义务人id + private Long taxAgentId; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentRangeSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentRangeSaveParam.java new file mode 100644 index 000000000..65903e463 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentRangeSaveParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.Data; + +/** + * 个税扣缴义务人的人员范围保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class TaxAgentRangeSaveParam extends TaxAgentManageRangeSaveParam { + + /** + * 个税扣缴义务人的id不允许为空 + */ + @DataCheck(require = true,message = "个税扣缴义务人的id不允许为空") + private Long taxAgentId; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveBaseParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveBaseParam.java new file mode 100644 index 000000000..d6b1ef205 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveBaseParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.taxagent.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 个税扣缴义务人基础信息保存参数 + * @Author: wangxiangzhong + * @Date: 2022/3/21 9:55 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人基础信息保存参数") +public class TaxAgentSaveBaseParam { + + //"启用分权" + private Boolean devolutionStatus; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveParam.java new file mode 100644 index 000000000..2b51d1065 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveParam.java @@ -0,0 +1,42 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.RuntimeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 个税扣缴义务人保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentSaveParam { + + //主键id + @DataCheck(require = true, message = "id为空", runtime = {RuntimeTypeEnum.UPDATE}) + private Long id; + + //名称 + @DataCheck(require = true, message = "名称必填") + private String name; + + //管理员主键id + private List adminUserIds; + + //代缴机构 + private String paymentAgency; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminBaseFormParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminBaseFormParam.java new file mode 100644 index 000000000..40278cc6b --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminBaseFormParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 分管理员基础设置表单参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//分管理员基础设置表单参数 +public class TaxAgentSubAdminBaseFormParam { + + //分管理员的id + private Long id; + + //个税扣缴义务人的id + @DataCheck(require = true, message = "个税扣缴义务人的id为空") + private Long taxAgentId; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminBaseSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminBaseSaveParam.java new file mode 100644 index 000000000..40e6c35b9 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminBaseSaveParam.java @@ -0,0 +1,33 @@ +package com.engine.salary.entity.taxagent.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 分管理员基础设置保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentSubAdminBaseSaveParam { + + //主键id + private Long id; + + //个税扣缴义务人的id + private Long taxAgentId; + + //分管理员的id + private Long subAdminUserId; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminEmpSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminEmpSaveParam.java new file mode 100644 index 000000000..66dfaa868 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminEmpSaveParam.java @@ -0,0 +1,33 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 个税扣缴义务人分管理员的关联人员保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentSubAdminEmpSaveParam { + + //个税口角义务人的主键id + private Long taxAgentId; + + //分管理员的主键id + private Long subAdminId; + + //关联人员列表 + private List salaryEmployeeList; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminQueryParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminQueryParam.java new file mode 100644 index 000000000..6dec062b2 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminQueryParam.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.common.BaseQueryParam; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人分管理员查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentSubAdminQueryParam extends BaseQueryParam { + + //个税扣缴义务人id + @DataCheck(require = true,message = "个税扣缴义务人id为空") + private Long taxAgentId; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminRangeQueryParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminRangeQueryParam.java new file mode 100644 index 000000000..493d99d35 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminRangeQueryParam.java @@ -0,0 +1,24 @@ +package com.engine.salary.entity.taxagent.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人分管理员管理范围查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentSubAdminRangeQueryParam extends TaxAgentManageRangeQueryParam { + + //分管理员id + private Long subAdminId; +} diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminRangeSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminRangeSaveParam.java new file mode 100644 index 000000000..2638a435a --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSubAdminRangeSaveParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.taxagent.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.Data; + +/** + * 个税扣缴义务人分管理员管理范围保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class TaxAgentSubAdminRangeSaveParam extends TaxAgentManageRangeSaveParam { + + /** + * 分管理员的id不允许为空 + */ + @DataCheck(require = true, message = "分管理员的id不允许为空") + private Long subAdminId; +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java new file mode 100644 index 000000000..88859fe56 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java @@ -0,0 +1,70 @@ +package com.engine.salary.entity.taxagent.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人管理员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent_admin") +public class TaxAgentAdminPO { + /** + * 主键id + */ + private Long id; + + /** + * 个税扣缴义务人的主键id + */ + private Long taxAgentId; + + /** + * 人员信息表的主键id + */ + private Long employeeId; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + + + private Collection taxAgentIds; + private Collection ids; + +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentBasePO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentBasePO.java new file mode 100644 index 000000000..6930031f9 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentBasePO.java @@ -0,0 +1,61 @@ +package com.engine.salary.entity.taxagent.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人基础信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent_base") +public class TaxAgentBasePO { + + /** + * 主键id + */ + private Long id; + + /** + * 分权开关 + */ + private Integer devolutionStatus; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + private Collection ids; +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentEmpChangePO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentEmpChangePO.java new file mode 100644 index 000000000..505112ce2 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentEmpChangePO.java @@ -0,0 +1,88 @@ +package com.engine.salary.entity.taxagent.po; + +import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum; +import com.engine.salary.enums.taxagent.TaxAgentEmpChangeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人管理范围的增量人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent_emp_change") +public class TaxAgentEmpChangePO { + + /** + * 主键id + */ + private Long id; + + /** + * 个税扣缴义务人的主键id + */ + private Long taxAgentId; + + /** + * 人员信息表的主键id + */ + private Long employeeId; + + /** + * 人员姓名 + */ + private String employeeName; + + /** + * 增量类型 + * + * @see TaxAgentEmpChangeTypeEnum + */ + private Integer changeType; + + /** + * 增量类型 + * + * @see TaxAgentEmpChangeModuleEnum + */ + private Integer moduleType; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private Collection ids; +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentEmpPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentEmpPO.java new file mode 100644 index 000000000..671adb4a6 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentEmpPO.java @@ -0,0 +1,73 @@ +package com.engine.salary.entity.taxagent.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人管理范围的人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent_emp", autoResultMap = true) +public class TaxAgentEmpPO { + + /** + * 主键id + */ + private Long id; + + /** + * 个税扣缴义务人的主键id + */ + private Long taxAgentId; + + /** + * 人员信息表的主键id + */ + private Long employeeId; + + /** + * 人员姓名 + */ + private String employeeName; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private Collection taxAgentIds; + private Collection ids; +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentEmployeePO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentEmployeePO.java new file mode 100644 index 000000000..8b4adfcf6 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentEmployeePO.java @@ -0,0 +1,40 @@ +package com.engine.salary.entity.taxagent.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * 员工基本信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxAgentEmployeePO { + + //员工id") + private Long employeeId; + + //姓名") + private String username; + + //部门") + private String departmentName; + + //状态") + private String status; + + //人事状态") +// private String personnelStatus; + + private Collection ids; +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java new file mode 100644 index 000000000..e34ffef53 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java @@ -0,0 +1,99 @@ +package com.engine.salary.entity.taxagent.po; + +import com.engine.salary.enums.salarysob.TargetTypeEnum; +import com.engine.salary.enums.taxagent.TaxAgentRangeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人的管理范围表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent_manage_range +public class TaxAgentManageRangePO { + + /** + * 主键id + */ + private Long id; + + /** + * 分管理员的id + */ + private Long taxAgentSubAdminId; + + /** + * 个税扣缴义务人的主键id + */ + private Long taxAgentId; + + /** + * 范围类型 + * @see TaxAgentRangeTypeEnum + */ + private Integer rangeType; + + /** + * 对象类型 + * @see TargetTypeEnum + */ + private Integer targetType; + + /** + * 对象id + */ + private Long targetId; + + /** + * 人员状态 + */ + private String employeeStatus; + + /** + * 是包含还是排除 0:排除、1:包含 + */ + private Integer includeType; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + + private Collection taxAgentIds; + private Collection ids; + private Collection taxAgentSubAdminIds; +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentPO.java new file mode 100644 index 000000000..a5d695625 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentPO.java @@ -0,0 +1,73 @@ +package com.engine.salary.entity.taxagent.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent") +//个税扣缴义务人表") +public class TaxAgentPO { + + /** + * 主键id + */ + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 代缴机构 + */ + private String paymentAgency; + + /** + * 备注 + */ + private String description; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private Collection ids; +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentSubAdminEmpPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentSubAdminEmpPO.java new file mode 100644 index 000000000..b9134228e --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentSubAdminEmpPO.java @@ -0,0 +1,78 @@ +package com.engine.salary.entity.taxagent.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人管理范围的人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent_sub_admin_emp", autoResultMap = true) +public class TaxAgentSubAdminEmpPO { + + /** + * 主键id + */ + private Long id; + + /** + * 个税扣缴义务人的主键id + */ + private Long taxAgentId; + + /** + * 分管理员的id + */ + private Long taxAgentSubAdminId; + + /** + * 人员信息表的主键id + */ + private Long employeeId; + + /** + * 人员姓名 + */ + private String employeeName; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private Collection ids; + +} diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentSubAdminPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentSubAdminPO.java new file mode 100644 index 000000000..60e2f9ff8 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentSubAdminPO.java @@ -0,0 +1,74 @@ +package com.engine.salary.entity.taxagent.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人分管理员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent_sub_admin") +//个税扣缴义务人分管理员") +public class TaxAgentSubAdminPO { + + /** + * 主键id + */ + private Long id; + + /** + * 个税扣缴义务人的主键id + */ + private Long taxAgentId; + + /** + * 人员信息表的主键id + */ + private Long employeeId; + + /** + * 备注 + */ + private String remark; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private Collection ids; + +} diff --git a/src/com/engine/salary/enums/SalaryJobFlagEnum.java b/src/com/engine/salary/enums/SalaryJobFlagEnum.java new file mode 100644 index 000000000..6309c0b74 --- /dev/null +++ b/src/com/engine/salary/enums/SalaryJobFlagEnum.java @@ -0,0 +1,31 @@ +package com.engine.salary.enums; + +/** + * 个税扣缴义务人角色类型 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum SalaryJobFlagEnum { + normal("normal", "在职"), + unavailable("unavailable", "非在职"); + + private String value; + + private String defaultLabel; + + SalaryJobFlagEnum(String value, String defaultLabel) { + this.value = value; + this.defaultLabel = defaultLabel; + } + + public String getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/enums/UserStatusEnum.java b/src/com/engine/salary/enums/UserStatusEnum.java index 12743967d..9a439f30a 100644 --- a/src/com/engine/salary/enums/UserStatusEnum.java +++ b/src/com/engine/salary/enums/UserStatusEnum.java @@ -1,5 +1,7 @@ package com.engine.salary.enums; +import com.engine.salary.entity.hrm.HrmStatus; + import java.util.*; import java.util.stream.Collectors; @@ -83,4 +85,11 @@ public enum UserStatusEnum { return Arrays.stream(UserStatusEnum.values()).filter(v -> v != INVALID).collect(Collectors.toList()); } + public static List getHrmStatusList() { + return Arrays.stream(UserStatusEnum.values()) + .filter(v -> v != INVALID) + .map(v -> HrmStatus.builder().id(v.value.toString()).name(v.description).build()).collect(Collectors.toList()); + } + + } diff --git a/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java b/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java index 961865c72..dc006785a 100644 --- a/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java +++ b/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java @@ -16,9 +16,10 @@ import java.util.Objects; public enum TargetTypeEnum implements BaseEnum { EMPLOYEE(1, "人员", 100133), DEPT(2, "部门", 86185), + SUBCOMPANY(3, "分部", 107369), POSITION(4, "岗位", 90633), - ; - + ALL(5, "所有人", 107729), + EXT_EMPLOYEE(100, "外部人员", 0); private int value; private String defaultLabel; diff --git a/src/com/engine/salary/enums/taxagent/TaxAgentEmpChangeModuleEnum.java b/src/com/engine/salary/enums/taxagent/TaxAgentEmpChangeModuleEnum.java new file mode 100644 index 000000000..b1edea29d --- /dev/null +++ b/src/com/engine/salary/enums/taxagent/TaxAgentEmpChangeModuleEnum.java @@ -0,0 +1,32 @@ +package com.engine.salary.enums.taxagent; + +/** + * 模块类型 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum TaxAgentEmpChangeModuleEnum { + + SALARY_ARCHIVE(1, "薪资档案"), + INSURANCE_ARCHIVE(2, "社保档案"); + + private int value; + + private String defaultLabel; + + TaxAgentEmpChangeModuleEnum(int value, String defaultLabel) { + this.value = value; + this.defaultLabel = defaultLabel; + } + + public int getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/enums/taxagent/TaxAgentEmpChangeTypeEnum.java b/src/com/engine/salary/enums/taxagent/TaxAgentEmpChangeTypeEnum.java new file mode 100644 index 000000000..562439e76 --- /dev/null +++ b/src/com/engine/salary/enums/taxagent/TaxAgentEmpChangeTypeEnum.java @@ -0,0 +1,29 @@ +package com.engine.salary.enums.taxagent; + +/** + * @Description: 增量类型 + * @Author: wangxiangzhong + * @Date: 2021-11-17 14:37 + */ +public enum TaxAgentEmpChangeTypeEnum { + + ADD(1, "新增"), + DEL(2, "删除"); + + private int value; + + private String defaultLabel; + + TaxAgentEmpChangeTypeEnum(int value, String defaultLabel) { + this.value = value; + this.defaultLabel = defaultLabel; + } + + public int getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/enums/taxagent/TaxAgentRangeTypeEnum.java b/src/com/engine/salary/enums/taxagent/TaxAgentRangeTypeEnum.java new file mode 100644 index 000000000..c89faa539 --- /dev/null +++ b/src/com/engine/salary/enums/taxagent/TaxAgentRangeTypeEnum.java @@ -0,0 +1,49 @@ +package com.engine.salary.enums.taxagent; + +import com.engine.salary.util.SalaryI18nUtil; + +import java.util.Arrays; +import java.util.Optional; + +/** + * 范围类型 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum TaxAgentRangeTypeEnum { + + TAXAGENT(1, "个税扣缴义务人", 86184), + SUBADMIN(2, "分管理员", 106283); + + private int value; + + private String defaultLabel; + + private int labelId; + + TaxAgentRangeTypeEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + public int getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } + + public int getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value, Long employeeId, String tenantKey) { + Optional optional = Arrays.stream(TaxAgentRangeTypeEnum.values()).filter(r -> Integer.valueOf(r.getValue()).equals(value)).findFirst(); + return optional.isPresent() ? SalaryI18nUtil.getI18nLabel(optional.get().getLabelId(), optional.get().getDefaultLabel()) : ""; + } +} diff --git a/src/com/engine/salary/enums/taxagent/TaxAgentRoleTypeEnum.java b/src/com/engine/salary/enums/taxagent/TaxAgentRoleTypeEnum.java new file mode 100644 index 000000000..f5cde5746 --- /dev/null +++ b/src/com/engine/salary/enums/taxagent/TaxAgentRoleTypeEnum.java @@ -0,0 +1,31 @@ +package com.engine.salary.enums.taxagent; + +/** + * @Description: 个税扣缴义务人角色类型 + * @Author: wangxiangzhong + * @Date: 2022-04-22 14:37 + */ +public enum TaxAgentRoleTypeEnum { + + CHIEF(0, "总管理员"), + ADMIN(1, "管理员"), + SUBADMIN(2, "分管理员"), + NONE(3, "其他"); + + private int value; + + private String defaultLabel; + + TaxAgentRoleTypeEnum(int value, String defaultLabel) { + this.value = value; + this.defaultLabel = defaultLabel; + } + + public int getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml index 154de7d64..d7c78f1a5 100644 --- a/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml @@ -63,7 +63,7 @@ select - a.LASTNAME as username + a.LASTNAME as username from hrmresource a where 1 = 1 + + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java index bd5aa6fc3..12aa1e901 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java @@ -39,13 +39,6 @@ public interface SalarySobMapper { */ int insertIgnoreNull(SalarySobPO SalarySobPO); - /** - * 修改,修改所有字段 - * - * @param SalarySobPO 修改的记录 - * @return 返回影响行数 - */ - int update(SalarySobPO SalarySobPO); /** * 修改,忽略null字段 @@ -55,14 +48,6 @@ public interface SalarySobMapper { */ int updateIgnoreNull(SalarySobPO SalarySobPO); - /** - * 删除记录 - * - * @param SalarySobPO 待删除的记录 - * @return 返回影响行数 - */ - int delete(SalarySobPO SalarySobPO); - void deleteByIds(@Param("ids") Collection ids); List listByParam(@Param("param") SalarySobPO SalarySobPO); diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml index 4850742a9..5eafd5c50 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml @@ -18,6 +18,7 @@ + @@ -40,6 +41,7 @@ , t.update_time , t.delete_type , t.tenant_key + , t.tax_agent_id @@ -118,6 +120,12 @@ #{id} + + AND tax_agent_id IN + + #{taxAgentId} + + ORDER BY id DESC @@ -177,114 +185,8 @@ tenant_key, - - - - #{id}, - - - #{name}, - - - #{incomeCategory}, - - - #{salaryCycleType}, - - - #{salaryCycleFromDay}, - - - #{taxCycleType}, - - - #{attendCycleType}, - - - #{attendCycleFromDay}, - - - #{socialSecurityCycleType}, - - - #{disable}, - - - #{description}, - - - #{creator}, - - - #{createTime}, - - - #{updateTime}, - - - #{deleteType}, - - - #{tenantKey}, - - - - - - - select hrsa_salary_sob_id.currval from dual - - INSERT INTO hrsa_salary_sob - - - - id, - - - name, - - - income_category, - - - salary_cycle_type, - - - salary_cycle_from_day, - - - tax_cycle_type, - - - attend_cycle_type, - - - attend_cycle_from_day, - - - social_security_cycle_type, - - - disable, - - - description, - - - creator, - - - create_time, - - - update_time, - - - delete_type, - - - tenant_key, + + tax_agent_id, @@ -336,6 +238,9 @@ #{tenantKey}, + + #{taxAgentId}, + @@ -412,19 +317,14 @@ tenant_key=#{tenantKey}, + + tax_agent_id=#{taxAgentId}, + WHERE id = #{id} AND delete_type = 0 - - - UPDATE hrsa_salary_sob - SET delete_type=1 - WHERE id = #{id} - AND delete_type = 0 - - UPDATE hrsa_salary_sob SET delete_type = 1 diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.java new file mode 100644 index 000000000..ebd54d390 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.java @@ -0,0 +1,67 @@ +package com.engine.salary.mapper.taxagent; + +import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface TaxAgentAdminMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + TaxAgentAdminPO getById(Long id); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(TaxAgentAdminPO taxAgentAdmin); + + /** + * 新增,忽略null字段 + * + * @param TaxAgentAdminPO 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(TaxAgentAdminPO TaxAgentAdminPO); + + /** + * 修改,修改所有字段 + * + * @param TaxAgentAdminPO 修改的记录 + * @return 返回影响行数 + */ + int update(TaxAgentAdminPO TaxAgentAdminPO); + + /** + * 修改,忽略null字段 + * + * @param TaxAgentAdminPO 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(TaxAgentAdminPO TaxAgentAdminPO); + + /** + * 删除记录 + * + * @param TaxAgentAdminPO 待删除的记录 + * @return 返回影响行数 + */ + int delete(TaxAgentAdminPO TaxAgentAdminPO); + + void deleteByTaxAgentIds(@Param("taxAgentIds") Collection taxAgentIds); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml new file mode 100644 index 000000000..ad3e4b720 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + t + . + create_time + , t.creator + , t.delete_type + , t.employee_id + , t.id + , t.tax_agent_id + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_tax_agent_admin + + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + id, + + + tax_agent_id, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{id}, + + + #{taxAgentId}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_tax_agent_admin + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + tax_agent_id=#{taxAgentId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_admin + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + tax_agent_id=#{taxAgentId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_admin + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + + UPDATE hrsa_tax_agent_admin + SET delete_type=1 + WHERE delete_type = 0 + AND tax_agent_id IN + + #{taxAgentId} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentBaseMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentBaseMapper.java new file mode 100644 index 000000000..e34dccc33 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentBaseMapper.java @@ -0,0 +1,68 @@ +package com.engine.salary.mapper.taxagent; + +import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface TaxAgentBaseMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + TaxAgentBasePO getById(Long id); + + + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(TaxAgentBasePO taxAgentBase); + + /** + * 新增,忽略null字段 + * + * @param taxAgentBase 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(TaxAgentBasePO taxAgentBase); + + /** + * 修改,修改所有字段 + * + * @param taxAgentBase 修改的记录 + * @return 返回影响行数 + */ + int update(TaxAgentBasePO taxAgentBase); + + /** + * 修改,忽略null字段 + * + * @param taxAgentBase 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(TaxAgentBasePO taxAgentBase); + + /** + * 删除记录 + * + * @param taxAgentBase 待删除的记录 + * @return 返回影响行数 + */ + int delete(TaxAgentBasePO taxAgentBase); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentBaseMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentBaseMapper.xml new file mode 100644 index 000000000..0d2cee524 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentBaseMapper.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.devolution_status + , t.id + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_tax_agent_base + + + + create_time, + + + creator, + + + delete_type, + + + devolution_status, + + + id, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{devolutionStatus}, + + + #{id}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_tax_agent_base + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + devolution_status=#{devolutionStatus}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_base + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + devolution_status=#{devolutionStatus}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_base + 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/taxagent/TaxAgentEmpChangeMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.java new file mode 100644 index 000000000..3e3616e80 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.java @@ -0,0 +1,77 @@ +package com.engine.salary.mapper.taxagent; + +import com.engine.salary.entity.taxagent.po.TaxAgentEmpChangePO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface TaxAgentEmpChangeMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + TaxAgentEmpChangePO getById(Long id); + + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(TaxAgentEmpChangePO taxAgentEmpChange); + + /** + * 新增,忽略null字段 + * + * @param taxAgentEmpChange 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(TaxAgentEmpChangePO taxAgentEmpChange); + + /** + * 修改,修改所有字段 + * + * @param taxAgentEmpChange 修改的记录 + * @return 返回影响行数 + */ + int update(TaxAgentEmpChangePO taxAgentEmpChange); + + /** + * 修改,忽略null字段 + * + * @param taxAgentEmpChange 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(TaxAgentEmpChangePO taxAgentEmpChange); + + /** + * 删除记录 + * + * @param taxAgentEmpChange 待删除的记录 + * @return 返回影响行数 + */ + int delete(TaxAgentEmpChangePO taxAgentEmpChange); + + void deleteByIds(@Param("ids") Collection ids); + + /** + * 批量插入 + * + * @param saves + */ + void batchInsert(@Param("collection") List saves); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.xml new file mode 100644 index 000000000..65fb07266 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.xml @@ -0,0 +1,344 @@ + + + + + + + + + + + + + + + + + + + + t + . + change_type + , t.create_time + , t.creator + , t.delete_type + , t.employee_id + , t.employee_name + , t.id + , t.module_type + , t.tax_agent_id + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_tax_agent_emp_change + + + + change_type, + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + employee_name, + + + id, + + + module_type, + + + tax_agent_id, + + + tenant_key, + + + update_time, + + + + + #{changeType}, + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeName}, + + + #{id}, + + + #{moduleType}, + + + #{taxAgentId}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_tax_agent_emp_change + + change_type=#{changeType}, + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + employee_name=#{employeeName}, + module_type=#{moduleType}, + tax_agent_id=#{taxAgentId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_emp_change + + + change_type=#{changeType}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + employee_name=#{employeeName}, + + + module_type=#{moduleType}, + + + tax_agent_id=#{taxAgentId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_emp_change + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_tax_agent_emp_change + SET delete_type=1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + INSERT INTO hrsa_tax_agent_emp_change( + id, + employee_id, + tax_agent_id, + employee_name, + change_type, + module_type, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.employeeName}, + #{item.changeType}, + #{item.moduleType}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + INSERT INTO hrsa_tax_agent_emp_change( + id, + employee_id, + tax_agent_id, + employee_name, + change_type, + module_type, + create_time, + update_time, + creator, + tenant_key + ) + + + select + #{item.id}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.employeeName}, + #{item.changeType}, + #{item.moduleType}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + from dual + + + + + INSERT INTO hrsa_tax_agent_emp_change( + id, + employee_id, + tax_agent_id, + employee_name, + change_type, + module_type, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + ( + #{item.id}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.employeeName}, + #{item.changeType}, + #{item.moduleType}, + #{item.operator}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.java new file mode 100644 index 000000000..a885e3844 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.java @@ -0,0 +1,78 @@ +package com.engine.salary.mapper.taxagent; + +import com.engine.salary.entity.taxagent.po.TaxAgentEmpPO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface TaxAgentEmpMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + TaxAgentEmpPO getById(Long id); + + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(TaxAgentEmpPO taxAgentEmp); + + /** + * 新增,忽略null字段 + * + * @param taxAgentEmp 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(TaxAgentEmpPO taxAgentEmp); + + /** + * 修改,修改所有字段 + * + * @param taxAgentEmp 修改的记录 + * @return 返回影响行数 + */ + int update(TaxAgentEmpPO taxAgentEmp); + + /** + * 修改,忽略null字段 + * + * @param taxAgentEmp 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(TaxAgentEmpPO taxAgentEmp); + + /** + * 删除记录 + * + * @param taxAgentEmp 待删除的记录 + * @return 返回影响行数 + */ + int delete(TaxAgentEmpPO taxAgentEmp); + + void deleteByIds(@Param("ids") Collection ids); + + /** + * 批量插入 + * + * @param saves + */ + void batchInsert(@Param("collection") List saves); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml new file mode 100644 index 000000000..68d2bd744 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.employee_id + , t.employee_name + , t.id + , t.tax_agent_id + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_tax_agent_emp + + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + employee_name, + + + id, + + + tax_agent_id, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeName}, + + + #{id}, + + + #{taxAgentId}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_tax_agent_emp + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + employee_name=#{employeeName}, + tax_agent_id=#{taxAgentId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_emp + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + employee_name=#{employeeName}, + + + tax_agent_id=#{taxAgentId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_emp + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_tax_agent_emp + SET delete_type=1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + INSERT INTO hrsa_tax_agent_emp( + id, + employee_id, + tax_agent_id, + employee_name, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.employeeName}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + INSERT INTO hrsa_tax_agent_emp( + id, + employee_id, + tax_agent_id, + employee_name, + create_time, + update_time, + creator, + tenant_key + ) + + + select + #{item.id}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.employeeName}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + from dual + + + + + INSERT INTO hrsa_tax_agent_emp( + id, + employee_id, + tax_agent_id, + employee_name, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + ( + #{item.id}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.employeeName}, + #{item.operator}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.java new file mode 100644 index 000000000..58f7542ad --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.java @@ -0,0 +1,74 @@ +package com.engine.salary.mapper.taxagent; + +import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface TaxAgentManageRangeMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + TaxAgentManageRangePO getById(Long id); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(TaxAgentManageRangePO taxAgentManageRange); + + + /** + * 新增,忽略null字段 + * + * @param taxAgentManageRange 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(TaxAgentManageRangePO taxAgentManageRange); + + /** + * 修改,修改所有字段 + * + * @param taxAgentManageRange 修改的记录 + * @return 返回影响行数 + */ + int update(TaxAgentManageRangePO taxAgentManageRange); + + /** + * 修改,忽略null字段 + * + * @param taxAgentManageRange 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(TaxAgentManageRangePO taxAgentManageRange); + + /** + * 删除记录 + * + * @param taxAgentManageRange 待删除的记录 + * @return 返回影响行数 + */ + int delete(TaxAgentManageRangePO taxAgentManageRange); + + void deleteByIds(@Param("ids") Collection ids); + + void deleteByTaxAgentIds(@Param("taxAgentIds") Collection taxAgentIds); + + void deleteBySubAdminIds(Collection subAdminIds); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml new file mode 100644 index 000000000..c19c09421 --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml @@ -0,0 +1,329 @@ + + + + + + + + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.employee_id + , t.employee_status + , t.id + , t.include_type + , t.range_type + , t.target_id + , t.target_type + , t.tax_agent_id + , t.tax_agent_sub_admin_id + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_tax_agent_manage_range + + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + employee_status, + + + id, + + + include_type, + + + range_type, + + + target_id, + + + target_type, + + + tax_agent_id, + + + tax_agent_sub_admin_id, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeStatus}, + + + #{id}, + + + #{includeType}, + + + #{rangeType}, + + + #{targetId}, + + + #{targetType}, + + + #{taxAgentId}, + + + #{taxAgentSubAdminId}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_tax_agent_manage_range + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + employee_status=#{employeeStatus}, + include_type=#{includeType}, + range_type=#{rangeType}, + target_id=#{targetId}, + target_type=#{targetType}, + tax_agent_id=#{taxAgentId}, + tax_agent_sub_admin_id=#{taxAgentSubAdminId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_manage_range + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + employee_status=#{employeeStatus}, + + + include_type=#{includeType}, + + + range_type=#{rangeType}, + + + target_id=#{targetId}, + + + target_type=#{targetType}, + + + tax_agent_id=#{taxAgentId}, + + + tax_agent_sub_admin_id=#{taxAgentSubAdminId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent_manage_range + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_tax_agent_manage_range + SET delete_type=1 + WHERE + id IN + + #{id} + + AND delete_type = 0 + + + + UPDATE hrsa_tax_agent_manage_range + SET delete_type=1 + WHERE + tax_agent_id IN + + #{taxAgentId} + + AND delete_type = 0 + + + + UPDATE hrsa_tax_agent_manage_range + SET delete_type=1 + WHERE + tax_agent_sub_admin_id IN + + #{subAdminId} + + AND delete_type = 0 + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java new file mode 100644 index 000000000..c35e9822f --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java @@ -0,0 +1,96 @@ +package com.engine.salary.mapper.taxagent; + +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; +import com.engine.salary.entity.taxagent.po.TaxAgentEmployeePO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Collection; +import java.util.List; + +public interface TaxAgentMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + TaxAgentPO getById(Long id); + + /** + * 新增,插入所有字段 + * + * @param taxAgent 新增的记录 + * @return 返回影响行数 + */ + int insert(TaxAgentPO taxAgent); + + /** + * 新增,忽略null字段 + * + * @param taxAgent 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(TaxAgentPO taxAgent); + + /** + * 修改,修改所有字段 + * + * @param taxAgent 修改的记录 + * @return 返回影响行数 + */ + int update(TaxAgentPO taxAgent); + + /** + * 修改,忽略null字段 + * + * @param taxAgent 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(TaxAgentPO taxAgent); + + /** + * 删除记录 + * + * @param taxAgent 待删除的记录 + * @return 返回影响行数 + */ + int delete(TaxAgentPO taxAgent); + + + /** + * 条件查询 + * @param taxAgent + * @return + */ + List listBySome(@Param("param") TaxAgentQueryParam taxAgent); + + + /** + * 根据名称查询 + * @param name + * @return + */ + @Select("SELECT * FROM hrsa_tax_agent WHERE delete_type = 0 and name = #{name}") + List listByName(String name); + + /** + * 批量删除个税扣缴义务人 + * + * @param ids + */ + void deleteByIds(@Param("ids") Collection ids); + + List listEmployee(); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml new file mode 100644 index 000000000..25b1baffd --- /dev/null +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.description + , t.id + , t.name + , t.tenant_key + , t.update_time + + + + + AND id IN + + #{id} + + + + AND name like CONCAT('%',#{param.name},'%') + + + + + + + + + + + + + + + INSERT INTO hrsa_tax_agent + + create_time, + creator, + delete_type, + description, + id, + name, + tenant_key, + update_time, + + + #{createTime}, + #{creator}, + #{deleteType}, + #{description}, + #{id}, + #{name}, + #{tenantKey}, + #{updateTime}, + + + + + + INSERT INTO hrsa_tax_agent + + + + create_time, + + + creator, + + + delete_type, + + + description, + + + id, + + + name, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{description}, + + + #{id}, + + + #{name}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_tax_agent + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + description=#{description}, + name=#{name}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + description=#{description}, + + + name=#{name}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_tax_agent + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_tax_agent + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/AddUpDeductionService.java b/src/com/engine/salary/service/AddUpDeductionService.java index f9d04e82a..397ac2349 100644 --- a/src/com/engine/salary/service/AddUpDeductionService.java +++ b/src/com/engine/salary/service/AddUpDeductionService.java @@ -1,7 +1,12 @@ package com.engine.salary.service; import com.engine.salary.entity.datacollection.AddUpDeduction; +import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO; +import com.engine.salary.entity.datacollection.dto.AddUpDeductionRecordDTO; +import com.engine.salary.entity.datacollection.param.AddUpDeductionImportParam; import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.time.YearMonth; @@ -10,19 +15,63 @@ import java.util.Map; public interface AddUpDeductionService { - Map list(Map params); - - XSSFWorkbook export(Map params); Map getSearchCondition(Map params); - Map importAddUpDeduction(Map params); + Map importAddUpDeduction(AddUpDeductionImportParam importParam); - Map getDetailList(Map params); - Map preview(Map params); + Map preview(AddUpDeductionImportParam importParam ); - XSSFWorkbook exportDetail(Map map); + + XSSFWorkbook downloadTemplate(boolean isChief,AddUpDeductionQueryParam queryParam); + + + + //-----------------------------------分权--------------------------------------------------- + + + + /** + * 通过id获取单条累计专项附加扣除记录 + * + * @param id + * @return + */ + AddUpDeduction getById(Long id); + + /** + * 数据采集-累计专项附加扣除列表(分页) + * + * @param queryParam + * @return + */ + PageInfo listPage(AddUpDeductionQueryParam queryParam); + + /** + * 获取数据采集-累计专项附加扣除详情列表(分页) + * + * @param queryParam + * @return + */ + PageInfo recordListPage(AddUpDeductionQueryParam queryParam); + + /** + * 导出 + * + * @param isChief + * @param queryParam + */ + XSSFWorkbook export(boolean isChief, AddUpDeductionQueryParam queryParam); + + /** + * 导出详情 + * + * @param beLongEmployeeId + * @param isChief + * @param queryParam + */ + XSSFWorkbook exportDetail(Long beLongEmployeeId, boolean isChief, AddUpDeductionQueryParam queryParam); /** * 获取累计专项附加扣除数据 @@ -33,5 +82,11 @@ public interface AddUpDeductionService { */ List getAddUpDeductionList(YearMonth declareMonth, List employeeIds); - XSSFWorkbook downloadTemplate(AddUpDeductionQueryParam queryParam); + /** + * 根据年月获取已核算数据 + * + * @param yearMonth + * @return + */ + List getAccountedEmployeeData(String yearMonth); } diff --git a/src/com/engine/salary/service/AddUpSituationService.java b/src/com/engine/salary/service/AddUpSituationService.java index 7b3210f92..6b0e88867 100644 --- a/src/com/engine/salary/service/AddUpSituationService.java +++ b/src/com/engine/salary/service/AddUpSituationService.java @@ -1,7 +1,11 @@ package com.engine.salary.service; import com.engine.salary.entity.datacollection.AddUpSituation; +import com.engine.salary.entity.datacollection.dto.AddUpSituationDTO; +import com.engine.salary.entity.datacollection.dto.AddUpSituationRecordDTO; +import com.engine.salary.entity.datacollection.param.AddUpSituationImportParam; import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; +import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.time.YearMonth; @@ -11,19 +15,32 @@ import java.util.Map; public interface AddUpSituationService { - Map list(Map params); + Map getSearchCondition(); - XSSFWorkbook export(Map params); + /** + * 通过id获取单个累计情况 + * + * @param id + * @return + */ + AddUpSituation getById(Long id); - Map getSearchCondition(Map params); - Map importAddUpSituation(Map params); + /** + * 数据采集-累计情况列表 + * + * @param queryParam + * @return + */ + PageInfo listPage(AddUpSituationQueryParam queryParam); - XSSFWorkbook exportDetail(Map params); - - Map getDetailList(Map params); - - Map preview(Map params); + /** + * 获取数据采集-累计情况详情列表 + * + * @param queryParam + * @return + */ + PageInfo recordListPage(AddUpSituationQueryParam queryParam); /** * 获取累计情况 @@ -34,8 +51,18 @@ public interface AddUpSituationService { */ List getAddUpSituationList(YearMonth taxYearMonth, List employeeIds); + XSSFWorkbook export(AddUpSituationQueryParam queryParam); + + + XSSFWorkbook exportDetail(AddUpSituationQueryParam queryParam); + + Map preview(AddUpSituationImportParam importParam); + + Map importAddUpSituation(AddUpSituationImportParam importParam); + /** * 删除累计情况 + * * @param taxYearMonth * @param employeeIds * @return @@ -45,4 +72,5 @@ public interface AddUpSituationService { XSSFWorkbook downloadTemplate(AddUpSituationQueryParam queryParam); boolean deleteByTaxYearMonthAndTaxAgentIds(YearMonth localDate2YearMonth, Collection taxAgentIds); + } diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 146a2f2ab..81880dca6 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -155,4 +155,21 @@ public interface SalaryAcctRecordService { * @return */ String getLogTargetNameById(Long id); + + /** + * 根据状态查询薪资核算记录 + * + * @param status + * @return + */ + List listByStatus(SalaryAcctRecordStatusEnum status); + + /** + * 根据核算人和核算状态查询核算记录 + * + * @param status + * @param employeeId + * @return + */ + List listByStatusAndEmployeeId(SalaryAcctRecordStatusEnum status, Long employeeId); } diff --git a/src/com/engine/salary/service/SalarySobService.java b/src/com/engine/salary/service/SalarySobService.java index ac46b53fa..5a465d533 100644 --- a/src/com/engine/salary/service/SalarySobService.java +++ b/src/com/engine/salary/service/SalarySobService.java @@ -12,12 +12,13 @@ import java.util.Collection; import java.util.List; /** - * @description: 薪资账套 - * @author: xiajun - * @modified By: xiajun - * @date: Created in 11/9/21 4:06 PM - * @version:v1.0 - */ + * 薪资账套 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ public interface SalarySobService { /** diff --git a/src/com/engine/salary/service/TaxAgentAdminService.java b/src/com/engine/salary/service/TaxAgentAdminService.java new file mode 100644 index 000000000..274ba8c07 --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentAdminService.java @@ -0,0 +1,56 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; + +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人管理员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface TaxAgentAdminService { + + /** + * 根据个税扣缴义务人id删除管理员 + * + * @param taxAgentIds + */ + void deleteByTaxAgentIds(Collection taxAgentIds); + + /** + * 批量新增管理员 + * + * @param taxAgentId + * @param admins + */ + void batchInsert(Long taxAgentId, Collection admins); + + /** + * 根据个税扣缴义务人id查询管理员 + * + * @param taxAgentIds + * @return + */ + List listByTaxAgentIds(Collection taxAgentIds); + + /** + * 根据个税扣缴义务人id查询管理员 + * + * @param taxAgentIds + * @return + */ + List listByTaxAgentIdsAndEmployeeId(Collection taxAgentIds, Long currentEmployeeId); + + /** + * 根据当前登录人查询管理员 + * + * @param currentEmployeeId + * @return + */ + List listByEmployeeId(Long currentEmployeeId); +} diff --git a/src/com/engine/salary/service/TaxAgentBaseService.java b/src/com/engine/salary/service/TaxAgentBaseService.java new file mode 100644 index 000000000..ab795d52c --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentBaseService.java @@ -0,0 +1,37 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.param.TaxAgentSaveBaseParam; +import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; + +/** + * 个税扣缴义务人基础信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface TaxAgentBaseService { + + /** + * 是否开启分权 + * + * @return + */ + Boolean isOpenDevolution(); + + /** + * 获取个税扣缴义务人基本信息 + * + * @return + */ + TaxAgentBasePO getBaseInfo(); + + /** + * 保存个税扣缴义务人信息 + * + * @param saveBaseParam + * @return + */ + String save(TaxAgentSaveBaseParam saveBaseParam); +} diff --git a/src/com/engine/salary/service/TaxAgentEmpChangeService.java b/src/com/engine/salary/service/TaxAgentEmpChangeService.java new file mode 100644 index 000000000..80a9f67c6 --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentEmpChangeService.java @@ -0,0 +1,39 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.po.TaxAgentEmpChangePO; +import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum; + +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人管理范围的增量人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface TaxAgentEmpChangeService { + + /** + * 获取所有增量数据 + * + */ + List listAll(); + + /** + * 根据模块类型获取所有增量数据 + */ + List listAllByModule(TaxAgentEmpChangeModuleEnum moduleTypeEnum); + + /** + * 删除增量数据 + * + * @param ids + * @return + */ + boolean deleleByIds(Collection ids); + + void batchInsert(List taxAgentEmpChangeList); +} diff --git a/src/com/engine/salary/service/TaxAgentEmpService.java b/src/com/engine/salary/service/TaxAgentEmpService.java new file mode 100644 index 000000000..d5c9f6127 --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentEmpService.java @@ -0,0 +1,41 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.param.TaxAgentEmpSaveParam; +import com.engine.salary.entity.taxagent.po.TaxAgentEmpPO; + +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人管理范围的人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface TaxAgentEmpService{ + + /** + * 根据个税扣缴义务人id删除管理范围的人员 + * + * @param taxAgentIds + */ + void deleteByTaxAgentIds(Collection taxAgentIds); + + /** + * 根据个税扣缴义务人id获取管理范围中的人员 + * + * @param taxAgentIds + * @return + */ + List listByTaxAgentIds(List taxAgentIds); + + /** + * 同步人员到本地关联表 + * + * @param taxAgentEmpSaveParamList + * @param currentEmployeeId + */ + void syncTaxAgentEmployee(List taxAgentEmpSaveParamList, Long currentEmployeeId); +} diff --git a/src/com/engine/salary/service/TaxAgentManageRangeService.java b/src/com/engine/salary/service/TaxAgentManageRangeService.java new file mode 100644 index 000000000..88f6cf3b4 --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentManageRangeService.java @@ -0,0 +1,120 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO; +import com.engine.salary.entity.taxagent.param.TaxAgentRangeQueryParam; +import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; +import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminRangeQueryParam; +import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminRangeSaveParam; +import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO; +import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; +import com.engine.salary.util.page.PageInfo; + +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人的管理范围 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface TaxAgentManageRangeService { + + /** + * 根据个税扣缴义务人ID和当前账户查询人员 + * + * @param taxAgentIds + * @return + */ + List listSalaryEmployeeByTaxAgentIds(List taxAgentIds); + + /** + * 根据人员状态、个税扣缴义务人ID和当前账户查询人员 + * + * @param employeeStatus + * @param taxAgentIds + * @return + */ + List listSalaryEmployeeByTaxAgentIds(SalaryEmployeeStatusEnum employeeStatus, List taxAgentIds); + + /** + * 根据分管理员ID和当前账户查询人员 + * + * @param taxAgentSubAdminIds + * @return + */ + List listSalaryEmployeeBySubAdminIds(List taxAgentSubAdminIds); + + /** + * 根据人员状态、分管理员ID和当前账户查询人员 + * + * @param employeeStatus + * @param taxAgentSubAdminIds + * @return + */ + List listSalaryEmployeeBySubAdminIds(SalaryEmployeeStatusEnum employeeStatus, List taxAgentSubAdminIds); + + /** + * 根据查询条件查询分管理员的人员范围 + * + * @param queryParam 查询条件 + * @param includeType 0-从范围中排除/1-关联人员范围 + * @return + */ + PageInfo listPageByParamAndIncludeType(TaxAgentSubAdminRangeQueryParam queryParam, Integer includeType); + + /** + * 根据查询条件查询个税扣缴义务人的人员范围 + * + * @param queryParam 查询条件 + * @param includeType 0-从范围中排除/1-关联人员范围 + * @return + */ + PageInfo listPageByParamAndIncludeType(TaxAgentRangeQueryParam queryParam, Integer includeType); + + /** + * 根据分管理员id集合查询范围列表 + * + * @param taxAgentSubAdminIds + * @return + */ + List listBySubAdminIds(Collection taxAgentSubAdminIds); + + /** + * 保存 + * + * @param saveParam 保存参数 + */ + void save(TaxAgentRangeSaveParam saveParam); + + /** + * 保存分管理员的管理范围 + * + * @param saveParam + */ + void save4SubAdmin(TaxAgentSubAdminRangeSaveParam saveParam); + + /** + * 根据主键id删除管理范围 + * + * @param ids + */ + void deleteByIds(Collection ids); + + /** + * 根据个税扣缴义务人的id删除管理范围 + * + * @param taxAgentIds 个税扣缴义务人的id + */ + void deleteByTaxAgentIds(Collection taxAgentIds); + + /** + * 根据分管理员的id删除管理范围 + * + * @param subAdminIds 分管理员列表 + */ + void deleteBySubAdmins(Collection subAdminIds); +} diff --git a/src/com/engine/salary/service/TaxAgentService.java b/src/com/engine/salary/service/TaxAgentService.java index cc6776731..9b7aac2d6 100644 --- a/src/com/engine/salary/service/TaxAgentService.java +++ b/src/com/engine/salary/service/TaxAgentService.java @@ -1,25 +1,11 @@ package com.engine.salary.service; -import com.engine.salary.entity.salaryarchive.po.TaxAgentPO; import com.engine.salary.entity.taxrate.TaxAgent; import java.util.Collection; -import java.util.Map; public interface TaxAgentService { - Map list(Map params); - - Map getForm(Map params); - - Map save(Map params); - - Map update(Map params); - - String delete(Collection ids); - - Map selectList(Map params); - Collection findAll(); /** @@ -29,5 +15,4 @@ public interface TaxAgentService { * @return */ TaxAgent getById(Long id); - } diff --git a/src/com/engine/salary/service/TaxAgentSubAdminEmpService.java b/src/com/engine/salary/service/TaxAgentSubAdminEmpService.java new file mode 100644 index 000000000..88bee1f51 --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentSubAdminEmpService.java @@ -0,0 +1,49 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminEmpSaveParam; +import com.engine.salary.entity.taxagent.po.TaxAgentSubAdminEmpPO; + +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人的分管理员的管理范围人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface TaxAgentSubAdminEmpService{ + + /** + * 同步分管理员的人员 + * + * @param subAdminEmpSaveParamList + * @param employeeId + */ + void syncTaxAgentSubAdminEmployee(List subAdminEmpSaveParamList, Long employeeId); + + /** + * 根据分管理员id获取人员 + * + * @param subAdminIds + * @return + */ + List listBySubAdminIds(List subAdminIds); + + /** + * 根据分管理员id删除人员 + * + * @param subAdminIds + */ + void deleteBySubAdminIds(Collection subAdminIds); + + /** + * 根据个税扣缴义务人id获取关联人员 + * + * @param noAdminTaxAgentIds + * @return + */ + List listByTaxAgentIds(List noAdminTaxAgentIds); +} diff --git a/src/com/engine/salary/service/TaxAgentSubAdminService.java b/src/com/engine/salary/service/TaxAgentSubAdminService.java new file mode 100644 index 000000000..4ec62274a --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentSubAdminService.java @@ -0,0 +1,82 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminBaseSaveParam; +import com.engine.salary.entity.taxagent.po.TaxAgentSubAdminPO; + +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人分管理员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface TaxAgentSubAdminService { + + /** + * 根据个税扣缴义务人id删除分管理员 + * + * @param taxAgentIds + */ + void deleteByTaxAgentIds(Collection taxAgentIds); + + /** + * 根据id获取列表 + * + * @param ids + * @return + */ + List listByIds(Collection ids); + + /** + * 根据个税扣缴义务人id查询分管理员 + * + * @param taxAgentIds + * @return + */ + List listByTaxAgentIds(Collection taxAgentIds); + + /** + * 根据个税扣缴义务人id和人员id查询分管理员 + * + * @param taxAgentIds + * @param currentEmployeeId + * @return + */ + List listByTaxAgentIdsAndEmployeeId(List taxAgentIds, Long currentEmployeeId); + + /** + * 根据当前登录人id查询分管理员 + * + * @param currentEmployeeId + * @return + */ + List listByAndEmployeeId(Long currentEmployeeId); + + /** + * 根据id删除分管理员 + * + * @param ids + * @return + */ + String deleteByIds(Collection ids); + + /** + * 根据分管理员id和个税扣缴义务人id获取分管理员 + * + * @param id + * @return + */ + TaxAgentSubAdminPO getById(Long id); + + /** + * 保存基础设置 + * + * @param saveParam + * @return + */ + String saveBase(TaxAgentSubAdminBaseSaveParam saveParam); +} diff --git a/src/com/engine/salary/service/TaxAgentV2Service.java b/src/com/engine/salary/service/TaxAgentV2Service.java new file mode 100644 index 000000000..ab40411dc --- /dev/null +++ b/src/com/engine/salary/service/TaxAgentV2Service.java @@ -0,0 +1,211 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeTaxAgentDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentListDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.param.TaxAgentAdminChangeCheckParam; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; +import com.engine.salary.entity.taxagent.param.TaxAgentSaveParam; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; +import com.engine.salary.enums.taxagent.TaxAgentRoleTypeEnum; +import com.engine.salary.util.page.PageInfo; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +public interface TaxAgentV2Service { + + /** + * 获取当前登录人角色(返回最大角色,优先级为:总管理员-》管理员-》分管理员) + * + * @param currentEmployeeId + * @return + */ + TaxAgentRoleTypeEnum getRoleType(Long currentEmployeeId); + + /** + * 是否是薪酬模块总管理员 + * + * @param currentEmployeeId + * @return + */ + Boolean isChief(Long currentEmployeeId); + + /** + * 默认权限是否开启 + * + * @param currentEmployeeId + * @return + */ + Boolean isDefaultOpen(Long currentEmployeeId); + + /** + * 管理员是否有权限 + * + * @param currentEmployeeId + * @return + */ + Boolean isAdminEnable(Long currentEmployeeId); + + /** + * 个税扣缴义务人列表(分页) + * + * @param queryParam + * @return + */ + PageInfo listPage(TaxAgentQueryParam queryParam); + + /** + * 个税扣缴义务人列表(不分页) + * + * @param queryParam + * @return + */ + List list(TaxAgentQueryParam queryParam); + + + /** + * 根据id查询个税扣缴义务人 + * + * @param ids + * @return + */ + List listByIds(Collection ids); + + /** + * 查询租户下的所有个税扣缴义务人 + * + * @return + */ + List listAll(); + + /** + * 根据id获取单个个税扣缴义务人 + * + * @param id + * @return + */ + TaxAgentPO getById(Long id); + + /** + * 获取所有个税扣缴义务人 + * + * @return + */ + Collection findAll(); + + /** + * 获取作为管理员或分管理员的个税扣缴义务人列表 + * + * @param currentEmployeeId 当前登录人id + * @return + */ + Collection listAllTaxAgents(Long currentEmployeeId); + + /** + * 获取作为管理员的所有个税扣缴义务人列表 + * + * @param currentEmployeeId 当前登录人id + * @return + */ + Collection listAllTaxAgentsAsAdmin(Long currentEmployeeId); + + /** + * 获取作为人员范围中的个税扣缴义务人列表 + * + * @param employeeIds 被管理的人员id + * @return + */ + Collection listAllTaxAgentsAsRange(List employeeIds); + + /** + * 新建个税扣缴义务人 + * + * @param saveParam + * @return + */ + String save(TaxAgentSaveParam saveParam); + + /** + * 更新代缴机构 + * + * @param taxAgentPO + * @return + */ + String paymentAgencyUpdate(TaxAgentPO taxAgentPO); + + /** + * 编辑个税扣缴义务人 + * + * @param saveParam + * @return + */ + String update(TaxAgentSaveParam saveParam); + + /** + * 删除个税扣缴义务人 + * + * @param ids + * @return + */ + String delete(Collection ids); + + /** + * 获取个税扣缴义务人下拉列表 + * + * @return + */ + List> selectList(); + + /** + * 是否开启分权 + * + * @return + */ + Boolean isOpenDevolution(); + + /** + * 获取个税扣缴义务人和可查看的人员列表(树型) + * + * @param employeeId + * @return + */ + List listTaxAgentAndEmployeeTree(Long employeeId); + + /** + * 获取个税扣缴义务人和可查看的人员列表(扁平型) + * + * @param employeeId + * @return + */ + List listTaxAgentAndEmployee(Long employeeId); + + /** + * 获取个税扣缴义务人和可查看的人员列表(树型) + * + * @param employeeStatus + * @param employeeId + * @return + */ + List listTaxAgentAndEmployeeTree(SalaryEmployeeStatusEnum employeeStatus, Long employeeId); + + /** + * 获取个税扣缴义务人和可查看的人员列表(扁平型) + * + * @param employeeStatus + * @param employeeId + * @return + */ + List listTaxAgentAndEmployee(SalaryEmployeeStatusEnum employeeStatus, Long employeeId); + + /** + * 更换管理员校验是否有核算数据 + * + * @param checkParam + * @return + */ + Boolean adminChangeCheck(TaxAgentAdminChangeCheckParam checkParam); +} diff --git a/src/com/engine/salary/service/TaxDeclarationExcelService.java b/src/com/engine/salary/service/TaxDeclarationExcelService.java index 54f8644a1..11202ba55 100644 --- a/src/com/engine/salary/service/TaxDeclarationExcelService.java +++ b/src/com/engine/salary/service/TaxDeclarationExcelService.java @@ -2,8 +2,6 @@ package com.engine.salary.service; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import java.util.Map; - /** * @description: 个税申报表导出 * @author: xiajun @@ -17,7 +15,6 @@ public interface TaxDeclarationExcelService { * 导出个税申报表 * * @param taxDeclarationId - * @param tenantKey */ XSSFWorkbook exportTaxDeclaration(Long taxDeclarationId); } diff --git a/src/com/engine/salary/service/TaxDeclarationService.java b/src/com/engine/salary/service/TaxDeclarationService.java index 96696b4cf..7aaf8dd5e 100644 --- a/src/com/engine/salary/service/TaxDeclarationService.java +++ b/src/com/engine/salary/service/TaxDeclarationService.java @@ -40,7 +40,6 @@ public interface TaxDeclarationService { * 删除个税申报表 * * @param salaryMonth - * @param tenantKey */ void deleteBySalaryMonth(YearMonth salaryMonth); diff --git a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java index ee1405cd4..6e446045e 100644 --- a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java @@ -1,75 +1,495 @@ package com.engine.salary.service.impl; +import com.api.browser.bean.SearchConditionGroup; +import com.api.browser.bean.SearchConditionItem; +import com.api.browser.bean.SearchConditionOption; +import com.api.browser.util.ConditionFactory; +import com.api.browser.util.ConditionType; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.AddUpDeductionBiz; import com.engine.salary.biz.EmployBiz; -import com.engine.salary.cmd.datacollection.*; +import com.engine.salary.biz.TaxAgentBiz; +import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO; +import com.engine.salary.entity.datacollection.dto.AddUpDeductionRecordDTO; +import com.engine.salary.entity.datacollection.param.AddUpDeductionImportParam; import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.taxagent.bo.TaxAgentBO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxrate.TaxAgent; +import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.AddUpDeductionMapper; -import com.engine.salary.service.AddUpDeductionService; +import com.engine.salary.service.*; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; +import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; +import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.file.ImageFileManager; import weaver.general.Util; +import weaver.hrm.User; +import weaver.systeminfo.SystemEnv; +import java.io.InputStream; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.YearMonth; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; + public class AddUpDeductionServiceImpl extends Service implements AddUpDeductionService { private AddUpDeductionMapper getAddUpDeductionMapper() { return MapperProxyFactory.getProxy(AddUpDeductionMapper.class); } - @Override - public Map list(Map params) { - return commandExecutor.execute(new AddUpDeductionListCmd(params, user)); + private TaxAgentV2Service getTaxAgentV2Service(User user) { + return ServiceUtil.getService(TaxAgentV2ServiceImpl.class, user); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } - @Override - public XSSFWorkbook export(Map params) { - AddUpDeductionQueryParam addUpDeductionQueryParam = (AddUpDeductionQueryParam) params.get("addUpDeductionQueryParam"); - - AddUpDeductionBiz addUpDeductionBiz = new AddUpDeductionBiz(); - XSSFWorkbook workbook = addUpDeductionBiz.export(addUpDeductionQueryParam); - - return workbook; -// return commandExecutor.execute(new AddUpDeductionExportCmd(params, user)); + private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { + return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + @Override public Map getSearchCondition(Map params) { - return commandExecutor.execute(new AddUpDeductionGetSearchConditionCmd(params, user)); + Map apidatas = new HashMap(); + ConditionFactory conditionFactory = new ConditionFactory(user); + + //条件组 + List addGroups = new ArrayList(); + + List conditionItems = new ArrayList(); + + //文本输入框 + SearchConditionItem username = conditionFactory.createCondition(ConditionType.INPUT,25034, "username"); + username.setInputType("input"); + username.setColSpan(2);//定义一行显示条件数,默认值为2,当值为1时标识该条件单独占一行 + username.setFieldcol(16); //条件输入框所占宽度,默认值18 + username.setLabelcol(8); + username.setViewAttr(2); // 编辑权限 1:只读,2:可编辑, 3:必填 默认2 + username.setLabel("姓名"); //设置文本值 这个将覆盖多语言标签的值 + conditionItems.add(username); + + + SearchConditionItem departmentName = conditionFactory.createCondition(ConditionType.BROWSER,502227,"departmentIds","4"); + departmentName.setInputType("browser"); + departmentName.setColSpan(2); + departmentName.setFieldcol(16); + departmentName.setLabelcol(8); + departmentName.setViewAttr(2); + departmentName.setIsQuickSearch(false); + departmentName.setLabel("部门"); + conditionItems.add(departmentName); + + + SearchConditionItem jobNum = conditionFactory.createCondition(ConditionType.INPUT,25034, "jobNum"); + jobNum.setInputType("input"); + jobNum.setColSpan(2); + jobNum.setFieldcol(16); + jobNum.setLabelcol(8); + jobNum.setViewAttr(2); + jobNum.setLabel("工号"); + conditionItems.add(jobNum); + + + + SearchConditionItem idNo = conditionFactory.createCondition(ConditionType.INPUT,25034, "idNo"); + idNo.setInputType("input"); + idNo.setColSpan(2); + idNo.setFieldcol(16); + idNo.setLabelcol(8); + idNo.setViewAttr(2); + idNo.setLabel("证件号码"); + conditionItems.add(idNo); + + //日期范围选项 + List dateOptions = new ArrayList(); + dateOptions.add(new SearchConditionOption("6", SystemEnv.getHtmlLabelName(32530, user.getLanguage()),true));//指定日期范围(必须为6) + SearchConditionItem hiredate = conditionFactory.createCondition(ConditionType.RANGEPICKER, 18648, new String[]{"hiredate","hiredate"}); + hiredate.setInputType("rangepicker"); + hiredate.setFormat("yyyy-MM-dd"); + hiredate.setFieldcol(16); + hiredate.setLabelcol(8); + hiredate.setViewAttr(2); + hiredate.setLabel("入职日期"); + hiredate.setOptions(dateOptions); + conditionItems.add(hiredate); + + + SearchConditionItem mobile = conditionFactory.createCondition(ConditionType.INPUT,25034, "mobile"); + mobile.setInputType("input"); + mobile.setColSpan(2); + mobile.setFieldcol(16); + mobile.setLabelcol(8); + mobile.setViewAttr(2); + mobile.setLabel("手机号"); + conditionItems.add(mobile); + + addGroups.add(new SearchConditionGroup("常用条件",true,conditionItems)); + + apidatas.put("condition",addGroups); + return apidatas; + } + + + @Override + public Map importAddUpDeduction(AddUpDeductionImportParam importParam) { + long currentEmployeeId = user.getUID(); + + Map apidatas = new HashMap(); + EmployBiz employBiz = new EmployBiz(); + AddUpDeductionBiz addUpDeductionBiz = new AddUpDeductionBiz(); + + //检验参数 + checkImportParam(importParam); + + //税款所属期 + String declareMonthStr = importParam.getDeclareMonth(); + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + Validate.notBlank(imageId, "imageId为空"); + // 获取所有个税扣缴义务人 + Collection taxAgentList = getTaxAgentV2Service(user).listTaxAgentAndEmployeeTree(currentEmployeeId); + //个税扣缴义务人 + String taxAgentId = Util.null2String(importParam.getTaxAgentId()); + // 获取租户下所有的人员 + List employees = employBiz.listEmployee(); + // 已经核算过的不可操作 + // 获取已经核算的数据 + List salaryAcctEmployees = getAccountedEmployeeData(declareMonthStr); + // 查询已有数据 + Date declareMonth = SalaryDateUtil.localDateToDate(LocalDate.parse(declareMonthStr + "-01", SalaryDateUtil.DATE_FORMATTER)); + List list = getAddUpDeductionMapper().listSome(AddUpDeduction.builder().declareMonth(declareMonth).build()); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + List addUpDeductions = ExcelParseHelper.parse2Map(fileInputStream, AddUpDeductionDTO.class, 0, 1, 14, "addUpDeductionTemplate.xlsx"); + + int total = addUpDeductions.size(); + int index = 0; + int successCount = 0; + int errorCount = 0; + + //人员信息 + List taxAgents = new TaxAgentBiz().listAll(); + + // 错误excel内容 + List errorData = new ArrayList<>(); + //合规数据 + List eligibleData = new ArrayList<>(); + + List taxAgentEmployees = Lists.newArrayList(); + for (int i = 0; i < addUpDeductions.size(); i++) { + + AddUpDeductionDTO dto = addUpDeductions.get(i); + + Date now = new Date(); + //待插入数据库对象 + AddUpDeduction addUpDeduction = AddUpDeduction.builder() + .tenantKey(DEFAULT_TENANT_KEY) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .declareMonth(declareMonth).build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + List employeeSameIds = employees.stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) + && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName))).map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + + + if (StringUtils.isBlank(userName)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不能为空且不可重复(姓名与部门同时确认唯一)"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + addUpDeduction.setEmployeeId(employeeId); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + if (StringUtils.isNotEmpty(taxAgentId) && !optionalTemp.get().getTaxAgentId().equals(Long.valueOf(taxAgentId))) { + //个税扣缴义务人与导入时选择的不一致 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人与导入时选择的不一致"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + addUpDeduction.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + taxAgentEmployees = optionalTemp.get().getEmployeeList(); + } + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + // 分权判断 + Optional optionalTaxAgentEmp = taxAgentEmployees.stream().filter(f -> f.getEmployeeId().equals(addUpDeduction.getEmployeeId())).findFirst(); + if (!optionalTaxAgentEmp.isPresent()) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "该条数据不在数据权限范围内,不可导入"); + errorData.add(errorMessageMap); + errorSum += 1; + } + // 判断是否有核算过 + if (CollectionUtils.isNotEmpty(salaryAcctEmployees)) { + Optional optionalAcctEmp = salaryAcctEmployees.stream().filter(f -> f.getEmployeeId().equals(addUpDeduction.getEmployeeId()) && f.getTaxAgentId().equals(addUpDeduction.getTaxAgentId())).findFirst(); + boolean isExist = list.stream().anyMatch(f -> f.getEmployeeId().equals(addUpDeduction.getEmployeeId()) && f.getTaxAgentId().equals(addUpDeduction.getTaxAgentId())); + if (optionalAcctEmp.isPresent() && isExist) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "该年月这条数据已经核算过,不可导入"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + //累计子女教育 + BigDecimal addUpChildEducation = dto.getAddUpChildEducation(); + addUpDeduction.setAddUpChildEducation(Util.null2String(addUpChildEducation)); + //累计继续教育 + BigDecimal addUpContinuingEducation = dto.getAddUpContinuingEducation(); + addUpDeduction.setAddUpContinuingEducation(Util.null2String(addUpContinuingEducation)); + //累计住房贷款利息 + BigDecimal addUpHousingLoanInterest = dto.getAddUpHousingLoanInterest(); + addUpDeduction.setAddUpHousingLoanInterest(Util.null2String(addUpHousingLoanInterest)); + //累计住房租金 + BigDecimal addUpHousingRent = dto.getAddUpHousingRent(); + addUpDeduction.setAddUpHousingRent(Util.null2String(addUpHousingRent)); + //累计赡养老人 + BigDecimal addUpSupportElderly = dto.getAddUpSupportElderly(); + addUpDeduction.setAddUpSupportElderly(Util.null2String(addUpSupportElderly)); + + addUpDeduction.setAddUpIllnessMedical(Util.null2String(dto.getAddUpIllnessMedical())); + addUpDeduction.setAddUpInfantCare(Util.null2String(dto.getAddUpInfantCare())); + + + if (errorSum == 0) { + successCount += 1; + // 合格数据 + eligibleData.add(addUpDeduction); + } else { + errorCount += 1; + // 添加错误数据 + } + } + + //入库 + addUpDeductionBiz.handleImportData(eligibleData); + + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", errorData); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; + } + + + private void checkImportParam(AddUpDeductionImportParam importParam) { + + + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + //税款所属期 + String declareMonthStr = Util.null2String(importParam.getDeclareMonth()); + //个税扣缴义务人 + String taxAgentId = Util.null2String(importParam.getTaxAgentId()); + + if (StringUtils.isBlank(imageId)) { + throw new SalaryRunTimeException("文件不存在"); + } + if (StringUtils.isBlank(declareMonthStr)) { + throw new SalaryRunTimeException("税款所属期为空"); + } + } + + + @Override + public Map preview(AddUpDeductionImportParam importParam ) { + Map apidatas = new HashMap(); + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + Validate.notBlank(imageId, "imageId为空"); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + List addUpDeductions = ExcelParseHelper.parse2Map(fileInputStream, AddUpDeductionDTO.class, 0, 1, 14, "addUpDeductionTemplate.xlsx"); + apidatas.put("preview", addUpDeductions); + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; + } + + + @Override + public AddUpDeduction getById(Long id) { + return getAddUpDeductionMapper().getById(id); + } + +// /** +// * 获取作为修改者的最新记录 +// * 说明:以人员id和个税口角义务人id去重 +// * +// * @param currentEmployeeId +// * @return +// */ +// private List getLastListByModifier(Long currentEmployeeId) { +// List list = new LambdaQueryChainWrapper<>(getAddUpDeductionMapper()) +// .eq(AddUpDeductionPO::getDeleteType, 0) +// .eq(AddUpDeductionPO::getTenantKey) +// .eq(AddUpDeductionPO::getModifier, currentEmployeeId) +// .orderByDesc(AddUpDeductionPO::getDeclareMonth) +// .list(); +// return list.stream() +// .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getEmployeeId() + "-" + f.getTaxAgentId()))), ArrayList::new)); +// } + + @Override + public PageInfo listPage(AddUpDeductionQueryParam queryParam) { + long employeeId = (long) user.getUID(); + + // 未开启分权或是薪酬模块总管理员 + if (!getTaxAgentV2Service(user).isOpenDevolution() || getTaxAgentV2Service(user).isChief(employeeId)) { + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List list = getAddUpDeductionMapper().list(queryParam); + return new PageInfo<>(list, AddUpDeductionDTO.class); + } else { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); +// List lastList = getLastListByModifier(employeeId); + List list = getAddUpDeductionMapper().list(queryParam); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) + // 作为分管理员 +// || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) + // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l -> l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getDeclareMonth().isBefore(f.getDeclareMonth())) + ).collect(Collectors.toList()); + // 填充总数和当页数据 + // 分页参数 + PageInfo dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), AddUpDeductionDTO.class); + dtoPage.setTotal(list.size()); + dtoPage.setList(SalaryPageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), list)); + return dtoPage; + } } @Override - public Map importAddUpDeduction(Map params) { - return commandExecutor.execute(new AddUpDeductionImportCmd(params, user)); + public PageInfo recordListPage(AddUpDeductionQueryParam queryParam) { + long employeeId = (long) user.getUID(); + // 未开启分权或是薪酬模块总管理员 + if (!getTaxAgentV2Service(user).isOpenDevolution() || getTaxAgentV2Service(user).isChief(employeeId)) { + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List list = getAddUpDeductionMapper().recordList(queryParam); + return new PageInfo<>(list, AddUpDeductionRecordDTO.class); + } else { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); +// List lastList = getLastListByModifier(employeeId, tenantKey); + List list = getAddUpDeductionMapper().recordList(queryParam); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) + // 作为分管理员 +// || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) + // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l -> l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getDeclareMonth().isBefore(f.getDeclareMonth())) + ).collect(Collectors.toList()); + // 分页参数 + // 填充总数和当页数据 + PageInfo dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), AddUpDeductionRecordDTO.class); + dtoPage.setTotal(list.size()); + dtoPage.setList(SalaryPageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), list)); + return dtoPage; + } } - @Override - public Map getDetailList(Map params) { - return commandExecutor.execute(new AddUpDeductionGetDetailListCmd(params, user)); - } - @Override - public Map preview(Map params) { - return commandExecutor.execute(new AddUpDeductionPreviewCmd(params, user)); - } + /** + * 导出详情列表 + * + * @return + */ + public XSSFWorkbook exportDetail(Long beLongEmployeeId, boolean isChief, AddUpDeductionQueryParam queryParam) { + queryParam.setEmployeeId(beLongEmployeeId); - @Override - public XSSFWorkbook exportDetail(Map params) { - AddUpDeductionQueryParam queryParam = (AddUpDeductionQueryParam) params.get("addUpDeductionQueryParam"); EmployBiz employBiz = new EmployBiz(); AddUpDeductionBiz biz = new AddUpDeductionBiz(); @@ -80,7 +500,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction AddUpDeduction po = biz.getById(id); if (po == null) { - throw new SalaryRunTimeException(String.format("累计专项附加扣除不存在"+"[id:%s]", id)); + throw new SalaryRunTimeException(String.format("累计专项附加扣除不存在" + "[id:%s]", id)); } List employeeList = employBiz.getEmployeeByIds(Collections.singletonList(po.getEmployeeId())); @@ -96,12 +516,75 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction queryParam.setDeclareMonth(declareMonth.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); } - XSSFWorkbook workbook = biz.exportDetail(queryParam); - return workbook; -// return commandExecutor.execute(new AddUpDeductionExportDetailCmd(params, user)); + //获取操作按钮资源 + List> rowList = getExcelRowDetailList(isChief, queryParam); + + //获取excel + return ExcelUtil.genWorkbook(rowList, "累计专项附加扣除明细"); } + + /** + * 导出详情 + * + * @param param + * @return + */ + private List> getExcelRowDetailList(boolean isChief, AddUpDeductionQueryParam param) { + long employeeId = user.getUID(); + + //excel标题 + List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "工号", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计婴幼儿照护"); + + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + //查询详细信息 + List list = new AddUpDeductionBiz().recordList(param); + final List> dataRowList = Optional.ofNullable(list) + .map(List::stream) + .map(operatorStream -> operatorStream.map(dto -> { + List cellList = new ArrayList<>(); + cellList.add(Util.null2String(dto.getUsername())); + cellList.add(Util.null2String(dto.getDeclareMonth() == null ? "" : formatter.format(dto.getDeclareMonth()))); + cellList.add(Util.null2String(dto.getTaxAgentName())); + cellList.add(Util.null2String(dto.getDepartmentName())); + cellList.add(Util.null2String(dto.getJobNum())); + cellList.add(Util.null2String(dto.getAddUpChildEducation())); + cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(Util.null2String(dto.getAddUpHousingRent())); + cellList.add(Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(Util.null2String(dto.getAddUpInfantCare())); + return cellList; + }).collect(Collectors.toList())) + .orElse(Collections.emptyList()); + + + // 开启分权并且不是薪酬模块总管理员 + if (getTaxAgentV2Service(user).isOpenDevolution() && !isChief) { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); +// List lastList = getLastListByModifier(employeeId, tenantKey); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) + // 作为分管理员 + || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) + // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l -> l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getDeclareMonth().isBefore(f.getDeclareMonth())) + ).collect(Collectors.toList()); + } + + + List> rowList = new ArrayList<>(); + rowList.add(title); + rowList.addAll(dataRowList); + return rowList; + } + + @Override public List getAddUpDeductionList(YearMonth declareMonth, List employeeIds) { AddUpDeductionBiz addUpDeductionBiz = new AddUpDeductionBiz(); @@ -112,7 +595,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction } @Override - public XSSFWorkbook downloadTemplate(AddUpDeductionQueryParam queryParam) { + public XSSFWorkbook downloadTemplate(boolean isChief, AddUpDeductionQueryParam queryParam) { String sheetName = SalaryI18nUtil.getI18nLabel(101603, "累计专项附加扣除导入模板"); String[] header = { @@ -132,38 +615,41 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction SalaryI18nUtil.getI18nLabel(105142, "累计婴幼儿照护") }; List headerList = Arrays.asList(header); - // 2.表头 - if (queryParam.getDeclareMonth() != null) { - queryParam.setDeclareMonth(queryParam.getDeclareMonth().stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); - } - // 获取累计专项附加扣除 - List list = getAddUpDeductionMapper().list(queryParam); - // 人员信息赋值 - list.forEach(m -> { - // todo 身份证号 - m.setIdNo(""); - }); List> rows = new ArrayList<>(); rows.add(headerList); - for (AddUpDeductionDTO dto : list) { - List row = new ArrayList<>(); - row.add(Util.null2String(dto.getUsername())); - row.add(Util.null2String(dto.getTaxAgentName())); - row.add(Util.null2String(dto.getDepartmentName())); - row.add(Util.null2String(dto.getMobile())); - row.add(Util.null2String(dto.getJobNum())); - row.add(Util.null2String(dto.getIdNo())); - row.add(Util.null2String(dto.getHiredate())); - row.add(Util.null2String(dto.getAddUpChildEducation())); - row.add(Util.null2String(dto.getAddUpContinuingEducation())); - row.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - row.add(Util.null2String(dto.getAddUpHousingRent())); - row.add(Util.null2String(dto.getAddUpSupportElderly())); - row.add(Util.null2String(dto.getAddUpIllnessMedical())); - row.add(Util.null2String(dto.getAddUpInfantCare())); - rows.add(row); - } + +// // 2.表头 +// if (queryParam.getDeclareMonth() != null) { +// queryParam.setDeclareMonth(queryParam.getDeclareMonth().stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); +// } +// // 获取累计专项附加扣除 +// List list = getAddUpDeductionMapper().list(queryParam); +// // 人员信息赋值 +// list.forEach(m -> { +// // todo 身份证号 +// m.setIdNo(""); +// }); +// + +// for (AddUpDeductionDTO dto : list) { +// List row = new ArrayList<>(); +// row.add(Util.null2String(dto.getUsername())); +// row.add(Util.null2String(dto.getTaxAgentName())); +// row.add(Util.null2String(dto.getDepartmentName())); +// row.add(Util.null2String(dto.getMobile())); +// row.add(Util.null2String(dto.getJobNum())); +// row.add(Util.null2String(dto.getIdNo())); +// row.add(Util.null2String(dto.getHiredate())); +// row.add(Util.null2String(dto.getAddUpChildEducation())); +// row.add(Util.null2String(dto.getAddUpContinuingEducation())); +// row.add(Util.null2String(dto.getAddUpHousingLoanInterest())); +// row.add(Util.null2String(dto.getAddUpHousingRent())); +// row.add(Util.null2String(dto.getAddUpSupportElderly())); +// row.add(Util.null2String(dto.getAddUpIllnessMedical())); +// row.add(Util.null2String(dto.getAddUpInfantCare())); +// rows.add(row); +// } // 4.注释 List excelComments = Lists.newArrayList(); @@ -182,4 +668,96 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction return book; } + + + @Override + public XSSFWorkbook export(boolean isChief, AddUpDeductionQueryParam queryParam) { + + //获取操作按钮资源 + List> rowList = getExcelRowList(isChief, queryParam); + + //获取excel + return ExcelUtil.genWorkbook(rowList, "累计专项附加扣除"); + } + + + /** + * 获取excel数据行 + * + * @return 导出数据行集合 + */ + private List> getExcelRowList(boolean isChief, AddUpDeductionQueryParam param) { + Long employeeId = (long) user.getUID(); + + //excel标题 + List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计婴幼儿照护"); + + List list = new AddUpDeductionBiz().list(param); + + // 开启分权并且不是薪酬模块总管理员 + if (getTaxAgentV2Service(user).isOpenDevolution() && !isChief) { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); +// List lastList = getLastListByModifier(employeeId); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) + // 作为分管理员 + || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) + // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l->l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getDeclareMonth().isBefore(f.getDeclareMonth())) + ).collect(Collectors.toList()); + } + + + final List> dataRowList = Optional.ofNullable(list) + .map(List::stream) + .map(operatorStream -> operatorStream.map(dto -> { + List cellList = new ArrayList<>(); + cellList.add(Util.null2String(dto.getUsername())); + cellList.add(Util.null2String(dto.getTaxAgentName())); + cellList.add(Util.null2String(dto.getDepartmentName())); + cellList.add(Util.null2String(dto.getMobile())); + cellList.add(Util.null2String(dto.getJobNum())); + cellList.add(Util.null2String(dto.getIdNo())); + cellList.add(Util.null2String(dto.getHiredate())); + cellList.add(Util.null2String(dto.getAddUpChildEducation())); + cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(Util.null2String(dto.getAddUpHousingRent())); + cellList.add(Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(Util.null2String(dto.getAddUpInfantCare())); + return cellList; + }).collect(Collectors.toList())) + .orElse(Collections.emptyList()); + + List> rowList = new ArrayList<>(); + rowList.add(title); + rowList.addAll(dataRowList); + return rowList; + } + + + /** + * 根据年月获取已核算数据 + * + * @param yearMonth + * @return + */ + @Override + public List getAccountedEmployeeData(String yearMonth) { + List list = Lists.newArrayList(); + LocalDate salaryMonthDate = LocalDate.parse(yearMonth + "-01", SalaryDateUtil.DATE_FORMATTER); + List salaryAcctRecords = getSalaryAcctRecordService(user).listBySalaryMonth(LocalDateRange.builder().fromDate(SalaryDateUtil.localDateToDate(salaryMonthDate)).endDate(SalaryDateUtil.localDateToDate(salaryMonthDate)).build()); + salaryAcctRecords.forEach(e -> { + boolean isAccounted = e.getStatus() > SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue(); + if (isAccounted) { + list.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecords.get(0).getId()))); + } + }); + + return list; + } + } diff --git a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java index 06934ccb6..83a4c9d3c 100644 --- a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java @@ -1,63 +1,408 @@ package com.engine.salary.service.impl; +import com.api.browser.bean.SearchConditionGroup; +import com.api.browser.bean.SearchConditionItem; +import com.api.browser.bean.SearchConditionOption; +import com.api.browser.util.ConditionFactory; +import com.api.browser.util.ConditionType; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.AddUpSituationBiz; import com.engine.salary.biz.EmployBiz; -import com.engine.salary.cmd.datacollection.*; +import com.engine.salary.biz.TaxAgentBiz; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AddUpSituationDTO; +import com.engine.salary.entity.datacollection.dto.AddUpSituationRecordDTO; +import com.engine.salary.entity.datacollection.param.AddUpSituationImportParam; import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxrate.TaxAgent; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.AddUpSituationMapper; +import com.engine.salary.service.AddUpDeductionService; import com.engine.salary.service.AddUpSituationService; +import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.service.TaxAgentV2Service; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; +import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.file.ImageFileManager; import weaver.general.Util; +import weaver.hrm.User; +import weaver.systeminfo.SystemEnv; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.YearMonth; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; + public class AddUpSituationServiceImpl extends Service implements AddUpSituationService { private AddUpSituationMapper getAddUpSituationMapper() { return MapperProxyFactory.getProxy(AddUpSituationMapper.class); } + private AddUpDeductionService getAddUpDeductionService(User user) { + return ServiceUtil.getService(AddUpDeductionServiceImpl.class, user); + } + + private TaxAgentV2Service getTaxAgentV2Service(User user) { + return ServiceUtil.getService(TaxAgentV2ServiceImpl.class, user); + } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + AddUpSituationBiz biz = new AddUpSituationBiz(); + + @Override - public Map list(Map params) { - return commandExecutor.execute(new AddUpSituationListCmd(params, user)); + public Map getSearchCondition() { + Map apidatas = new HashMap(); + ConditionFactory conditionFactory = new ConditionFactory(user); + + //条件组 + List addGroups = new ArrayList(); + + List conditionItems = new ArrayList(); + + //文本输入框 + SearchConditionItem username = conditionFactory.createCondition(ConditionType.INPUT, 25034, "username"); + username.setInputType("input"); + username.setColSpan(2);//定义一行显示条件数,默认值为2,当值为1时标识该条件单独占一行 + username.setFieldcol(16); //条件输入框所占宽度,默认值18 + username.setLabelcol(8); + username.setViewAttr(2); // 编辑权限 1:只读,2:可编辑, 3:必填 默认2 + username.setLabel("姓名"); //设置文本值 这个将覆盖多语言标签的值 + conditionItems.add(username); + + + SearchConditionItem departmentName = conditionFactory.createCondition(ConditionType.BROWSER, 502227, "departmentName", "4"); + departmentName.setInputType("browser"); + departmentName.setColSpan(2); + departmentName.setFieldcol(16); + departmentName.setLabelcol(8); + departmentName.setViewAttr(2); + departmentName.setIsQuickSearch(false); + departmentName.setLabel("部门"); + conditionItems.add(departmentName); + + + SearchConditionItem jobNum = conditionFactory.createCondition(ConditionType.INPUT, 25034, "jobNum"); + jobNum.setInputType("input"); + jobNum.setColSpan(2); + jobNum.setFieldcol(16); + jobNum.setLabelcol(8); + jobNum.setViewAttr(2); + jobNum.setLabel("工号"); + conditionItems.add(jobNum); + + + SearchConditionItem idNo = conditionFactory.createCondition(ConditionType.INPUT, 25034, "idNo"); + idNo.setInputType("input"); + idNo.setColSpan(2); + idNo.setFieldcol(16); + idNo.setLabelcol(8); + idNo.setViewAttr(2); + idNo.setLabel("证件号码"); + conditionItems.add(idNo); + + //日期范围选项 + List dateOptions = new ArrayList(); + dateOptions.add(new SearchConditionOption("6", SystemEnv.getHtmlLabelName(32530, user.getLanguage()), true));//指定日期范围(必须为6) + SearchConditionItem hiredate = conditionFactory.createCondition(ConditionType.RANGEPICKER, 18648, new String[]{"hiredate", "hiredate"}); + hiredate.setInputType("rangepicker"); + hiredate.setFormat("yyyy-MM-dd"); + hiredate.setFieldcol(16); + hiredate.setLabelcol(8); + hiredate.setViewAttr(2); + hiredate.setLabel("入职日期"); + hiredate.setOptions(dateOptions); + conditionItems.add(hiredate); + + + SearchConditionItem mobile = conditionFactory.createCondition(ConditionType.INPUT, 25034, "mobile"); + mobile.setInputType("input"); + mobile.setColSpan(2); + mobile.setFieldcol(16); + mobile.setLabelcol(8); + mobile.setViewAttr(2); + mobile.setLabel("手机号"); + conditionItems.add(mobile); + + addGroups.add(new SearchConditionGroup("常用条件", true, conditionItems)); + + apidatas.put("condition", addGroups); + return apidatas; + } + + + @Override + public AddUpSituation getById(Long id) { + return getAddUpSituationMapper().getById(id); + } + + + @Override + public PageInfo listPage(AddUpSituationQueryParam queryParam) { + long employeeId = user.getUID(); + // 未开启分权或是薪酬模块总管理员 + if (!getTaxAgentV2Service(user).isOpenDevolution() || getTaxAgentV2Service(user).isChief(employeeId)) { + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List list = getAddUpSituationMapper().list(queryParam); + return new PageInfo<>(list, AddUpSituationDTO.class); + } else { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); +// List lastList = getLastListByModifier(employeeId, tenantKey); +// List extEmployeeList = extEmployeeService.listCanUseByEmployeeId(employeeId, tenantKey); + List list = getAddUpSituationMapper().list(queryParam); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) +// // 作为分管理员 +// || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) +// // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l -> l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getTaxYearMonth().isBefore(f.getTaxYearMonth())) +// // 外部人员 +// || extEmployeeList.stream().anyMatch(t -> t.getTaxAgentId().equals(f.getTaxAgentId()) && t.getId().equals(f.getEmployeeId())) + ).collect(Collectors.toList()); + // 分页参数 + PageInfo dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), AddUpSituationDTO.class); + // 填充总数和当页数据 + dtoPage.setTotal(list.size()); + dtoPage.setList(SalaryPageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), list)); + return dtoPage; + } } @Override - public XSSFWorkbook export(Map params) { - AddUpSituationQueryParam queryParam = (AddUpSituationQueryParam) params.get("queryParam"); + public PageInfo recordListPage(AddUpSituationQueryParam queryParam) { + long employeeId = user.getUID(); + // 未开启分权或是薪酬模块总管理员 + if (!getTaxAgentV2Service(user).isOpenDevolution() || getTaxAgentV2Service(user).isChief(employeeId)) { + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List list = getAddUpSituationMapper().recordList(queryParam); + return new PageInfo<>(list, AddUpSituationRecordDTO.class); + } else { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); +// List lastList = getLastListByModifier(employeeId, tenantKey); +// List extEmployeeList = extEmployeeService.listCanUseByEmployeeId(employeeId, tenantKey); + List list = getAddUpSituationMapper().recordList(queryParam); + // 分页参数 + PageInfo dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), AddUpSituationRecordDTO.class); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) +// // 作为分管理员 +// || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) +// // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l -> l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getTaxYearMonth().isBefore(f.getTaxYearMonth())) +// // 外部人员 +// || extEmployeeList.stream().anyMatch(t -> t.getTaxAgentId().equals(f.getTaxAgentId()) && t.getId().equals(f.getEmployeeId())) + ).collect(Collectors.toList()); + // 填充总数和当页数据 + dtoPage.setTotal(list.size()); + dtoPage.setList(SalaryPageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), list)); + return dtoPage; + } + } + + @Override + public List getAddUpSituationList(YearMonth taxYearMonth, List employeeIds) { + if (taxYearMonth == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100353, "参数有误:税款所属期必传")); + } AddUpSituationBiz biz = new AddUpSituationBiz(); - XSSFWorkbook workbook = biz.export(queryParam); - return workbook; -// return commandExecutor.execute(new AddUpSituationExportCmd(params, user)); + return biz.listSome(AddUpSituation.builder().taxYearMonth(SalaryDateUtil.toDateStartOfMonth(taxYearMonth)).employeeIds(employeeIds).build()); } @Override - public Map getSearchCondition(Map params) { - return commandExecutor.execute(new AddUpSituationGetSearchConditionCmd(params, user)); + public boolean deleteAddUpSituationList(YearMonth taxYearMonth, List employeeIds) { + if (taxYearMonth == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100353, "参数有误:税款所属期必传")); + } + AddUpSituationBiz biz = new AddUpSituationBiz(); + biz.deleteSome(AddUpSituation.builder().employeeIds(employeeIds).taxYearMonth(SalaryDateUtil.toDateStartOfMonth(taxYearMonth)).build()); + return Boolean.TRUE; } - @Override - public Map importAddUpSituation(Map params) { - return commandExecutor.execute(new AddUpSituationImportCmd(params, user)); - } @Override - public XSSFWorkbook exportDetail(Map params) { - AddUpSituationQueryParam queryParam = (AddUpSituationQueryParam) params.get("queryParam"); + public XSSFWorkbook export(AddUpSituationQueryParam queryParam) { + //获取操作按钮资源 + List> rowList = getExcelRowList(queryParam); + + //获取excel + return ExcelUtil.genWorkbook(rowList, "累计情况"); + } + + + /** + * 获取excel数据行 + * + * @return 导出数据行集合 + */ + private List> getExcelRowList(AddUpSituationQueryParam param) { + long employeeId = user.getUID(); + // excel标题 + final List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "累计收入额", "累计减除费用", + "累计社保个人合计", "累计公积金个人合计", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", + "累计大病医疗", "累计企业(职业)年金及其他福利", "累计其他扣除", "累计免税收入", "累计准予扣除的捐赠额", "累计减免税额", "累计已预扣预缴税额", "累计婴幼儿照护"); + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + + List list = biz.list(param); + // 开启分权并且不是薪酬模块总管理员 + if (getTaxAgentV2Service(user).isOpenDevolution() && !getTaxAgentV2Service(user).isChief(employeeId)) { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) +// // 作为分管理员 +// || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) +// // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l->l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getTaxYearMonth().isBefore(f.getTaxYearMonth())) +// // 外部人员 +// || extEmployeeList.stream().anyMatch(t -> t.getTaxAgentId().equals(f.getTaxAgentId()) && t.getId().equals(f.getEmployeeId())) + ).collect(Collectors.toList()); + } + + + final List> dataRowList = Optional.ofNullable(list) + .map(List::stream) + .map(operatorStream -> operatorStream.map(dto -> { + List cellList = new ArrayList<>(); + cellList.add(Util.null2String(dto.getUsername())); + cellList.add(Util.null2String(dto.getTaxAgentName())); + cellList.add(Util.null2String(dto.getDepartmentName())); + cellList.add(Util.null2String(dto.getMobile())); + cellList.add(Util.null2String(dto.getJobNum())); + cellList.add(Util.null2String(dto.getIdNo())); + cellList.add(dto.getHiredate() == null ? "" : formatter.format(dto.getHiredate())); + cellList.add(String.valueOf(dto.getAddUpIncome())); + cellList.add(String.valueOf(dto.getAddUpSubtraction())); + cellList.add(String.valueOf(dto.getAddUpSocialSecurityTotal())); + cellList.add(String.valueOf(dto.getAddUpAccumulationFundTotal())); + cellList.add(String.valueOf(dto.getAddUpChildEducation())); + cellList.add(String.valueOf(dto.getAddUpContinuingEducation())); + cellList.add(String.valueOf(dto.getAddUpHousingLoanInterest())); + cellList.add(String.valueOf(dto.getAddUpHousingRent())); + cellList.add(String.valueOf(dto.getAddUpSupportElderly())); + cellList.add(String.valueOf(dto.getAddUpIllnessMedical())); + cellList.add(String.valueOf(dto.getAddUpEnterpriseAndOther())); + cellList.add(String.valueOf(dto.getAddUpOtherDeduction())); + cellList.add(String.valueOf(dto.getAddUpTaxExemptIncome())); + cellList.add(String.valueOf(dto.getAddUpAllowedDonation())); + cellList.add(String.valueOf(dto.getAddUpTaxSavings())); + cellList.add(String.valueOf(dto.getAddUpAdvanceTax())); + cellList.add(String.valueOf(dto.getAddUpInfantCare())); + return cellList; + }).collect(Collectors.toList())) + .orElse(Collections.emptyList()); + + List> rowList = new ArrayList<>(); + rowList.add(title); + rowList.addAll(dataRowList); + return rowList; + } + + + /** + * 导出详情 + * + * @param param + * @return + */ + private List> getExcelRowDetailList(AddUpSituationQueryParam param) { + long employeeId = user.getUID(); + //excel标题 + List title = Arrays.asList("姓名", "税款所属期", "个税扣缴义务人", "部门", "手机号", "工号", "累计收入额", "累计减除费用", "累计社保个人合计", + "累计公积金个人合计", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计企业(职业)年金及其他福利", + "累计其他扣除", "累计免税收入", "累计准予扣除的捐赠额", "累计减免税额", "累计已预扣预缴税额", "累计婴幼儿照护"); + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + //查询详细信息 + List list = biz.recordList(param); + + // 开启了分权 + if (getTaxAgentV2Service(user).isOpenDevolution() || !getTaxAgentV2Service(user).isChief(employeeId)) { + List taxAgentEmployees = getTaxAgentV2Service(user).listTaxAgentAndEmployee(employeeId); + List taxAgentIdsAsAdmin = getTaxAgentV2Service(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); +// List extEmployeeList = extEmployeeService.listCanUseByEmployeeId(employeeId); +// List lastList = getLastListByModifier(employeeId); + list = list.stream().filter(f -> + // 作为管理员 + taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) +// // 作为分管理员 +// || TaxAgentBO.checkTaxAgentAndEmployee(taxAgentEmployees, f.getTaxAgentId(), f.getEmployeeId()) +// // 自己最后修改过的,则可以看到最新和其历史 +// || lastList.stream().anyMatch(l->l.getEmployeeId().equals(f.getEmployeeId()) && l.getTaxAgentId().equals(f.getTaxAgentId()) && !l.getTaxYearMonth().isBefore(f.getTaxYearMonth())) +// // 外部人员 +// || extEmployeeList.stream().anyMatch(t -> t.getTaxAgentId().equals(f.getTaxAgentId()) && t.getId().equals(f.getEmployeeId())) + ).collect(Collectors.toList()); + } + final List> dataRowList = Optional.ofNullable(list) + .map(List::stream) + .map(operatorStream -> operatorStream.map(dto -> { + List cellList = new ArrayList<>(); + cellList.add(Util.null2String(dto.getUsername())); + cellList.add(Util.null2String(dto.getTaxYearMonth() == null ? "" : formatter.format(dto.getTaxYearMonth()))); + cellList.add(Util.null2String(dto.getTaxAgentName())); + cellList.add(Util.null2String(dto.getDepartmentName())); + cellList.add(Util.null2String(dto.getMobile())); + cellList.add(Util.null2String(dto.getJobNum())); + cellList.add(Util.null2String(dto.getAddUpIncome())); + cellList.add(Util.null2String(dto.getAddUpSubtraction())); + cellList.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); + cellList.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); + cellList.add(Util.null2String(dto.getAddUpChildEducation())); + cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(Util.null2String(dto.getAddUpHousingRent())); + cellList.add(Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); + cellList.add(Util.null2String(dto.getAddUpOtherDeduction())); + cellList.add(Util.null2String(dto.getAddUpTaxExemptIncome())); + cellList.add(Util.null2String(dto.getAddUpAllowedDonation())); + cellList.add(Util.null2String(dto.getAddUpTaxSavings())); + cellList.add(Util.null2String(dto.getAddUpAdvanceTax())); + cellList.add(Util.null2String(dto.getAddUpInfantCare())); + return cellList; + }).collect(Collectors.toList())) + .orElse(Collections.emptyList()); + + List> rowList = new ArrayList<>(); + rowList.add(title); + rowList.addAll(dataRowList); + return rowList; + } + + + @Override + public XSSFWorkbook exportDetail(AddUpSituationQueryParam queryParam) { AddUpSituationBiz biz = new AddUpSituationBiz(); EmployBiz employBiz = new EmployBiz(); @@ -84,39 +429,14 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation queryParam.setTaxYearMonth(taxYearMonths.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); } - XSSFWorkbook workbook = biz.exportDetail(queryParam); - return workbook; -// return commandExecutor.execute(new AddUpSituationExportDetailCmd(params, user)); + //获取操作按钮资源 + List> rowList = getExcelRowDetailList(queryParam); + + //获取excel + return ExcelUtil.genWorkbook(rowList, "累计情况明细"); + } - @Override - public Map getDetailList(Map params) { - return commandExecutor.execute(new AddUpSituationGetDetailListCmd(params, user)); - } - - @Override - public Map preview(Map params) { - return commandExecutor.execute(new AddUpSituationPreviewCmd(params, user)); - } - - @Override - public List getAddUpSituationList(YearMonth taxYearMonth, List employeeIds) { - if (taxYearMonth == null) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100353, "参数有误:税款所属期必传")); - } - AddUpSituationBiz biz = new AddUpSituationBiz(); - return biz.listSome(AddUpSituation.builder().taxYearMonth(SalaryDateUtil.toDateStartOfMonth(taxYearMonth)).employeeIds(employeeIds).build()); - } - - @Override - public boolean deleteAddUpSituationList(YearMonth taxYearMonth, List employeeIds) { - if (taxYearMonth == null) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100353, "参数有误:税款所属期必传")); - } - AddUpSituationBiz biz = new AddUpSituationBiz(); - biz.deleteSome(AddUpSituation.builder().employeeIds(employeeIds).taxYearMonth(SalaryDateUtil.toDateStartOfMonth(taxYearMonth)).build()); - return Boolean.TRUE; - } @Override public XSSFWorkbook downloadTemplate(AddUpSituationQueryParam queryParam) { @@ -149,45 +469,45 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation }; // 2.表头 List headerList = Arrays.asList(header); - - // 获取累计情况 - List list = getAddUpSituationMapper().list(queryParam); - // 人员信息赋值 - list.forEach(m -> { - // todo 身份证号 - m.setIdNo(""); - }); - List> rows = new ArrayList<>(); rows.add(headerList); - for (AddUpSituationDTO dto : list) { - List row = new ArrayList<>(); - row.add(Util.null2String(dto.getUsername())); - row.add(Util.null2String(dto.getTaxAgentName())); - row.add(Util.null2String(dto.getDepartmentName())); - row.add(Util.null2String(dto.getMobile())); - row.add(Util.null2String(dto.getJobNum())); - row.add(Util.null2String(dto.getIdNo())); - row.add(Util.null2String(dto.getHiredate())); - row.add(Util.null2String(dto.getAddUpIncome())); - row.add(Util.null2String(dto.getAddUpSubtraction())); - row.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); - row.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); - row.add(Util.null2String(dto.getAddUpChildEducation())); - row.add(Util.null2String(dto.getAddUpContinuingEducation())); - row.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - row.add(Util.null2String(dto.getAddUpHousingRent())); - row.add(Util.null2String(dto.getAddUpSupportElderly())); - row.add(Util.null2String(dto.getAddUpIllnessMedical())); - row.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); - row.add(Util.null2String(dto.getAddUpOtherDeduction())); - row.add(Util.null2String(dto.getAddUpTaxExemptIncome())); - row.add(Util.null2String(dto.getAddUpAllowedDonation())); - row.add(Util.null2String(dto.getAddUpTaxSavings())); - row.add(Util.null2String(dto.getAddUpAdvanceTax())); - row.add(Util.null2String(dto.getAddUpInfantCare())); - rows.add(row); - } + +// // 获取累计情况 +// List list = getAddUpSituationMapper().list(queryParam); +// // 人员信息赋值 +// list.forEach(m -> { +// // todo 身份证号 +// m.setIdNo(""); +// }); +// +// for (AddUpSituationDTO dto : list) { +// List row = new ArrayList<>(); +// row.add(Util.null2String(dto.getUsername())); +// row.add(Util.null2String(dto.getTaxAgentName())); +// row.add(Util.null2String(dto.getDepartmentName())); +// row.add(Util.null2String(dto.getMobile())); +// row.add(Util.null2String(dto.getJobNum())); +// row.add(Util.null2String(dto.getIdNo())); +// row.add(Util.null2String(dto.getHiredate())); +// row.add(Util.null2String(dto.getAddUpIncome())); +// row.add(Util.null2String(dto.getAddUpSubtraction())); +// row.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); +// row.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); +// row.add(Util.null2String(dto.getAddUpChildEducation())); +// row.add(Util.null2String(dto.getAddUpContinuingEducation())); +// row.add(Util.null2String(dto.getAddUpHousingLoanInterest())); +// row.add(Util.null2String(dto.getAddUpHousingRent())); +// row.add(Util.null2String(dto.getAddUpSupportElderly())); +// row.add(Util.null2String(dto.getAddUpIllnessMedical())); +// row.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); +// row.add(Util.null2String(dto.getAddUpOtherDeduction())); +// row.add(Util.null2String(dto.getAddUpTaxExemptIncome())); +// row.add(Util.null2String(dto.getAddUpAllowedDonation())); +// row.add(Util.null2String(dto.getAddUpTaxSavings())); +// row.add(Util.null2String(dto.getAddUpAdvanceTax())); +// row.add(Util.null2String(dto.getAddUpInfantCare())); +// rows.add(row); +// } // 4.注释 List excelComments = Lists.newArrayList(); excelComments.add(new ExcelComment(0, 0, 3, 2, SalaryI18nUtil.getI18nLabel(100344, "必填"))); @@ -210,9 +530,7 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation excelComments.add(new ExcelComment(22, 0, 27, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字"))); excelComments.add(new ExcelComment(23, 0, 28, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字"))); - XSSFWorkbook book = ExcelUtil.genWorkbookV2(rows, sheetName, excelComments); - - return book; + return ExcelUtil.genWorkbookV2(rows, sheetName, excelComments); } @Override @@ -226,4 +544,262 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation return Boolean.TRUE; } + + @Override + public Map preview(AddUpSituationImportParam importParam) { + Map apidatas = new HashMap(); + + //检验参数 + checkImportParam(importParam); + + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.valueOf(imageId)); + List excelDates = ExcelParseHelper.parse2Map(fileInputStream, AddUpSituationDTO.class, 0, 1, 24, "template.xlsx"); + apidatas.put("preview", excelDates); + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; + } + + + @Override + public Map importAddUpSituation(AddUpSituationImportParam importParam) { + Map apidatas = new HashMap(); + EmployBiz employBiz = new EmployBiz(); + AddUpSituationBiz biz = new AddUpSituationBiz(); + + //检验参数 + checkImportParam(importParam); + + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + //税款所属期 + String taxYearMonthStr = Util.null2String(importParam.getTaxYearMonth()); + + Long currentEmployeeId = (long) user.getUID(); + + // 获取所有个税扣缴义务人 + Collection taxAgentList = getTaxAgentV2Service(user).listTaxAgentAndEmployeeTree(currentEmployeeId); + // 获取租户下所有的人员 + List employees = employBiz.listEmployee(); + // 已经核算过的不可操作 + // 获取已经核算的数据 + List salaryAcctEmployees = getAddUpDeductionService(user).getAccountedEmployeeData(taxYearMonthStr); + + //税款所属期 + Date taxYearMonth = SalaryDateUtil.localDateToDate(LocalDate.parse(taxYearMonthStr + "-01", SalaryDateUtil.DATE_FORMATTER)); + // 查询已有数据 + List list = getAddUpSituationMapper().listSome(AddUpSituation.builder().taxYearMonth(taxYearMonth).build()); + + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + List excelDates = ExcelParseHelper.parse2Map(fileInputStream, AddUpSituationDTO.class, 0, 1, 24, "template.xlsx"); + + int total = excelDates.size(); + int index = 0; + int successCount = 0; + int errorCount = 0; + + //人员信息 + List taxAgents = new TaxAgentBiz().listAll(); + + Date now = new Date(); + + + // 错误excel内容 + List errorData = new ArrayList<>(); + //合规数据 + List eligibleData = new ArrayList<>(); + + List taxAgentEmployees = Lists.newArrayList(); + for (int i = 0; i < excelDates.size(); i++) { + //excel中的数据 + AddUpSituationDTO dto = excelDates.get(i); + //待插入数据库对象 + AddUpSituation po = AddUpSituation.builder().tenantKey(DEFAULT_TENANT_KEY) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .year(Integer.valueOf(taxYearMonthStr.split("-")[0])) + .taxYearMonth(taxYearMonth) + .build(); + + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + List employeeSameIds = employees.stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) + && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName))).map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + + + if (StringUtils.isBlank(userName)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不能为空且不可重复(姓名与部门同时确认唯一)"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + po.setEmployeeId(employeeId); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + taxAgentEmployees = optionalTemp.get().getEmployeeList(); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + // 分权判断 + Optional optionalTaxAgentEmp = taxAgentEmployees.stream().filter(f -> f.getEmployeeId().equals(po.getEmployeeId())).findFirst(); + if (!optionalTaxAgentEmp.isPresent()) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "该条数据不在数据权限范围内,不可导入"); + errorData.add(errorMessageMap); + errorSum += 1; + } + // 判断是否有核算过 + if (CollectionUtils.isNotEmpty(salaryAcctEmployees)) { + Optional optionalAcctEmp = salaryAcctEmployees.stream().filter(f -> f.getEmployeeId().equals(po.getEmployeeId()) && f.getTaxAgentId().equals(po.getTaxAgentId())).findFirst(); + boolean isExist = list.stream().anyMatch(f -> f.getEmployeeId().equals(po.getEmployeeId()) && f.getTaxAgentId().equals(po.getTaxAgentId())); + if (optionalAcctEmp.isPresent() && isExist) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "该年月这条数据已经核算过,不可导入"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + //累计收入额 + String addUpIncome = dto.getAddUpIncome(); + po.setAddUpIncome(Util.null2String(addUpIncome)); + //累计减除费用 + String addUpSubtraction = dto.getAddUpSubtraction(); + po.setAddUpSubtraction(addUpSubtraction); + //累计社保个人合计 + String addUpSocialSecurityTotal = dto.getAddUpSocialSecurityTotal(); + po.setAddUpSocialSecurityTotal(addUpSocialSecurityTotal); + //累计公积金个人合计 + String addUpAccumulationFundTotal = dto.getAddUpAccumulationFundTotal(); + po.setAddUpAccumulationFundTotal(addUpAccumulationFundTotal); + //累计子女教育 + String addUpChildEducation = dto.getAddUpChildEducation(); + po.setAddUpChildEducation(Util.null2String(addUpChildEducation)); + //累计继续教育 + String addUpContinuingEducation = dto.getAddUpContinuingEducation(); + po.setAddUpContinuingEducation(Util.null2String(addUpContinuingEducation)); + //累计住房贷款利息 + String addUpHousingLoanInterest = dto.getAddUpHousingLoanInterest(); + po.setAddUpHousingLoanInterest(Util.null2String(addUpHousingLoanInterest)); + //累计住房租金 + String addUpHousingRent = dto.getAddUpHousingRent(); + po.setAddUpHousingRent(Util.null2String(addUpHousingRent)); + //累计赡养老人 + String addUpSupportElderly = dto.getAddUpSupportElderly(); + po.setAddUpSupportElderly(Util.null2String(addUpSupportElderly)); + //累计企业(职业)年金及其他福利 + String addUpEnterpriseAndOther = dto.getAddUpEnterpriseAndOther(); + po.setAddUpEnterpriseAndOther(addUpEnterpriseAndOther); + //累计其他扣除 + String addUpOtherDeduction = dto.getAddUpOtherDeduction(); + po.setAddUpOtherDeduction(addUpOtherDeduction); + //累计免税收入 + String addUpTaxExemptIncome = dto.getAddUpTaxExemptIncome(); + po.setAddUpTaxExemptIncome(addUpTaxExemptIncome); + //累计准予扣除的捐赠额 + String addUpAllowedDonation = dto.getAddUpAllowedDonation(); + po.setAddUpAllowedDonation(addUpAllowedDonation); + //累计已预扣预缴税额 + String addUpAdvanceTax = dto.getAddUpAdvanceTax(); + po.setAddUpAdvanceTax(addUpAdvanceTax); + + po.setAddUpIllnessMedical(dto.getAddUpIllnessMedical()); + po.setAddUpTaxSavings(dto.getAddUpTaxSavings()); + po.setAddUpInfantCare(dto.getAddUpInfantCare()); + + if (errorSum == 0) { + successCount += 1; + // 合格数据 + eligibleData.add(po); + } else { + errorCount += 1; + // 添加错误数据 + } + } + + //入库 + biz.handleImportData(eligibleData); + + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", errorData); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; + } + + + private void checkImportParam(AddUpSituationImportParam importParam) { + + + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + //税款所属期 + String declareMonthStr = Util.null2String(importParam.getTaxYearMonth()); + + + if (StringUtils.isBlank(imageId)) { + throw new SalaryRunTimeException("文件不存在"); + } + if (StringUtils.isBlank(declareMonthStr)) { + throw new SalaryRunTimeException("税款所属期为空"); + } + } } diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index 52c4e7905..a32812147 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -39,7 +39,7 @@ import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.base.Joiner; import com.google.common.collect.Lists; @@ -100,21 +100,14 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa } -// private HrmCommonEmployeeService employeeService; - - // private AttendQuoteFieldSettingService attendQuoteFieldSettingService; private RemoteAttend4SalaryService getRemoteAttend4SalaryService(User user) { return (RemoteAttend4SalaryService) ServiceUtil.getService(RemoteAttend4SalaryServiceImpl.class, user); } -// private ExecutorService taskExecutor; -// private LoggerTemplate attendQuoteLoggerTemplate; -// - @Override public PageInfo listPage(AttendQuoteDataQueryParam queryParam) { - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List list = getAttendQuoteDataMapper().list(queryParam); PageInfo page = new PageInfo(list); return page; diff --git a/src/com/engine/salary/service/impl/AttendQuoteFieldServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteFieldServiceImpl.java index fcb24d0e4..719d6cafb 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteFieldServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteFieldServiceImpl.java @@ -18,7 +18,7 @@ import com.engine.salary.remote.attend.service.impl.RemoteAttend4SalaryServiceIm import com.engine.salary.service.AttendQuoteFieldService; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -65,7 +65,7 @@ public class AttendQuoteFieldServiceImpl extends Service implements AttendQuoteF @Override public PageInfo listPage(AttendQuoteFieldQueryParam queryParam) { - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List list = getAttendQuoteFieldMapper().list(queryParam); return new PageInfo<>(list); } diff --git a/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java index 08f156c54..7ed945ff0 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java @@ -45,9 +45,9 @@ public class AttendQuoteFieldSettingServiceImpl extends Service implements Atten private AttendQuoteFieldBiz fieldBiz = new AttendQuoteFieldBiz(); - // @Resource + // // private AttendQuoteFieldSettingMapper mapper; -// @Resource +// // private AttendQuoteFieldMapper attendQuoteFieldMapper; // @Autowired // private LoggerTemplate attendQuoteFieldSettingLoggerTemplate; diff --git a/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java index c15cc325f..345101dc5 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java @@ -19,7 +19,7 @@ import com.engine.salary.service.SalaryAcctRecordService; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; @@ -53,7 +53,7 @@ public class AttendQuoteServiceImpl extends Service implements AttendQuoteServic @Override public PageInfo listPage(AttendQuoteQueryParam queryParam) { - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List list = getAttendQuoteMapper().list(queryParam); return new PageInfo<>(list, AttendQuoteListDTO.class); } diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 770575147..d1ab56944 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -27,13 +27,11 @@ import com.engine.salary.enums.siaccount.BillStatusEnum; import com.engine.salary.enums.siaccount.InspectStatusEnum; import com.engine.salary.enums.siaccount.PaymentStatusEnum; import com.engine.salary.enums.siaccount.ProjectTypeEnum; -import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.mapper.siaccount.InsuranceAccountBatchMapper; import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper; import com.engine.salary.mapper.siaccount.InsuranceAccountInspectMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; -import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.service.ColumnBuildService; import com.engine.salary.service.RecordsBuildService; import com.engine.salary.service.SIAccountService; @@ -49,7 +47,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.Column; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; @@ -206,7 +204,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //补缴缴纳列表 queryParam.setPaymentStatus(PaymentStatusEnum.REPAIR.getValue()); - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List list = MapperProxyFactory.getProxy(InsuranceAccountDetailMapper.class).list(queryParam); PageInfo pageInfo = new PageInfo<>(list,InsuranceAccountDetailPO.class); List insuranceAccountDetailPOS = pageInfo.getList(); @@ -414,7 +412,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public Map changeList(InsuranceAccountDetailParam param) { Map datas = new HashMap<>(); Long employeeId = (long)user.getUID(); - PageUtil.start(param.getCurrent(),param.getPageSize()); + SalaryPageUtil.start(param.getCurrent(),param.getPageSize()); List insuranceArchivesEmployeePOS = MapperProxyFactory.getProxy(InsuranceAccountDetailMapper.class).changeList(param.getUserName()); PageInfo pageInfo = new PageInfo<>(insuranceArchivesEmployeePOS); @@ -476,7 +474,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public Map getInspectTable(InsuranceAccountDetailParam param) { Map datas = new HashMap<>(); - PageUtil.start(param.getCurrent(),param.getPageSize()); + SalaryPageUtil.start(param.getCurrent(),param.getPageSize()); List insuranceAccountInspectPOS = MapperProxyFactory.getProxy(InsuranceAccountInspectMapper.class).getByBillMonth(param.getBillMonth()); List> records = getService(user).buildInspectRecords(insuranceAccountInspectPOS); diff --git a/src/com/engine/salary/service/impl/SIReportServiceImpl.java b/src/com/engine/salary/service/impl/SIReportServiceImpl.java index de3fe5b39..c4749535c 100644 --- a/src/com/engine/salary/service/impl/SIReportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIReportServiceImpl.java @@ -7,7 +7,7 @@ import com.engine.salary.mapper.siaccount.SIAccountDetailMapper; import com.engine.salary.service.SIReportService; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import java.util.List; @@ -20,7 +20,7 @@ public class SIReportServiceImpl extends Service implements SIReportService { @Override public PageInfo welfareList(QueryAccountDetailParam param) { - PageUtil.start(param.getCurrent(),param.getPageSize()); + SalaryPageUtil.start(param.getCurrent(),param.getPageSize()); List insuranceAccountDetailPOS = getSIAccountDetailMapper().listSome(param); PageInfo page = new PageInfo<>(insuranceAccountDetailPOS ,InsuranceAccountDetailPO.class); return page; diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index f70f4605b..8cc50abc2 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1,6 +1,5 @@ package com.engine.salary.service.impl; -import cn.hutool.core.util.BooleanUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.cloudstore.eccom.pc.table.WeaTableColumn; @@ -9,18 +8,7 @@ import com.engine.core.impl.Service; import com.engine.salary.biz.EmployBiz; import com.engine.salary.biz.SISchemeBiz; import com.engine.salary.cmd.sischeme.*; -import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.datacollection.param.AttendQuoteDataImportParam; -import com.engine.salary.entity.datacollection.po.AttendQuoteDataPO; -import com.engine.salary.entity.datacollection.po.AttendQuoteDataValuePO; -import com.engine.salary.entity.datacollection.po.AttendQuoteFieldPO; -import com.engine.salary.entity.datacollection.po.AttendQuotePO; -import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordListDTO; -import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; -import com.engine.salary.entity.salaryarchive.dto.TaxAgentListDTO; -import com.engine.salary.entity.salarysob.po.SalarySobPO; -import com.engine.salary.entity.siaccount.param.DSTenantKeyThreadVar; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siarchives.po.*; import com.engine.salary.entity.sicategory.po.ICategoryPO; @@ -30,9 +18,7 @@ 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.taxrate.TaxAgent; -import com.engine.salary.enums.datacollection.AttendQuoteSourceTypeEnum; import com.engine.salary.enums.sicategory.*; -import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.siarchives.FundSchemeMapper; import com.engine.salary.mapper.siarchives.OtherSchemeMapper; import com.engine.salary.mapper.siarchives.SocialSchemeMapper; @@ -44,15 +30,13 @@ import com.engine.salary.service.SISchemeService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; -import com.engine.salary.util.excel.ExcelComment; import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Maps; -import com.kingbase8.util.LOGGER; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -60,10 +44,8 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.file.ImageFileManager; -import weaver.hrm.User; import java.io.InputStream; -import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -165,7 +147,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { public PageInfo list(InsuranceSchemeParam queryParam) { SalaryAssert.notNull(queryParam.getWelfareTypeEnum(), SalaryI18nUtil.getI18nLabel( 84026, "参数错误")); - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List insuranceSchemePOS = MapperProxyFactory.getProxy(InsuranceSchemeMapper.class).listByWelfareType(queryParam.getWelfareTypeEnum().getValue()); PageInfo pageInfo = new PageInfo<>(insuranceSchemePOS, InsuranceSchemePO.class); List collect = insuranceSchemePOS.stream().map(item -> diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 13a5d502e..e99c2c5d8 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -21,7 +21,7 @@ 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.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; @@ -179,7 +179,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct public PageInfo listPageByParam(SalaryAcctEmployeeQueryParam queryParam) { ValidUtil.doValidator(queryParam); // 分页参数 - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); // 查询薪资核算人员 List salaryAcctEmployeePOS = getSalaryAcctEmployeeMapper().listPage(queryParam); return new PageInfo<>(salaryAcctEmployeePOS); @@ -232,7 +232,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct Set lastMonthSalaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getId); // 查询环比减少人员 // 分页参数 - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List salaryAcctEmployeePOS = getSalaryAcctEmployeeMapper().listPage4Reduce(lastMonthSalaryAcctRecordIds, queryParam); PageInfo salaryAcctEmployeePOPageInfo = new PageInfo<>(salaryAcctEmployeePOS); return salaryAcctEmployeePOPageInfo; @@ -261,7 +261,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // 查询合并计税的薪资核算人员 Set otherSalaryAcctRecordIds = SalaryEntityUtil.properties(otherSalaryAcctRecordPOS, SalaryAcctRecordPO::getId); // 分页参数 - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List salaryAcctEmployeePOS = getSalaryAcctEmployeeMapper().listPage4ConsolidatedTax(otherSalaryAcctRecordIds, queryParam); PageInfo salaryAcctEmployeePOPageInfo = new PageInfo<>(salaryAcctEmployeePOS); return salaryAcctEmployeePOPageInfo; diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 197b2f140..3eb92179b 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -21,7 +21,7 @@ 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.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -140,7 +140,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe po.setSalaryMonths(localDateRange); // 查询薪资核算记录 - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List salaryAcctRecordPOS = getSalaryAcctRecordMapper().listSome(po); page.setList(salaryAcctRecordPOS); return page; @@ -463,4 +463,14 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe } return salarySobPO.getName() + SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth()); } + + @Override + public List listByStatus(SalaryAcctRecordStatusEnum status) { + return getSalaryAcctRecordMapper().listSome(SalaryAcctRecordPO.builder().status(status.getValue()).build()); + } + + @Override + public List listByStatusAndEmployeeId(SalaryAcctRecordStatusEnum status, Long employeeId) { + return getSalaryAcctRecordMapper().listSome(SalaryAcctRecordPO.builder().status(status.getValue()).creator(employeeId).build()); + } } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java index ed205f6c9..ee8b7dc3a 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java @@ -20,7 +20,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -56,7 +56,7 @@ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryA @Override public PageInfo taxAgentAdjustRecordListPage(TaxAgentAdjustRecordQueryParam queryParam) { - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List taxAgentAdjustRecordListDTOS = getSalaryArchiveTaxAgentMapper().taxAgentAdjustRecordList(queryParam); PageInfo pageInfo = new PageInfo(taxAgentAdjustRecordListDTOS, TaxAgentAdjustRecordListDTO.class); return pageInfo; diff --git a/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java index d6b0d0f8c..6be2d94ed 100644 --- a/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.TaxAgentBiz; @@ -31,6 +32,7 @@ import com.engine.salary.util.page.Column; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageUtil; import com.google.common.collect.Lists; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.BooleanUtils; @@ -221,7 +223,7 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary PageInfo> dtoPage = new PageInfo<>(); dtoPage.setTotal(resultMapList.size()); if (needPage) { - dtoPage.setList(PageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), resultMapList)); + dtoPage.setList(SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), resultMapList)); } else { dtoPage.setList(resultMapList); } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 9a93311e2..68f5083f5 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -88,7 +88,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService return SqlProxyHandle.getProxy(SalaryAcctEmployeeMapper.class); } -// @Resource +// private SalaryAcctResultMapper getSalaryAcctResultMapper() { return SqlProxyHandle.getProxy(SalaryAcctResultMapper.class); } @@ -119,7 +119,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // private AsyncSystemMessageRest asyncSystemMessageRest; // @RpcReference // private MailBaseService mailBaseService; -// @Resource +// // private SalaryBatchService salaryBatchService; // @Autowired // private LoggerTemplate salarySendLoggerTemplate; diff --git a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java index 191ca0391..9257c5eb7 100644 --- a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java @@ -22,7 +22,7 @@ import com.engine.salary.service.SalarySobService; 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.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -108,7 +108,7 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange // 填充总数和当页数据 PageInfo pageInfo = new PageInfo(salarySobRangeListDTOS,SalarySobRangeListDTO.class); pageInfo.setTotal(salarySobRangeListDTOS.size()); - pageInfo.setList(PageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), salarySobRangeListDTOS)); + pageInfo.setList(SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), salarySobRangeListDTOS)); return pageInfo; } diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index 2f61a600a..4e3b97b72 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -70,9 +70,6 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { private SalarySobCheckRuleService getSalarySobCheckRuleService(User user) { return (SalarySobCheckRuleService) ServiceUtil.getService(SalarySobCheckRuleServiceImpl.class, user); } -// -// private LoggerTemplate salarySobLoggerTemplate; -// private SalaryAcctRecordService getSalaryAcctRecordService(User user) { return (SalaryAcctRecordService) ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } @@ -161,7 +158,6 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { } /** - * todo * 新建薪资账套时,保存默认的员工信息字段 * * @param salarySobPO 薪资账套 diff --git a/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java new file mode 100644 index 000000000..503421770 --- /dev/null +++ b/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java @@ -0,0 +1,81 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; +import com.engine.salary.mapper.taxagent.TaxAgentAdminMapper; +import com.engine.salary.service.TaxAgentAdminService; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +/** + * 个税扣缴义务人管理员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentAdminServiceImpl extends Service implements TaxAgentAdminService { + + private TaxAgentAdminMapper getTaxAgentAdminMapper() { + return MapperProxyFactory.getProxy(TaxAgentAdminMapper.class); + } + + @Override + public void deleteByTaxAgentIds(Collection taxAgentIds) { + if (CollectionUtils.isEmpty(taxAgentIds)) { + return; + } + getTaxAgentAdminMapper().deleteByTaxAgentIds(taxAgentIds); + } + + @Override + public void batchInsert(Long taxAgentId, Collection admins) { + if (taxAgentId == null || CollectionUtils.isEmpty(admins)) { + return; + } + Date now = new Date(); + admins.stream() + .map(e -> TaxAgentAdminPO.builder() + .id(IdGenerator.generate()) + .taxAgentId(taxAgentId) + .employeeId(e) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()) + .forEach(getTaxAgentAdminMapper()::insertIgnoreNull); + } + + @Override + public List listByTaxAgentIds(Collection taxAgentIds) { + List list = Lists.newArrayList(); + if (CollectionUtils.isEmpty(taxAgentIds)) { + return list; + } + return getTaxAgentAdminMapper().listSome(TaxAgentAdminPO.builder().taxAgentIds(taxAgentIds).build()); + + } + + @Override + public List listByTaxAgentIdsAndEmployeeId(Collection taxAgentIds, Long currentEmployeeId) { + List list = Lists.newArrayList(); + if (CollectionUtils.isEmpty(taxAgentIds) || currentEmployeeId == null) { + return list; + } + return getTaxAgentAdminMapper().listSome(TaxAgentAdminPO.builder().taxAgentIds(taxAgentIds).employeeId(currentEmployeeId).build()); + } + + @Override + public List listByEmployeeId(Long currentEmployeeId) { + return getTaxAgentAdminMapper().listSome(TaxAgentAdminPO.builder().employeeId(currentEmployeeId).build()); + } +} diff --git a/src/com/engine/salary/service/impl/TaxAgentBaseServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentBaseServiceImpl.java new file mode 100644 index 000000000..25cae8472 --- /dev/null +++ b/src/com/engine/salary/service/impl/TaxAgentBaseServiceImpl.java @@ -0,0 +1,114 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.taxagent.param.TaxAgentSaveBaseParam; +import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; +import com.engine.salary.enums.SalaryOnOffEnum; +import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.taxagent.TaxAgentBaseMapper; +import com.engine.salary.service.SIAccountService; +import com.engine.salary.service.SalaryAcctRecordService; +import com.engine.salary.service.TaxAgentBaseService; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import dm.jdbc.util.IdGenerator; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import weaver.hrm.User; + +import java.util.Date; +import java.util.List; + +/** + * 个税扣缴义务人基本信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentBaseServiceImpl extends Service implements TaxAgentBaseService { + + private TaxAgentBaseMapper getTaxAgentBaseMapper() { + return MapperProxyFactory.getProxy(TaxAgentBaseMapper.class); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SIAccountService getSIAccountService(User user) { + return ServiceUtil.getService(SIAccountServiceImpl.class, user); + } + + public TaxAgentBaseServiceImpl() { + } + + @Override + public Boolean isOpenDevolution() { + TaxAgentBasePO base = getBaseInfo(); + return (base != null && base.getDevolutionStatus() == 1) ? Boolean.TRUE : Boolean.FALSE; + } + + @Override + public TaxAgentBasePO getBaseInfo() { + List list = getTaxAgentBaseMapper().listAll(); + return CollectionUtils.isEmpty(list) ? null : list.get(0); + } + + @Override + public String save(TaxAgentSaveBaseParam saveBaseParam) { + if (saveBaseParam.getDevolutionStatus() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); + } + // 检查使用中的数据 + boolean isUnable = checkUsedData(); + if (isUnable) { + if (saveBaseParam.getDevolutionStatus()) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(117395, "当前有未归档的核算数据,全部归档后才可以启用分权")); + } else { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(117396, "当前有未归档的核算数据,全部归档后才可以停用分权")); + } + } + TaxAgentBasePO base = getBaseInfo(); + Date now = new Date(); + Integer devolutionStatus = saveBaseParam.getDevolutionStatus() ? SalaryOnOffEnum.ON.getValue() : SalaryOnOffEnum.OFF.getValue(); + if (base == null) { + getTaxAgentBaseMapper().insertIgnoreNull( + TaxAgentBasePO.builder() + .id(IdGenerator.generate()) + .devolutionStatus(devolutionStatus) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + } else { + base.setUpdateTime(now); + base.setDevolutionStatus(devolutionStatus); + getTaxAgentBaseMapper().updateIgnoreNull(base); + } + return StringUtils.EMPTY; + } + + /** + * 检查是否有未归档数据 + * + * @return + */ + private boolean checkUsedData() { + // 检查是否核算 + // todo 1.社保福利档案是否有核算未归档 + Boolean checkedValue = false;//= getSIAccountService(user).changeAdminUnfiledCheck(); + // todo 2.薪资核算是否有核算未归档 + List salaryAcctRecords = getSalaryAcctRecordService(user).listByStatus(SalaryAcctRecordStatusEnum.NOT_ARCHIVED);// getSalaryAcctRecordService(user).listByStatusAndEmployeeId(SalaryAcctRecordStatusEnum.NOT_ARCHIVED, currentTenantKey); + if (CollectionUtils.isNotEmpty(salaryAcctRecords) || checkedValue) { + return Boolean.TRUE; + } + return Boolean.FALSE; + } +} diff --git a/src/com/engine/salary/service/impl/TaxAgentEmpChangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentEmpChangeServiceImpl.java new file mode 100644 index 000000000..03627d015 --- /dev/null +++ b/src/com/engine/salary/service/impl/TaxAgentEmpChangeServiceImpl.java @@ -0,0 +1,50 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.entity.taxagent.po.TaxAgentEmpChangePO; +import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum; +import com.engine.salary.mapper.taxagent.TaxAgentEmpChangeMapper; +import com.engine.salary.service.TaxAgentEmpChangeService; +import org.apache.commons.collections4.CollectionUtils; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人管理范围的增量人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentEmpChangeServiceImpl extends Service implements TaxAgentEmpChangeService { + + @Resource + private TaxAgentEmpChangeMapper taxAgentEmpChangeMapper; + + @Override + public List listAll() { + return taxAgentEmpChangeMapper.listAll(); + } + + @Override + public List listAllByModule(TaxAgentEmpChangeModuleEnum moduleTypeEnum) { + return taxAgentEmpChangeMapper.listSome(TaxAgentEmpChangePO.builder().moduleType(moduleTypeEnum.getValue()).build()); + } + + @Override + public boolean deleleByIds(Collection ids) { + if (CollectionUtils.isEmpty(ids)) { + return Boolean.FALSE; + } + taxAgentEmpChangeMapper.deleteByIds(ids); + return Boolean.TRUE; + } + + @Override + public void batchInsert(List taxAgentEmpChangeList) { + taxAgentEmpChangeMapper.batchInsert(taxAgentEmpChangeList); + } +} diff --git a/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java new file mode 100644 index 000000000..5808fb81d --- /dev/null +++ b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java @@ -0,0 +1,155 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.taxagent.param.TaxAgentEmpSaveParam; +import com.engine.salary.entity.taxagent.po.TaxAgentEmpChangePO; +import com.engine.salary.entity.taxagent.po.TaxAgentEmpPO; +import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum; +import com.engine.salary.enums.taxagent.TaxAgentEmpChangeTypeEnum; +import com.engine.salary.mapper.taxagent.TaxAgentEmpMapper; +import com.engine.salary.service.TaxAgentEmpChangeService; +import com.engine.salary.service.TaxAgentEmpService; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; +import org.apache.commons.collections4.CollectionUtils; +import weaver.hrm.User; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 个税扣缴义务人管理范围的人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentEmpServiceImpl extends Service implements TaxAgentEmpService { + + + private TaxAgentEmpMapper getTaxAgentEmpMapper() { + return MapperProxyFactory.getProxy(TaxAgentEmpMapper.class); + } + + public TaxAgentEmpChangeService getTaxAgentEmpChangeService(User user) { + return ServiceUtil.getService(TaxAgentEmpChangeServiceImpl.class, user); + } + + @Override + public void deleteByTaxAgentIds(Collection taxAgentIds) { + if (CollectionUtils.isEmpty(taxAgentIds)) { + return; + } + List taxAgentEmpList = getTaxAgentEmpMapper().listSome(TaxAgentEmpPO.builder().taxAgentIds(taxAgentIds).build()); + if (CollectionUtils.isEmpty(taxAgentEmpList)) { + return; + } + List idList = taxAgentEmpList.stream().map(TaxAgentEmpPO::getId).collect(Collectors.toList()); + getTaxAgentEmpMapper().deleteByIds(idList); + } + + @Override + public List listByTaxAgentIds(List taxAgentIds) { + if (CollectionUtils.isEmpty(taxAgentIds)) { + return Lists.newArrayList(); + } + return getTaxAgentEmpMapper().listSome(TaxAgentEmpPO.builder().taxAgentIds(taxAgentIds).build()); + } + + @Override + public void syncTaxAgentEmployee(List taxAgentEmpSaveParamList, Long currentEmployeeId) { + if (CollectionUtils.isEmpty(taxAgentEmpSaveParamList)) { + return; + } + List taxAgentIds = taxAgentEmpSaveParamList.stream().map(TaxAgentEmpSaveParam::getTaxAgentId).collect(Collectors.toList()); + List taxAgentEmployeeExistList = this.listByTaxAgentIds(taxAgentIds); + Date now = new Date(); + // 关联表 + List taxAgentEmployeeAddList = Lists.newArrayList(); + List taxAgentEmployeeDelIds = Lists.newArrayList(); + // 增量表 + List taxAgentEmpChangeList = Lists.newArrayList(); + + taxAgentEmpSaveParamList.forEach(saveParam -> { + List existList = taxAgentEmployeeExistList.stream().filter(f -> f.getTaxAgentId().equals(saveParam.getTaxAgentId())).collect(Collectors.toList()); + Map taxAgentEmployeeMap = SalaryEntityUtil.convert2Map(existList, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + for (DataCollectionEmployee se : saveParam.getSalaryEmployeeList()) { + String key = saveParam.getTaxAgentId() + "-" + se.getEmployeeId(); + // 本地有的不动 + if (taxAgentEmployeeMap.containsKey(key)) { + taxAgentEmployeeMap.remove(key); + continue; + } + taxAgentEmployeeAddList.add(TaxAgentEmpPO.builder() + .id(IdGenerator.generate()) + .taxAgentId(saveParam.getTaxAgentId()) + .employeeId(se.getEmployeeId()) + .employeeName(se.getUsername()) + .creator(currentEmployeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build()); + + Arrays.stream(TaxAgentEmpChangeModuleEnum.values()).forEach(e -> { + taxAgentEmpChangeList.add(TaxAgentEmpChangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(saveParam.getTaxAgentId()) + .employeeId(se.getEmployeeId()) + .employeeName(se.getUsername()) + .changeType(TaxAgentEmpChangeTypeEnum.ADD.getValue()) + .moduleType(e.getValue()) + .creator(currentEmployeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build()); + }); + + } + //遍历剩余的就是删除的 + for (String key : taxAgentEmployeeMap.keySet()) { + TaxAgentEmpPO value = taxAgentEmployeeMap.get(key); + taxAgentEmployeeDelIds.add(value.getId()); + + Arrays.stream(TaxAgentEmpChangeModuleEnum.values()).forEach(e -> { + taxAgentEmpChangeList.add(TaxAgentEmpChangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(saveParam.getTaxAgentId()) + .employeeId(value.getEmployeeId()) + .employeeName(value.getEmployeeName()) + .changeType(TaxAgentEmpChangeTypeEnum.DEL.getValue()) + .moduleType(e.getValue()) + .creator(currentEmployeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build()); + }); + } + }); + + // 关联表==================================================== + // 新增 + if (CollectionUtils.isNotEmpty(taxAgentEmployeeAddList)) { + getTaxAgentEmpMapper().batchInsert(taxAgentEmployeeAddList); + } + // 删除 + if (CollectionUtils.isNotEmpty(taxAgentEmployeeDelIds)) { + getTaxAgentEmpMapper().deleteByIds(taxAgentEmployeeDelIds); + } + // 增量表==================================================== + if (CollectionUtils.isNotEmpty(taxAgentEmpChangeList)) { + getTaxAgentEmpChangeService(user).batchInsert(taxAgentEmpChangeList); + } + } +} diff --git a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java new file mode 100644 index 000000000..f4c1e3b4f --- /dev/null +++ b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java @@ -0,0 +1,671 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.biz.EmployBiz; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.hrm.DeptInfo; +import com.engine.salary.entity.hrm.HrmStatus; +import com.engine.salary.entity.hrm.PositionInfo; +import com.engine.salary.entity.hrm.SubCompanyInfo; +import com.engine.salary.entity.taxagent.bo.TaxAgentBO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO; +import com.engine.salary.entity.taxagent.param.*; +import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxagent.po.TaxAgentSubAdminPO; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; +import com.engine.salary.enums.salarysob.TargetTypeEnum; +import com.engine.salary.enums.taxagent.TaxAgentRangeTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.datacollection.EmployMapper; +import com.engine.salary.mapper.taxagent.TaxAgentManageRangeMapper; +import com.engine.salary.service.*; +import com.engine.salary.util.JsonUtil; +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 lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.springframework.transaction.annotation.Transactional; +import weaver.hrm.User; + +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; + +/** + * 个税扣缴义务人的管理范围 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentManageRangeService { + + private TaxAgentManageRangeMapper getTaxAgentManageRangeMapper() { + return MapperProxyFactory.getProxy(TaxAgentManageRangeMapper.class); + } + + private TaxAgentV2Service getTaxAgentV2Service(User user) { + return ServiceUtil.getService(TaxAgentV2ServiceImpl.class, user); + } + + private TaxAgentSubAdminService taxAgentSubAdminService; +// private TaxAgentSubAdminService getTaxAgentSubAdminService(User user) { +// return ServiceUtil.getService(TaxAgentSubAdminServiceImpl.class, user); +// } + + private TaxAgentEmpService getTaxAgentEmpService(User user) { + return ServiceUtil.getService(TaxAgentEmpServiceImpl.class, user); + } + + private TaxAgentSubAdminEmpService taxAgentSubAdminEmployeeService; +// private TaxAgentSubAdminEmpService getTaxAgentSubAdminEmpService(User user) { +// return ServiceUtil.getService(TaxAgentSubAdminEmpServiceImpl.class, user); +// } + +// private ComInfoCache comInfoCache; + + private EmployMapper getEmployMapper() { + return MapperProxyFactory.getProxy(EmployMapper.class); + } + + private ExecutorService taskExecutor; + + private EmployBiz employBiz = new EmployBiz(); +// private HrmCommonHrmStatusService hrmCommonHrmStatusService; + + private List listByTaxAgentIds(List taxAgentIds) { + if (CollectionUtils.isEmpty(taxAgentIds)) { + return Lists.newArrayList(); + } + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().rangeType(TaxAgentRangeTypeEnum.TAXAGENT.getValue()).taxAgentIds(taxAgentIds).build()); + } + + @Override + public List listSalaryEmployeeByTaxAgentIds(List taxAgentIds) { + return listSalaryEmployeeByTaxAgentIds(null, taxAgentIds); + } + + @Override + public List listSalaryEmployeeByTaxAgentIds(SalaryEmployeeStatusEnum employeeStatus, List taxAgentIds) { + List allTaxAgentManageRanges = this.listByTaxAgentIds(taxAgentIds); + return convertTaxAgentEmployee(employeeStatus, taxAgentIds, allTaxAgentManageRanges); + } + + @Override + public List listBySubAdminIds(Collection taxAgentSubAdminIds) { + if (CollectionUtils.isEmpty(taxAgentSubAdminIds)) { + return Lists.newArrayList(); + } + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().rangeType(TaxAgentRangeTypeEnum.SUBADMIN.getValue()).taxAgentSubAdminIds(taxAgentSubAdminIds).build()); + } + + @Override + public List listSalaryEmployeeBySubAdminIds(List taxAgentIds) { + return listSalaryEmployeeBySubAdminIds(null, taxAgentIds); + } + + @Override + public List listSalaryEmployeeBySubAdminIds(SalaryEmployeeStatusEnum employeeStatus, List taxAgentSubAdminIds) { + List allTaxAgentManageRanges = this.listBySubAdminIds(taxAgentSubAdminIds); + List taxAgentIds = allTaxAgentManageRanges.stream().map(TaxAgentManageRangePO::getTaxAgentId).distinct().collect(Collectors.toList()); + + return convertTaxAgentEmployee(employeeStatus, taxAgentIds, allTaxAgentManageRanges); + } + + private List convertTaxAgentEmployee(SalaryEmployeeStatusEnum employeeStatus, List taxAgentIds, List allTaxAgentManageRanges) { + return taxAgentIds.stream().distinct().map(e -> { + // 获取范围下的人员 + List salaryEmployees = getManageRangeSalaryEmployees(employeeStatus, e, allTaxAgentManageRanges); + if (CollectionUtils.isEmpty(salaryEmployees)) { + return null; + } + List taxAgentEmployees = salaryEmployees.stream().map(m -> { + TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee taxAgentEmployee = new TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee(); + taxAgentEmployee.setEmployeeId(m.getEmployeeId()); + taxAgentEmployee.setUsername(m.getUsername()); + return taxAgentEmployee; + }).collect(Collectors.toList()); + + return TaxAgentManageRangeEmployeeDTO.builder() + .taxAgentId(e) + .taxAgentName("") + .employeeList(taxAgentEmployees) + .build(); + }).filter(Objects::nonNull).collect(Collectors.toList()); + } + + /** + * 获取范围下的人员 + * + * @param employeeStatus + * @param taxAgentId + * @param allTaxAgentManageRanges + * @return + */ + private List getManageRangeSalaryEmployees(SalaryEmployeeStatusEnum employeeStatus, Long taxAgentId, + List allTaxAgentManageRanges) { + List includeAllTaxAgentManageRanges = allTaxAgentManageRanges.stream().filter(f -> f.getIncludeType().equals(NumberUtils.INTEGER_ONE)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(includeAllTaxAgentManageRanges)) { + return Collections.emptyList(); + } + List excludeAllTaxAgentManageRanges = allTaxAgentManageRanges.stream().filter(f -> f.getIncludeType().equals(NumberUtils.INTEGER_ZERO)).collect(Collectors.toList()); + + List includeSalaryEmployees = Lists.newArrayList(); + List includeTaxAgentManageRanges = includeAllTaxAgentManageRanges.stream().filter(f -> f.getTaxAgentId().equals(taxAgentId)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(includeTaxAgentManageRanges)) { + return includeSalaryEmployees; + } + // 如果需要状态过滤 + List personnelStatuss = Lists.newArrayList(); + if (employeeStatus != null) { + // 查询人员状态 + if (employeeStatus.equals(SalaryEmployeeStatusEnum.NORMAL)) { + personnelStatuss = UserStatusEnum.getNormalStatus(); + } else if (employeeStatus.equals(SalaryEmployeeStatusEnum.UNAVAILABLE)) { + personnelStatuss = UserStatusEnum.getUnavailableStatus(); + } + } + // 根据上一步的查询参数查询人员 + includeSalaryEmployees = listSalaryEmployeeByManageRange(includeTaxAgentManageRanges, personnelStatuss); + if (CollectionUtils.isEmpty(includeSalaryEmployees)) { + return includeSalaryEmployees; + } + // 查询管理范围(从范围中排除) + List excludeTaxAgentManageRanges = excludeAllTaxAgentManageRanges.stream().filter(f -> f.getTaxAgentId().equals(taxAgentId)).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(excludeTaxAgentManageRanges)) { + // 根据上一步的查询参数查询人员 + List excludeSalaryEmployees = listSalaryEmployeeByManageRange(excludeTaxAgentManageRanges, personnelStatuss); + // 需要排除的人员范围 + Set excludeEmployeeIds = SalaryEntityUtil.properties(excludeSalaryEmployees, DataCollectionEmployee::getEmployeeId); + // 过滤人员 + includeSalaryEmployees = includeSalaryEmployees.stream() + .filter(salaryEmployee -> !excludeEmployeeIds.contains(salaryEmployee.getEmployeeId())) + .collect(Collectors.toList()); + } + return includeSalaryEmployees; + } + + /** + * 根据范围加载人员 + * + * @param taxAgentManageRanges + * @return + */ + private List listSalaryEmployeeByManageRange(List taxAgentManageRanges, List personnelStatuss) { + if (CollectionUtils.isEmpty(taxAgentManageRanges)) { + return Collections.emptyList(); + } + List salaryEmployees = getEmployMapper().listAll(); + List salaryEmployeeList = Lists.newArrayList(); + for (TaxAgentManageRangePO manageRange : taxAgentManageRanges) { + salaryEmployeeList.addAll(salaryEmployees.stream() + .filter(salaryEmployee -> { + // 判断人员状态 + List hrmStatusList = JsonUtil.parseList(manageRange.getEmployeeStatus(), String.class); + // 有状态过滤则取交集 + if (CollectionUtils.isNotEmpty(personnelStatuss)) { + hrmStatusList = hrmStatusList.stream().filter(personnelStatuss::contains).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(hrmStatusList) && !hrmStatusList.contains(salaryEmployee.getStatus())) { + return false; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.ALL.getValue())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.EMPLOYEE.getValue()) + && Objects.equals(manageRange.getTargetId(), salaryEmployee.getEmployeeId())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue()) + && Objects.equals(manageRange.getTargetId(), salaryEmployee.getDepartmentId())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue()) + && Objects.equals(manageRange.getTargetId(), salaryEmployee.getDepartmentId())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.POSITION.getValue()) + && Objects.equals(manageRange.getTargetId(), salaryEmployee.getJobtitleId())) { + return true; + } + return false; + }).collect(Collectors.toList())); + } + // 去重 + salaryEmployeeList = salaryEmployeeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DataCollectionEmployee::getEmployeeId))), ArrayList::new)); + return salaryEmployeeList; + } + + /** + * 根据分管理员id获取管理范围列表 + * + * @param subAdminId + * @param includeType + * @return + */ + private List listBySubAdminIdAndIncludeType(Long subAdminId, Integer includeType) { + + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().taxAgentSubAdminId(subAdminId).rangeType(TaxAgentRangeTypeEnum.SUBADMIN.getValue()).includeType(includeType).build()); +// return new LambdaQueryChainWrapper<>(getTaxAgentManageRangeMapper()) +// .eq(TaxAgentManageRangePO::getTenantKey) +// .eq(TaxAgentManageRangePO::getDeleteType, 0) +// .eq(TaxAgentManageRangePO::getTaxAgentSubAdminId, subAdminId) +// .eq(TaxAgentManageRangePO::getRangeType, TaxAgentRangeTypeEnum.SUBADMIN.getValue()) +// .eq(TaxAgentManageRangePO::getIncludeType, includeType) +// .orderByDesc(TaxAgentManageRangePO::getId) +// .list(); + } + + /** + * 获取个税口角义务人的管理范围 + * + * @param taxAgentId + * @param includeType + * @return + */ + private List listByTaxAgentIdAndIncludeType(Long taxAgentId, Integer includeType) { + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().taxAgentId(taxAgentId).rangeType(TaxAgentRangeTypeEnum.TAXAGENT.getValue()).includeType(includeType).build()); + } + + @Override + public PageInfo listPageByParamAndIncludeType(TaxAgentSubAdminRangeQueryParam queryParam, Integer includeType) { + // 查询已有的管理范围 + List taxAgentManageRanges = listBySubAdminIdAndIncludeType(queryParam.getSubAdminId(), includeType); + return listPageByParamAndIncludeType(taxAgentManageRanges, queryParam, includeType); + } + + @Override + public PageInfo listPageByParamAndIncludeType(TaxAgentRangeQueryParam queryParam, Integer includeType) { + // 查询已有的管理范围 + List taxAgentManageRanges = listByTaxAgentIdAndIncludeType(queryParam.getTaxAgentId(), includeType); + return listPageByParamAndIncludeType(taxAgentManageRanges, queryParam, includeType); + } + + private PageInfo listPageByParamAndIncludeType(List taxAgentManageRanges, TaxAgentManageRangeQueryParam queryParam, Integer includeType) { + + // 查询人员信息 + List employeeIds = taxAgentManageRanges.stream() + .filter(e -> Objects.equals(e.getTargetType(), TargetTypeEnum.EMPLOYEE.getValue())) + .map(TaxAgentManageRangePO::getTargetId) + .collect(Collectors.toList()); +// List employeeComInfos = comInfoCache.getCacheList(HrmEmployeeComInfo.class, employeeIds); + List employeeComInfos = employBiz.getEmployeeByIdsAll(employeeIds); + // 查询部门信息 + List departmentIds = taxAgentManageRanges.stream() + .filter(e -> Objects.equals(e.getTargetType(), TargetTypeEnum.DEPT.getValue())) + .map(TaxAgentManageRangePO::getTargetId) + .collect(Collectors.toList()); + List departmentComInfos = employBiz.getDeptInfoList(departmentIds); + // 查询分部信息 + List subDepartmentIds = taxAgentManageRanges.stream() + .filter(e -> Objects.equals(e.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue())) + .map(TaxAgentManageRangePO::getTargetId) + .collect(Collectors.toList()); + + List subDepartmentComInfos = employBiz.getSubCompanyInfoList(subDepartmentIds); + // 查询岗位信息 + List positionIds = taxAgentManageRanges.stream() + .filter(e -> Objects.equals(e.getTargetType(), TargetTypeEnum.POSITION.getValue())) + .map(TaxAgentManageRangePO::getTargetId) + .collect(Collectors.toList()); + List positionComInfos = employBiz.listPositionInfo(positionIds); + // 分页参数 + PageInfo dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), TaxAgentManageRangeListDTO.class); + // 查询人员状态 +// List hrmStatusList = hrmCommonHrmStatusService.list(); + List hrmStatusList = UserStatusEnum.getHrmStatusList(); + // 薪资账套的人员范围po转换成列表dto + List taxAgentManageRangeList = TaxAgentBO.convert2ListDTO(taxAgentManageRanges, employeeComInfos, departmentComInfos, subDepartmentComInfos, positionComInfos, hrmStatusList); + // 根据对象名称过滤 + if (StringUtils.isNotEmpty(queryParam.getTargetName())) { + taxAgentManageRangeList = taxAgentManageRangeList.stream() + .filter(f -> f.getTargetName().contains(queryParam.getTargetName())) + .collect(Collectors.toList()); + } + // 填充总数和当页数据 + dtoPage.setTotal(taxAgentManageRangeList.size()); + dtoPage.setList(SalaryPageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), taxAgentManageRangeList)); + return dtoPage; + } + + /** + * 根据个税口角义务人id保存管理范围 + * + * @param saveParam 保存参数 + */ + @Override + public void save(TaxAgentRangeSaveParam saveParam) { + // 查询薪资账套 + TaxAgentPO taxAgent = getTaxAgentV2Service(user).getById(saveParam.getTaxAgentId()); + if (Objects.isNull(taxAgent)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(108605, "参数错误,个税扣缴义务人不存在或者已被删除")); + } + // 查询已有的管理范围 + List taxAgentManageAllRanges = listByTaxAgentId(saveParam.getTaxAgentId()); + + List taxAgentManageRanges = taxAgentManageAllRanges.stream().filter(f -> f.getIncludeType().equals(saveParam.getIncludeType())).collect(Collectors.toList()); + // 处理一下本次的保存参数(如果原来添加过对应的人员(/部门/岗位),那么本次不需要新增,只需要更新) + TaxAgentBO.Result result = TaxAgentBO.handleTaxAgentRange(taxAgentManageRanges, saveParam, taxAgent.getId(), (long) user.getUID()); + + /** 检查当前个税扣缴义务人的所有人员范围与所有分管理员的管理范围===========================start */ + List allRanges = Lists.newArrayList(taxAgentManageAllRanges); + allRanges.addAll(result.getNeedInsertTaxAgentManageRanges()); + allRanges.addAll(result.getNeedUpdateTaxAgentManageRanges()); + // 去重 + allRanges = allRanges.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing(f -> f.getTaxAgentId() + "." + f.getRangeType() + "." + f.getTargetType() + "." + f.getTargetId() + "." + f.getEmployeeStatus() + "." + f.getIncludeType())) + ), ArrayList::new)); + List allSalaryEmployees = this.getManageRangeSalaryEmployees(null, saveParam.getTaxAgentId(), allRanges); + // 如果是排除是否会对分管理范围产生影响 + List allSubAdminRanges = listSunAdminRangeByTaxAgentId(saveParam.getTaxAgentId()); + if (saveParam.getIncludeType().equals(NumberUtils.INTEGER_ZERO)) { + List allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, saveParam.getTaxAgentId(), allSubAdminRanges); + + List allSalaryEmployeeIds = allSalaryEmployees.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); + allSubAdminSalaryEmployees.removeIf(a -> allSalaryEmployeeIds.contains(a.getEmployeeId())); + + if (CollectionUtils.isNotEmpty(allSubAdminSalaryEmployees)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110122, "分管理员包含该范围,不能删除")); + } + } + /** 检查当前个税扣缴义务人的所有人员范围与所有分管理员的管理范围===========================end */ + // todo 保存 + if (CollectionUtils.isNotEmpty(result.getNeedInsertTaxAgentManageRanges())) { +// this.saveBatch(result.getNeedInsertTaxAgentManageRanges()); + result.getNeedInsertTaxAgentManageRanges().forEach(range -> getTaxAgentManageRangeMapper().insertIgnoreNull(range)); + } + if (CollectionUtils.isNotEmpty(result.getNeedUpdateTaxAgentManageRanges())) { + result.getNeedInsertTaxAgentManageRanges().forEach(range -> getTaxAgentManageRangeMapper().updateIgnoreNull(range)); +// this.updateBatchById(result.getNeedUpdateTaxAgentManageRanges()); + } + + /** 同步本地人员范围的关联人员=========================== */ + taskExecutor.execute(() -> { + try { + syncLocalEmp(saveParam.getTaxAgentId(), allSalaryEmployees, allSubAdminRanges, (long) user.getUID()); + } finally { + } + }); + + // 记录日志 todo + } + + /** + * 获取个税口角义务人的管理范围 + * + * @param taxAgentId + * @return + */ + private List listByTaxAgentId(Long taxAgentId) { + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().taxAgentId(taxAgentId).rangeType(TaxAgentRangeTypeEnum.TAXAGENT.getValue()).build()); + } + + private List listSunAdminRangeByTaxAgentId(Long taxAgentId) { + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().taxAgentId(taxAgentId).rangeType(TaxAgentRangeTypeEnum.SUBADMIN.getValue()).build()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save4SubAdmin(TaxAgentSubAdminRangeSaveParam saveParam) { + // 查询薪资账套 + TaxAgentSubAdminPO taxAgentSubAdmin = taxAgentSubAdminService.getById(saveParam.getSubAdminId()); + if (Objects.isNull(taxAgentSubAdmin)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(106687, "参数错误,分管理员不存在或者已被删除")); + } + // 查询已有的管理范围 + List taxAgentManageAllRanges = listBySubAdminId(saveParam.getSubAdminId()); + List taxAgentManageRanges = taxAgentManageAllRanges.stream().filter(f -> f.getIncludeType().equals(saveParam.getIncludeType())).collect(Collectors.toList()); + // 处理一下本次的保存参数(如果原来添加过对应的人员(/部门/岗位),那么本次不需要新增,只需要更新) + TaxAgentBO.Result result = TaxAgentBO.handleSubAdminRange(taxAgentManageRanges, saveParam, taxAgentSubAdmin.getTaxAgentId(), taxAgentSubAdmin.getId(), (long) user.getUID()); + + // 当前库中所有分管理员的管理范围 + List allSubAdminRangesExist = listSunAdminRangeByTaxAgentId(taxAgentSubAdmin.getTaxAgentId()); + /** 检查当前分管理员的范围与其他分管理员人员范围===========================start */ + // 当前分管理员的范围 + List allSubAdminRangesCuttent = Lists.newArrayList(taxAgentManageAllRanges); + // 其他分管理员的范围 + List otherSubAdminRangesExist = allSubAdminRangesExist.stream().filter(f -> !f.getTaxAgentSubAdminId().equals(saveParam.getSubAdminId())).collect(Collectors.toList()); + allSubAdminRangesCuttent.addAll(result.getNeedInsertTaxAgentManageRanges()); + allSubAdminRangesCuttent.addAll(result.getNeedUpdateTaxAgentManageRanges()); + + // 当前分管理员的所有人员 + List currentSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allSubAdminRangesCuttent); + // 其他分管理员的所有人员 + List otherSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), otherSubAdminRangesExist); + for (DataCollectionEmployee se : currentSubAdminSalaryEmployees) { + Optional optionalSe = otherSubAdminSalaryEmployees.stream().filter(f -> f.getEmployeeId().equals(se.getEmployeeId())).findFirst(); + if (optionalSe.isPresent()) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110149, "不可包含其他分管理员的人员")); + } + } + /** 检查当前分管理员的范围与其他分管理员人员范围===========================end */ + + /** 检查当前分管理员的范围与所属个税扣缴义务人的人员范围===========================start */ + // 所属个税扣缴义务人的所有分管理员的管理范围 + List allSubAdminRanges = Lists.newArrayList(allSubAdminRangesExist); + allSubAdminRanges.addAll(result.getNeedInsertTaxAgentManageRanges()); + allSubAdminRanges.addAll(result.getNeedUpdateTaxAgentManageRanges()); + // 去重 + allSubAdminRanges = allSubAdminRanges.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing(f -> f.getTaxAgentSubAdminId() + "." + f.getRangeType() + "." + f.getTargetType() + "." + f.getTargetId() + "." + f.getEmployeeStatus() + "." + f.getIncludeType())) + ), ArrayList::new)); + // 所属个税扣缴义务人的所有人员 + List allRanges = listByTaxAgentId(taxAgentSubAdmin.getTaxAgentId()); + List allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allRanges); + // 所有分管理员的所有人员 + List allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allSubAdminRanges); + List allSalaryEmployeeIds = allSalaryEmployees.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); + allSubAdminSalaryEmployees.removeIf(a -> allSalaryEmployeeIds.contains(a.getEmployeeId())); + if (CollectionUtils.isNotEmpty(allSubAdminSalaryEmployees)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110125, "超出了整体人员范围")); + } + /** 检查当前分管理员的范围与所属个税扣缴义务人的人员范围===========================end */ + + // 保存 + if (CollectionUtils.isNotEmpty(result.getNeedInsertTaxAgentManageRanges())) { + result.getNeedInsertTaxAgentManageRanges().forEach(range -> getTaxAgentManageRangeMapper().insertIgnoreNull(range)); +// todo this.saveBatch(result.getNeedInsertTaxAgentManageRanges()); + } + if (CollectionUtils.isNotEmpty(result.getNeedUpdateTaxAgentManageRanges())) { + result.getNeedUpdateTaxAgentManageRanges().forEach(range -> getTaxAgentManageRangeMapper().updateIgnoreNull(range)); +// todo this.updateBatchById(result.getNeedUpdateTaxAgentManageRanges()); + } + /** 同步本地人员范围的关联人员=========================== */ + List finalAllSubAdminRanges = allSubAdminRanges; + taskExecutor.execute(() -> { + try { + syncLocalEmp(taxAgentSubAdmin.getTaxAgentId(), allSalaryEmployees, finalAllSubAdminRanges, (long) user.getUID()); + } finally { + } + }); + // 记录日志 todo + } + + /** + * 根据分管理员id获取管理范围列表 + * + * @param subAdminId + * @return + */ + private List listBySubAdminId(Long subAdminId) { + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().taxAgentSubAdminId(subAdminId).rangeType(TaxAgentRangeTypeEnum.SUBADMIN.getValue()).build()); + } + + private List listByIds(Collection ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return getTaxAgentManageRangeMapper().listSome(TaxAgentManageRangePO.builder().ids(ids).build()); + } + + @Override + public void deleteByIds(Collection ids) { + // 查询管理范围 + List taxAgentManageRanges = listByIds(ids); + if (CollectionUtils.isEmpty(taxAgentManageRanges)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98604, "数据不存在或已被删除")); + } + List taxAgentIds = taxAgentManageRanges.stream().map(TaxAgentManageRangePO::getTaxAgentId).distinct().collect(Collectors.toList()); + if (taxAgentIds.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110159, "一次只能删一个个税个税扣缴义务人的范围")); + } + Collection finalIds = ids; + taxAgentManageRanges = this.listByTaxAgentIds(taxAgentIds); + List allManageRanges = taxAgentManageRanges.stream().filter(f -> !finalIds.contains(f.getId())).collect(Collectors.toList()); + List allRanges = allManageRanges.stream().filter(f -> f.getRangeType().equals(TaxAgentRangeTypeEnum.TAXAGENT.getValue())).collect(Collectors.toList()); + List allSubAdminRanges = allManageRanges.stream().filter(f -> f.getRangeType().equals(TaxAgentRangeTypeEnum.SUBADMIN.getValue())).collect(Collectors.toList()); + Long taxAgentId = taxAgentIds.get(0); + List allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allRanges); + + List allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allSubAdminRanges); + allSalaryEmployees.forEach(f -> { + allSubAdminSalaryEmployees.removeIf(a -> a.getEmployeeId().equals(f.getEmployeeId())); + }); + if (CollectionUtils.isNotEmpty(allSubAdminSalaryEmployees)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110160, "分管理员存在超出整体人员范围以外的人员,不可删除")); + } + // 删除管理范围 + getTaxAgentManageRangeMapper().deleteByIds(ids); + + /** 同步本地人员范围的关联人员=========================== */ + taskExecutor.execute(() -> { + try { + syncLocalEmp(taxAgentId, allSalaryEmployees, allSubAdminRanges, (long) user.getUID()); + } finally { + } + }); + // 记录日志 todo + } + + @Override + public void deleteByTaxAgentIds(Collection taxAgentIds) { + getTaxAgentManageRangeMapper().deleteByTaxAgentIds(taxAgentIds); + // 删除管理范围下的所有人员 + getTaxAgentEmpService(user).deleteByTaxAgentIds(taxAgentIds); + } + + @Override + public void deleteBySubAdmins(Collection subAdminIds) { + if (CollectionUtils.isEmpty(subAdminIds)) { + return; + } + getTaxAgentManageRangeMapper().deleteBySubAdminIds(subAdminIds); + // 删除管理范围下的所有人员 + taxAgentSubAdminEmployeeService.deleteBySubAdminIds(subAdminIds); + } + + //fixme +// @AsyncListener(topic = "hrm_resource_queue") +// public void receiveHrmResourceQueue(AsyncBean asyncBean) { +// log.info("接受到人员变动的结果:{}", JSONObject.toJSONString(asyncBean)); +// // todo 过滤必要性事件类型进行处理,后续加上时间间隔,避免人事批量操作时,监听事件过多 +// if (asyncBean == null || asyncBean.getMessage() == null) { +// log.error("接受到人员变动的结果失败"); +// } +// String tenantKey = asyncBean.getMessage().getTenantKey(); +// // 开始同步 +// taskExecutor.execute(() -> { +// try { +// handleSyncTaxAgentEmpData(); +// } finally { +// } +// }); +// } + + /** + * 同步处理所有人员范围 + * + * @param + */ + private void handleSyncTaxAgentEmpData() { + List allManageRanges = getTaxAgentManageRangeMapper().listAll(); + if (CollectionUtils.isEmpty(allManageRanges)) { + return; + } + List taxAgentIds = allManageRanges.stream().map(m -> m.getTaxAgentId()).distinct().collect(Collectors.toList()); + + List taxAgentEmpSaveParamList = Lists.newArrayList(); + List subAdminEmpSaveParamList = Lists.newArrayList(); + taxAgentIds.forEach(taxAgentId -> { + // 当前个税扣缴义务人的所有范围 + List allRanges = allManageRanges.stream().filter(f -> f.getTaxAgentId().equals(taxAgentId) && f.getRangeType().equals(TaxAgentRangeTypeEnum.TAXAGENT.getValue())).collect(Collectors.toList()); + List allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allRanges); + taxAgentEmpSaveParamList.add(getTaxAgentEmpSyncParam(taxAgentId, allSalaryEmployees)); + List allSubAdminRanges = allManageRanges.stream().filter(f -> f.getTaxAgentId().equals(taxAgentId) && f.getRangeType().equals(TaxAgentRangeTypeEnum.SUBADMIN.getValue())).collect(Collectors.toList()); + + subAdminEmpSaveParamList.addAll(getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges)); + }); + Long employeeId = 0L; + // 同步管理员的人员 + getTaxAgentEmpService(user).syncTaxAgentEmployee(taxAgentEmpSaveParamList, employeeId); + // 同步分管理员的人员 + taxAgentSubAdminEmployeeService.syncTaxAgentSubAdminEmployee(subAdminEmpSaveParamList, employeeId); + } + + /** + * 获取个税扣缴义务人的同步参数 + * + * @param taxAgentId + * @param allSalaryEmployees + * @return + */ + private TaxAgentEmpSaveParam getTaxAgentEmpSyncParam(Long taxAgentId, List allSalaryEmployees) { + return TaxAgentEmpSaveParam.builder() + .taxAgentId(taxAgentId) + .salaryEmployeeList(allSalaryEmployees) + .build(); + } + + /** + * 获取分管理员的同步参数 + * + * @param taxAgentId + * @param allSubAdminRanges + * @return + */ + private List getTaxAgentSubAdminEmpSyncParam(Long taxAgentId, List allSubAdminRanges) { + List allSubAdminIds = allSubAdminRanges.stream().map(TaxAgentManageRangePO::getTaxAgentSubAdminId).distinct().collect(Collectors.toList()); + List subAdminEmpSaveParamList = Lists.newArrayList(); + allSubAdminIds.forEach(e -> { + List singSubAdminRanges = allSubAdminRanges.stream().filter(r -> e.equals(r.getTaxAgentSubAdminId())).collect(Collectors.toList()); + List subAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, singSubAdminRanges); + + subAdminEmpSaveParamList.add(TaxAgentSubAdminEmpSaveParam.builder() + .taxAgentId(taxAgentId) + .subAdminId(e) + .salaryEmployeeList(subAdminSalaryEmployees) + .build()); + }); + return subAdminEmpSaveParamList; + } + + /** + * 同步本地范围关联人员 + * + * @param taxAgentId + * @param allSalaryEmployees 个税扣缴义务人下的所有人员 + * @param allSubAdminRanges + * @param employeeId + */ + private void syncLocalEmp(Long taxAgentId, List allSalaryEmployees, List allSubAdminRanges, Long employeeId) { + List taxAgentEmpSaveParamList = Collections.singletonList(getTaxAgentEmpSyncParam(taxAgentId, allSalaryEmployees)); + // 同步个税扣缴义务人的人员 + getTaxAgentEmpService(user).syncTaxAgentEmployee(taxAgentEmpSaveParamList, employeeId); + + List subAdminEmpSaveParamList = getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges); + // 同步分管理员的人员 + taxAgentSubAdminEmployeeService.syncTaxAgentSubAdminEmployee(subAdminEmpSaveParamList, employeeId); + } +} diff --git a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java index 044f688ea..da6d227bd 100644 --- a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java @@ -2,134 +2,19 @@ package com.engine.salary.service.impl; import com.engine.core.impl.Service; import com.engine.salary.biz.TaxAgentBiz; -import com.engine.salary.cmd.TaxAgent.*; -import com.engine.salary.entity.datacollection.AddUpDeduction; -import com.engine.salary.entity.datacollection.AddUpSituation; -import com.engine.salary.entity.datacollection.po.OtherDeductionPO; -import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; import com.engine.salary.entity.taxrate.TaxAgent; -import com.engine.salary.entity.taxrate.param.TaxAgentQueryParam; -import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.TaxAgentMapper; -import com.engine.salary.mapper.archive.SalaryArchiveTaxAgentMapper; -import com.engine.salary.mapper.datacollection.AddUpDeductionMapper; -import com.engine.salary.mapper.datacollection.AddUpSituationMapper; -import com.engine.salary.mapper.datacollection.OtherDeductionMapper; import com.engine.salary.service.TaxAgentService; -import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import java.util.Collection; -import java.util.List; -import java.util.Map; public class TaxAgentServiceImpl extends Service implements TaxAgentService { - private SalaryArchiveTaxAgentMapper getSalaryArchiveTaxAgentMapper() { - return MapperProxyFactory.getProxy(SalaryArchiveTaxAgentMapper.class); - } - - private AddUpDeductionMapper getAddUpDeductionMapper() { - return MapperProxyFactory.getProxy(AddUpDeductionMapper.class); - } - - private OtherDeductionMapper getOtherDeductionMapper() { - return MapperProxyFactory.getProxy(OtherDeductionMapper.class); - } - - private AddUpSituationMapper getAddUpSituationMapper() { - return MapperProxyFactory.getProxy(AddUpSituationMapper.class); - } - private TaxAgentMapper getTaxAgentMapper() { return MapperProxyFactory.getProxy(TaxAgentMapper.class); } - @Override - public Map list(Map params) { - return commandExecutor.execute(new TaxAgentListCmd(params, user)); - } - - @Override - public Map getForm(Map params) { - return commandExecutor.execute(new TaxAgentGetFromCmd(params, user)); - } - - @Override - public Map save(Map params) { - return commandExecutor.execute(new TaxAgentSaveCmd(params, user)); - } - - @Override - public Map update(Map params) { - return commandExecutor.execute(new TaxAgentUpdateCmd(params, user)); - } - - @Override - public String delete(Collection ids) { - - List taxAgents = getTaxAgentMapper().listBySome(TaxAgentQueryParam.builder().ids(ids).build()); - if (CollectionUtils.isEmpty(taxAgents)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(85382, "要删除的个税扣缴义务人在不存在或已删除")); - } - - // 正在使用的记录不允许删除 - boolean checkUsed = checkUsed(ids); - if (checkUsed) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100570, "正在使用的记录不允许删除")); - } - - getTaxAgentMapper().deleteByIds(ids); -// // 记录日志 -// taxAgents.forEach(e -> SalaryLoggerUtil.recordDeleteSingleLog(taxAgentLoggerTemplate, -// e.getId(), -// e.getName(), -// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100546, "删除个税扣缴义务人"), -// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100546, "删除个税扣缴义务人") + ":" + e.getName(), -// e)); - - return StringUtils.EMPTY; - } - - /** - * 检查正在被使用的记录 - * - * @param ids - * @return - */ - private boolean checkUsed(Collection ids) { - // 被薪资档案引用 - List salaryArchiveTaxAgentList = getSalaryArchiveTaxAgentMapper().listSome(SalaryArchiveTaxAgentPO.builder().taxAgentIds(ids).build()); - if (CollectionUtils.isNotEmpty(salaryArchiveTaxAgentList)) { - return Boolean.TRUE; - } - // 被累计专项附加扣除引用 - List addUpDeductionList = getAddUpDeductionMapper().listSome(AddUpDeduction.builder().taxAgentIds(ids).build()); - if (CollectionUtils.isNotEmpty(addUpDeductionList)) { - return Boolean.TRUE; - } - // 被其他免税扣除引用 - List otherDeductionList = getOtherDeductionMapper().listSome(OtherDeductionPO.builder().taxAgentIds(ids).build()); - if (CollectionUtils.isNotEmpty(otherDeductionList)) { - return Boolean.TRUE; - } - // 被往期累计情况引用 - List addUpSituationList = getAddUpSituationMapper().listSome(AddUpSituation.builder().taxAgentIds(ids).build()); - if (CollectionUtils.isNotEmpty(addUpSituationList)) { - return Boolean.TRUE; - } - - return Boolean.FALSE; - } - - - @Override - public Map selectList(Map params) { - return commandExecutor.execute(new TaxAgentSelectListCmd(params, user)); - } - @Override public Collection findAll() { return new TaxAgentBiz().listAll(); diff --git a/src/com/engine/salary/service/impl/TaxAgentV2ServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentV2ServiceImpl.java new file mode 100644 index 000000000..b852efe14 --- /dev/null +++ b/src/com/engine/salary/service/impl/TaxAgentV2ServiceImpl.java @@ -0,0 +1,691 @@ +package com.engine.salary.service.impl; + +import com.engine.common.service.HrmCommonService; +import com.engine.common.service.impl.HrmCommonServiceImpl; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.biz.SalaryRoleBiz; +import com.engine.salary.entity.datacollection.AddUpDeduction; +import com.engine.salary.entity.datacollection.AddUpSituation; +import com.engine.salary.entity.datacollection.po.OtherDeductionPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.taxagent.bo.TaxAgentBO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeTaxAgentDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentListDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.param.TaxAgentAdminChangeCheckParam; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; +import com.engine.salary.entity.taxagent.param.TaxAgentSaveParam; +import com.engine.salary.entity.taxagent.po.*; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; +import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; +import com.engine.salary.enums.taxagent.TaxAgentRoleTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.archive.SalaryArchiveMapper; +import com.engine.salary.mapper.datacollection.AddUpDeductionMapper; +import com.engine.salary.mapper.datacollection.AddUpSituationMapper; +import com.engine.salary.mapper.datacollection.EmployMapper; +import com.engine.salary.mapper.datacollection.OtherDeductionMapper; +import com.engine.salary.mapper.taxagent.TaxAgentMapper; +import com.engine.salary.service.*; +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.engine.salary.util.valid.RuntimeTypeEnum; +import com.engine.salary.util.valid.ValidUtil; +import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; +import weaver.hrm.User; + +import java.util.*; +import java.util.stream.Collectors; + +public class TaxAgentV2ServiceImpl extends Service implements TaxAgentV2Service { + + // private ExtEmployeeService extEmployeeService; + SalaryRoleBiz salaryRoleBiz = new SalaryRoleBiz(); + + private TaxAgentBaseService getTaxAgentBaseService(User user) { + return ServiceUtil.getService(TaxAgentBaseServiceImpl.class, user); + } + + private TaxAgentAdminService getTaxAgentAdminService(User user) { + return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user); + } + + private TaxAgentSubAdminService taxAgentSubAdminService; +// private TaxAgentSubAdminService getTaxAgentSubAdminService(User user) { +// return ServiceUtil.getService(TaxAgentSubAdminServiceImpl.class, user); +// } + + private TaxAgentManageRangeService getTaxAgentManageRangeService(User user) { + return ServiceUtil.getService(TaxAgentManageRangeServiceImpl.class, user); + } + + private TaxAgentEmpService getTaxAgentEmpService(User user) { + return ServiceUtil.getService(TaxAgentEmpServiceImpl.class, user); + } + + private TaxAgentSubAdminEmpService taxAgentSubAdminEmpService; +// private TaxAgentSubAdminEmpService getTaxAgentSubAdminEmpService(User user) { +// return ServiceUtil.getService(TaxAgentSubAdminEmpServiceImpl.class, user); +// } + + private HrmCommonService getHrmCommonService(User user) { + return ServiceUtil.getService(HrmCommonServiceImpl.class, user); + } + + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SIAccountService getSIAccountService(User user) { + return ServiceUtil.getService(SIAccountServiceImpl.class, user); + } + + private SalaryArchiveMapper getSalaryArchiveMapper() { + return MapperProxyFactory.getProxy(SalaryArchiveMapper.class); + } + + private AddUpDeductionMapper getAddUpDeductionMapper() { + return MapperProxyFactory.getProxy(AddUpDeductionMapper.class); + } + + private OtherDeductionMapper getOtherDeductionMapper() { + return MapperProxyFactory.getProxy(OtherDeductionMapper.class); + } + + private AddUpSituationMapper getAddUpSituationMapper() { + return MapperProxyFactory.getProxy(AddUpSituationMapper.class); + } + + private TaxAgentMapper getTaxAgentMapper() { + return MapperProxyFactory.getProxy(TaxAgentMapper.class); + } + + private EmployMapper getEmployMapper() { + return MapperProxyFactory.getProxy(EmployMapper.class); + } + + +// private PaymentAgencyMapper paymentAgencyMapper; + +// private SIArchivesSocialMapper siArchivesSocialMapper; + +// private SIArchivesFundMapper siArchivesFundMapper; + +// private SIArchivesOtherMapper siArchivesOtherMapper; + +// private AuthorityService authorityService; + + +// private HrmCommonHrmStatusService hrmCommonHrmStatusService; + + @Override + public TaxAgentRoleTypeEnum getRoleType(Long currentEmployeeId) { + TaxAgentRoleTypeEnum roleType = TaxAgentRoleTypeEnum.NONE; + if (isChief(currentEmployeeId)) { + return TaxAgentRoleTypeEnum.CHIEF; + } + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + if (!isOpenDevolution) { + List taxAgentAdmins = getTaxAgentAdminService(user).listByEmployeeId(currentEmployeeId); + if (CollectionUtils.isNotEmpty(taxAgentAdmins)) { + return TaxAgentRoleTypeEnum.ADMIN; + } + List taxAgentSubAdmins = taxAgentSubAdminService.listByAndEmployeeId(currentEmployeeId); + if (CollectionUtils.isNotEmpty(taxAgentSubAdmins)) { + return TaxAgentRoleTypeEnum.SUBADMIN; + } + } + return roleType; + } + + @Override + public Boolean isChief(Long currentEmployeeId) { + String allAdminRoleId = salaryRoleBiz.getAllAdminRoleId(); + + List roleInfo = getHrmCommonService(user).getRoleInfo(user.getUID()); + Map map = roleInfo.stream().map(m -> (Map) m).filter(m -> m.get("roleid") != null && m.get("roleid").toString().equals(allAdminRoleId)).findFirst().orElse(null); + return map != null; + //return authorityService.checkPermissionSet(TaxAgentPermissionConstant.MENU_CODE, TaxAgentPermissionConstant.ITEM_CODE_DEVOLUTION, currentEmployeeId); + } + + @Override + public Boolean isDefaultOpen(Long currentEmployeeId) { + return true; +// return authorityService.checkPermissionSet(TaxAgentPermissionConstant.MENU_CODE, TaxAgentPermissionConstant.ITEM_CODE_DEFAULT, currentEmployeeId); + } + + @Override + public Boolean isAdminEnable(Long currentEmployeeId) { + // 如果不是超管,是管理员 + if (!isChief(currentEmployeeId)) { + // 没有开启分权 + if (!isOpenDevolution()) { + return Boolean.FALSE; + } else { + // 自己有没有被分配为管理员 + List taxAgentAdminList = getTaxAgentAdminService(user).listByEmployeeId(currentEmployeeId); + return CollectionUtils.isNotEmpty(taxAgentAdminList); + } + } + return Boolean.TRUE; + } + + + @Override + public PageInfo listPage(TaxAgentQueryParam queryParam) { + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List taxAgentPOS = getTaxAgentMapper().listBySome(queryParam); + return new PageInfo<>(taxAgentPOS); + } + + @Override + public List list(TaxAgentQueryParam queryParam) { + return getTaxAgentMapper().listBySome(queryParam); + } + + + @Override + public List listByIds(Collection ids) { + return getTaxAgentMapper().listBySome(TaxAgentQueryParam.builder().ids(ids).build()); + } + + @Override + public List listAll() { + return getTaxAgentMapper().listAll(); + } + + @Override + public TaxAgentPO getById(Long id) { + return getTaxAgentMapper().getById(id); + } + + @Override + public Collection findAll() { + List taxAgents = getTaxAgentMapper().listAll(); + return TaxAgentBO.convertToListDTO(taxAgents); + } + + @Override + public Collection listAllTaxAgents(Long employeeId) { + List taxAgents = getTaxAgentMapper().listAll(); + return handleForDevolution(taxAgents, employeeId); + } + + @Override + public Collection listAllTaxAgentsAsAdmin(Long employeeId) { + List taxAgents = getTaxAgentMapper().listAll(); + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + if (!isOpenDevolution) { + return taxAgents; + } + List taxAgentIds = taxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + List enableTaxAgentIds = Lists.newArrayList(); + // 1.判断自己是否是管理员, 如果是管理员,就是能够查看所属个税扣缴义务人 + List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIds(taxAgentIds); + // 是管理员的列表 + List adminTaxAgentIds = taxAgentAdminList.stream().filter(f -> f.getEmployeeId().equals(employeeId)).map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList()); + + enableTaxAgentIds.addAll(adminTaxAgentIds); + return taxAgents.stream().filter(f -> enableTaxAgentIds.contains(f.getId())).collect(Collectors.toList()); + } + + @Override + public Collection listAllTaxAgentsAsRange(List employeeIds) { + List taxAgents = getTaxAgentMapper().listAll(); + List taxAgentIds = taxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + + List taxAgentEmployees = getTaxAgentEmpService(user).listByTaxAgentIds(taxAgentIds); + + if (CollectionUtils.isEmpty(taxAgentEmployees)) { + return Lists.newArrayList(); + } + + // 转换数据结构 + List allemployeeIds = taxAgentEmployees.stream().map(TaxAgentEmpPO::getEmployeeId).distinct().collect(Collectors.toList()); + + return allemployeeIds.stream().map(m -> { + List enableTaxAgentIds = taxAgentEmployees.stream().filter(f -> f.getEmployeeId().equals(m)).map(TaxAgentEmpPO::getTaxAgentId).distinct() + .collect(Collectors.toList()); + return TaxAgentEmployeeTaxAgentDTO.builder() + .employeeId(m) + .taxAgentIds(enableTaxAgentIds) + .build(); + }).collect(Collectors.toList()); + } + + @Override + public String save(TaxAgentSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + if (isOpenDevolution && CollectionUtils.isEmpty(saveParam.getAdminUserIds())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(106271, "请选择管理员")); + } + List taxAgents = getTaxAgentMapper().listByName(saveParam.getName()); + if (CollectionUtils.isNotEmpty(taxAgents)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98080, "名称不允许重复")); + } +// PaymentAgencyPO paymentAgencyPO = new LambdaQueryChainWrapper<>(paymentAgencyMapper) +// .eq(PaymentAgencyPO::getTenantKey) +// .eq(PaymentAgencyPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()) +// .eq(PaymentAgencyPO::getAgencyName, saveParam.getName()) +// .one(); +// if (paymentAgencyPO != null) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(115130, "名称不允许与社保福利代缴机构名称重复")); +// } + // 保存 + saveParam.setId(IdGenerator.generate()); + TaxAgentPO taxAgent = TaxAgentBO.convertToPO(saveParam, (long) user.getUID()); + getTaxAgentMapper().insert(taxAgent); + if (isOpenDevolution) { + getTaxAgentAdminService(user).batchInsert(saveParam.getId(), saveParam.getAdminUserIds()); + } + // 记录日志 +// SalaryLoggerUtil.recordAddSingleLog(taxAgentLoggerTemplate, +// taxAgent.getId(), +// taxAgent.getName(), +// SalaryI18nUtil.getI18nLabel( 93766, "新增个税扣缴义务人"), +// SalaryI18nUtil.getI18nLabel( 93766, "新增个税扣缴义务人"), +// taxAgent); + + return StringUtils.EMPTY + taxAgent.getId(); + } + + @Override + public String paymentAgencyUpdate(TaxAgentPO taxAgentPO) { + getTaxAgentMapper().update(taxAgentPO); + return ""; + } + + @Override + public String update(TaxAgentSaveParam saveParam) { + ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE); + + TaxAgentPO taxAgent = getById(saveParam.getId()); + if (taxAgent == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在")); + } + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + if (isOpenDevolution && CollectionUtils.isEmpty(saveParam.getAdminUserIds())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(106271, "请选择管理员")); + } + + List individualTaxWithholdingAgents = getTaxAgentMapper().listByName(saveParam.getName()); + boolean nameExist = individualTaxWithholdingAgents.stream().anyMatch(e -> !Objects.equals(e.getId(), saveParam.getId())); + if (nameExist) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98080, "名称不允许重复")); + } + TaxAgentPO taxAgentNew = new TaxAgentPO(); + BeanUtils.copyProperties(taxAgent, taxAgentNew); + BeanUtils.copyProperties(saveParam, taxAgentNew); + taxAgentNew.setUpdateTime(new Date()); + getTaxAgentMapper().update(taxAgentNew); + if (isOpenDevolution) { +// Boolean isUnEnableChange = adminChangeCheck(TaxAgentAdminChangeCheckParam.builder() +// .taxAgentId(saveParam.getId()) +// .adminUserId(saveParam.getAdminUserIds()) +// .build()); +// if (isUnEnableChange) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(115937, "该管理员有未归档核算数据,不可更换管理员")); +// } + // 删除管理员 + getTaxAgentAdminService(user).deleteByTaxAgentIds(Collections.singletonList(taxAgent.getId())); + // 新增管理员 + getTaxAgentAdminService(user).batchInsert(saveParam.getId(), saveParam.getAdminUserIds()); + } + // 记录日志 +// SalaryLoggerUtil.recordUpdateSingleLog(taxAgentLoggerTemplate, +// taxAgent.getId(), +// taxAgentNew.getName(), +// SalaryI18nUtil.getI18nLabel(93767, "编辑个税扣缴义务人"), +// SalaryI18nUtil.getI18nLabel(93767, "编辑个税扣缴义务人"), +// taxAgent, +// taxAgentNew); + + return StringUtils.EMPTY; + } + + @Override + public Boolean adminChangeCheck(TaxAgentAdminChangeCheckParam checkParam) { + ValidUtil.doValidator(checkParam); + List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIds(Collections.singletonList(checkParam.getTaxAgentId())); + Long adminUserId = CollectionUtils.isNotEmpty(taxAgentAdminList) ? taxAgentAdminList.get(0).getEmployeeId() : 0L; + boolean isChanged = checkParam.getAdminUserId() != null && !adminUserId.equals(checkParam.getAdminUserId()); + // 更换了管理员 + if (isChanged) { + // 检查是否核算 + //todo 1.社保福利档案是否有核算未归档 + Boolean checkedValue = false;// getSIAccountService(user).changeAdminUnfiledCheck(adminUserId); + // 2.薪资核算是否有核算未归档 + List salaryAcctRecords = getSalaryAcctRecordService(user).listByStatusAndEmployeeId(SalaryAcctRecordStatusEnum.NOT_ARCHIVED, adminUserId); + if (CollectionUtils.isNotEmpty(salaryAcctRecords) || checkedValue) { + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String delete(Collection ids) { + + if (org.springframework.util.CollectionUtils.isEmpty(ids)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); + } + + List taxAgents = getTaxAgentMapper().listBySome(TaxAgentQueryParam.builder().ids(ids).build()); + if (CollectionUtils.isEmpty(taxAgents)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(85382, "要删除的个税扣缴义务人在不存在或已删除")); + } + // 正在使用的记录不允许删除 + boolean checkUsed = checkUsed(ids); + if (checkUsed) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100570, "正在使用的记录不允许删除")); + } + // 删除管理员 + getTaxAgentAdminService(user).deleteByTaxAgentIds(ids); + // 删除分管理员和对应管理范围 +// todo taxAgentSubAdminService.deleteByTaxAgentIds(ids); + // 删除人员范围 + getTaxAgentManageRangeService(user).deleteByTaxAgentIds(ids); + + getTaxAgentMapper().deleteByIds(ids); + + // 记录日志 +// taxAgents.forEach(e -> SalaryLoggerUtil.recordDeleteSingleLog(taxAgentLoggerTemplate, +// e.getId(), +// e.getName(), +// SalaryI18nUtil.getI18nLabel(100546, "删除个税扣缴义务人"), +// SalaryI18nUtil.getI18nLabel(100546, "删除个税扣缴义务人") + ":" + e.getName(), +// e)); + + return StringUtils.EMPTY; + } + + /** + * 检查正在被使用的记录 + * + * @param ids + * @return + */ + private boolean checkUsed(Collection ids) { + //fixme 被薪资档案引用 +// List salaryArchiveList = new LambdaQueryChainWrapper<>(getSalaryArchiveMapper()) +// .eq(SalaryArchivePO::getDeleteType, 0) +// .eq(SalaryArchivePO::getTenantKey) +// .in(SalaryArchivePO::getTaxAgentId, ids) +// .list(); +// getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().t); +// if (CollectionUtils.isNotEmpty(salaryArchiveList)) { +// return Boolean.TRUE; +// } + // todo 被社保福利档案引用 +// List socialSchemePOList = new LambdaQueryChainWrapper<>(siArchivesSocialMapper) +// .eq(InsuranceArchivesSocialSchemePO::getTenantKey) +// .eq(InsuranceArchivesSocialSchemePO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()) +// .in(InsuranceArchivesSocialSchemePO::getPaymentOrganization, ids) +// .list(); +// if (CollectionUtils.isNotEmpty(socialSchemePOList)) { +// return Boolean.TRUE; +// } +// List fundSchemePOList = new LambdaQueryChainWrapper<>(siArchivesFundMapper) +// .eq(InsuranceArchivesFundSchemePO::getTenantKey) +// .eq(InsuranceArchivesFundSchemePO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()) +// .in(InsuranceArchivesFundSchemePO::getPaymentOrganization, ids) +// .list(); +// if (CollectionUtils.isNotEmpty(fundSchemePOList)) { +// return Boolean.TRUE; +// } +// List otherSchemePOList = new LambdaQueryChainWrapper<>(siArchivesOtherMapper) +// .eq(InsuranceArchivesOtherSchemePO::getTenantKey) +// .eq(InsuranceArchivesOtherSchemePO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()) +// .in(InsuranceArchivesOtherSchemePO::getPaymentOrganization, ids) +// .list(); +// if (CollectionUtils.isNotEmpty(otherSchemePOList)) { +// return Boolean.TRUE; +// } + + // 被外部人员引用 +// List extEmployeeList = extEmployeeService.listAll(tenantKey); +// List extTaxAgentIds = extEmployeeList.stream().map(ExtEmployeePO::getTaxAgentId).distinct().collect(Collectors.toList()); +// if (CollectionUtils.isNotEmpty(extTaxAgentIds)) { +// return ids.stream().anyMatch(e -> extTaxAgentIds.stream().anyMatch(f -> f.equals(e))); +// } + + // 被累计专项附加扣除引用 + List addUpDeductionList = getAddUpDeductionMapper().listSome(AddUpDeduction.builder().taxAgentIds(ids).build()); + if (CollectionUtils.isNotEmpty(addUpDeductionList)) { + return Boolean.TRUE; + } + // 被其他免税扣除引用 + List otherDeductionList = getOtherDeductionMapper().listSome(OtherDeductionPO.builder().taxAgentIds(ids).build()); + if (CollectionUtils.isNotEmpty(otherDeductionList)) { + return Boolean.TRUE; + } + // 被往期累计情况引用 + List addUpSituationList = getAddUpSituationMapper().listSome(AddUpSituation.builder().taxAgentIds(ids).build()); + if (CollectionUtils.isNotEmpty(addUpSituationList)) { + return Boolean.TRUE; + } + + return Boolean.FALSE; + } + + @Override + public List> selectList() { + List taxAgents = getTaxAgentMapper().listAll(); + taxAgents = handleForDevolution(taxAgents, (long) user.getUID()); + return taxAgents.stream().map(m -> { + Map map = new HashMap<>(2); + map.put("id", String.valueOf(m.getId())); + map.put("content", m.getName()); + return map; + }).collect(Collectors.toList()); + } + + /** + * 分权处理 + * + * @param taxAgents + * @param currentEmployeeId + * @return + */ + private List handleForDevolution(List taxAgents, Long currentEmployeeId) { + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + if (!isOpenDevolution || isChief(currentEmployeeId)) { + return taxAgents; + } + List taxAgentIds = taxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + List enableTaxAgentIds = Lists.newArrayList(); + // 1.判断自己是否是管理员, 如果是管理员,就是能够查看所属个税扣缴义务人 + List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIdsAndEmployeeId(taxAgentIds, currentEmployeeId); + // 是管理员的列表 + List adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList()); + + enableTaxAgentIds.addAll(adminTaxAgentIds); + // 2.根据作为非管理员查找自己作为分管理员的个税扣缴义务人id +// List noAdminTaxAgentIds = taxAgents.stream() +// .map(TaxAgentPO::getId) +// .filter(id -> !adminTaxAgentIds.contains(id)).collect(Collectors.toList()); +// if (CollectionUtils.isNotEmpty(noAdminTaxAgentIds)) { +// List taxAgentSubAdmins = taxAgentSubAdminService.listByTaxAgentIdsAndEmployeeId(noAdminTaxAgentIds, currentEmployeeId); +// List sunAdminTaxAgentIds = taxAgentSubAdmins.stream().map(TaxAgentSubAdminPO::getTaxAgentId).collect(Collectors.toList()); +// enableTaxAgentIds.addAll(sunAdminTaxAgentIds); +// } + return taxAgents.stream().filter(f -> enableTaxAgentIds.contains(f.getId())).collect(Collectors.toList()); + } + + @Override + public Boolean isOpenDevolution() { + return getTaxAgentBaseService(user).isOpenDevolution(); + } + + @Override + public List listTaxAgentAndEmployeeTree(Long employeeId) { + return listTaxAgentAndEmployeeTree(null, employeeId); + } + + @Override + public List listTaxAgentAndEmployee(Long employeeId) { + return listTaxAgentAndEmployee(null, employeeId); + } + + @Override + public List listTaxAgentAndEmployeeTree(SalaryEmployeeStatusEnum employeeStatus, Long employeeId) { + List taxAgentManageRangeEmployeeList = Lists.newArrayList(); + // 所有个税扣缴义务人 + List allTaxAgents = listAll(); + if (CollectionUtils.isEmpty(allTaxAgents)) { + return taxAgentManageRangeEmployeeList; + } + + List taxAgentIds = allTaxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + List allEmployees = getTaxAgentMapper().listEmployee(); + if (employeeStatus != null) { + List personnelStatusList; + // 查询人员状态 + if (employeeStatus.equals(SalaryEmployeeStatusEnum.NORMAL)) { + allEmployees = allEmployees.stream().filter(f -> UserStatusEnum.getNormalStatus().contains(f.getStatus())).collect(Collectors.toList()); + } else if (employeeStatus.equals(SalaryEmployeeStatusEnum.UNAVAILABLE)) { + allEmployees = allEmployees.stream().filter(f -> UserStatusEnum.getUnavailableStatus().contains(f.getStatus())).collect(Collectors.toList()); + } + } + + // 是否开启分权 + if (!isOpenDevolution() || isChief(employeeId)) { + return getTaxAgentEmp(allTaxAgents, taxAgentIds, allEmployees); + } + + // 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据 + List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIdsAndEmployeeId(taxAgentIds, (long) user.getUID()); + // 是管理员的列表 + List adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(adminTaxAgentIds)) { + taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, adminTaxAgentIds, allEmployees)); + } + // 2.根据作为非管理员查找自己作为分管理员, 对应的管理范围人员 + List noAdminTaxAgentIds = allTaxAgents.stream() + .map(TaxAgentPO::getId) + .filter(id -> !adminTaxAgentIds.contains(id)).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(noAdminTaxAgentIds)) { +// taxAgentManageRangeEmployeeList.addAll(getTaxAgentSubAdminEmp(allTaxAgents, noAdminTaxAgentIds, allEmployees)); + } + + return taxAgentManageRangeEmployeeList; + } + + /** + * 获取分管理员的关联人员 + * + * @param allTaxAgents + * @param noAdminTaxAgentIds + * @param allEmployees + * @return + */ + private List getTaxAgentSubAdminEmp(List allTaxAgents, List noAdminTaxAgentIds, List allEmployees) { + List taxAgentManageRangeEmployeeList = Lists.newArrayList(); + List taxAgentEmps = taxAgentSubAdminEmpService.listByTaxAgentIds(noAdminTaxAgentIds); + + taxAgentEmps = taxAgentEmps.stream().filter(f -> allEmployees.stream().anyMatch(e -> e.getEmployeeId().equals(f.getEmployeeId()))).collect(Collectors.toList()); + + List finalTaxAgentEmps = taxAgentEmps; + noAdminTaxAgentIds.forEach(e -> { + Optional optionalTaxAgent = allTaxAgents.stream().filter(t -> t.getId().equals(e)).findFirst(); + String taxAgentName = (optionalTaxAgent.isPresent() ? optionalTaxAgent.get().getName() : ""); + List taxAgentEmployees = finalTaxAgentEmps.stream().filter(f -> f.getTaxAgentId().equals(e)).map(m -> { + TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee taxAgentEmployee = new TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee(); + taxAgentEmployee.setEmployeeId(m.getEmployeeId()); + taxAgentEmployee.setUsername(m.getEmployeeName()); + return taxAgentEmployee; + }).collect(Collectors.toList()); + taxAgentManageRangeEmployeeList.add( + TaxAgentManageRangeEmployeeDTO.builder() + .taxAgentId(e) + .taxAgentName(taxAgentName) + .employeeList(taxAgentEmployees) + .build() + ); + }); + return taxAgentManageRangeEmployeeList; + } + + /** + * 获取个税口角义务人的关联人员 + * + * @param allTaxAgents + * @param taxAgentIds + * @return + */ + private List getTaxAgentEmp(List allTaxAgents, List taxAgentIds, List allEmployees) { + List taxAgentManageRangeEmployeeList = Lists.newArrayList(); + List taxAgentEmps = getTaxAgentEmpService(user).listByTaxAgentIds(taxAgentIds); + + taxAgentEmps = taxAgentEmps.stream().filter(f -> allEmployees.stream().anyMatch(e -> e.getEmployeeId().equals(f.getEmployeeId()))).collect(Collectors.toList()); + + List finalTaxAgentEmps = taxAgentEmps; + taxAgentIds.forEach(e -> { + Optional optionalTaxAgent = allTaxAgents.stream().filter(t -> t.getId().equals(e)).findFirst(); + String taxAgentName = (optionalTaxAgent.isPresent() ? optionalTaxAgent.get().getName() : ""); + List taxAgentEmployees = finalTaxAgentEmps.stream().filter(f -> f.getTaxAgentId().equals(e)).map(m -> { + TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee taxAgentEmployee = new TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee(); + taxAgentEmployee.setEmployeeId(m.getEmployeeId()); + taxAgentEmployee.setUsername(m.getEmployeeName()); + return taxAgentEmployee; + }).collect(Collectors.toList()); + taxAgentManageRangeEmployeeList.add( + TaxAgentManageRangeEmployeeDTO.builder() + .taxAgentId(e) + .taxAgentName(taxAgentName) + .employeeList(taxAgentEmployees) + .build() + ); + }); + return taxAgentManageRangeEmployeeList; + } + + @Override + public List listTaxAgentAndEmployee(SalaryEmployeeStatusEnum employeeStatus, Long employeeId) { + List taxAgentEmployeeList = Lists.newArrayList(); + + List taxAgentManageRangeEmployeeList = listTaxAgentAndEmployeeTree(employeeStatus, employeeId); + taxAgentManageRangeEmployeeList.forEach(m -> { + List employeeList = m.getEmployeeList(); + if (CollectionUtils.isEmpty(employeeList)) { + taxAgentEmployeeList.add(TaxAgentEmployeeDTO.builder() + .taxAgentId(m.getTaxAgentId()) + .taxAgentName(m.getTaxAgentName()) + .employeeId(null) + .username(null) + .build()); + } else { + employeeList.forEach(f -> taxAgentEmployeeList.add(TaxAgentEmployeeDTO.builder() + .taxAgentId(m.getTaxAgentId()) + .taxAgentName(m.getTaxAgentName()) + .employeeId(f.getEmployeeId()) + .username(f.getUsername()) + .build())); + } + }); + + return taxAgentEmployeeList; + } + + +} diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index f023a38af..f670cfd9b 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -21,7 +21,7 @@ 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.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -63,7 +63,7 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration } po.setSalaryMonths(localDateRange); // 查询个税申报表 - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List taxDeclarationPOS = getTaxDeclarationMapper().listSome(po); page.setList(taxDeclarationPOS); diff --git a/src/com/engine/salary/util/aes/AESUtils.java b/src/com/engine/salary/util/aes/AESUtils.java new file mode 100644 index 000000000..f36ddc001 --- /dev/null +++ b/src/com/engine/salary/util/aes/AESUtils.java @@ -0,0 +1,198 @@ +package com.engine.salary.util.aes; + +import com.weaver.formmodel.util.StringHelper; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.StringUtils; +import sun.misc.BASE64Decoder; +import weaver.general.Util; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.spec.SecretKeySpec; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; + + +public class AESUtils { + + /** + * 密钥 + */ + public static String KEY = "123"; + + /** + * 算法 + */ + private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding"; + + public static void main(String[] args) throws Exception { + String content = " {&} bt1|17379|1|1|1=";//啊啊 + //System.out.println("加密前:" + content); + + String encrypt = aesEncrypt(content); + //System.out.println("加密后:" + encrypt); + + String decrypt = aesDecrypt(encrypt); + //System.out.println("解密后===>" + decrypt+"<==="); + } + + /** + * aes解密 + * @param encrypt 内容 + * @return + * @throws Exception + */ + public static String aesDecrypt(String encrypt) throws Exception { + if(StringHelper.isEmpty(encrypt)){ + return ""; + } + + encrypt = encrypt.replace("_ADD_","+"); + encrypt = encrypt.replace("_EQU_","="); + encrypt = encrypt.replace("_SEP_","/"); + return aesDecrypt(encrypt, KEY); + } + + /** + * aes加密 + * @param content + * @return + * @throws Exception + */ + public static String aesEncrypt(String content) throws Exception { + if(StringHelper.isEmpty(content)){ + return ""; + } + + String str = aesEncrypt(content, KEY); + str = str.replace("+", "_ADD_"); + str = str.replace("=", "_EQU_"); + str = str.replace("/", "_SEP_"); + return str; + } + + /** + * 将byte[]转为各种进制的字符串 + * @param bytes byte[] + * @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制 + * @return 转换后的字符串 + */ + public static String binary(byte[] bytes, int radix){ + return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数 + } + + /** + * base 64 encode + * @param bytes 待编码的byte[] + * @return 编码后的base 64 code + */ + public static String base64Encode(byte[] bytes){ + byte[] b = Base64.encodeBase64(bytes); + String str = ""; + try { + str = new String(b,"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return str; + } + + /** + * base 64 decode + * @param base64Code 待解码的base 64 code + * @return 解码后的byte[] + * @throws Exception + */ + public static byte[] base64Decode(String base64Code) throws Exception{ + return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code); + } + + + /** + * 将base64_编码解密 + * @param s + * @return + */ + public static String base64DecodeForMultilang(String s) { + if (s == null) { + return s; + } + if(Util.isEnableMultiLang()){ + try { + BASE64Decoder base64Decoder = new BASE64Decoder(); + return new String(base64Decoder.decodeBuffer(s.replaceAll("base64_", "")),"utf-8"); + } catch (Exception e) { + e.printStackTrace(); + return s; + } + }else{ + return s; + } + + } + + /** + * AES加密 + * @param content 待加密的内容 + * @param encryptKey 加密密钥 + * @return 加密后的byte[] + * @throws Exception + */ + public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception { + KeyGenerator kgen = KeyGenerator.getInstance("AES"); + kgen.init(128); + Cipher cipher = Cipher.getInstance(ALGORITHMSTR); + cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES")); + + return cipher.doFinal(content.getBytes("utf-8")); + } + + + /** + * AES加密为base 64 code + * @param content 待加密的内容 + * @param encryptKey 加密密钥 + * @return 加密后的base 64 code + * @throws Exception + */ + public static String aesEncrypt(String content, String encryptKey) throws Exception { + if(StringHelper.isEmpty(content)){ + return ""; + } + return base64Encode(aesEncryptToBytes(content, encryptKey)); + } + + /** + * AES解密 + * @param encryptBytes 待解密的byte[] + * @param decryptKey 解密密钥 + * @return 解密后的String + * @throws Exception + */ + public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception { + KeyGenerator kgen = KeyGenerator.getInstance("AES"); + kgen.init(128); + + Cipher cipher = Cipher.getInstance(ALGORITHMSTR); + cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES")); + byte[] decryptBytes = cipher.doFinal(encryptBytes); + + return new String(decryptBytes,"UTF-8"); + } + + + /** + * 将base 64 code AES解密 + * @param encryptStr 待解密的base 64 code + * @param decryptKey 解密密钥 + * @return 解密后的string + * @throws Exception + */ + public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception { + if(StringHelper.isEmpty(encryptStr)){ + return ""; + } + return StringHelper.isEmpty(encryptStr) ? "" : aesDecryptByBytes(base64Decode(encryptStr), decryptKey); + } + +} diff --git a/src/com/engine/salary/util/page/PageUtil.java b/src/com/engine/salary/util/page/SalaryPageUtil.java similarity index 66% rename from src/com/engine/salary/util/page/PageUtil.java rename to src/com/engine/salary/util/page/SalaryPageUtil.java index ab4aa5314..bd8ab155f 100644 --- a/src/com/engine/salary/util/page/PageUtil.java +++ b/src/com/engine/salary/util/page/SalaryPageUtil.java @@ -1,6 +1,5 @@ package com.engine.salary.util.page; -import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import org.apache.commons.collections4.CollectionUtils; @@ -8,7 +7,7 @@ import java.util.Collections; import java.util.List; -public class PageUtil { +public class SalaryPageUtil { public static void start(Integer pageNum, Integer pageSize) { pageNum = pageNum == null || pageNum <= 0 ? 1 : pageNum; @@ -17,10 +16,22 @@ public class PageUtil { } - public static Page buildPage(Integer pageNo, Integer pageSize) { + public static PageInfo buildPage(Integer pageNo, Integer pageSize) { pageNo = pageNo == null || pageNo <= 0 ? 1 : pageNo; pageSize = pageSize == null || pageSize <= 0 ? 10 : pageSize; - return new Page(pageNo, pageSize, true); + PageInfo pageInfo = new PageInfo<>(); + pageInfo.setPageNum(pageNo); + pageInfo.setPageSize(pageSize); + return pageInfo; + } + + public static PageInfo buildPage(Integer pageNo, Integer pageSize,Class clazz) { + pageNo = pageNo == null || pageNo <= 0 ? 1 : pageNo; + pageSize = pageSize == null || pageSize <= 0 ? 10 : pageSize; + PageInfo pageInfo = new PageInfo<>(clazz); + pageInfo.setPageNum(pageNo); + pageInfo.setPageSize(pageSize); + return pageInfo; } /** diff --git a/src/com/engine/salary/web/AddUpDeductionController.java b/src/com/engine/salary/web/AddUpDeductionController.java index 6033cf609..b7a69f627 100644 --- a/src/com/engine/salary/web/AddUpDeductionController.java +++ b/src/com/engine/salary/web/AddUpDeductionController.java @@ -2,11 +2,13 @@ package com.engine.salary.web; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO; +import com.engine.salary.entity.datacollection.dto.AddUpDeductionRecordDTO; import com.engine.salary.entity.datacollection.param.AddUpDeductionImportParam; import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; -import com.engine.salary.service.AddUpDeductionService; -import com.engine.salary.service.impl.AddUpDeductionServiceImpl; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.wrapper.AddUpDeductionWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -39,8 +41,8 @@ import java.util.stream.Collectors; @Slf4j public class AddUpDeductionController { - private AddUpDeductionService getService(User user) { - return (AddUpDeductionService) ServiceUtil.getService(AddUpDeductionServiceImpl.class, user); + private AddUpDeductionWrapper getAddUpDeductionWrapper(User user) { + return ServiceUtil.getService(AddUpDeductionWrapper.class, user); } /** @@ -53,7 +55,7 @@ public class AddUpDeductionController { @Produces(MediaType.APPLICATION_JSON) public String getSearchCondition(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, Map>(user).run(getService(user)::getSearchCondition, ParamUtil.request2Map(request)); + return new ResponseResult, Map>(user).run(getAddUpDeductionWrapper(user)::getSearchCondition, ParamUtil.request2Map(request)); } @@ -62,9 +64,7 @@ public class AddUpDeductionController { @Produces(MediaType.APPLICATION_JSON) public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpDeductionQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); - map.put("queryParam", queryParam); - return new ResponseResult, Map>(user).run(getService(user)::list, map); + return new ResponseResult>(user).run(getAddUpDeductionWrapper(user)::list, queryParam); } @@ -75,7 +75,7 @@ public class AddUpDeductionController { try { User user = HrmUserVarify.getUser(request, response); AddUpDeductionQueryParam queryParam = buildParam(request); - XSSFWorkbook workbook = getService(user).downloadTemplate(queryParam); + XSSFWorkbook workbook = getAddUpDeductionWrapper(user).downloadTemplate(queryParam); String fileName = "累计专项附加扣除导入模板" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); @@ -112,10 +112,7 @@ public class AddUpDeductionController { AddUpDeductionQueryParam param = buildParam(request); - Map map = ParamUtil.request2Map(request); - map.put("addUpDeductionQueryParam", param); - - XSSFWorkbook workbook = getService(user).export(map); + XSSFWorkbook workbook = getAddUpDeductionWrapper(user).export(param); String fileName = "累计专项附加扣除" + LocalDate.now(); try { @@ -150,10 +147,7 @@ public class AddUpDeductionController { AddUpDeductionQueryParam param = buildParam(request); - Map map = ParamUtil.request2Map(request); - map.put("addUpDeductionQueryParam", param); - - XSSFWorkbook workbook = getService(user).exportDetail(map); + XSSFWorkbook workbook = getAddUpDeductionWrapper(user).exportDetail(param); String fileName = "累计专项附加扣除明细" + LocalDate.now(); try { @@ -252,9 +246,7 @@ public class AddUpDeductionController { @Produces(MediaType.APPLICATION_JSON) public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpDeductionImportParam importParam) { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); - map.put("importParam", importParam); - return new ResponseResult, Map>(user).run(getService(user)::preview, map); + return new ResponseResult>(user).run(getAddUpDeductionWrapper(user)::preview, importParam); } @POST @@ -262,9 +254,7 @@ public class AddUpDeductionController { @Produces(MediaType.APPLICATION_JSON) public String importAddUpDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpDeductionImportParam importParam) { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); - map.put("importParam", importParam); - return new ResponseResult, Map>(user).run(getService(user)::importAddUpDeduction, map); + return new ResponseResult>(user).run(getAddUpDeductionWrapper(user)::importAddUpDeduction, importParam); } @POST @@ -272,9 +262,7 @@ public class AddUpDeductionController { @Produces(MediaType.APPLICATION_JSON) public String getDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpDeductionQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); - map.put("queryParam", queryParam); - return new ResponseResult, Map>(user).run(getService(user)::getDetailList, map); + return new ResponseResult>(user).run(getAddUpDeductionWrapper(user)::getDetailList, queryParam); } diff --git a/src/com/engine/salary/web/AddUpSituationController.java b/src/com/engine/salary/web/AddUpSituationController.java index f4ace7e7e..29ce65f6f 100644 --- a/src/com/engine/salary/web/AddUpSituationController.java +++ b/src/com/engine/salary/web/AddUpSituationController.java @@ -2,11 +2,13 @@ package com.engine.salary.web; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.dto.AddUpSituationDTO; +import com.engine.salary.entity.datacollection.dto.AddUpSituationRecordDTO; import com.engine.salary.entity.datacollection.param.AddUpSituationImportParam; import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; -import com.engine.salary.service.AddUpSituationService; -import com.engine.salary.service.impl.AddUpSituationServiceImpl; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.wrapper.AddUpSituationWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -38,9 +40,8 @@ import java.util.stream.Collectors; @Slf4j public class AddUpSituationController { - - private AddUpSituationService getService(User user) { - return (AddUpSituationService) ServiceUtil.getService(AddUpSituationServiceImpl.class, user); + private AddUpSituationWrapper getAddUpSituationWrapper(User user) { + return ServiceUtil.getService(AddUpSituationWrapper.class, user); } /** @@ -53,7 +54,7 @@ public class AddUpSituationController { @Produces(MediaType.APPLICATION_JSON) public String getSearchCondition(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, Map>(user).run(getService(user)::getSearchCondition, ParamUtil.request2Map(request)); + return new ResponseResult, Map>(user).run(getAddUpSituationWrapper(user)::getSearchCondition); } @@ -62,9 +63,7 @@ public class AddUpSituationController { @Produces(MediaType.APPLICATION_JSON) public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpSituationQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); - map.put("queryParam", queryParam); - return new ResponseResult, Map>(user).run(getService(user)::list, map); + return new ResponseResult>(user).run(getAddUpSituationWrapper(user)::list, queryParam); } @POST @@ -72,9 +71,7 @@ public class AddUpSituationController { @Produces(MediaType.APPLICATION_JSON) public String getDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpSituationQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); - map.put("queryParam", queryParam); - return new ResponseResult, Map>(user).run(getService(user)::getDetailList, map); + return new ResponseResult>(user).run(getAddUpSituationWrapper(user)::getDetailList, queryParam); } @@ -87,7 +84,7 @@ public class AddUpSituationController { AddUpSituationQueryParam queryParam = buildParam(request); - XSSFWorkbook workbook = getService(user).downloadTemplate(queryParam); + XSSFWorkbook workbook = getAddUpSituationWrapper(user).downloadTemplate(queryParam); String fileName = "往期累计情况导入模板" + LocalDate.now(); @@ -124,11 +121,9 @@ public class AddUpSituationController { try { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); AddUpSituationQueryParam queryParam = buildParam(request); - map.put("queryParam", queryParam); - XSSFWorkbook workbook = getService(user).export(map); + XSSFWorkbook workbook = getAddUpSituationWrapper(user).export(queryParam); String fileName = "累计情况" + LocalDate.now(); try { @@ -166,11 +161,9 @@ public class AddUpSituationController { try { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); AddUpSituationQueryParam queryParam = buildParam(request); - map.put("queryParam", queryParam); - XSSFWorkbook workbook = getService(user).exportDetail(map); + XSSFWorkbook workbook = getAddUpSituationWrapper(user).exportDetail(queryParam); String fileName = "累计情况明细" + LocalDate.now(); try { @@ -273,9 +266,7 @@ public class AddUpSituationController { @Produces(MediaType.APPLICATION_JSON) public String importAddUpSituation(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpSituationImportParam importParam) { User user = HrmUserVarify.getUser(request, response); - Map map = ParamUtil.request2Map(request); - map.put("importParam", importParam); - return new ResponseResult, Map>(user).run(getService(user)::importAddUpSituation, map); + return new ResponseResult>(user).run(getAddUpSituationWrapper(user)::importAddUpSituation, importParam); } @POST @@ -285,7 +276,7 @@ public class AddUpSituationController { User user = HrmUserVarify.getUser(request, response); Map map = ParamUtil.request2Map(request); map.put("importParam", importParam); - return new ResponseResult, Map>(user).run(getService(user)::preview, map); + return new ResponseResult>(user).run(getAddUpSituationWrapper(user)::preview, importParam); } diff --git a/src/com/engine/salary/web/AttendQuoteController.java b/src/com/engine/salary/web/AttendQuoteController.java index 52a5b2232..3a6be0014 100644 --- a/src/com/engine/salary/web/AttendQuoteController.java +++ b/src/com/engine/salary/web/AttendQuoteController.java @@ -77,6 +77,21 @@ public class AttendQuoteController { // } + /** + * 检查是否可以操作 + * 说明:已经核算过的不能再操作 + * + * @param checkOperationParam + * @return + */ + @POST + @Path("/checkOperation") + @Produces(MediaType.APPLICATION_JSON) + public String checkOperation(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AttendQuoteCheckOperationParam checkOperationParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getAttendQuoteWrapper(user)::checkOperation, checkOperationParam); + } + /** * 获取薪资周期和考勤周期 * diff --git a/src/com/engine/salary/web/TaxAgentController.java b/src/com/engine/salary/web/TaxAgentController.java index 9597d4e15..66c114235 100644 --- a/src/com/engine/salary/web/TaxAgentController.java +++ b/src/com/engine/salary/web/TaxAgentController.java @@ -1,12 +1,16 @@ package com.engine.salary.web; -import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; -import com.engine.salary.service.TaxAgentService; -import com.engine.salary.service.impl.TaxAgentServiceImpl; +import com.engine.salary.entity.taxagent.dto.*; +import com.engine.salary.entity.taxagent.param.*; +import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; +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 weaver.general.BaseBean; +import org.springframework.web.bind.annotation.RequestParam; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -19,74 +23,358 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Map; public class TaxAgentController { - private BaseBean logger = new BaseBean(); - - private TaxAgentService getService(User user) { - return (TaxAgentService) ServiceUtil.getService(TaxAgentServiceImpl.class, user); + private TaxAgentBaseWrapper getTaxAgentBaseWrapper(User user) { + return ServiceUtil.getService(TaxAgentBaseWrapper.class, user); } - //个税扣缴义务人列表 + private TaxAgentSubAdminWrapper getTaxAgentSubAdminWrapper(User user) { + return ServiceUtil.getService(TaxAgentSubAdminWrapper.class, user); + } + + private TaxAgentWrapper getTaxAgentWrapper(User user) { + return ServiceUtil.getService(TaxAgentWrapper.class, user); + } + + /** + * 是否是薪酬模块总管理员 + */ @GET + @Path("/isChief") + @Produces(MediaType.APPLICATION_JSON) + public String isChief(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::isChief, (long) user.getUID()); + } + + /** + * 权限信息 + * @param request + * @param response + * @return + */ + @GET + @Path("/permission") + @Produces(MediaType.APPLICATION_JSON) + public String permission(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxAgentWrapper(user)::permission, (long) user.getUID()); + } + + /* ****** 基础信息 start ***********************************************************************************************/ + + /** + * 获取个税扣缴义务人基础信息表单 + * + * @return + */ + @GET + @Path("/base/getForm") + @Produces(MediaType.APPLICATION_JSON) + public String getBaseFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentBaseWrapper(user)::getFrom); + } + + /** + * 保存个税扣缴义务人基础信息 + * + * @param saveBaseParam + * @return + */ + @POST + @Path("/base/save") + @Produces(MediaType.APPLICATION_JSON) + public String saveBase(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveBaseParam saveBaseParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentBaseWrapper(user)::save, saveBaseParam); + } + /* ******* 基础信息 end ***********************************************************************************************/ + + /* ******* 个税扣缴义务人 start ***********************************************************************************************/ + + /** + * 个税扣缴义务人列表 + * + * @param queryParam + * @return + */ + @POST @Path("/list") @Produces(MediaType.APPLICATION_JSON) - public String list(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, Map>(user).run(getService(user)::list,ParamUtil.request2Map(request)); + return new ResponseResult>(user).run(getTaxAgentWrapper(user)::list, queryParam); } - //获取个税扣缴义务人表单 + //查询个税扣缴义务人下面的代缴机构") + @GET + @Path("/paymentAgency/list") + @Produces(MediaType.APPLICATION_JSON) + public String paymentAgencyList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + TaxAgentQueryParam queryParam = new TaxAgentQueryParam(); + queryParam.setIds(Collections.singleton(id)); + return new ResponseResult>>(user).run(getTaxAgentWrapper(user)::paymentAgencyList, queryParam); + } + + //保存个税扣缴义务人下的代缴机构") + @POST + @Path("/paymentAgency/save") + @Produces(MediaType.APPLICATION_JSON) + public String paymentAgencySave(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::paymentAgencySave, saveParam); + } + + + /** + * 获取个税扣缴义务人表单 + * + * @param id + * @return + */ @GET @Path("/getForm") @Produces(MediaType.APPLICATION_JSON) - public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public String getFrom(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, Map>(user).run(getService(user)::getForm,ParamUtil.request2Map(request)); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::getFrom, id); } - //新建个税扣缴义务人 + /** + * 新建个税扣缴义务人 + * + * @param saveParam + * @return + */ @POST @Path("/save") @Produces(MediaType.APPLICATION_JSON) - public String getFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public String save(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, Map>(user).run(getService(user)::save,ParamUtil.request2Map(request)); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::save, saveParam); } /** * 编辑个税扣缴义务人 + * + * @param saveParam + * @return */ @POST @Path("/update") @Produces(MediaType.APPLICATION_JSON) - public String update(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public String update(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, Map>(user).run(getService(user)::update,ParamUtil.request2Map(request)); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::update, saveParam); } /** - * 编辑个税扣缴义务人 + * 更换管理员校验 + * + * @param checkParam + * @return + */ + @POST + @Path("/adminChangeCheck") + @Produces(MediaType.APPLICATION_JSON) + public String adminChangeCheck(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentAdminChangeCheckParam checkParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::adminChangeCheck, checkParam); + } + + /** + * 删除个税扣缴义务人 + * + * @param ids + * @return */ @POST @Path("/delete") @Produces(MediaType.APPLICATION_JSON) public String delete(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, String>(user).run(getService(user)::delete, ids); + return new ResponseResult, String>(user).run(getTaxAgentWrapper(user)::delete, ids); + } + + /** + * 人员范围列表 + * + * @param queryParam + * @return + */ + @POST + @Path("/range/listInclude") + @Produces(MediaType.APPLICATION_JSON) + public String rangeListInclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxAgentWrapper(user)::listRangeInclude, queryParam); + } + + /** + * 分管理员管理范围排除列表 + * + * @param queryParam + * @return + */ + @POST + @Path("/range/listExclude") + @Produces(MediaType.APPLICATION_JSON) + public String rangeListExclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxAgentWrapper(user)::listRangeExclude, queryParam); + } + + //获取人员范围表单") + @POST + @Path("/range/getForm") + @Produces(MediaType.APPLICATION_JSON) + public String getRangeFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::getRangeFrom); + } + + //保存人员范围 + @POST + @Path("/range/save") + @Produces(MediaType.APPLICATION_JSON) + public String saveRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::saveRange, saveParam); + } + + //删除人员范围 + @POST + @Path("/range/delete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getTaxAgentWrapper(user)::deleteRange, ids); } /** * 个税扣缴义务人下拉列表 + * + * @return */ @GET @Path("/selectList") @Produces(MediaType.APPLICATION_JSON) public String selectList(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, Map>(user).run(getService(user)::selectList,ParamUtil.request2Map(request)); + return new ResponseResult, List>>(user).run(getTaxAgentWrapper(user)::selectList); + } + /* ******* 个税扣缴义务人 end ***********************************************************************************************/ + + /* ******* 分管理员 start ***********************************************************************************************/ + + /** + * 分管理员列表 + * + * @param queryParam + * @return + */ + @POST + @Path("/subAdmin/list") + @Produces(MediaType.APPLICATION_JSON) + public String subAdminList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxAgentSubAdminWrapper(user)::list, queryParam); } + /** + * 获取分管理员基础设置表单 + * + * @return + */ + @POST + @Path("/subAdmin/getBaseForm") + @Produces(MediaType.APPLICATION_JSON) + public String getSubAdminBaseFrom(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminBaseFormParam baseFormParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::getBaseFrom, baseFormParam); + } + + /** + * 分管理员基础设置保存 + * + * @param saveParam + * @return + */ + @POST + @Path("/subAdmin/saveBase") + @Produces(MediaType.APPLICATION_JSON) + public String saveSubAdminBase(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminBaseSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::saveBase, saveParam); + } + + /** + * 删除个税扣缴义务人分管理员 + * + * @param ids + * @return + */ + @POST + @Path("/subAdmin/delete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteSubAdmin(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getTaxAgentSubAdminWrapper(user)::delete, ids); + } + + //分管理员的管理范围列表 + @POST + @Path("/subAdmin/range/listInclude") + @Produces(MediaType.APPLICATION_JSON) + public String subAdminRangeListInclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminRangeQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxAgentSubAdminWrapper(user)::listRangeInclude, queryParam); + } + + //分管理员的管理范围排除列表 + @POST + @Path("/subAdmin/range/listExclude") + @Produces(MediaType.APPLICATION_JSON) + public String subAdminRangeListExclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminRangeQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxAgentSubAdminWrapper(user)::listRangeExclude, queryParam); + } + + //获取分管理员的管理范围表单 + @POST + @Path("/subAdmin/range/getForm") + @Produces(MediaType.APPLICATION_JSON) + public String getSubAdminRangeFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::getRangeFrom); + } + + //保存分管理员的管理范围 + @POST + @Path("/subAdmin/range/save") + @Produces(MediaType.APPLICATION_JSON) + public String saveSubAdminRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminRangeSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::saveRange, saveParam); + } + + //删除分管理员的管理范围 + @POST + @Path("/subAdmin/range/delete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteSubAdminRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getTaxAgentSubAdminWrapper(user)::deleteRange, ids); + } + + /******** 分管理员 end ***********************************************************************************************/ + + } diff --git a/src/com/engine/salary/web/TaxRateController.java b/src/com/engine/salary/web/TaxRateController.java index 242e46dda..b452332b4 100644 --- a/src/com/engine/salary/web/TaxRateController.java +++ b/src/com/engine/salary/web/TaxRateController.java @@ -89,6 +89,4 @@ public class TaxRateController { return new ResponseResult< Map, Map>(user).run(getService(user)::delete,map); } - - } diff --git a/src/com/engine/salary/wrapper/AddUpDeductionWrapper.java b/src/com/engine/salary/wrapper/AddUpDeductionWrapper.java new file mode 100644 index 000000000..a67f3257f --- /dev/null +++ b/src/com/engine/salary/wrapper/AddUpDeductionWrapper.java @@ -0,0 +1,155 @@ +package com.engine.salary.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.datacollection.AddUpDeduction; +import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO; +import com.engine.salary.entity.datacollection.dto.AddUpDeductionRecordDTO; +import com.engine.salary.entity.datacollection.param.AddUpDeductionImportParam; +import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.AddUpDeductionService; +import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.service.TaxAgentV2Service; +import com.engine.salary.service.impl.AddUpDeductionServiceImpl; +import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; +import com.engine.salary.service.impl.TaxAgentV2ServiceImpl; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.page.PageInfo; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.general.Util; +import weaver.hrm.User; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 累计专项附加扣除 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class AddUpDeductionWrapper extends Service { + + private AddUpDeductionService getAddUpDeductionService(User user) { + return ServiceUtil.getService(AddUpDeductionServiceImpl.class, user); + } + + private TaxAgentV2Service getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentV2ServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + + /** + * 数据采集-累计专项附加扣除列表(分页) + * + * @param queryParam + * @return + */ + public PageInfo list(AddUpDeductionQueryParam queryParam) { + + //申报月份 + List declareMonth = queryParam.getDeclareMonth(); + if (CollectionUtils.isNotEmpty(declareMonth)) { + queryParam.setDeclareMonth(declareMonth.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); + } + + PageInfo pageInfo = getAddUpDeductionService(user).listPage(queryParam); + List list = pageInfo.getList(); + // 人员信息赋值 + list.forEach(m -> { + // 身份证号 + m.setIdNo(Util.null2String(m.getIdNo())); + }); + + return pageInfo; + } + + /** + * 数据采集-累计专项附加扣除详情列表(分页) + * + * @param queryParam + * @return + */ + public PageInfo getDetailList(AddUpDeductionQueryParam queryParam) { + Long id = queryParam.getAccumulatedSpecialAdditionalDeductionId(); + AddUpDeduction po = getAddUpDeductionService(user).getById(id); + if (po == null) { + throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(100338, "累计专项附加扣除不存在") + "[id:%s]", id)); + } + + //申报月份 + List declareMonth = queryParam.getDeclareMonth(); + if (CollectionUtils.isNotEmpty(declareMonth)) { + queryParam.setDeclareMonth(declareMonth.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); + } + queryParam.setEmployeeId(po.getEmployeeId()); + + PageInfo page = getAddUpDeductionService(user).recordListPage(queryParam); + + return page; + } + + + /** + * 导出-累计专项附加扣除列表 + * + * @param queryParam + * @return + */ + public XSSFWorkbook export(AddUpDeductionQueryParam queryParam) { + boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + return getAddUpDeductionService(user).export(isChief, queryParam); + } + + /** + * 导出-累计专项附加扣除详情列表 + * + * @param queryParam + * @return + */ + public XSSFWorkbook exportDetail(AddUpDeductionQueryParam queryParam) { + Long id = queryParam.getAccumulatedSpecialAdditionalDeductionId(); + AddUpDeduction po = getAddUpDeductionService(user).getById(id); + if (po == null) { + throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(100338, "累计专项附加扣除不存在") + "[id:%s]", id)); + } + boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + + return getAddUpDeductionService(user).exportDetail(po.getEmployeeId(), isChief, queryParam); + } + + /** + * 下载导入模板 + * + * @param queryParam + * @return + */ + public XSSFWorkbook downloadTemplate(AddUpDeductionQueryParam queryParam) { + // 构建异步导出参数 + boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + return getAddUpDeductionService(user).downloadTemplate(isChief, queryParam); + } + + + public Map importAddUpDeduction(AddUpDeductionImportParam importParam) { + return getAddUpDeductionService(user).importAddUpDeduction(importParam); + } + + + public Map preview(AddUpDeductionImportParam importParam) { + return getAddUpDeductionService(user).preview(importParam); + } + + public Map getSearchCondition(Map params) { + return getAddUpDeductionService(user).getSearchCondition(params); + } +} diff --git a/src/com/engine/salary/wrapper/AddUpSituationWrapper.java b/src/com/engine/salary/wrapper/AddUpSituationWrapper.java new file mode 100644 index 000000000..119616b59 --- /dev/null +++ b/src/com/engine/salary/wrapper/AddUpSituationWrapper.java @@ -0,0 +1,125 @@ +package com.engine.salary.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.datacollection.AddUpSituation; +import com.engine.salary.entity.datacollection.dto.AddUpSituationDTO; +import com.engine.salary.entity.datacollection.dto.AddUpSituationRecordDTO; +import com.engine.salary.entity.datacollection.param.AddUpSituationImportParam; +import com.engine.salary.entity.datacollection.param.AddUpSituationQueryParam; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.AddUpSituationService; +import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.service.TaxAgentV2Service; +import com.engine.salary.service.impl.AddUpSituationServiceImpl; +import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; +import com.engine.salary.service.impl.TaxAgentV2ServiceImpl; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.User; + +import java.util.Map; + +/** + * 往期累计情况 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class AddUpSituationWrapper extends Service { + + private AddUpSituationService getAddUpSituationService(User user) { + return ServiceUtil.getService(AddUpSituationServiceImpl.class, user); + } + private TaxAgentV2Service getTaxAgentV2Service(User user) { + return ServiceUtil.getService(TaxAgentV2ServiceImpl.class, user); + } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + /** + * 数据采集-累计情况列表的高级搜索 + * + * @return + */ + public Map getSearchCondition() { + return getAddUpSituationService(user).getSearchCondition(); + } + + /** + * 数据采集-累计情况列表(分页) + * + * @param queryParam + * @return + */ + public PageInfo list(AddUpSituationQueryParam queryParam) { +// queryParam.setTaxYearMonthDate(CollectionUtils.emptyIfNull(queryParam.getTaxYearMonth()).stream().map(e-> LocalDate.of(e.getYear(),e.getMonthValue(),1)).collect(Collectors.toList())); + + return getAddUpSituationService(user).listPage(queryParam); + } + + /** + * 数据采集-往期累计情况详情列表(分页) + * + * @param queryParam + * @return + */ + public PageInfo getDetailList(AddUpSituationQueryParam queryParam) { + Long id = queryParam.getAccumulatedSituationId(); + AddUpSituation po = getAddUpSituationService(user).getById(id); + if (po == null) { + throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(100352, "累计情况不存在") + "[id:%s]", id)); + } +// queryParam.setTaxYearMonthDate(CollectionUtils.emptyIfNull(queryParam.getTaxYearMonth()).stream().map(e -> LocalDate.of(e.getYear(), e.getMonthValue(), 1)).collect(Collectors.toList())); + queryParam.setEmployeeId(po.getEmployeeId()); + return getAddUpSituationService(user).recordListPage(queryParam); + } + + /** + * 导出-往期累计情况列表 + * + * @param queryParam + * @return + */ + public XSSFWorkbook export(AddUpSituationQueryParam queryParam) { + return getAddUpSituationService(user).export(queryParam); + } + + /** + * 导出详情列表 + * + * @param queryParam + * @return + */ + public XSSFWorkbook exportDetail(AddUpSituationQueryParam queryParam) { + Long id = queryParam.getAccumulatedSituationId(); + AddUpSituation po = getAddUpSituationService(user).getById(id); + if (po == null) { + throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(100352, "累计情况不存在") + "[id:%s]", id)); + } + return getAddUpSituationService(user).exportDetail(queryParam); + } + + /** + * 下载导入模板 + * + * @param queryParam + * @return + */ + public XSSFWorkbook downloadTemplate(AddUpSituationQueryParam queryParam) { + return getAddUpSituationService(user).downloadTemplate(queryParam); + } + + public Map preview(AddUpSituationImportParam importParam){ + return getAddUpSituationService(user).preview(importParam); + } + + public Map importAddUpSituation(AddUpSituationImportParam importParam){ + return getAddUpSituationService(user).importAddUpSituation(importParam); + } + +} diff --git a/src/com/engine/salary/wrapper/AttendQuoteWrapper.java b/src/com/engine/salary/wrapper/AttendQuoteWrapper.java index eb8ce81dd..dc596bb19 100644 --- a/src/com/engine/salary/wrapper/AttendQuoteWrapper.java +++ b/src/com/engine/salary/wrapper/AttendQuoteWrapper.java @@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.datacollection.dto.AttendQuoteListDTO; +import com.engine.salary.entity.datacollection.param.AttendQuoteCheckOperationParam; import com.engine.salary.entity.datacollection.param.AttendQuoteQueryParam; import com.engine.salary.entity.datacollection.param.QuerySalaryCycleAndAttendCycleParam; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; @@ -15,6 +16,7 @@ import com.engine.salary.service.impl.AttendQuoteServiceImpl; import com.engine.salary.service.impl.SalarySobServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.valid.ValidUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; @@ -101,12 +103,11 @@ public class AttendQuoteWrapper extends Service { * 检查是否可以操作 * * - * @param salaryYearMonth - * @param salarySobId * @return */ - public Boolean checkOperation(YearMonth salaryYearMonth, Long salarySobId) { - return getAttendQuoteService(user).checkOperation(salaryYearMonth, salarySobId); + public Boolean checkOperation(AttendQuoteCheckOperationParam checkOperationParam) { + ValidUtil.doValidator(checkOperationParam); + return getAttendQuoteService(user).checkOperation(checkOperationParam.getSalaryYearMonth(), checkOperationParam.getSalarySobId()); } /** diff --git a/src/com/engine/salary/wrapper/OtherDeductionWrapper.java b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java new file mode 100644 index 000000000..66d0d9696 --- /dev/null +++ b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java @@ -0,0 +1,214 @@ +//package com.engine.salary.wrapper; +// +//import com.engine.salary.service.OtherDeductionService; +//import com.engine.salary.service.SalaryEmployeeService; +//import com.weaver.common.authority.format.FormatManager; +//import com.weaver.common.component.search.WeaSearchCondition; +//import com.weaver.common.component.table.WeaTable; +//import com.weaver.common.component.table.page.Page; +//import com.weaver.datasecurity.interceptor.DSTenantKeyThreadVar; +//import com.weaver.framework.rpc.context.impl.TenantRpcContext; +//import com.weaver.hrm.salary.common.excel.ExcelImportParam; +//import com.weaver.hrm.salary.entity.datacollection.bo.DataCollectionBO; +//import com.weaver.hrm.salary.entity.datacollection.dto.OtherDeductionListDTO; +//import com.weaver.hrm.salary.entity.datacollection.dto.OtherDeductionRecordDTO; +//import com.weaver.hrm.salary.entity.datacollection.dto.OtherDeductionSearchConditionDTO; +//import com.weaver.hrm.salary.entity.datacollection.param.OtherDeductionQueryParam; +//import com.weaver.hrm.salary.entity.datacollection.po.OtherDeductionPO; +//import com.weaver.hrm.salary.exception.SalaryRunTimeException; +//import com.weaver.hrm.salary.service.TaxAgentService; +//import com.weaver.hrm.salary.util.SalaryFormatUtil; +//import com.weaver.hrm.salary.util.SalaryI18nUtil; +//import com.weaver.teams.domain.hr.SimpleUserInfo; +//import com.weaver.teams.security.context.TenantContext; +//import com.weaver.teams.security.context.UserContext; +//import org.apache.commons.collections4.CollectionUtils; +//import org.springframework.stereotype.Component; +// +//import java.time.LocalDate; +//import java.util.List; +//import java.util.Map; +//import java.util.stream.Collectors; +// +///** +// * @Description: 其他免税扣除 +// * @Author: wangxiangzhong +// * @Date: 2022/3/14 16:09 +// */ +//@Component +//public class OtherDeductionWrapper { +// private OtherDeductionService otherDeductionService; +// private TaxAgentService taxAgentService; +// private SalaryEmployeeService salaryEmployeeService; +// +// /** +// * 数据采集-其他免税扣除列表的高级搜索 +// * +// * @param currentEmployeeId +// * @param currentTenantKey +// * @return +// */ +// public WeaSearchCondition getSearchCondition(Long currentEmployeeId, String currentTenantKey) { +// WeaSearchCondition weaSearchCondition = SalaryFormatUtil.getInstance() +// .buildCondition(OtherDeductionSearchConditionDTO.class, new OtherDeductionSearchConditionDTO()); +// // 入职日期-添加范围 +// DataCollectionBO.addDatePickerRangeOtherParams(weaSearchCondition, "hiredate", currentEmployeeId, currentTenantKey); +// // 只保留常用条件 +// weaSearchCondition.setGroups(weaSearchCondition.getGroups().stream().filter(e-> "commonGroup".equals(e.getId())).collect(Collectors.toList())); +// +// return weaSearchCondition; +// } +// +// /** +// * 数据采集-其他免税扣除列表(分页) +// * +// * @param queryParam +// * @param currentEmployeeId +// * @param currentTenantKey +// * @return +// */ +// public WeaTable list(OtherDeductionQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) { +// queryParam.setDeclareMonthDate(CollectionUtils.emptyIfNull(queryParam.getDeclareMonth()).stream().map(e-> LocalDate.of(e.getYear(),e.getMonthValue(),1)).collect(Collectors.toList())); +// +// Page page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true); +// page = otherDeductionService.listPage(page, queryParam, currentEmployeeId, currentTenantKey); +// +// List list = page.getRecords(); +// +// List simpleUserInfos = salaryEmployeeService.listByEmployeeIds(list.stream().map(OtherDeductionListDTO::getEmployeeId).collect(Collectors.toList()), currentTenantKey); +// // 人员信息赋值 +// list.forEach(m->{ +// // 身份证号 +// m.setIdNo(DataCollectionBO.getIdNo(m.getEmployeeId(), simpleUserInfos)); +// }); +// WeaTable weaTable = FormatManager.getInstance().genTable(OtherDeductionListDTO.class, page); +// +// // 在外展示操作按钮 +// weaTable.getOperates().get(0).setOuter(Boolean.TRUE); +// weaTable.setModule("hrmsalary"); +// +// return weaTable; +// } +// +// /** +// * 数据采集-其他免税扣除详情列表(分页) +// * +// * @param queryParam +// * @param currentEmployeeId +// * @param currentTenantKey +// * @return +// */ +// public WeaTable getDetailList(OtherDeductionQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) { +// Long id = queryParam.getOtherTaxExemptDeductionId(); +// +// OtherDeductionPO po = otherDeductionService.getById(id, currentTenantKey); +// if (po == null) { +// throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 100415, "其他免税扣除不存在")+"[id:%s]", id)); +// } +// queryParam.setDeclareMonthDate(CollectionUtils.emptyIfNull(queryParam.getDeclareMonth()).stream().map(e-> LocalDate.of(e.getYear(),e.getMonthValue(),1)).collect(Collectors.toList())); +// queryParam.setEmployeeId(po.getEmployeeId()); +// Page page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true); +// +// page = otherDeductionService.recordListPage(page, queryParam, currentEmployeeId, currentTenantKey); +// // 记录表格 +// WeaTable weaTable = FormatManager.getInstance() +// .genTable(OtherDeductionRecordDTO.class, page); +// weaTable.setModule("hrmsalary"); +// return weaTable; +// } +// +// /** +// * 导出-其他免税扣除列表 +// * +// * @param queryParam +// * @param currentEmployeeId +// * @param currentTenantKey +// * @return +// */ +// public Map export(OtherDeductionQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) { +// // 构建异步导出参数 +// Map map = salaryBatchService.buildeExportParam("exportOtherDeduction"); +// +// String username = UserContext.getCurrentUser().getUsername(); +// String eteamsId = TenantRpcContext.getEteamsId(); +// boolean isChief = taxAgentService.isChief(currentEmployeeId, currentTenantKey); +// taskExecutor.execute(() -> { +// try { +// DSTenantKeyThreadVar.tenantKey.set(currentTenantKey); +// otherDeductionService.export(map, username, eteamsId, isChief, queryParam, currentEmployeeId, currentTenantKey); +// } finally { +// DSTenantKeyThreadVar.tenantKey.remove(); +// } +// }); +// return map; +// } +// +// /** +// * 导出-其他免税扣除详情列表 +// * +// * @param queryParam +// * @param currentEmployeeId +// * @param currentTenantKey +// * @return +// */ +// public Map exportDetail(OtherDeductionQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) { +// Long id = queryParam.getOtherTaxExemptDeductionId(); +// OtherDeductionPO po = otherDeductionService.getById(id, currentTenantKey); +// if (po == null) { +// throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 100415, "其他免税扣除不存在")+"[id:%s]", id)); +// } +// boolean isChief = taxAgentService.isChief(currentEmployeeId, currentTenantKey); +// // 构建异步导出参数 +// Map map = salaryBatchService.buildeExportParam("exportOtherDeductionDetail"); +// +// String username = UserContext.getCurrentUser().getUsername(); +// String eteamsId = TenantRpcContext.getEteamsId(); +// taskExecutor.execute(() -> { +// try { +// DSTenantKeyThreadVar.tenantKey.set(currentTenantKey); +// otherDeductionService.exportDetail(map, username, eteamsId, po.getEmployeeId(), isChief, queryParam, currentEmployeeId, currentTenantKey); +// } finally { +// DSTenantKeyThreadVar.tenantKey.remove(); +// } +// }); +// return map; +// } +// +// /** +// * 下载导入模板 +// * +// * @param queryParam +// * @param currentEmployeeId +// * @param currentTenantKey +// * @return +// */ +// public Map downloadTemplate(OtherDeductionQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) { +// // 构建异步导出参数 +// Map map = salaryBatchService.buildeExportParam("exportOtherDeduction"); +// boolean isChief = taxAgentService.isChief(currentEmployeeId, currentTenantKey); +// String username = UserContext.getCurrentUser().getUsername(); +// String eteamsId = TenantRpcContext.getEteamsId(); +// taskExecutor.execute(() -> { +// try { +// DSTenantKeyThreadVar.tenantKey.set(currentTenantKey); +// otherDeductionService.export(map, username, eteamsId, isChief, queryParam, currentEmployeeId, currentTenantKey); +// } finally { +// DSTenantKeyThreadVar.tenantKey.remove(); +// } +// }); +// return map; +// } +// +// /** +// * 获取导入参数 +// * +// * @return +// */ +// public ExcelImportParam getImportParams() { +// return salaryBatchService.buildImportParam("importOtherDeduction", +// "importOtherDeduction", +// SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), 93849, "其他免税扣除"), +// null, +// null); +// } +//} diff --git a/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java index de309fcee..5feb996a4 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java @@ -44,7 +44,7 @@ public class SalaryArchiveTaxAgentWrapper extends Service { return (TaxAgentService) ServiceUtil.getService(TaxAgentServiceImpl.class, user); } -// @Resource +// // private SalaryBatchService salaryBatchService; // @Autowired // private ExecutorService taskExecutor; diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 1b2392a5e..79a654a58 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -30,7 +30,7 @@ import com.engine.salary.service.impl.SalaryTemplateServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; -import com.engine.salary.util.page.PageUtil; +import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.SqlSession; @@ -65,7 +65,7 @@ public class SalarySendWrapper extends Service { // } -// @Resource +// // private SalaryBatchService salaryBatchService; // @Autowired // private ExecutorService taskExecutor; @@ -84,7 +84,7 @@ public class SalarySendWrapper extends Service { queryParam.getSalaryYearMonth().stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList())); SalarySendMapper salarySendMapper = sqlSession.getMapper(SalarySendMapper.class); - PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); List list = salarySendMapper.list(queryParam); PageInfo pageInfo = new PageInfo<>(list, SalarySendListDTO.class); List pageList = pageInfo.getList(); diff --git a/src/com/engine/salary/wrapper/TaxAgentBaseWrapper.java b/src/com/engine/salary/wrapper/TaxAgentBaseWrapper.java new file mode 100644 index 000000000..f1e8423fa --- /dev/null +++ b/src/com/engine/salary/wrapper/TaxAgentBaseWrapper.java @@ -0,0 +1,44 @@ +package com.engine.salary.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.taxagent.param.TaxAgentSaveBaseParam; +import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; +import com.engine.salary.service.TaxAgentBaseService; +import com.engine.salary.service.impl.TaxAgentBaseServiceImpl; +import weaver.hrm.User; + +/** + * 个税扣缴义务人基础信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentBaseWrapper extends Service { + + private TaxAgentBaseService getTaxAgentBaseService(User user) { + return ServiceUtil.getService(TaxAgentBaseServiceImpl.class, user); + } + + /** + * 获取个税扣缴义务人基本信息表单 + * + * @return + */ + public TaxAgentBasePO getFrom() { + TaxAgentBasePO base = getTaxAgentBaseService(user).getBaseInfo(); + return base; + } + + /** + * 保存个税扣缴义务人基本信息 + * + * @param saveBaseParam + * @return + */ + public String save(TaxAgentSaveBaseParam saveBaseParam) { + return getTaxAgentBaseService(user).save(saveBaseParam); + } +} diff --git a/src/com/engine/salary/wrapper/TaxAgentSubAdminWrapper.java b/src/com/engine/salary/wrapper/TaxAgentSubAdminWrapper.java new file mode 100644 index 000000000..1c047a268 --- /dev/null +++ b/src/com/engine/salary/wrapper/TaxAgentSubAdminWrapper.java @@ -0,0 +1,171 @@ +package com.engine.salary.wrapper; + +import com.engine.core.impl.Service; +import com.engine.salary.biz.EmployBiz; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.taxagent.bo.TaxAgentBO; +import com.engine.salary.entity.taxagent.dto.*; +import com.engine.salary.entity.taxagent.param.*; +import com.engine.salary.entity.taxagent.po.TaxAgentSubAdminPO; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.TaxAgentManageRangeService; +import com.engine.salary.service.TaxAgentSubAdminService; +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 com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 个税义务人分管理员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentSubAdminWrapper extends Service { + + private TaxAgentSubAdminService taxAgentSubAdminService; + private TaxAgentManageRangeService taxAgentManageRangeService; +// private HrmCommonEmployeeService hrmCommonEmployeeService; + + private EmployBiz employBiz = new EmployBiz(); + + /** + * 获取分管理员列表 + * + * @param queryParam + * @return + */ + public PageInfo list(TaxAgentSubAdminQueryParam queryParam) { + ValidUtil.doValidator(queryParam); + + List list = taxAgentSubAdminService.listByTaxAgentIds(Collections.singletonList(queryParam.getTaxAgentId())); + String range = SalaryI18nUtil.getI18nLabel(106290, "详情"); + List subAdminList = employBiz.getEmployeeByIds(list.stream().map(TaxAgentSubAdminPO::getEmployeeId).distinct().collect(Collectors.toList())); + + List records = TaxAgentBO.convertToSubAdminListDTO(list, range, subAdminList); + PageInfo listPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), TaxAgentSubAdminListDTO.class); + // 填充总数和当页数据 + listPage.setTotal(records.size()); + listPage.setList(SalaryPageUtil.subList(listPage.getPageNum(), listPage.getSize(), records)); + + return listPage; + } + + /** + * 删除分管理员 + * + * @param ids + * @return + */ + public String delete(Collection ids) { + return taxAgentSubAdminService.deleteByIds(ids); + } + + /** + * 获取基础设置表单 + * + * @param baseFormParam + * @return + */ + public TaxAgentSubAdminBaseFormDTO getBaseFrom(TaxAgentSubAdminBaseFormParam baseFormParam) { + ValidUtil.doValidator(baseFormParam); + + TaxAgentSubAdminBaseFormDTO taxAgentSubAdminBaseFormDTO = new TaxAgentSubAdminBaseFormDTO(); + Long id = baseFormParam.getId(); + if (id != null) { + TaxAgentSubAdminPO taxAgentSubAdmin = taxAgentSubAdminService.getById(id); + if (taxAgentSubAdmin == null) { + throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(106466, "分管理员不存在") + "[id:%s]", id)); + } + if (!baseFormParam.getTaxAgentId().equals(taxAgentSubAdmin.getTaxAgentId())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(106685, "分管理员与所属个税扣缴义务人不匹配")); + } + taxAgentSubAdminBaseFormDTO.setId(taxAgentSubAdmin.getId()); + taxAgentSubAdminBaseFormDTO.setDescription(taxAgentSubAdmin.getRemark()); + TaxAgentEmployeeOptionDTO taxAgentEmployee = new TaxAgentEmployeeOptionDTO(); + taxAgentEmployee.setId(taxAgentSubAdmin.getEmployeeId()); + DataCollectionEmployee employee = employBiz.getEmployeeById(taxAgentEmployee.getId()); + taxAgentEmployee.setContent(employee == null ? "" : employee.getUsername()); + + taxAgentSubAdminBaseFormDTO.setSubAdminUser(Collections.singletonList(taxAgentEmployee)); + } else { + taxAgentSubAdminBaseFormDTO.setSubAdminUser(Lists.newArrayList()); + } + + return taxAgentSubAdminBaseFormDTO; + } + + /** + * 保存分管理员基础设置 + * + * @param saveParam + * @return + */ + public String saveBase(TaxAgentSubAdminBaseSaveParam saveParam) { + return taxAgentSubAdminService.saveBase(saveParam); + } + + /** + * 范围列表 + * + * @param queryParam + * @return + */ + public PageInfo listRangeInclude(TaxAgentSubAdminRangeQueryParam queryParam) { + PageInfo listPage = taxAgentManageRangeService.listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ONE); + return listPage; + } + + /** + * 范围排除列表 + * + * @param queryParam + * @return + */ + public PageInfo listRangeExclude(TaxAgentSubAdminRangeQueryParam queryParam) { + PageInfo listPage = taxAgentManageRangeService.listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ZERO); + return listPage; + } + + /** + * 获取管理范围表单 + * + * @return + */ + public TaxAgentManageRangeFormDTO getRangeFrom() { + return TaxAgentManageRangeFormDTO.builder().employeeStatus(UserStatusEnum.getHrmStatusList()).build(); + } + + /** + * 保存管理范围 + * + * @param saveParam + * @return + */ + public String saveRange(TaxAgentSubAdminRangeSaveParam saveParam) { + taxAgentManageRangeService.save4SubAdmin(saveParam); + return StringUtils.EMPTY; + } + + /** + * 删除管理范围 + * + * @param ids + * @return + */ + public String deleteRange(Collection ids) { + taxAgentManageRangeService.deleteByIds(ids); + return StringUtils.EMPTY; + } +} diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java new file mode 100644 index 000000000..20766a686 --- /dev/null +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -0,0 +1,362 @@ +package com.engine.salary.wrapper; + +import com.cloudstore.eccom.pc.table.WeaTable; +import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.hrm.HrmStatus; +import com.engine.salary.entity.taxagent.bo.TaxAgentBO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeOptionDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentFormDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeFormDTO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO; +import com.engine.salary.entity.taxagent.param.*; +import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.*; +import com.engine.salary.service.impl.*; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; +import com.google.common.collect.Maps; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.springframework.beans.BeanUtils; +import weaver.hrm.User; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 个税扣缴义务人 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentWrapper extends Service { + + public TaxAgentBaseService getTaxAgentBaseService(User user) { + return ServiceUtil.getService(TaxAgentBaseServiceImpl.class, user); + } + + public TaxAgentAdminService getTaxAgentAdminService(User user) { + return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user); + } + + public TaxAgentV2Service getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentV2ServiceImpl.class, user); + } + + public SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + public TaxAgentManageRangeService getTaxAgentManageRangeService(User user) { + return ServiceUtil.getService(TaxAgentManageRangeServiceImpl.class, user); + } + +// private PaymentAgencyService paymentAgencyService; +// +// private SIEmployeeStatusMapper siEmployeeStatusMapper; +// +// private HrmCommonHrmStatusService hrmCommonHrmStatusService; +// +// private HrmConfigSetCache hrmConfigSetCache; + + /** + * 是否是薪酬模块总管理员 + * + * @param currentEmployeeId + * @return + */ + public Boolean isChief(Long currentEmployeeId) { + return getTaxAgentService(user).isChief(currentEmployeeId); + } + + /** + * 权限信息 + * + * @param currentEmployeeId + * @return + */ + public Map permission(Long currentEmployeeId) { + Map resultMap = Maps.newHashMap(); + Boolean isChief = isChief(currentEmployeeId); + Boolean isDefaultOpen = getTaxAgentService(user).isDefaultOpen(currentEmployeeId); + Boolean isAdminEnable = getTaxAgentService(user).isAdminEnable(currentEmployeeId); + resultMap.put("isChief", isChief); + resultMap.put("isDefaultOpen", isDefaultOpen); + resultMap.put("isAdminEnable", isAdminEnable); + return resultMap; + } + + /** + * 个税口角义务人列表 + * + * @param queryParam + * @return + */ + public Map list(TaxAgentQueryParam queryParam) { + // 是否是总管理员 + Boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + +// List paymentAgencyPOS = paymentAgencyService.listAll(currentTenantKey); + + PageInfo page = null; + // 分权情况下,根据自己作为管理员过滤列表 + if (isOpenDevolution && !isChief) { + List list = getTaxAgentService(user).list(queryParam); + // 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据 + List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIdsAndEmployeeId(list.stream().map(TaxAgentPO::getId).collect(Collectors.toList()), (long) user.getUID()); + // 是管理员的列表 + List adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList()); + list = list.stream().filter(f -> adminTaxAgentIds.contains(f.getId())).collect(Collectors.toList()); + // 分页参数 + // 填充总数和当页数据 + PageInfo dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize()); + dtoPage.setTotal(list.size()); + dtoPage.setPageNum(queryParam.getCurrent()); + dtoPage.setPageSize(queryParam.getPageSize()); + dtoPage.setList(SalaryPageUtil.subList(dtoPage.getPageNum(), dtoPage.getPageSize(), list)); + page = dtoPage; + } else { + page = getTaxAgentService(user).listPage(queryParam); + } + + PageInfo> listPage = new PageInfo<>(); + + String setLabel = SalaryI18nUtil.getI18nLabel(94614, "设置"); + if (isOpenDevolution) { + List list = page.getList(); + List taxAgentIds = list.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + List taxAgentAdmins = getTaxAgentAdminService(user).listByTaxAgentIds(taxAgentIds); + List adminList = getSalaryEmployeeService(user).listByIds(taxAgentAdmins.stream().map(TaxAgentAdminPO::getEmployeeId).distinct().collect(Collectors.toList())); + listPage.setList(TaxAgentBO.convertToTableListDTO(page.getList(), null, taxAgentAdmins, adminList, setLabel)); + } else { + listPage.setList(TaxAgentBO.convertToTableListDTO(page.getList(), null, setLabel)); + } + + listPage.setTotal(page.getTotal()); + listPage.setPageNum(page.getPageNum()); + listPage.setPageSize(page.getPageSize()); + + //构造表格 + WeaTable weaTable = new WeaTable(); + TaxAgentBO.buildTaxAgentTable(weaTable, isOpenDevolution); + if (isChief) { + // 在外展示操作按钮 +// weaTable.getOperates().get(0).setOuter(Boolean.TRUE); + } else { + // 去掉增删改权限 + weaTable.getOperates().getOperate().clear(); +// weaTable.getCheckBoxPermission().clear(); + } + + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(weaTable.makeDataResult()); + result.success(); + + Map datas = new HashMap<>(); + datas.put("pageInfo", listPage); + datas.put("dataKey", result.getResultMap()); + + return datas; + + } + + public List> paymentAgencyList(TaxAgentQueryParam queryParam) { +// List taxAgentPOS = getTaxAgentService(user).listByIds(queryParam.getIds()); +// List paymentAgencyPOS = paymentAgencyService.listAll(currentTenantKey); +// SalaryAssert.notEmpty(taxAgentPOS, "taxagent data is not exist"); +// TaxAgentPO taxAgentPO = taxAgentPOS.get(0); +// return TaxAgentBO.buildPaymentAgency(taxAgentPO.getPaymentAgency(), paymentAgencyPOS); + return null; + } + + public String paymentAgencySave(TaxAgentSaveParam param) { +// List taxAgentPOS = getTaxAgentService(user).listByIds(Collections.singletonList(param.getId())); +// SalaryAssert.notEmpty(taxAgentPOS, "data is not exist"); +// TaxAgentPO taxAgentPO = taxAgentPOS.get(0); +// List errorList = new ArrayList<>(); +// List resultList = new ArrayList<>(); +// if (StringUtils.isNotBlank(taxAgentPO.getPaymentAgency())) { +// List originList = new ArrayList<>(Arrays.asList(taxAgentPO.getPaymentAgency().split(","))); +// List list = new ArrayList<>(Arrays.asList(param.getPaymentAgency().split(","))); +// originList.removeAll(list); +// if (CollectionUtils.isNotEmpty(originList)) { +// originList.stream().forEach(e -> { +// List employeeStatusPOS = new LambdaQueryChainWrapper<>(siEmployeeStatusMapper) +// .eq(InsuranceEmployeeStatusPO::getTenantKey) +// .eq(InsuranceEmployeeStatusPO::getPaymentAgency, Long.valueOf(e)) +// .eq(InsuranceEmployeeStatusPO::getPaymentOrganization, param.getId()) +// .list(); +// if (CollectionUtils.isNotEmpty(employeeStatusPOS)) { +// errorList.add(e); +// } +// }); +// } +// if (CollectionUtils.isNotEmpty(errorList)) { +// List paymentAgencyPOS = paymentAgencyService.listAll(currentTenantKey); +// errorList.forEach(e -> { +// Optional optionalPaymentAgencyPO = paymentAgencyPOS.stream().filter(po -> Objects.equals(e, String.valueOf(po.getId()))).findFirst(); +// optionalPaymentAgencyPO.ifPresent(paymentAgencyPO -> resultList.add(paymentAgencyPO.getAgencyName())); +// }); +// } +// } +// if (CollectionUtils.isNotEmpty(resultList)) { +// return SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmploueeId, 115128, "有员工在") + String.join(",", resultList) + SalaryI18nUtil.getI18nLabel(currentTenantKey, +// currentEmploueeId, 115129, "缴纳社保福利,不可取消关联"); +// } else { +// taxAgentPO.setPaymentAgency(param.getPaymentAgency()); +// getTaxAgentService(user).paymentAgencyUpdate(taxAgentPO, currentEmploueeId); +// } + return ""; + } + + /** + * 获取个税扣缴义务人表单 + * + * @param id + * @return + */ + public TaxAgentFormDTO getFrom(Long id) { + TaxAgentFormDTO taxAgentFromDTO = new TaxAgentFormDTO(); + if (id != null) { + TaxAgentPO taxAgent = getTaxAgentService(user).getById(id); + if (taxAgent == null) { + throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(100543, "个税扣缴人不存在") + "[id:%s]", id)); + } + BeanUtils.copyProperties(taxAgent, taxAgentFromDTO); + } + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + if (isOpenDevolution) { + List admins = getTaxAgentAdminService(user).listByTaxAgentIds(Collections.singletonList(id)); + // 目前是一个 + TaxAgentEmployeeOptionDTO taxAgentEmployee = new TaxAgentEmployeeOptionDTO(); + taxAgentEmployee.setId(CollectionUtils.isEmpty(admins) ? null : admins.get(0).getEmployeeId()); + if (taxAgentEmployee.getId() != null) { + DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(taxAgentEmployee.getId()); + taxAgentEmployee.setContent(employee == null ? "" : employee.getUsername()); + } + taxAgentFromDTO.setAdminUser(Collections.singletonList(taxAgentEmployee)); + } else { + taxAgentFromDTO.setAdminUser(null); + } + + return taxAgentFromDTO; + } + + /** + * 保存个税扣缴义务人 + * + * @param saveParam + * @return + */ + public String save(TaxAgentSaveParam saveParam) { + return getTaxAgentService(user).save(saveParam); + } + + /** + * 编辑个税扣缴义务人 + * + * @param saveParam + * @return + */ + public String update(TaxAgentSaveParam saveParam) { + return getTaxAgentService(user).update(saveParam); + } + + /** + * 更换管理员校验 + * + * @param checkParam + * @return + */ + public Boolean adminChangeCheck(TaxAgentAdminChangeCheckParam checkParam) { + return getTaxAgentService(user).adminChangeCheck(checkParam); + } + + /** + * 删除个税扣缴义务人 + * + * @param ids + * @return + */ + public String delete(Collection ids) { + return getTaxAgentService(user).delete(ids); + } + + /** + * 个税扣缴义务人下拉列表 + * + * @return + */ + public List> selectList() { + return getTaxAgentService(user).selectList(); + } + + /** + * 范围列表 + * + * @param queryParam + * @return + */ + public PageInfo listRangeInclude(TaxAgentRangeQueryParam queryParam) { + PageInfo listPage = getTaxAgentManageRangeService(user).listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ONE); + return listPage; + } + + /** + * 范围排除列表 + * + * @param queryParam + * @return + */ + public PageInfo listRangeExclude(TaxAgentRangeQueryParam queryParam) { + PageInfo listPage = getTaxAgentManageRangeService(user).listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ZERO); + return listPage; + } + + /** + * 获取管理范围表单 + * + * @return + */ + public TaxAgentManageRangeFormDTO getRangeFrom() { + // 查询人员状态 + List hrmStatusList = UserStatusEnum.getHrmStatusList(); + + return TaxAgentManageRangeFormDTO.builder().employeeStatus(hrmStatusList).build(); + } + + /** + * 保存管理范围 + * + * @param saveParam + * @return + */ + public String saveRange(TaxAgentRangeSaveParam saveParam) { + getTaxAgentManageRangeService(user).save(saveParam); + return StringUtils.EMPTY; + } + + /** + * 删除管理范围 + * + * @param ids + * @return + */ + public String deleteRange(Collection ids) { + getTaxAgentManageRangeService(user).deleteByIds(ids); + return StringUtils.EMPTY; + } +} diff --git a/src/demo.java b/src/demo.java new file mode 100644 index 000000000..70fb668eb --- /dev/null +++ b/src/demo.java @@ -0,0 +1,71 @@ +import java.text.SimpleDateFormat; +import java.time.LocalTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +public class demo { + + public static void main(String[] args) { + + //全天会议可用的时间点,9:00-18:00,每15min。 + List allTime = new ArrayList() {{ + //初始化全天可用的时间点集合,可以仿照下面splitTimeRange()写个。 + add(LocalTime.of(9, 0)); + add(LocalTime.of(9, 15)); + add(LocalTime.of(9, 30)); + add(LocalTime.of(9, 45)); + add(LocalTime.of(10, 0)); + //..... + add(LocalTime.of(17, 45)); + add(LocalTime.of(18, 0)); + }}; + + //占用的时间点,(从数据库里查的) + List takeUpStringList = new ArrayList(){{ + + }}; + List takeUpTimeList = takeUpStringList.stream().map(LocalTime::parse).collect(Collectors.toList()); + + //比较两个时间点数组,将全天的时间点分割 + List indexList = new ArrayList<>(); + for (int i = 0; i < allTime.size(); i++) { + //比较 + for (int j = 0; j < takeUpTimeList.size(); j++) { + if (allTime.get(i).equals(takeUpTimeList.get(j))) { + indexList.add(i); + } + } + } + + //按indexList下标分割allTime,获取list + List> list = new ArrayList<>(); + for (int i = 0; i < indexList.size(); i++) { + if (indexList.get(i) != 0 && (i + 1) != indexList.size()) { + list.add(allTime.subList(indexList.get(i), indexList.get(i + 1))); + } else { + list.add(allTime.subList(0, indexList.get(i))); + } + } + + //获取超出1小时的时间段,就是集合里时间点大于等于5的集合 + + //取出集合返回,接口要求可能就是返回时间-时间,取集合第一个-集合末尾 + + } + + private static void splitTimeRange() { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");//设置时间格式 + Date end = new Date(); + Date start = new Date(); + List list = new ArrayList();//用来接收划分后的时间 + //进行循环将时间按照分钟进行划分 + for (Date i = start; i.before(end); ) { + list.add(simpleDateFormat.format(i)); + i.setMinutes(i.getMinutes() + 1); + } + } + + +}