|
|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package org.dromara.dms.service.impl;
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
|
@ -11,13 +12,14 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
|
|
import org.dromara.dms.domain.*;
|
|
|
|
|
import org.dromara.dms.domain.bo.DmsBillsMaintDetailBo;
|
|
|
|
|
import org.dromara.dms.domain.vo.DmsBillsMaintDetailVo;
|
|
|
|
|
import org.dromara.dms.domain.vo.DmsBillsMaintInstanceVo;
|
|
|
|
|
import org.dromara.dms.mapper.DmsBillsMaintDetailMapper;
|
|
|
|
|
import org.dromara.dms.mapper.DmsBillsMaintInstanceMapper;
|
|
|
|
|
import org.dromara.dms.service.IDmsBillsMaintDetailService;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保养工单明细Service业务层处理
|
|
|
|
|
@ -31,6 +33,8 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi
|
|
|
|
|
|
|
|
|
|
private final DmsBillsMaintDetailMapper baseMapper;
|
|
|
|
|
|
|
|
|
|
private final DmsBillsMaintInstanceMapper maintInstanceMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询保养工单明细
|
|
|
|
|
*
|
|
|
|
|
@ -98,6 +102,13 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi
|
|
|
|
|
.eq(bo.getMaintStatus() != null, DmsBillsMaintDetail::getMaintStatus, bo.getMaintStatus())
|
|
|
|
|
.eq(bo.getBeginTime() != null, DmsBillsMaintDetail::getBeginTime, bo.getBeginTime())
|
|
|
|
|
.eq(bo.getEndTime() != null, DmsBillsMaintDetail::getEndTime, bo.getEndTime())
|
|
|
|
|
//
|
|
|
|
|
// .eq(bo.getMaintInstanceId() != null, DmsBillsMaintDetail::getMaintInstanceId, bo.getMaintInstanceId())
|
|
|
|
|
// .eq(bo.getMachineId() != null, DmsBillsMaintDetail::getMachineId, bo.getMachineId())
|
|
|
|
|
// .eq(StringUtils.isNotBlank(bo.getBillsMaintCode()), DmsBillsMaintDetail::getBillsMaintCode, bo.getBillsMaintCode())
|
|
|
|
|
// .between(params.get("beginTime") != null && params.get("endTime") != null,
|
|
|
|
|
// DmsBillsMaintDetail::getCreateTime ,params.get("beginTime"), params.get("endTime"));
|
|
|
|
|
|
|
|
|
|
.orderByDesc(DmsBillsMaintDetail::getCreateTime);
|
|
|
|
|
return lqw;
|
|
|
|
|
}
|
|
|
|
|
@ -134,6 +145,8 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存前的数据校验
|
|
|
|
|
*
|
|
|
|
|
* @param entity 实体类数据
|
|
|
|
|
*/
|
|
|
|
|
private void validEntityBeforeSave(DmsBillsMaintDetail entity){
|
|
|
|
|
//TODO 做一些数据校验,如唯一约束
|
|
|
|
|
@ -151,6 +164,62 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi
|
|
|
|
|
if(isValid){
|
|
|
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
|
|
|
}
|
|
|
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
|
|
|
return baseMapper.deleteBatchIds(ids) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据设备ID查询维保工单列表(关联主表信息)
|
|
|
|
|
*
|
|
|
|
|
* @param machineId 设备ID
|
|
|
|
|
* @return 维保工单列表
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<DmsBillsMaintInstanceVo> getMaintInstancesByMachineId(Long machineId) {
|
|
|
|
|
// 查询该设备相关的所有维保明细
|
|
|
|
|
List<DmsBillsMaintDetail> details = baseMapper.selectList(
|
|
|
|
|
Wrappers.<DmsBillsMaintDetail>lambdaQuery()
|
|
|
|
|
.eq(DmsBillsMaintDetail::getMachineId, machineId)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (details.isEmpty()) {
|
|
|
|
|
return new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 提取唯一的工单ID
|
|
|
|
|
Set<Long> maintInstanceIds = details.stream()
|
|
|
|
|
.map(DmsBillsMaintDetail::getMaintInstanceId)
|
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
|
|
|
|
|
// 查询工单主表信息
|
|
|
|
|
List<DmsBillsMaintInstance> instances = maintInstanceMapper.selectBatchIds(maintInstanceIds)
|
|
|
|
|
.stream()
|
|
|
|
|
.sorted((a, b) -> b.getCreateTime().compareTo(a.getCreateTime()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
return instances.stream()
|
|
|
|
|
.map(instance -> MapstructUtils.convert(instance, DmsBillsMaintInstanceVo.class))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据设备ID统计维保工单数量
|
|
|
|
|
*
|
|
|
|
|
* @param machineId 设备ID
|
|
|
|
|
* @return 维保工单数量
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public Long countMaintInstancesByMachineId(Long machineId) {
|
|
|
|
|
// 查询该设备相关的所有维保明细
|
|
|
|
|
List<DmsBillsMaintDetail> details = baseMapper.selectList(
|
|
|
|
|
Wrappers.<DmsBillsMaintDetail>lambdaQuery()
|
|
|
|
|
.select(DmsBillsMaintDetail::getMaintInstanceId)
|
|
|
|
|
.eq(DmsBillsMaintDetail::getMachineId, machineId)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// 统计唯一的工单数量
|
|
|
|
|
return (long) details.stream()
|
|
|
|
|
.map(DmsBillsMaintDetail::getMaintInstanceId)
|
|
|
|
|
.collect(Collectors.toSet())
|
|
|
|
|
.size();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|