港湾审批流程

This commit is contained in:
Harryxzy 2023-12-11 11:35:21 +08:00
parent eb5c5c1b26
commit 6c8aded0da
10 changed files with 136 additions and 3 deletions

View File

@ -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<SalarySobPO> salarySobs,
List<DataCollectionEmployee> employeeComInfos,
List<SalaryAcctEmployeeCountDTO> salaryAcctEmployeeCountDTOS,
List<SalarySendCheckDTO> salarySendCheckResult) {
List<SalarySendCheckDTO> salarySendCheckResult,
Map<String, String> workflowStatusMap) {
if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) {
return Collections.emptyList();
}
@ -55,6 +57,15 @@ public class SalaryAcctRecordBO {
Map<Long, Boolean> 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());

View File

@ -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<WeaTableOperate> operate;
}

View File

@ -16,4 +16,7 @@ public class SalaryAcctRecordReAccountParam {
@DataCheck(require = true, message = "参数错误薪资核算记录ID不能为空")
private Long salaryAcctRecordId;
// 审批流程id
private String approvalRequestId;
}

View File

@ -124,4 +124,7 @@ public class SalaryAcctRecordPO {
//税款所属期
LocalDateRange taxCycleDateRange;
// 审批流程id
String approvalRequestId;
}

View File

@ -0,0 +1,55 @@
package com.engine.salary.enums;
import java.util.Objects;
/**
* 审批流程的状态
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public enum ApprovalWorkflowStatusEnum implements BaseEnum<Integer> {
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;
}
}

View File

@ -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
</sql>
<!-- 查询全部 -->
@ -388,6 +389,9 @@
<if test="backCalcStatus != null">
back_calc_status=#{backCalcStatus},
</if>
<if test="approvalRequestId != null">
approval_request_id=#{approvalRequestId},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>

View File

@ -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<SalaryAcctRecordPO> listSome(SalaryAcctRecordPO po);
void setApprovalRequestId(SalaryAcctRecordReAccountParam param);
}

View File

@ -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<SalaryAcctRecordPO> 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);
}
}

View File

@ -402,6 +402,14 @@ public class SalaryAcctController {
return new ResponseResult<SalaryAcctResultQueryParam, Map<String, Object>>(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<SalaryAcctRecordReAccountParam, String>(user).run(getSalaryAcctRecordWrapper(user)::setApprovalRequestId, saveParam);
}
//合计行
@POST
@Path("/acctresult/sum")

View File

@ -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<SalaryAcctEmployeeCountDTO> salaryAcctEmployeeCountDTOS = getSalaryAcctEmployeeService(user).countBySalaryAcctRecordId(salaryAcctRecordIds);
// 查询工资单的查询情况
List<SalarySendCheckDTO> salarySendCheckResult = getSalarySendService(user).getSalarySendCheckResult(salaryAcctRecordIds);
// 查询审批流程状态
Set<String> requestIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getApprovalRequestId);
requestIds.remove(null);
// 获取流程状态 key:流程请求id value:流程状态
Map<String, String> workflowStatusMap = getWorkflowStatusMap(requestIds);
// 转换成列表dto
List<SalaryAcctRecordListDTO> salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult);
List<SalaryAcctRecordListDTO> salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, workflowStatusMap);
dtoPage.setList(salaryAcctRecordListDTOS);
}
// WeaTable<SalaryAcctRecordListDTO> weaTable = SalaryFormatUtil.<SalaryAcctRecordListDTO>getInstance().buildTable(SalaryAcctRecordListDTO.class, dtoPage);
@ -116,6 +124,19 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
return dtoPage;
}
private Map<String, String> getWorkflowStatusMap(Set<String> requestIds) {
Map<String, String> 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);
}
}