package com.qianwen.smartman.modules.cps.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Optional;
|
import java.util.stream.Collectors;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.support.Condition;
|
import com.qianwen.core.mp.support.Query;
|
import com.qianwen.core.secure.utils.AuthUtil;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.modules.cps.convert.MaintainProjectConvert;
|
import com.qianwen.smartman.modules.cps.entity.MaintainProject;
|
import com.qianwen.smartman.modules.cps.entity.MaintainProjectItem;
|
import com.qianwen.smartman.modules.cps.mapper.MaintainProjectMapper;
|
import com.qianwen.smartman.modules.cps.service.IMaintainProjectItemService;
|
import com.qianwen.smartman.modules.cps.service.IMaintainProjectService;
|
import com.qianwen.smartman.modules.cps.vo.MaintainPlanIdListVO;
|
import com.qianwen.smartman.modules.cps.vo.MaintainProjectAddVO;
|
import com.qianwen.smartman.modules.cps.vo.MaintainProjectItemVO;
|
import com.qianwen.smartman.modules.cps.vo.MaintainProjectUpdateVO;
|
import com.qianwen.smartman.modules.cps.vo.MaintainProjectVO;
|
import com.qianwen.smartman.modules.tpm.entity.MaintainPlan;
|
import com.qianwen.smartman.modules.tpm.enums.MaintainPlanStatusEnum;
|
import com.qianwen.smartman.modules.tpm.service.IMaintainPlanService;
|
|
@Service
|
public class MaintainProjectServiceImpl extends ServiceImpl<MaintainProjectMapper, MaintainProject> implements IMaintainProjectService {
|
@Autowired
|
private IMaintainProjectItemService maintainProjectItemService;
|
@Autowired
|
@Lazy
|
private IMaintainPlanService maintainPlanService;
|
|
|
@Override
|
@Transactional(rollbackFor = {Exception.class})
|
public MaintainProject createMaintainProject(MaintainProjectAddVO maintainProjectAddVO) {
|
if (checkCodeIsExist(maintainProjectAddVO.getCode(), null)) {
|
throw new ServiceException(MessageUtils.message("cps.common.duplicate.code.can.not.add", new Object[0]));
|
}
|
MaintainProject maintainProject = MaintainProjectConvert.INSTANCE.convert(maintainProjectAddVO);
|
save(maintainProject);
|
return maintainProject;
|
}
|
|
@Override
|
@Transactional(rollbackFor = {Exception.class})
|
public MaintainProject editMaintainProject(MaintainProjectUpdateVO maintainProjectUpdateVO) {
|
MaintainProject byId = (MaintainProject) getById(maintainProjectUpdateVO.getId());
|
if (!byId.getCode().equals(maintainProjectUpdateVO.getCode()) || !byId.getName().equals(maintainProjectUpdateVO.getName())) {
|
throw new ServiceException(MessageUtils.message("cps.tpm.code.or.name.not.match.id", new Object[0]));
|
}
|
if (checkCodeIsExist(maintainProjectUpdateVO.getCode(), maintainProjectUpdateVO.getId())) {
|
throw new ServiceException(MessageUtils.message("cps.common.duplicate.code.can.not.edit", new Object[0]));
|
}
|
MaintainProject maintainProject = MaintainProjectConvert.INSTANCE.convert(maintainProjectUpdateVO);
|
updateById(maintainProject);
|
return maintainProject;
|
}
|
|
@Override
|
public MaintainProjectVO queryMaintainProject(Long id) {
|
MaintainProject maintainProject = (MaintainProject) getById(id);
|
if (maintainProject == null) {
|
throw new ServiceException(MessageUtils.message("cps.common.the.current.object.does.not.exist", new Object[0]));
|
}
|
MaintainProjectVO maintainProjectVo = MaintainProjectConvert.INSTANCE.convert(maintainProject);
|
List<MaintainProjectItemVO> maintainProjectItemVoList = this.maintainProjectItemService.getMaintainProjectItemVoByProjectId(maintainProject.getId(), AuthUtil.getTenantId());
|
maintainProjectVo.setMaintainProjectItemVoList(maintainProjectItemVoList);
|
return maintainProjectVo;
|
}
|
|
@Override
|
public List<MaintainProjectVO> queryMaintainProjectList(Long deviceTypeId) {
|
List<MaintainProject> list = list(Wrappers.<MaintainProject>query().lambda()
|
.eq(MaintainProject::getDeviceTypeId, deviceTypeId)
|
.eq(Func.isNotEmpty(AuthUtil.getTenantId()), MaintainProject::getTenantId, AuthUtil.getTenantId()));
|
/*List<MaintainProject> list = list(((LambdaQueryWrapper) Wrappers.query().lambda().eq((v0) -> {
|
return v0.getDeviceTypeId();
|
}, deviceTypeId)).eq(Func.isNotEmpty(AuthUtil.getTenantId()), (v0) -> {
|
return v0.getTenantId();
|
}, AuthUtil.getTenantId()));*/
|
return MaintainProjectConvert.INSTANCE.convert(list);
|
}
|
|
@Override
|
public IPage<MaintainProjectVO> queryMaintainProjectListPage(Long deviceTypeId, Query query) {
|
|
//MaintainProject d;d.getDeviceTypeName()
|
IPage<MaintainProject> pages = page(Condition.getPage(query), Wrappers.<MaintainProject>query().lambda()
|
.eq(Func.isNotEmpty(AuthUtil.getTenantId()), MaintainProject::getTenantId, AuthUtil.getTenantId())
|
.and(Func.isNotEmpty(deviceTypeId), i -> i.like(MaintainProject::getDeviceTypeId, deviceTypeId))
|
|
.orderByAsc(MaintainProject::getCode));
|
|
return Optional.ofNullable(pages).map(p -> {
|
Page<MaintainProjectVO> page = new Page<>(p.getCurrent(), p.getSize(), p.getTotal());
|
page.setRecords(MaintainProjectConvert.INSTANCE.convert(p.getRecords()));
|
return page;
|
}).orElse(new Page<>());
|
}
|
|
@Override
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean deleteMaintainProject(Long id) {
|
removeById(id);
|
|
this.maintainProjectItemService.remove(Wrappers.<MaintainProjectItem>query().lambda().eq(MaintainProjectItem::getProjectId, id));
|
return true;
|
}
|
|
private boolean checkCodeIsExist(String code, Long id) {
|
//MaintainProject::getTenantId
|
List<MaintainProject> maintainProjectList = this.baseMapper.selectList(Wrappers.<MaintainProject>query().lambda()
|
.eq(Func.isNotEmpty(AuthUtil.getTenantId()), MaintainProject::getTenantId, AuthUtil.getTenantId())
|
.and(wrapper -> {
|
LambdaQueryWrapper<MaintainProject> lambdaQueryWrapper = wrapper.eq(MaintainProject::getCode, code);
|
}).notIn(Func.isNotEmpty(id), MaintainProject::getId, id));
|
return maintainProjectList != null && maintainProjectList.size() > 0;
|
}
|
|
private void deleteMaintainPlan(Long projectId) {
|
List<Integer> statusList = new ArrayList<>();
|
statusList.add(Integer.valueOf(MaintainPlanStatusEnum.T1.getType()));
|
statusList.add(Integer.valueOf(MaintainPlanStatusEnum.T2.getType()));
|
List<MaintainPlan> list = this.maintainPlanService.list(Wrappers.<MaintainPlan>query().lambda()
|
.in(MaintainPlan::getPlanStatus, statusList)
|
.eq(MaintainPlan::getProjectId, projectId));
|
/*
|
List<MaintainPlan> list = this.maintainPlanService.list((Wrapper) ((LambdaQueryWrapper) Wrappers.query().lambda().in((v0) -> {
|
return v0.getPlanStatus();
|
}, statusList)).eq((v0) -> {
|
return v0.getProjectId();
|
}, projectId));*/
|
List<Long> planIdList = list.stream().map(MaintainPlan::getId).collect(Collectors.toList());
|
if (!planIdList.isEmpty()) {
|
MaintainPlanIdListVO maintainPlanIdListDTO = new MaintainPlanIdListVO();
|
maintainPlanIdListDTO.setIdList(planIdList);
|
this.maintainPlanService.deleteMaintainPlan(maintainPlanIdListDTO);
|
}
|
}
|
}
|