修改bbug
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.hrm.controller;
|
package com.ruoyi.hrm.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
@@ -53,6 +54,7 @@ public class HrmMyApplyController extends BaseController {
|
|||||||
private final HrmReimburseReqMapper reimburseReqMapper;
|
private final HrmReimburseReqMapper reimburseReqMapper;
|
||||||
private final HrmAppropriationReqMapper appropriationReqMapper;
|
private final HrmAppropriationReqMapper appropriationReqMapper;
|
||||||
private final HrmFlowInstanceMapper flowInstanceMapper;
|
private final HrmFlowInstanceMapper flowInstanceMapper;
|
||||||
|
private final ObjectMapper objectMapper;
|
||||||
|
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo<HrmMyApplyVo> list(String bizType, String status, String keyword, PageQuery pageQuery) {
|
public TableDataInfo<HrmMyApplyVo> list(String bizType, String status, String keyword, PageQuery pageQuery) {
|
||||||
@@ -119,8 +121,10 @@ public class HrmMyApplyController extends BaseController {
|
|||||||
);
|
);
|
||||||
for (HrmFlowInstance inst : insts) {
|
for (HrmFlowInstance inst : insts) {
|
||||||
if (inst.getStatus() == null) continue;
|
if (inst.getStatus() == null) continue;
|
||||||
|
// 合并多个流程实例:优先终态 (approved/rejected/withdrawn) > 进行中 (running/pending),
|
||||||
|
// 否则前面遗留的"running"会盖掉新的"approved",导致前端永远显示审批中
|
||||||
statusByKey.merge(bizType + "_" + inst.getBizId(), inst.getStatus(),
|
statusByKey.merge(bizType + "_" + inst.getBizId(), inst.getStatus(),
|
||||||
(oldS, newS) -> oldS);
|
(oldS, newS) -> _statusPriority(newS) > _statusPriority(oldS) ? newS : oldS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
for (HrmMyApplyVo v : all) {
|
for (HrmMyApplyVo v : all) {
|
||||||
@@ -129,6 +133,22 @@ public class HrmMyApplyController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int _statusPriority(String s) {
|
||||||
|
if (s == null) return 0;
|
||||||
|
switch (s) {
|
||||||
|
case "approved":
|
||||||
|
case "done":
|
||||||
|
return 3;
|
||||||
|
case "rejected":
|
||||||
|
case "withdrawn":
|
||||||
|
return 2;
|
||||||
|
case "running":
|
||||||
|
case "pending":
|
||||||
|
default:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean contains(HrmMyApplyVo v, String lower) {
|
private boolean contains(HrmMyApplyVo v, String lower) {
|
||||||
return Objects.toString(v.getTitle(), "").toLowerCase().contains(lower)
|
return Objects.toString(v.getTitle(), "").toLowerCase().contains(lower)
|
||||||
|| Objects.toString(v.getRemark(), "").toLowerCase().contains(lower)
|
|| Objects.toString(v.getRemark(), "").toLowerCase().contains(lower)
|
||||||
@@ -143,13 +163,14 @@ public class HrmMyApplyController extends BaseController {
|
|||||||
private HrmReimburseReqBo buildReimburseBo(Long empId, String status) { HrmReimburseReqBo bo = new HrmReimburseReqBo(); bo.setEmpId(empId); bo.setStatus(status); return bo; }
|
private HrmReimburseReqBo buildReimburseBo(Long empId, String status) { HrmReimburseReqBo bo = new HrmReimburseReqBo(); bo.setEmpId(empId); bo.setStatus(status); return bo; }
|
||||||
private HrmAppropriationReqBo buildAppropriationBo(Long empId, String status) { HrmAppropriationReqBo bo = new HrmAppropriationReqBo(); bo.setEmpId(empId); bo.setStatus(status); return bo; }
|
private HrmAppropriationReqBo buildAppropriationBo(Long empId, String status) { HrmAppropriationReqBo bo = new HrmAppropriationReqBo(); bo.setEmpId(empId); bo.setStatus(status); return bo; }
|
||||||
|
|
||||||
private List<HrmMyApplyVo> mapLeave(List<HrmLeaveReqVo> list, String nickName) { return list.stream().map(v -> toVo("leave", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime())).collect(Collectors.toList()); }
|
private List<HrmMyApplyVo> mapLeave(List<HrmLeaveReqVo> list, String nickName) { return list.stream().map(v -> toVo("leave", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime(), v)).collect(Collectors.toList()); }
|
||||||
private List<HrmMyApplyVo> mapTravel(List<HrmTravelReqVo> list, String nickName) { return list.stream().map(v -> toVo("travel", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime())).collect(Collectors.toList()); }
|
private List<HrmMyApplyVo> mapTravel(List<HrmTravelReqVo> list, String nickName) { return list.stream().map(v -> toVo("travel", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime(), v)).collect(Collectors.toList()); }
|
||||||
private List<HrmMyApplyVo> mapSeal(List<HrmSealReqVo> list, String nickName) { return list.stream().map(v -> toVo("seal", v.getBizId(), v.getEmpId(), nickName, v.getPurpose() != null ? v.getPurpose() : v.getRemark(), v.getStatus(), v.getCreateTime())).collect(Collectors.toList()); }
|
private List<HrmMyApplyVo> mapSeal(List<HrmSealReqVo> list, String nickName) { return list.stream().map(v -> toVo("seal", v.getBizId(), v.getEmpId(), nickName, v.getPurpose() != null ? v.getPurpose() : v.getRemark(), v.getStatus(), v.getCreateTime(), v)).collect(Collectors.toList()); }
|
||||||
private List<HrmMyApplyVo> mapReimburse(List<HrmReimburseReqVo> list, String nickName) { return list.stream().map(v -> toVo("reimburse", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime())).collect(Collectors.toList()); }
|
private List<HrmMyApplyVo> mapReimburse(List<HrmReimburseReqVo> list, String nickName) { return list.stream().map(v -> toVo("reimburse", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime(), v)).collect(Collectors.toList()); }
|
||||||
private List<HrmMyApplyVo> mapAppropriation(List<HrmAppropriationReqVo> list, String nickName) { return list.stream().map(v -> toVo("appropriation", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime())).collect(Collectors.toList()); }
|
private List<HrmMyApplyVo> mapAppropriation(List<HrmAppropriationReqVo> list, String nickName) { return list.stream().map(v -> toVo("appropriation", v.getBizId(), v.getEmpId(), nickName, v.getReason(), v.getStatus(), v.getCreateTime(), v)).collect(Collectors.toList()); }
|
||||||
|
|
||||||
private HrmMyApplyVo toVo(String bizType, Long bizId, Long empId, String nickName, String title, String status, java.util.Date createTime) {
|
@SuppressWarnings("unchecked")
|
||||||
|
private HrmMyApplyVo toVo(String bizType, Long bizId, Long empId, String nickName, String title, String status, java.util.Date createTime, Object source) {
|
||||||
HrmMyApplyVo vo = new HrmMyApplyVo();
|
HrmMyApplyVo vo = new HrmMyApplyVo();
|
||||||
vo.setBizType(bizType);
|
vo.setBizType(bizType);
|
||||||
vo.setBizId(bizId);
|
vo.setBizId(bizId);
|
||||||
@@ -158,6 +179,9 @@ public class HrmMyApplyController extends BaseController {
|
|||||||
vo.setTitle(title);
|
vo.setTitle(title);
|
||||||
vo.setStatus(status);
|
vo.setStatus(status);
|
||||||
vo.setCreateTime(createTime);
|
vo.setCreateTime(createTime);
|
||||||
|
if (source != null) {
|
||||||
|
vo.setBizData(objectMapper.convertValue(source, Map.class));
|
||||||
|
}
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class HrmMyApplyVo implements Serializable {
|
public class HrmMyApplyVo implements Serializable {
|
||||||
@@ -21,4 +22,5 @@ public class HrmMyApplyVo implements Serializable {
|
|||||||
private Date endTime;
|
private Date endTime;
|
||||||
private Date actualEndTime;
|
private Date actualEndTime;
|
||||||
private String remark;
|
private String remark;
|
||||||
|
private Map<String, Object> bizData;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,7 +138,28 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getRowTitle (row) {
|
getRowTitle (row) {
|
||||||
return row.title || row.remark || '-'
|
const t = (row.title || row.remark || '').trim()
|
||||||
|
if (t) return t
|
||||||
|
return this.summarizeBiz(row) || '-'
|
||||||
|
},
|
||||||
|
summarizeBiz (row) {
|
||||||
|
const b = row.bizData || {}
|
||||||
|
switch (row.bizType) {
|
||||||
|
case 'leave': {
|
||||||
|
const dur = b.hours ? `${b.hours}h` : ''
|
||||||
|
return [b.leaveType || '请假', dur, b.reason].filter(Boolean).join(' · ')
|
||||||
|
}
|
||||||
|
case 'travel':
|
||||||
|
return [b.travelType || '出差', b.destination, b.reason].filter(Boolean).join(' · ')
|
||||||
|
case 'seal':
|
||||||
|
return [b.sealType || '用印', b.purpose].filter(Boolean).join(' · ')
|
||||||
|
case 'reimburse':
|
||||||
|
return [b.reimburseType || '报销', b.totalAmount != null ? '¥' + b.totalAmount : null, b.reason].filter(Boolean).join(' · ')
|
||||||
|
case 'appropriation':
|
||||||
|
return [b.appropriationType || '拨款', b.amount != null ? '¥' + b.amount : null, b.reason].filter(Boolean).join(' · ')
|
||||||
|
default:
|
||||||
|
return ''
|
||||||
|
}
|
||||||
},
|
},
|
||||||
isTravelCompleted (row) {
|
isTravelCompleted (row) {
|
||||||
if (!row || row.bizType !== 'travel') return false
|
if (!row || row.bizType !== 'travel') return false
|
||||||
|
|||||||
Reference in New Issue
Block a user