From 7740241af8524414ee2f86e66903bf2a140c33cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 25 Mar 2026 15:27:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BE=E5=B7=9D=E6=B8=AF=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/wiki/二开/hrmSalaryBCG.properties | 2 + resource/wiki/二开/二开说明.md | 9 ++ .../salaryacct/bo/SalaryAcctRecordBO.java | 29 +++-- .../salarysob/bo/SalarySobDuplicateBO.java | 1 + .../bo/SalarySobItemAggregateBO.java | 1 + .../salarysob/dto/SalarySobItemDTO.java | 1 + .../salarysob/dto/SalarySobItemFormDTO.java | 1 + .../param/SalarySobItemSaveParam.java | 1 + .../entity/salarysob/po/SalarySobItemPO.java | 4 + .../SalaryAcctRecordStatusEnum.java | 1 + .../mapper/salarysob/SalarySobItemMapper.xml | 15 ++- .../service/SalaryAcctRecordService.java | 3 + .../service/SalaryAcctSobConfigService.java | 14 +++ .../impl/SalaryAcctExcelServiceImpl.java | 8 ++ .../impl/SalaryAcctRecordServiceImpl.java | 102 +++++++++++++++++- .../impl/SalaryAcctResultServiceImpl.java | 9 +- .../impl/SalaryAcctSobConfigServiceImpl.java | 34 ++++++ .../SalaryComparisonResultServiceImpl.java | 4 + .../impl/SalarySobItemServiceImpl.java | 24 +++-- .../salary/web/SalaryAcctController.java | 26 +++++ .../wrapper/SalaryAcctRecordWrapper.java | 18 +++- 21 files changed, 285 insertions(+), 22 deletions(-) create mode 100644 resource/wiki/二开/hrmSalaryBCG.properties diff --git a/resource/wiki/二开/hrmSalaryBCG.properties b/resource/wiki/二开/hrmSalaryBCG.properties new file mode 100644 index 000000000..556de07e4 --- /dev/null +++ b/resource/wiki/二开/hrmSalaryBCG.properties @@ -0,0 +1,2 @@ +zyRoleId=29 +jlRoleId=30 \ No newline at end of file diff --git a/resource/wiki/二开/二开说明.md b/resource/wiki/二开/二开说明.md index e69de29bb..3882e58b2 100644 --- a/resource/wiki/二开/二开说明.md +++ b/resource/wiki/二开/二开说明.md @@ -0,0 +1,9 @@ +原始需求: +1、由人事专员正常进行薪资审核,审核过程中人事专员无法对具体几个薪资项进行核算如:经理基金项、实发工资等(无法核算,也无法查看指定薪资项)。 +2、人事审核完成后指定人员可在薪资核算页面查看到由人事专员核算完成的薪资内容(状态为:待审批),指定人员可对该核算信息进行审批,审批时可针对人事专员审核节点无法核算的薪资项进行核算,审批完成后更新薪资核算状态为已归档。 +---------------------------------------------------------------------------------------------------------------------------------------- +开发点: +1、新增人事专员角色(可核算未隐藏的项目),人事经理角色(可核算所有新增项目) 2 +2、支持配置对于人事专员隐藏的项目 2 +3、新增审批按钮,人事专员提交审批后,薪资核算状态改为“待审批” 1 +4、人事经理审批,提交审批核算状态改为归档 1 \ No newline at end of file diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index 408da743f..5a27794dd 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -50,7 +50,10 @@ public class SalaryAcctRecordBO { List taxAgentPOS, List needApprovalSalarySobIds, boolean approvalCanFile, - boolean approvalCanReCalc) { + boolean approvalCanReCalc, + boolean zy, + boolean jl + ) { if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) { return Collections.emptyList(); } @@ -69,20 +72,30 @@ public class SalaryAcctRecordBO { List btnList = new ArrayList<>(); if (SalaryAcctRecordStatusEnum.NOT_ARCHIVED == salaryAcctRecordStatusEnum) { btnList.add(new WeaTableOperate("核算", null, "0")); - if(!Objects.equals(salaryAcctRecordPO.getBackCalcStatus(),NumberUtils.INTEGER_ONE)){ + if (!Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), NumberUtils.INTEGER_ONE)) { btnList.add(new WeaTableOperate("删除", null, "1")); } - if (approvalCanFile || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { - btnList.add(new WeaTableOperate("归档", null, "2")); +// if (approvalCanFile || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { +// btnList.add(new WeaTableOperate("归档", null, "2")); +// } + } else if (SalaryAcctRecordStatusEnum.APPROVAL == salaryAcctRecordStatusEnum) { + if (zy) { + btnList.add(new WeaTableOperate("查看", null, "3")); } - } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){ + if(jl){ + btnList.add(new WeaTableOperate("核算", null, "0")); + if (approvalCanFile || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { + btnList.add(new WeaTableOperate("归档", null, "2")); + } + } + } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && (salarySendMap.get(salaryAcctRecordPO.getId()) == Boolean.TRUE)) { btnList.add(new WeaTableOperate("查看", null, "3")); if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { btnList.add(new WeaTableOperate("重新核算", null, "4")); } - if(salaryAcctRecordPO.getBackCalcStatus() == null || salaryAcctRecordPO.getBackCalcStatus() == NumberUtils.INTEGER_ZERO) { - btnList.add(new WeaTableOperate("回算", null, "5")); - } +// if (salaryAcctRecordPO.getBackCalcStatus() == null || salaryAcctRecordPO.getBackCalcStatus() == NumberUtils.INTEGER_ZERO) { +// btnList.add(new WeaTableOperate("回算", null, "5")); +// } } else { btnList.add(new WeaTableOperate("查看", null, "3")); if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java index 6a64f4912..a6c47f729 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java @@ -191,6 +191,7 @@ public class SalarySobDuplicateBO { .description(salarySobItem.getDescription()) .canDelete(salarySobItem.getCanDelete()) .itemHide(salarySobItem.getItemHide()) + .zyHide(salarySobItem.getZyHide()) .roundingMode(salarySobItem.getRoundingMode()) .pattern(salarySobItem.getPattern()) .valueType(salarySobItem.getValueType()) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 2daccbec2..951606c9b 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -135,6 +135,7 @@ public class SalarySobItemAggregateBO { .pattern(Optional.ofNullable(salarySobItemPO.getPattern()).orElse(salaryItemPO.getPattern())) .name(salaryItemPO.getName()) .itemHide(salarySobItemPO.getItemHide()) + .zyHide(salarySobItemPO.getZyHide()) .formulaId(salarySobItemPO.getFormulaId()) .formulaContent(formulaMap.getOrDefault(salarySobItemPO.getFormulaId(), "")) .originFormulaContent(valueType == SalaryValueTypeEnum.FORMULA.getValue() ? formulaMap.getOrDefault(salarySobItemPO.getFormulaId(), "") : "") diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index 9429f1522..46cd33de4 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -99,6 +99,7 @@ public class SalarySobItemDTO { //该分类是否隐藏(0不隐藏,1隐藏) @JsonSerialize(using = ToStringSerializer.class) private Long itemHide; + private Integer zyHide; /** * 进位规则 diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java index 890f52ee9..dcfb80ae4 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -38,6 +38,7 @@ public class SalarySobItemFormDTO { //核算时隐藏") @DataCheck(require = true, runtime = {RuntimeTypeEnum.UPDATE}, message = "核算时隐藏不允许为空") private Integer itemHide; + private Integer zyHide; //字段类型 /** diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java index f0e9c4004..7dfe3eea5 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java @@ -75,6 +75,7 @@ public class SalarySobItemSaveParam { //该分类是否隐藏(0不隐藏,1隐藏) private Long itemHide; + private Integer zyHide; private Boolean canDelete; diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java index 011f992c4..f5363ad15 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java @@ -117,6 +117,9 @@ public class SalarySobItemPO { @XStreamAsAttribute private Long itemHide; + //百川二开,是否人员专员隐藏 0否 1是 + private Integer zyHide; + /** * 默认值 */ @@ -194,6 +197,7 @@ public class SalarySobItemPO { ", pattern=" + pattern + ", valueType=" + valueType + ", itemHide=" + itemHide + + ", zyHide=" + zyHide + ", defaultValue=" + defaultValue + '}'; } diff --git a/src/com/engine/salary/enums/salaryaccounting/SalaryAcctRecordStatusEnum.java b/src/com/engine/salary/enums/salaryaccounting/SalaryAcctRecordStatusEnum.java index c8e56cb1d..3e65f0f34 100644 --- a/src/com/engine/salary/enums/salaryaccounting/SalaryAcctRecordStatusEnum.java +++ b/src/com/engine/salary/enums/salaryaccounting/SalaryAcctRecordStatusEnum.java @@ -15,6 +15,7 @@ import java.util.Objects; public enum SalaryAcctRecordStatusEnum implements BaseEnum { NOT_ARCHIVED(1, "未归档", 91870), + APPROVAL(4, "待审批", 91862), ARCHIVED(2, "已归档", 91862), DECLARED(3, "已申报", 100119), ; diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 03b5a240f..5bff650f3 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -16,6 +16,7 @@ + @@ -41,6 +42,7 @@ , t.value_type , t.default_value , t.item_hide + , t.zy_hide @@ -171,6 +173,7 @@ pattern=#{pattern}, value_type=#{valueType}, item_hide=#{itemHide}, + zy_hide=#{zyHide}, default_value=#{defaultValue}, WHERE id = #{id} AND delete_type = 0 @@ -232,6 +235,9 @@ item_hide=#{itemHide}, + + zy_hide=#{zyHide}, + WHERE id = #{id} AND delete_type = 0 @@ -278,7 +284,7 @@ INSERT INTO hrsa_salary_sob_item(salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,item_hide,default_value) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,item_hide,zy_hide,default_value) VALUES ( @@ -298,13 +304,14 @@ #{item.pattern}, #{item.valueType}, #{item.itemHide}, + #{item.zyHide}, #{item.defaultValue} ) INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,item_hide,default_value) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,item_hide,zy_hide,default_value) select @@ -324,6 +331,7 @@ #{item.pattern,jdbcType=INTEGER}, #{item.valueType,jdbcType=INTEGER}, #{item.itemHide,jdbcType=DOUBLE}, + #{item.zyHide,jdbcType=INTEGER}, #{item.defaultValue,jdbcType=VARCHAR} from dual @@ -331,7 +339,7 @@ INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,item_hide,default_value) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,item_hide,zy_hide,default_value) VALUES ( #{item.salarySobId}, @@ -350,6 +358,7 @@ #{item.pattern}, #{item.valueType}, #{item.itemHide}, + #{item.zyHide}, #{item.defaultValue} ) diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 603e2a164..33078bcbb 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -146,6 +146,9 @@ public interface SalaryAcctRecordService { * @param id 薪资核算记录的id */ void file(Long id); + String role(Long id); + void approval(Long id); + void refuse(Long id); /** * 重新核算(并不是重新执行公式,而是变更薪资核算记录状态为未归档,并且撤回生成的工资单) diff --git a/src/com/engine/salary/service/SalaryAcctSobConfigService.java b/src/com/engine/salary/service/SalaryAcctSobConfigService.java index 43f64aa8b..fa025e120 100644 --- a/src/com/engine/salary/service/SalaryAcctSobConfigService.java +++ b/src/com/engine/salary/service/SalaryAcctSobConfigService.java @@ -83,4 +83,18 @@ public interface SalaryAcctSobConfigService{ * @param salaryAcctRecordIds */ void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds); + + /** + * 是否是专员 + * @param uid + * @return + */ + boolean isZY(Long uid); + + /** + * 是否是经理 + * @param uid + * @return + */ + boolean isJL(Long uid); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 14f37ceae..cdcf60d3f 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -524,6 +524,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // 查询薪资核算记录所用的薪资账套的薪资项目副本 List salarySobItems = config.getSalarySobItems(); salarySobItems = salarySobItems.stream().filter(salarySobItemPO -> salarySobItemPO.getItemHide() == null || salarySobItemPO.getItemHide() == 0).collect(Collectors.toList()); + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + if(zy){ + salarySobItems = salarySobItems.stream().filter(salarySobItemPO -> salarySobItemPO.getZyHide() == null || salarySobItemPO.getZyHide() == 0).collect(Collectors.toList()); + } Set salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId); // 查询薪资项目 List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); @@ -619,6 +623,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // 查询薪资核算记录所用的薪资账套的薪资项目副本 List salarySobItems = salaryAcctConfig.getSalarySobItems(); salarySobItems = salarySobItems.stream().filter(salarySobItemPO -> salarySobItemPO.getItemHide() == null || salarySobItemPO.getItemHide() == 0).collect(Collectors.toList()); + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + if(zy){ + salarySobItems = salarySobItems.stream().filter(salarySobItemPO -> salarySobItemPO.getZyHide() == null || salarySobItemPO.getZyHide() == 0).collect(Collectors.toList()); + } Set salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId); // 查询薪资项目 List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 6f16c59b1..e4f3118aa 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -89,6 +89,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } + private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) { + return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user); + } + // private SalaryCheckResultService salaryCheckResultService; // // private SalaryCheckResultDetailService salaryCheckResultDetailService; @@ -218,6 +222,16 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe List salaryAcctRecordPOS = getSalaryAcctRecordMapper().listSome(po); salaryAcctRecordPOS = getAuthService(user).auth(salaryAcctRecordPOS, AuthFilterTypeEnum.DATA_OPT, SalaryAcctRecordPO.class); + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + boolean jl = getSalaryAcctSobConfigService(user).isJL((long) user.getUID()); + if (zy) { + //百川二开,人事专员能看到所有记录,但只能修改”未归档“状态的记录 + + } else if (jl) { + //百川二开,人事经理只能看到“待审批”的记录 + salaryAcctRecordPOS = salaryAcctRecordPOS.stream().filter(e -> !Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())).collect(Collectors.toList()); + } + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctRecordPOS, SalaryAcctRecordPO.class); @@ -345,7 +359,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe //获取账套所属个税扣缴义务人的核算记录 SalarySobPO salarySobPO = getSalarySobService(user).getById(saveParam.getSalarySobId()); List taxAgentIds = salarySobPO.getTaxAgentIds(); - taxAgentIds.forEach(taxAgentId->{ + taxAgentIds.forEach(taxAgentId -> { //查询扣缴义务人下的所有账套 List salarySobPOS = getSalarySobService(user).listByTaxAgentId(taxAgentId); Set salarySobIds = SalaryEntityUtil.properties(salarySobPOS, SalarySobPO::getId); @@ -578,6 +592,92 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); } + @Override + public String role(Long id) { + + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getById(id); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + if (zy) { + return "zy"; + } + + boolean jl = getSalaryAcctSobConfigService(user).isJL((long) user.getUID()); + if (jl) { + return "zy"; + } + return ""; + + } + + @Override + public void approval(Long id) { + + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getById(id); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + + List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(id)); + if (CollectionUtils.isEmpty(salaryAcctResultPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99691, "尚未核算,请先核算后再提交审批")); + } + // 更新薪资核算记录的状态 + salaryAcctRecordPO.setStatus(SalaryAcctRecordStatusEnum.APPROVAL.getValue()); + salaryAcctRecordPO.setUpdateTime(new Date()); + getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); + + // 记录日志 + String targetName = getLogTargetNameById(id); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId("" + salaryAcctRecordPO.getId()); + loggerContext.setTargetName(targetName); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "提交薪资审批")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "提交薪资审批") + ": " + targetName); + loggerContext.setNewValues(salaryAcctRecordPO); + SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); + + } + + @Override + public void refuse(Long id) { + + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getById(id); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + + List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(id)); + if (CollectionUtils.isEmpty(salaryAcctResultPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99691, "尚未核算,请先核算后再退回")); + } + // 更新薪资核算记录的状态 + salaryAcctRecordPO.setStatus(SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()); + salaryAcctRecordPO.setUpdateTime(new Date()); + getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); + + // 记录日志 + String targetName = getLogTargetNameById(id); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId("" + salaryAcctRecordPO.getId()); + loggerContext.setTargetName(targetName); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "退回薪资审批")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "退回薪资审批") + ": " + targetName); + loggerContext.setNewValues(salaryAcctRecordPO); + SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); + + } + @Override public void reCalculate(Long salaryAcctRecordId) { // 查询薪资核算记录 diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 581e64149..42f5a752c 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1,6 +1,8 @@ package com.engine.salary.service.impl; import cn.hutool.core.collection.CollUtil; +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.hrmelog.entity.dto.LoggerContext; @@ -68,6 +70,8 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.util.StopWatch; import weaver.general.BaseBean; import weaver.hrm.User; +import weaver.hrm.roles.RolesComInfo; +import weaver.workflow.request.WorkflowRequestMessage; import java.math.BigDecimal; import java.util.*; @@ -280,7 +284,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List salarySobItemPOS = salaryAcctConfig.getSalarySobItems(); // 过滤薪资项目 salarySobItemPOS = salarySobItemPOS.stream().filter(item -> item.getItemHide() == null || item.getItemHide().equals(0L)).collect(Collectors.toList()); - + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + if(zy){ + salarySobItemPOS = salarySobItemPOS.stream().filter(salarySobItemPO -> salarySobItemPO.getZyHide() == null || salarySobItemPO.getZyHide() == 0).collect(Collectors.toList()); + } // 查询已发补发薪资项目 List salarySobBackItemPOList = Collections.emptyList(); List salaryBackItemPOS = Collections.emptyList(); diff --git a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java index e06e5d07d..4a469d755 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java @@ -1,5 +1,8 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.StrUtil; +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.cache.SalaryCacheKey; @@ -19,9 +22,11 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; import weaver.hrm.User; import java.util.*; +import java.util.stream.Collectors; /** * 薪资核算的账套副本配置 @@ -197,4 +202,33 @@ public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcc public void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds) { getSalaryAcctSobConfigMapper().deleteBySalaryAcctRecordIds(salaryAcctRecordIds); } + + + + @Override + public boolean isZY(Long uid) { + BaseBean bb = new BaseBean(); + String zyRoleId = bb.getPropValue("hrmSalaryBCG", "zyRoleId"); + + HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); + String roleMemberids = hrmCommonService.getRoleMemberIds(Integer.parseInt(zyRoleId), "0"); + if (StrUtil.isNotBlank(roleMemberids)) { + return Arrays.stream(roleMemberids.split(",")).map(Long::valueOf).collect(Collectors.toList()).contains(uid); + } + return false; + } + + @Override + public boolean isJL(Long uid) { + BaseBean bb = new BaseBean(); + String jlRoleId = bb.getPropValue("hrmSalaryBCG", "jlRoleId"); + + HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); + String roleMemberids = hrmCommonService.getRoleMemberIds(jlRoleId, "0"); + if (StrUtil.isNotBlank(roleMemberids)) { + return Arrays.stream(roleMemberids.split(",")).map(Long::valueOf).collect(Collectors.toList()).contains(uid); + } + return false; + } + } diff --git a/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java index 2fd26a4b3..bcdbb2638 100644 --- a/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java @@ -161,6 +161,10 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary List salarySobItemPOS = salaryAcctConfig.getSalarySobItems(); // 过滤在账套中隐藏的薪资项目 salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide() == 0).collect(Collectors.toList()); + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + if(zy){ + salarySobItemPOS = salarySobItemPOS.stream().filter(salarySobItemPO -> salarySobItemPO.getZyHide() == null || salarySobItemPO.getZyHide() == 0).collect(Collectors.toList()); + } // 查询公式详情 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 9f68de3ae..bd13e7660 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -216,6 +216,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe List salarySobItemPOS = salaryAcctConfig.getSalarySobItems(); if (hideItem) { salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide().equals(0L)).collect(Collectors.toList()); + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + if (zy) { + salarySobItemPOS = salarySobItemPOS.stream().filter(salarySobItemPO -> salarySobItemPO.getZyHide() == null || salarySobItemPO.getZyHide() == 0).collect(Collectors.toList()); + } } // 回算薪资项目 List salarySobBackItems = salaryAcctConfig.getSalarySobBackItems(); @@ -263,7 +267,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 查询薪资账套的薪资项目副本(已经过滤关闭分类显示按钮的薪资项目) List salarySobItemPOS = salaryAcctConfig.getSalarySobItems(); salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide().equals(0L)).collect(Collectors.toList()); - + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + if (zy) { + salarySobItemPOS = salarySobItemPOS.stream().filter(salarySobItemPO -> salarySobItemPO.getZyHide() == null || salarySobItemPO.getZyHide() == 0).collect(Collectors.toList()); + } // 回算薪资项目 List salarySobBackItems = Collections.emptyList(); if (isBackCalc) { @@ -389,7 +396,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe for (SalarySobItemSaveParam.SalarySobItemParam itemParam : itemGroupParam.getItems()) { SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); - SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(salarySobItemGroupId).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).build(); + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(salarySobItemGroupId).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).zyHide(itemParam.getZyHide()).build(); salarySobItems.add(salarySobItemPO); } } @@ -413,13 +420,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe //新增 for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) { SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); - SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(groupId).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).deleteType(NumberUtils.INTEGER_ZERO).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).build(); + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(groupId).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).deleteType(NumberUtils.INTEGER_ZERO).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).zyHide(itemParam.getZyHide()).build(); salarySobItems.add(salarySobItemPO); } //更新 for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); - SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().id(itemParam.getId()).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(groupId).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).build(); + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().id(itemParam.getId()).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(groupId).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).zyHide(itemParam.getZyHide()).build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); } @@ -446,13 +453,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) { SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); - SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(NumberUtils.LONG_ZERO).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).build(); + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).salaryItemId(itemParam.getSalaryItemId()).salarySobItemGroupId(NumberUtils.LONG_ZERO).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).zyHide(itemParam.getZyHide()).build(); salarySobItems.add(salarySobItemPO); } for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); - SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().id(itemParam.getId()).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).updateTime(now).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).build(); + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().id(itemParam.getId()).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).updateTime(now).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).zyHide(itemParam.getZyHide()).build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); } @@ -551,7 +558,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } salarySobItemPO.setFormula(formulaPO); } - if(SalaryEntityUtil.isNotNullOrEmpty(salarySobItemPO.getSalaryItemId())){ + if (SalaryEntityUtil.isNotNullOrEmpty(salarySobItemPO.getSalaryItemId())) { SalaryItemPO salaryItemPO = itemIdMap.get(salarySobItemPO.getSalaryItemId()); salarySobItemPO.setSalaryItem(salaryItemPO); } @@ -599,7 +606,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salarySobItemFormDTO .setId(salarySobItemPO.getId()) .setName(salaryItemPO.getName()) - .setItemHide(salarySobItemPO.getItemHide()==null?0:Integer.parseInt(salarySobItemPO.getItemHide().toString())) + .setItemHide(salarySobItemPO.getItemHide() == null ? 0 : Integer.parseInt(salarySobItemPO.getItemHide().toString())) + .setZyHide(salarySobItemPO.getZyHide() == null ? 0 : salarySobItemPO.getZyHide()) .setDataType(salaryItemPO.getDataType()) .setRoundingMode(salarySobItemPO.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode()) .setPattern(salarySobItemPO.getPattern() == null ? salaryItemPO.getPattern() : salarySobItemPO.getPattern()) diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 57483fd40..ca2aa9af2 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -141,6 +141,32 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::reCalculate, param.getSalaryAcctRecordId()); } + @GET + @Path("/role") + @Produces(MediaType.APPLICATION_JSON) + public String role(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::role, id); + } + + //提交审批 + @GET + @Path("/approval") + @Produces(MediaType.APPLICATION_JSON) + public String approval(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::approval, id); + } + + //退回 + @GET + @Path("/refuse") + @Produces(MediaType.APPLICATION_JSON) + public String refuse(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::refuse, id); + } + //薪资核算 @POST @Path("/batAccounting") diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index c96bf0a5d..fc7378c10 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -56,6 +56,7 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord private SalaryAcctRecordService getSalaryAcctRecordService(User user) { return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } + private SalaryAcctResultWrapper getSalaryAcctResultWrapper(User user) { return ServiceUtil.getService(SalaryAcctResultWrapper.class, user); } @@ -151,8 +152,11 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord List taxAgentPOS = getTaxAgentService(user).listAll(); + boolean zy = getSalaryAcctSobConfigService(user).isZY((long) user.getUID()); + boolean jl = getSalaryAcctSobConfigService(user).isJL((long) user.getUID()); + // 转换成列表dto - List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS, needApprovalSalarySobIds, approvalCanFile, approvalCanReCalc); + List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS, needApprovalSalarySobIds, approvalCanFile, approvalCanReCalc, zy, jl); dtoPage.setList(salaryAcctRecordListDTOS); // 规则设置中是否开启审批功能,默认关闭 if (CollectionUtils.isEmpty(needApprovalSalarySobIds)) { @@ -276,6 +280,18 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord getSalaryAcctRecordService(user).file(id); } + public String role(Long id) { + return getSalaryAcctRecordService(user).role(id); + } + + public void approval(Long id) { + getSalaryAcctRecordService(user).approval(id); + } + + public void refuse(Long id) { + getSalaryAcctRecordService(user).refuse(id); + } + /** * 重新核算 *