新购到货验收页面状态显示及状态筛选

This commit is contained in:
hayu 2025-11-10 22:47:09 +08:00
parent d5bec70961
commit 56407c53d0
4 changed files with 71 additions and 1 deletions

View File

@ -41,6 +41,8 @@ public class PurchaseCheckInfo extends BaseEntity {
@ApiModelProperty(value = "任务状态名称,未完成/已完成")
private String taskStatusName;
private String taskStatusText;
@Excel(name = "采购单号", sort = 2)
@ApiModelProperty(value = "采购单号")
private String code;

View File

@ -49,6 +49,8 @@ public class PurchaseQueryDto {
@ApiModelProperty(value = "外层任务状态")
private Integer taskStatus;
private String taskStatusText;
@ApiModelProperty(value = "关键字")
private String keyWord;

View File

@ -265,6 +265,10 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
continue;
}
// 任务状态判断逻辑
String taskStatus = calculateTaskStatus(purchaseCheckDetails);
purchaseInfo.setTaskStatusText(taskStatus);
// 过滤掉数量管理并且是待绑定状态或者驳回后待绑定状态的物资
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
!(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(o.getManageType()) &&
@ -421,6 +425,13 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
.filter(item -> containsKeyword(item, keyWord))
.collect(Collectors.toList());
}
String taskStatusText = purchaseQueryDto.getTaskStatusText();
if (!StringUtils.isBlank(taskStatusText)) {
purchaseCheckInfoResult = purchaseCheckInfoResult.stream()
.filter(item -> item.getTaskStatusText().contains(taskStatusText))
.collect(Collectors.toList());
}
}
return purchaseCheckInfoResult;
@ -1220,4 +1231,58 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
}
return count;
}
// 状态判断方法
private String calculateTaskStatus(List<PurchaseCheckDetails> details) {
if (details == null || details.isEmpty()) {
return "无明细数据"; // 或者根据业务需求返回默认状态
}
// 统计各种状态的数量
boolean hasStatus2 = false;
boolean hasStatus3 = false;
boolean hasStatus4 = false;
boolean hasStatus19 = false;
for (PurchaseCheckDetails detail : details) {
int status = detail.getStatus(); // 假设status是int类型
switch (status) {
case 2: hasStatus2 = true; break;
case 3: hasStatus3 = true; break;
case 4: hasStatus4 = true; break;
case 19: hasStatus19 = true; break;
}
}
// 根据规则判断任务状态
if (hasStatus19 && !hasStatus2 && !hasStatus3 && !hasStatus4) {
// 所有状态都是19
return "已入库";
} else if (hasStatus4 && !hasStatus2 && !hasStatus3 && !hasStatus19) {
// 所有状态都是4
return "待入库";
} else if (hasStatus2 && !hasStatus3 && !hasStatus4 && !hasStatus19) {
// 所有状态都是2
return "待验收";
} else if (hasStatus3 && !hasStatus2 && !hasStatus4 && !hasStatus19) {
// 所有状态都是3
return "待绑定";
} else if (hasStatus4 && hasStatus19 && !hasStatus2 && !hasStatus3) {
// 有4和19没有2和3
return "入库中";
} else if (hasStatus3 && hasStatus4 && hasStatus19) {
// 有3419
return "待绑定、入库中";
} else if (hasStatus3 && hasStatus4 && !hasStatus19) {
// 有3和4没有19
return "待绑定、待入库";
} else if (hasStatus3 && hasStatus19 && !hasStatus4) {
// 有3和19没有4
return "待绑定、已入库";
} else {
// 其他未明确覆盖的组合情况
return "未完成"; // 或者根据业务需求调整
}
}
}

View File

@ -44,12 +44,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select
pci.id, pci.task_id, pci.purchase_time, pci.arrival_time, pci.purchaser, pci.supplier_id, pci.tax_rate, pci.create_by,
pci.create_time, pci.update_by, pci.update_time, pci.remark, pci.company_id,
t.task_status, t.task_type, t.code, su.user_name as create_user_name, msi.supplier
t.task_status,sda.dict_label as taskStatusText, t.task_type, t.code, su.user_name as create_user_name, msi.supplier
from
purchase_check_info pci
left join tm_task t on t.task_id = pci.task_id
left join sys_user su ON pci.create_by = su.user_id
left join ma_supplier_info msi on pci.supplier_id = msi.supplier_id
LEFT JOIN sys_dict_data sda on sda.dict_value=t.task_status and sda.dict_type='purchase_task_status'
</sql>