diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index f07aa7d36..249a66d17 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.enums.ApprovalWorkflowStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; @@ -45,7 +46,8 @@ public class SalaryAcctRecordBO { List salarySobs, List employeeComInfos, List salaryAcctEmployeeCountDTOS, - List salarySendCheckResult) { + List salarySendCheckResult, + Map workflowStatusMap) { if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) { return Collections.emptyList(); } @@ -55,6 +57,15 @@ public class SalaryAcctRecordBO { Map salarySendMap = SalaryEntityUtil.convert2Map(salarySendCheckResult, SalarySendCheckDTO::getSalaryAcctId, SalarySendCheckDTO::isSendFinished); return salaryAcctRecordPOS.stream() .map(salaryAcctRecordPO -> { + // 获取审批流程状态 + ApprovalWorkflowStatusEnum workflowStatusEnum; + if (StringUtils.isBlank(salaryAcctRecordPO.getApprovalRequestId()) || StringUtils.isBlank(workflowStatusMap.get(salaryAcctRecordPO.getApprovalRequestId())) ) { + workflowStatusEnum = ApprovalWorkflowStatusEnum.UNAPPROVED; + } else if (StringUtils.equals(workflowStatusMap.get(salaryAcctRecordPO.getApprovalRequestId()),"3")) { + workflowStatusEnum = ApprovalWorkflowStatusEnum.APPROVED; + } else { + workflowStatusEnum = ApprovalWorkflowStatusEnum.UNDER_APPROVAL; + } SalarySobPO salarySobPO = salarySobMap.get(salaryAcctRecordPO.getSalarySobId()); SalaryAcctRecordStatusEnum salaryAcctRecordStatusEnum = SalaryAcctRecordStatusEnum.parseByValue(salaryAcctRecordPO.getStatus()); // 只有未归档时可以"核算"、"删除"、"归档" @@ -90,6 +101,7 @@ public class SalaryAcctRecordBO { .accountantName(usernameMap.getOrDefault(salaryAcctRecordPO.getCreator(), StringUtils.EMPTY)) .updateTime(SalaryDateUtil.getFormatLocalDateTime(salaryAcctRecordPO.getUpdateTime())) .description(salaryAcctRecordPO.getDescription()) + .workFlowStatus(workflowStatusEnum.getDefaultLabel()) .operate(btnList) .build(); }).collect(Collectors.toList()); diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java index 59b4440eb..76b9747a0 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java @@ -70,6 +70,9 @@ public class SalaryAcctRecordListDTO { @TableTitle(title = "备注", dataIndex = "description", key = "description") private String description; + @TableTitle(title = "审批状态", dataIndex = "workFlowStatus", key = "workFlowStatus") + private String workFlowStatus; + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") private List operate; } diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordReAccountParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordReAccountParam.java index a73565f02..3a7fa56be 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordReAccountParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordReAccountParam.java @@ -16,4 +16,7 @@ public class SalaryAcctRecordReAccountParam { @DataCheck(require = true, message = "参数错误,薪资核算记录ID不能为空") private Long salaryAcctRecordId; + + // 审批流程id + private String approvalRequestId; } diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index 9587048ee..9b991f3a1 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -124,4 +124,7 @@ public class SalaryAcctRecordPO { //税款所属期 LocalDateRange taxCycleDateRange; + + // 审批流程id + String approvalRequestId; } diff --git a/src/com/engine/salary/enums/ApprovalWorkflowStatusEnum.java b/src/com/engine/salary/enums/ApprovalWorkflowStatusEnum.java new file mode 100644 index 000000000..a8a8f9526 --- /dev/null +++ b/src/com/engine/salary/enums/ApprovalWorkflowStatusEnum.java @@ -0,0 +1,55 @@ +package com.engine.salary.enums; + +import java.util.Objects; + +/** + * 审批流程的状态 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum ApprovalWorkflowStatusEnum implements BaseEnum { + + UNAPPROVED(1, "未审批", 0), + UNDER_APPROVAL(2, "审批中", 0), + APPROVED(3, "已审批", 0), + ; + + private int value; + + private String defaultLabel; + + private int labelId; + + ApprovalWorkflowStatusEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + public static ApprovalWorkflowStatusEnum parseByValue(Integer value) { + for (ApprovalWorkflowStatusEnum salaryAcctRecordStatusEnum : ApprovalWorkflowStatusEnum.values()) { + if (Objects.equals(salaryAcctRecordStatusEnum.getValue(), value)) { + return salaryAcctRecordStatusEnum; + } + } + return null; + } +} diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 4266b9277..82d0540c0 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -35,7 +35,8 @@ , t.delete_type , t.tenant_key , t.back_calc_status - ,t.lock_salary_item_ids + , t.lock_salary_item_ids + , t.approval_request_id @@ -388,6 +389,9 @@ back_calc_status=#{backCalcStatus}, + + approval_request_id=#{approvalRequestId}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 1ba3419bf..00d6199ab 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; +import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordReAccountParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; @@ -207,4 +208,6 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); + + void setApprovalRequestId(SalaryAcctRecordReAccountParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 8038d08f7..0646c09f5 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -7,6 +8,7 @@ import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.salaryBill.po.SalarySendPO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; +import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordReAccountParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; @@ -810,4 +812,15 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe public List listSome(SalaryAcctRecordPO po) { return getSalaryAcctRecordMapper().listSome(po); } + + @Override + public void setApprovalRequestId(SalaryAcctRecordReAccountParam param) { + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordMapper().getById(param.getSalaryAcctRecordId()); + if (ObjectUtil.isEmpty(salaryAcctRecordPO)) { + throw new SalaryRunTimeException("薪资核算记录不存在或已被删除"); + } + salaryAcctRecordPO.setApprovalRequestId(param.getApprovalRequestId()); + salaryAcctRecordPO.setUpdateTime(new Date()); + getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); + } } diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index ec0a8d0d6..afe0a70f3 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -402,6 +402,14 @@ public class SalaryAcctController { return new ResponseResult>(user).run(getSalaryAcctResultWrapper(user)::sumForWorkflow, param); } + @POST + @Path("/setApprovalRequestId") + @Produces(MediaType.APPLICATION_JSON) + public String setApprovalRequestId(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctRecordReAccountParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::setApprovalRequestId, saveParam); + } + //合计行 @POST @Path("/acctresult/sum") diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 9c17eaf78..ad00e51b2 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -9,6 +9,7 @@ import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordFormDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordListDTO; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; +import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordReAccountParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; @@ -23,7 +24,9 @@ import com.engine.salary.util.SalarySobUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.proxy.SalaryAcctRecordWrapperProxy; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import weaver.conn.RecordSet; import weaver.hrm.User; import java.util.*; @@ -90,9 +93,14 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord List salaryAcctEmployeeCountDTOS = getSalaryAcctEmployeeService(user).countBySalaryAcctRecordId(salaryAcctRecordIds); // 查询工资单的查询情况 List salarySendCheckResult = getSalarySendService(user).getSalarySendCheckResult(salaryAcctRecordIds); + // 查询审批流程状态 + Set requestIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getApprovalRequestId); + requestIds.remove(null); + // 获取流程状态 key:流程请求id value:流程状态 + Map workflowStatusMap = getWorkflowStatusMap(requestIds); // 转换成列表dto - List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult); + List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, workflowStatusMap); dtoPage.setList(salaryAcctRecordListDTOS); } // WeaTable weaTable = SalaryFormatUtil.getInstance().buildTable(SalaryAcctRecordListDTO.class, dtoPage); @@ -116,6 +124,19 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord return dtoPage; } + private Map getWorkflowStatusMap(Set requestIds) { + Map resut = new HashMap<>(); + RecordSet rs = new RecordSet(); + String sql = "select requestid,currentnodetype from workflow_requestbase where requestid in (" + StringUtils.join(requestIds,",") + ")"; + rs.execute(sql); + while (rs.next()) { + int requestid = rs.getInt("requestid"); + String currentnodetype = rs.getString("currentnodetype"); + resut.put(String.valueOf(requestid), currentnodetype); + } + return resut; + } + /** * @description 处理历史数据给薪资项目都增加个默认排序 * @return null @@ -258,4 +279,12 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord public void backCalculate(Long salaryAcctRecordId){ getSalaryAcctRecordService(user).backCalculate(salaryAcctRecordId); } + + /** + * 设置审批流程id + * @param param + */ + public void setApprovalRequestId(SalaryAcctRecordReAccountParam param) { + getSalaryAcctRecordService(user).setApprovalRequestId(param); + } }