package com.qianwen.smartman.modules.cps.service.impl;
|
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.base.BaseServiceImpl;
|
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.constant.CommonConstant;
|
import com.qianwen.smartman.common.enums.StatusType;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.modules.cps.convert.MaterialTypeConvert;
|
import com.qianwen.smartman.modules.cps.entity.MaterialType;
|
import com.qianwen.smartman.modules.cps.mapper.MaterialTypeMapper;
|
import com.qianwen.smartman.modules.cps.service.IMaterialService;
|
import com.qianwen.smartman.modules.cps.service.IMaterialTypeService;
|
import com.qianwen.smartman.modules.cps.vo.MaterialTypeAddVO;
|
import com.qianwen.smartman.modules.cps.vo.MaterialTypeUpdateVO;
|
import com.qianwen.smartman.modules.cps.vo.MaterialTypeVO;
|
|
@Service
|
public class MaterialTypeServiceImpl extends BaseServiceImpl<MaterialTypeMapper, MaterialType> implements IMaterialTypeService {
|
@Autowired
|
@Lazy
|
private IMaterialService materialService;
|
|
@Override // org.springblade.modules.cps.service.IMaterialTypeService
|
public List<MaterialType> enableList() {
|
return list(Wrappers.<MaterialType>lambdaQuery().eq(MaterialType::getStatus, CommonConstant.ENABLE));
|
}
|
|
@Override // org.springblade.modules.cps.service.IMaterialTypeService
|
public IPage<MaterialType> getPageMaterialType(Query query, String keyWord, Integer status) {
|
return page(Condition.getPage(query), Wrappers.<MaterialType>query().lambda()
|
.eq(MaterialType::getStatus, status)
|
.eq(Func.isNotEmpty(AuthUtil.getTenantId()), MaterialType::getTenantId, AuthUtil.getTenantId())
|
.and(Func.isNotEmpty(keyWord), i -> i.likeRight(MaterialType::getCode, keyWord).or().likeRight(MaterialType::getName, keyWord))
|
.orderByDesc(MaterialType::getCode));
|
|
/*
|
return page(Condition.getPage(query), (Wrapper) ((LambdaQueryWrapper) Wrappers.query().lambda().eq((v0) -> {
|
return v0.getStatus();
|
}, status)).eq(Func.isNotEmpty(AuthUtil.getTenantId()), (v0) -> {
|
return v0.getTenantId();
|
}, AuthUtil.getTenantId()).and(Func.isNotEmpty(keyWord), i -> {
|
LambdaQueryWrapper lambdaQueryWrapper = (LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) i.likeRight((v0) -> {
|
return v0.getCode();
|
}, keyWord)).or()).likeRight((v0) -> {
|
return v0.getName();
|
}, keyWord);
|
}).orderByDesc((v0) -> {
|
return v0.getCode();
|
}));*/
|
}
|
|
@Override // org.springblade.modules.cps.service.IMaterialTypeService
|
public MaterialTypeVO createMaterialType(MaterialTypeAddVO materialTypeAddVO) {
|
checkCodeIsExist(materialTypeAddVO.getCode());
|
MaterialType materialType = MaterialTypeConvert.INSTANCE.convert(materialTypeAddVO);
|
save(materialType);
|
return MaterialTypeConvert.INSTANCE.convert(materialType);
|
}
|
|
private void checkCodeIsExist(String code) {
|
MaterialType materialType = getOne(Wrappers.<MaterialType>query().lambda()
|
.eq(MaterialType::getStatus, CommonConstant.ENABLE)
|
.eq(MaterialType::getCode, code));
|
/*
|
MaterialType materialType = (MaterialType) getOne((Wrapper) ((LambdaQueryWrapper) Wrappers.query().lambda().eq((v0) -> {
|
return v0.getStatus();
|
}, CommonConstant.ENABLE)).eq((v0) -> {
|
return v0.getCode();
|
}, code));*/
|
if (!Func.isNull(materialType)) {
|
throw new ServiceException(MessageUtils.message("cps.material.type.code.already.exists", new Object[0]));
|
}
|
materialType = getOne(Wrappers.<MaterialType>lambdaQuery()
|
.eq(MaterialType::getStatus, CommonConstant.DEACTIVATE)
|
.eq(MaterialType::getCode, code));
|
if (!Func.isNull(materialType)) {
|
throw new ServiceException(MessageUtils.message("cps.material.type.code.unable.already.exists", new Object[0]));
|
}
|
}
|
|
@Override // org.springblade.modules.cps.service.IMaterialTypeService
|
public MaterialTypeVO updateMaterialType(MaterialTypeUpdateVO materialTypeUpdateVO) {
|
MaterialType materialType = (MaterialType) getById(materialTypeUpdateVO.getId());
|
materialType.setName(materialTypeUpdateVO.getName());
|
materialType.setRemark(materialTypeUpdateVO.getRemark());
|
materialType.setStatus(materialTypeUpdateVO.getStatus());
|
updateById(materialType);
|
return MaterialTypeConvert.INSTANCE.convert(materialType);
|
}
|
|
@Override // org.springblade.modules.cps.service.IMaterialTypeService
|
public boolean deleteMaterialType(List<String> ids, Integer type) {
|
if (StatusType.REMOVE.getType().equals(type)) {
|
List<Long> idList = ids.stream().map(Long::valueOf).collect(Collectors.toList());
|
if (this.materialService.checkMaterialIsExist(idList)) {
|
throw new ServiceException(MessageUtils.message("cps.material.type.having.used.can.not.delete", new Object[0]));
|
}
|
return removeByIds(Func.toLongList(ids));
|
}
|
return changeStatus(Func.toLongList(ids), CommonConstant.DEACTIVATE);
|
}
|
}
|