From 767fbe36f52b01b14737c6c0cf69b7aa944ff5dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 14 Mar 2023 10:52:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=96=E9=83=A8=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalarySobRangeExtSaveParam.java | 36 +++ .../salarysob/po/SalarySobExtRangePO.java | 65 +++++ .../salarysob/SalarySobExtRangeMapper.java | 69 +++++ .../salarysob/SalarySobExtRangeMapper.xml | 249 ++++++++++++++++++ .../taxagent/TaxAgentExtRangeMapper.java | 5 +- .../taxagent/TaxAgentExtRangeMapper.xml | 10 + .../salary/service/SalarySobRangeService.java | 17 ++ .../service/TaxAgentManageRangeService.java | 1 + .../impl/SalaryArchiveServiceImpl.java | 1 + .../impl/SalarySobRangeServiceImpl.java | 98 +++++-- .../impl/TaxAgentManageRangeServiceImpl.java | 42 +++ .../salary/web/SalarySobController.java | 28 ++ .../engine/salary/web/TaxAgentController.java | 9 + .../salary/wrapper/SalarySobRangeWrapper.java | 19 ++ .../salary/wrapper/TaxAgentWrapper.java | 6 + 15 files changed, 633 insertions(+), 22 deletions(-) create mode 100644 src/com/engine/salary/entity/salarysob/param/SalarySobRangeExtSaveParam.java create mode 100644 src/com/engine/salary/entity/salarysob/po/SalarySobExtRangePO.java create mode 100644 src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.java create mode 100644 src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.xml diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeExtSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeExtSaveParam.java new file mode 100644 index 000000000..7bdb173ef --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeExtSaveParam.java @@ -0,0 +1,36 @@ +package com.engine.salary.entity.salarysob.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.Data; + +import java.util.List; + +/** + * 外部人员管理范围保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class SalarySobRangeExtSaveParam { + + //薪资账套的id + @DataCheck(require = true, message = "薪资账套的ID不允许为空") + private Long salarySobId; + + + /** + * 对象id + */ + private List targetIds; + + /** + * 对象类型。1:外部人员 + */ + private Long targetType; + + + +} diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobExtRangePO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobExtRangePO.java new file mode 100644 index 000000000..1e2c82838 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobExtRangePO.java @@ -0,0 +1,65 @@ +package com.engine.salary.entity; + +import com.engine.salary.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 个税扣缴义务人的管理范围表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalarySobExtRangePO { + + /** + * 主键id + */ + private Long id; + /** + * 账套id + */ + private Long salarySobId; + /** + * 对象id + */ + private Long targetId; + /** + * 对象类型。1:外部人员 + */ + private Integer targetType; + /** + * 租户ID + */ + private String tenantKey; + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建时间 + */ + private Date createTime; + /** + * 创建人 + */ + private Long creator; + /** + * 是否已删除。0:未删除、1:已删除 + */ + private Integer deleteType; + + //主键id集合 + private Collection ids; + + @TableTitle(title = "名称", dataIndex = "targetName", key = "targetName") + private String targetName; + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.java new file mode 100644 index 000000000..b8c01933c --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.java @@ -0,0 +1,69 @@ +package com.engine.salary.mapper.salarysob; + +import com.engine.salary.entity.SalarySobExtRangePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface SalarySobExtRangeMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalarySobExtRangePO salarySobExtRange); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalarySobExtRangePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salarySobExtRange 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalarySobExtRangePO salarySobExtRange); + + /** + * 修改,修改所有字段 + * + * @param salarySobExtRange 修改的记录 + * @return 返回影响行数 + */ + int update(SalarySobExtRangePO salarySobExtRange); + + /** + * 修改,忽略null字段 + * + * @param salarySobExtRange 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalarySobExtRangePO salarySobExtRange); + + /** + * 删除记录 + * + * @param salarySobExtRange 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalarySobExtRangePO salarySobExtRange); + + List listPage4Ext(SalarySobExtRangePO build); + + void deleteByIds(@Param("ids") Collection ids); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.xml new file mode 100644 index 000000000..2265cfab2 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalarySobExtRangeMapper.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.id + , t.salary_sob_id + , t.target_id + , t.target_type + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_sob_ext_range + + + + create_time, + + + creator, + + + delete_type, + + + id, + + + salary_sob_id, + + + target_id, + + + target_type, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{salarySobId}, + + + #{targetId}, + + + #{targetType}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_salary_sob_ext_range + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + salary_sob_id=#{salarySobId}, + target_id=#{targetId}, + target_type=#{targetType}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_sob_ext_range + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + salary_sob_id=#{salarySobId}, + + + target_id=#{targetId}, + + + target_type=#{targetType}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_sob_ext_range + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + + + + + UPDATE hrsa_salary_sob_ext_range + SET delete_type=1 + WHERE id IN and delete_type=0 + + #{id} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.java index a187c6751..87a03f58a 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.java +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.java @@ -1,7 +1,9 @@ package com.engine.salary.mapper.taxagent; import com.engine.salary.entity.taxagent.po.TaxAgentExtRangePO; +import org.apache.ibatis.annotations.Param; +import java.util.Collection; import java.util.List; public interface TaxAgentExtRangeMapper { @@ -60,5 +62,6 @@ public interface TaxAgentExtRangeMapper { * @return 返回影响行数 */ int delete(TaxAgentExtRangePO taxAgentExtRange); - + + void deleteByIds(@Param("ids")Collection ids); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.xml index 398864b9e..c7e3e0e13 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentExtRangeMapper.xml @@ -210,5 +210,15 @@ AND delete_type = 0 + + UPDATE hrsa_tax_agent_ext_range + SET delete_type=1 + WHERE id in + + #{id} + + AND delete_type = 0 + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalarySobRangeService.java b/src/com/engine/salary/service/SalarySobRangeService.java index 3bfb8172a..91e2c3430 100644 --- a/src/com/engine/salary/service/SalarySobRangeService.java +++ b/src/com/engine/salary/service/SalarySobRangeService.java @@ -1,6 +1,8 @@ package com.engine.salary.service; +import com.engine.salary.entity.SalarySobExtRangePO; import com.engine.salary.entity.salarysob.dto.SalarySobRangeListDTO; +import com.engine.salary.entity.salarysob.param.SalarySobRangeExtSaveParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeImportParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeQueryParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeSaveParam; @@ -63,6 +65,19 @@ public interface SalarySobRangeService { */ void save(SalarySobRangeSaveParam saveParam); + /** + * 保存外部人员 + * @param saveParam + */ + void saveExtRange(SalarySobRangeExtSaveParam saveParam); + + /** + * 外部人员列表 + * @param param + * @return + */ + PageInfo listPage4Ext(SalarySobRangeQueryParam param); + /** * 根据主键id删除薪资账套的人员范围 * @@ -70,6 +85,8 @@ public interface SalarySobRangeService { */ void deleteByIds(Collection ids); + void deleteSalarySobExtRange(Collection ids); + /** * 根据薪资账套id删除薪资账套的人员范围 * diff --git a/src/com/engine/salary/service/TaxAgentManageRangeService.java b/src/com/engine/salary/service/TaxAgentManageRangeService.java index baef0ea9d..c9eb1ed0a 100644 --- a/src/com/engine/salary/service/TaxAgentManageRangeService.java +++ b/src/com/engine/salary/service/TaxAgentManageRangeService.java @@ -58,6 +58,7 @@ public interface TaxAgentManageRangeService { */ void saveExtRange(TaxAgentManageRangeExtSaveParam saveParam); + void deleteExtRange(Collection ids); /** * 根据主键id删除管理范围 diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 143bc2817..7eb561b51 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -190,6 +190,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); + queryParam.setExtSalaryArchiveList(true); List list = getSalaryArchiveList(queryParam); list = list.stream() //过滤档案状态 diff --git a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java index 7a67185e4..3da01f5b0 100644 --- a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java @@ -6,6 +6,8 @@ import com.engine.core.impl.Service; import com.engine.hrm.biz.OrganizationShowSetBiz; import com.engine.salary.biz.SalarySobRangeBiz; import com.engine.salary.biz.SpecialAddDeductionBiz; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.SalarySobExtRangePO; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; @@ -14,6 +16,7 @@ import com.engine.salary.entity.salarysob.bo.SalarySobRangeBO; import com.engine.salary.entity.salarysob.bo.SalarySobRangeSaveBO; import com.engine.salary.entity.salarysob.dto.SalarySobRangeImportListDTO; import com.engine.salary.entity.salarysob.dto.SalarySobRangeListDTO; +import com.engine.salary.entity.salarysob.param.SalarySobRangeExtSaveParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeImportParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeQueryParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeSaveParam; @@ -24,6 +27,7 @@ import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.salarysob.SalarySobExtRangeMapper; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.SalarySobRangeService; @@ -40,10 +44,10 @@ import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; -import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.file.ImageFileManager; @@ -84,6 +88,10 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange return SqlProxyHandle.getProxy(SalarySysConfMapper.class); } + private SalarySobExtRangeMapper getSalarySobExtRangeMapper() { + return SqlProxyHandle.getProxy(SalarySobExtRangeMapper.class); + } + // private ComInfoCache comInfoCache; // private LoggerTemplate salarySobLoggerTemplate; @@ -144,7 +152,7 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange List positionInfos = getSalaryEmployeeService(user).listPositionInfo(positionIds); // 薪资账套的人员范围po转换成列表dto - List salarySobRangeListDTOS = SalarySobRangeBO.convert2ListDTO(salarySobRangePOS, empInfos, deptInfos,subCompanyInfos, positionInfos); + List salarySobRangeListDTOS = SalarySobRangeBO.convert2ListDTO(salarySobRangePOS, empInfos, deptInfos, subCompanyInfos, positionInfos); // 根据对象名称过滤 if (StringUtils.isNotEmpty(queryParam.getTargetName())) { salarySobRangeListDTOS = salarySobRangeListDTOS.stream() @@ -152,7 +160,7 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange .collect(Collectors.toList()); } // 填充总数和当页数据 - PageInfo pageInfo = new PageInfo(salarySobRangeListDTOS,SalarySobRangeListDTO.class); + PageInfo pageInfo = new PageInfo(salarySobRangeListDTOS, SalarySobRangeListDTO.class); pageInfo.setTotal(salarySobRangeListDTOS.size()); pageInfo.setList(SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), salarySobRangeListDTOS)); pageInfo.setPageNum(queryParam.getCurrent()); @@ -194,6 +202,46 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange // salarySobLoggerTemplate.write(loggerContext); } + @Override + public void saveExtRange(SalarySobRangeExtSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + + // 查询薪资账套 + SalarySobPO salarySobPO = getSalarySobService(user).getById(saveParam.getSalarySobId()); + if (Objects.isNull(salarySobPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除")); + } + // 查询已有的人员范围 + List salarySobRangePOS = getSalarySobExtRangeMapper().listSome(SalarySobExtRangePO.builder().salarySobId(saveParam.getSalarySobId()).build()); + // 处理一下本次的保存参数(如果原来添加过对应的人员(/部门/岗位),那么本次不需要新增,只需要更新) + List oldTargetIds = SalaryEntityUtil.properties(salarySobRangePOS, SalarySobExtRangePO::getTargetId, Collectors.toList()); + + List targetIds = saveParam.getTargetIds(); + Date date = new Date(); + if (CollectionUtils.isNotEmpty(targetIds)) { + targetIds.stream().filter(targetId -> !oldTargetIds.contains(targetId)).forEach(targetId -> { + SalarySobExtRangePO po = SalarySobExtRangePO.builder() + .id(IdGenerator.generate()) + .targetType(1) + .salarySobId(saveParam.getSalarySobId()) + .targetId(targetId) + .createTime(date) + .updateTime(date) + .creator((long) user.getUID()) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getSalarySobExtRangeMapper().insertIgnoreNull(po); + }); + } + } + + @Override + public PageInfo listPage4Ext(SalarySobRangeQueryParam param) { + List salarySobRangePOS = getSalarySobExtRangeMapper().listPage4Ext(SalarySobExtRangePO.builder().salarySobId(param.getSalarySobId()).build()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), salarySobRangePOS, SalarySobExtRangePO.class); + } + @Override public void deleteByIds(Collection ids) { // 查询薪资账套的人员范围 @@ -205,13 +253,13 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange // 删除薪资账套的人员范围 salarySobRangeBiz.deleteByIds(ids); // 查询薪资账套 - Set salarySobIds = SalaryEntityUtil.properties(salarySobRangePOS, SalarySobRangePO::getSalarySobId); - List salarySobPOS = getSalarySobService(user).listByIds(salarySobIds); - // 是"关联人员范围"还是"从范围中排除" - Integer includeType = salarySobRangePOS.get(0).getIncludeType(); - // todo 记录日志 - String operateTypeName = Objects.equals(includeType, NumberUtils.INTEGER_ONE) ? - SalaryI18nUtil.getI18nLabel(98605, "关联人员范围删除对象") : SalaryI18nUtil.getI18nLabel(98606, "从范围中排除删除对象"); +// Set salarySobIds = SalaryEntityUtil.properties(salarySobRangePOS, SalarySobRangePO::getSalarySobId); +// List salarySobPOS = getSalarySobService(user).listByIds(salarySobIds); +// // 是"关联人员范围"还是"从范围中排除" +// Integer includeType = salarySobRangePOS.get(0).getIncludeType(); +// // todo 记录日志 +// String operateTypeName = Objects.equals(includeType, NumberUtils.INTEGER_ONE) ? +// SalaryI18nUtil.getI18nLabel(98605, "关联人员范围删除对象") : SalaryI18nUtil.getI18nLabel(98606, "从范围中排除删除对象"); // salarySobPOS.forEach(salarySobPO -> { // LoggerContext loggerContext = new LoggerContext<>(); // loggerContext.setTargetId("" + salarySobPO.getId()); @@ -222,6 +270,14 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange // }); } + @Override + public void deleteSalarySobExtRange(Collection ids) { + if(CollectionUtils.isEmpty(ids)){ + return; + } + getSalarySobExtRangeMapper().deleteByIds(ids); + } + @Override public void deleteBySalarySobIds(Collection salarySobIds) { salarySobRangeBiz.deleteBySalarySobIds(salarySobIds); @@ -241,10 +297,10 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; // 注释 List excelComments = Lists.newArrayList(); - if(confValue.equals("1")){ + if (confValue.equals("1")) { // 人员校验规则为工号 excelComments.add(new ExcelComment(3, 0, 4, 2, SalaryI18nUtil.getI18nLabel(100344, "必填"))); - }else { + } else { excelComments.add(new ExcelComment(0, 0, 1, 2, SalaryI18nUtil.getI18nLabel(100344, "必填"))); } excelComments.add(new ExcelComment(4, 0, 6, 3, SalaryI18nUtil.getI18nLabel(100344, "若不填,默认全部员工状态。指定员工状态格式:试用、正式、临时、试用延期"))); @@ -363,19 +419,19 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange } // 设置员工状态 - if(StringUtils.isEmpty(employeeStatusStr)){ + if (StringUtils.isEmpty(employeeStatusStr)) { SalaryEmployeeStatusEnum[] values = SalaryEmployeeStatusEnum.values(); po.setEmployeeStatus(SalaryEmployeeStatusEnum.values()); - }else{ + } else { Boolean[] haveError = {false}; // 人员状态字符串转换为对应的value SalaryEmployeeStatusEnum[] status = SalaryEmployeeStatusEnum.getEnumsParseByFormatStr(employeeStatusStr, haveError); - if(haveError[0]){ + if (haveError[0]) { Map errorMessageMap = new HashMap<>(); errorMessageMap.put("message", rowIndex + "员工状态不存在,或格式有误。格式为:试用、正式、临时、试用延期"); errorData.add(errorMessageMap); errorSum += 1; - }else{ + } else { po.setEmployeeStatus(status); } } @@ -426,7 +482,7 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange } // 多条相同人的则以第一条为准,如果逆序排列(用于重复的则以最后一条为准)Collections.reverse(pos); // 去重(通过记录的唯一条件(人员id) - List finalPos = pos.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getTargetId() ))), ArrayList::new)); + List finalPos = pos.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getTargetId()))), ArrayList::new)); return finalPos; } @@ -453,7 +509,7 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); - List salarySobRangeImportList = ExcelParseHelper.parse2Map(fileInputStream, SalarySobRangeImportListDTO.class, 0, 1, 5, "TaxAgentEmployee.xlsx"); + List salarySobRangeImportList = ExcelParseHelper.parse2Map(fileInputStream, SalarySobRangeImportListDTO.class, 0, 1, 5, "TaxAgentEmployee.xlsx"); apidatas.put("preview", salarySobRangeImportList); } finally { IOUtils.closeQuietly(fileInputStream); @@ -463,16 +519,16 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange /** + * @return List> * @description 获取excel数据行 - * @return List> * @author Harryxzy * @date 2023/1/9 11:37 */ private List> getExcelRowList() { // 表头 List headers = Lists.newArrayList(); - headers.add(SalaryI18nUtil.getI18nLabel( 85429, "姓名")); - headers.add(SalaryI18nUtil.getI18nLabel( 86185, "部门")); + headers.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); + headers.add(SalaryI18nUtil.getI18nLabel(86185, "部门")); headers.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); headers.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); headers.add(SalaryI18nUtil.getI18nLabel(86318, "员工状态")); diff --git a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java index 278570013..8db5bb8de 100644 --- a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java @@ -4,6 +4,7 @@ import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; 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.hrm.DeptInfo; import com.engine.salary.entity.hrm.HrmStatus; @@ -13,6 +14,7 @@ import com.engine.salary.entity.taxagent.bo.TaxAgentBO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeListDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO; import com.engine.salary.entity.taxagent.param.*; +import com.engine.salary.entity.taxagent.po.TaxAgentExtRangePO; import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; @@ -35,6 +37,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.weaver.util.threadPool.ThreadPoolUtil; import com.weaver.util.threadPool.entity.LocalRunnable; +import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -388,6 +391,25 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(108605, "参数错误,无此外部人员")); } + Date now = new Date(); + List oldPO = listExtByIds(targetIds); + List oldIds = SalaryEntityUtil.properties(oldPO, TaxAgentExtRangePO::getTargetId, Collectors.toList()); + targetIds.stream().filter(targetId -> !oldIds.contains(targetId)).forEach(targetId -> { + TaxAgentExtRangePO po = TaxAgentExtRangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(taxAgentId) + .targetId(targetId) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .targetType(1) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + + getTaxAgentExtRangeMapper().insertIgnoreNull(po); + }); + /* 同步本地人员范围的关联人员=========================== */ if (saveParam.isSync()) { @@ -400,6 +422,26 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM } } + private List listExtByIds(Collection targetIds) { + List oldPO = getTaxAgentExtRangeMapper().listSome(TaxAgentExtRangePO.builder().ids(targetIds).build()); + return oldPO; + } + + @Override + public void deleteExtRange(Collection ids) { + // 查询管理范围 + List taxAgentManageRanges = listExtByIds(ids); + if (CollectionUtils.isEmpty(taxAgentManageRanges)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98604, "数据不存在或已被删除")); + } + List taxAgentIds = taxAgentManageRanges.stream().map(TaxAgentExtRangePO::getTaxAgentId).distinct().collect(Collectors.toList()); + if (taxAgentIds.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110159, "一次只能删一个个税个税扣缴义务人的范围")); + } + // 删除管理范围 + getTaxAgentExtRangeMapper().deleteByIds(ids); + } + private void syncLocalExtEmp(Long taxAgentId, List allSalaryEmployees) { List taxAgentEmpSaveParamList = Collections.singletonList(getTaxAgentEmpSyncParam(taxAgentId, allSalaryEmployees)); diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index ad3bd6423..bb50f41af 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -1,6 +1,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.SalarySobExtRangePO; import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salarysob.dto.*; @@ -193,6 +194,22 @@ public class SalarySobController { return new ResponseResult(user).run(getSalarySobRangeWrapper(user)::save, saveParam); } + @POST + @Path("/ext/save") + @Produces(MediaType.APPLICATION_JSON) + public String saveSalarySobExtRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobRangeExtSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySobRangeWrapper(user)::saveExtRange, saveParam); + } + + @POST + @Path("/range/ext/list") + @Produces(MediaType.APPLICATION_JSON) + public String listPage4Ext(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobRangeQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalarySobRangeWrapper(user)::listPage4Ext, queryParam); + } + /** * 删除薪资账套人员范围 */ @@ -204,6 +221,17 @@ public class SalarySobController { return new ResponseResult, String>(user).run(getSalarySobRangeWrapper(user)::delete, ids); } + /** + * 删除薪资账套人员范围 + */ + @POST + @Path("/range/ext/delete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteSalarySobExtRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getSalarySobRangeWrapper(user)::deleteSalarySobExtRange, ids); + } + /*** * @description 下载薪资账套人员范围导入模板 * @return Response diff --git a/src/com/engine/salary/web/TaxAgentController.java b/src/com/engine/salary/web/TaxAgentController.java index 161426750..a175685f9 100644 --- a/src/com/engine/salary/web/TaxAgentController.java +++ b/src/com/engine/salary/web/TaxAgentController.java @@ -270,6 +270,15 @@ public class TaxAgentController { return new ResponseResult, String>(user).run(getTaxAgentWrapper(user)::deleteRange, ids); } + //删除外部人员范围 + @POST + @Path("/range/ext/delete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteExtRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getTaxAgentWrapper(user)::deleteExtRange, ids); + } + /** * 下载人员范围导入模板 * diff --git a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java index dbc24da12..710d21b56 100644 --- a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java @@ -2,7 +2,9 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.SalarySobExtRangePO; import com.engine.salary.entity.salarysob.dto.SalarySobRangeListDTO; +import com.engine.salary.entity.salarysob.param.SalarySobRangeExtSaveParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeImportParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeQueryParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeSaveParam; @@ -68,6 +70,19 @@ public class SalarySobRangeWrapper extends Service { getSalarySobRangeService(user).save(saveParam); } + /** + * 保存 + * + * @param saveParam 保存参数 + */ + public void saveExtRange(SalarySobRangeExtSaveParam saveParam) { + getSalarySobRangeService(user).saveExtRange(saveParam); + } + + public PageInfo listPage4Ext(SalarySobRangeQueryParam param) { + return getSalarySobRangeService(user).listPage4Ext(param); + } + /** * 删除 * @@ -77,6 +92,10 @@ public class SalarySobRangeWrapper extends Service { getSalarySobRangeService(user).deleteByIds(ids); } + public void deleteSalarySobExtRange(Collection ids) { + getSalarySobRangeService(user).deleteSalarySobExtRange(ids); + } + /*** * @description 下载薪资账套人员范围导入模板 * @return XSSFWorkbook diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index 9ca28c641..4040f4476 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -357,6 +357,11 @@ public class TaxAgentWrapper extends Service { return StringUtils.EMPTY; } + public void deleteExtRange(Collection ids) { + + getTaxAgentManageRangeService(user).deleteExtRange(ids); + } + /** * 删除管理范围 * @@ -450,4 +455,5 @@ public class TaxAgentWrapper extends Service { } + }