package com.qianwen.smartman.modules.cps.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
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 java.lang.invoke.SerializedLambda;
|
import java.util.List;
|
import java.util.Optional;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import com.qianwen.smartman.common.cache.RegionCache;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
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.tool.utils.Func;
|
import com.qianwen.smartman.modules.cps.convert.SupplierConvert;
|
import com.qianwen.smartman.modules.cps.entity.Supplier;
|
import com.qianwen.smartman.modules.cps.mapper.SupplierMapper;
|
import com.qianwen.smartman.modules.cps.service.ISupplierService;
|
import com.qianwen.smartman.modules.cps.vo.SupplierDetailVO;
|
import com.qianwen.smartman.modules.cps.vo.SupplierSaveVO;
|
import com.qianwen.smartman.modules.cps.vo.SupplierVO;
|
import com.qianwen.smartman.modules.system.service.ICodeGeneratorService;
|
import com.qianwen.smartman.modules.tpm.enums.MetaTypeEnum;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
@Service
|
public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> implements ISupplierService {
|
private static final Logger log = LoggerFactory.getLogger(SupplierServiceImpl.class);
|
private final ICodeGeneratorService codeGeneratorService;
|
|
public SupplierServiceImpl(final ICodeGeneratorService codeGeneratorService) {
|
this.codeGeneratorService = codeGeneratorService;
|
}
|
|
@Override // org.springblade.modules.cps.service.ISupplierService
|
public IPage<SupplierVO> listPage(Query query, String keyword) {
|
IPage<Supplier> supplierPage = page(Condition.getPage(query), Wrappers.<Supplier>query()
|
.lambda()
|
.and(Func.isNotEmpty(keyword), i -> i.likeRight(Supplier::getCode, keyword).or().likeRight(Supplier::getName, keyword).or().likeRight(Supplier::getAddress, keyword).or().likeRight(Supplier::getTel, keyword))
|
.orderByDesc(Supplier::getCreateTime));
|
/*
|
IPage<Supplier> supplierPage = page(Condition.getPage(query), (Wrapper) Wrappers.query().lambda().and(Func.isNotEmpty(keyword), i -> {
|
LambdaQueryWrapper lambdaQueryWrapper = (LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) i.likeRight((v0) -> {
|
return v0.getCode();
|
}, keyword)).or()).likeRight((v0) -> {
|
return v0.getName();
|
}, keyword)).or()).likeRight((v0) -> {
|
return v0.getAddress();
|
}, keyword)).or()).likeRight((v0) -> {
|
return v0.getTel();
|
}, keyword);
|
}).orderByDesc((v0) -> {
|
return v0.getCreateTime();
|
}));*/
|
return Optional.ofNullable(supplierPage).map(record -> {
|
Page<SupplierVO> page = new Page<>(record.getCurrent(), record.getSize(), record.getTotal());
|
page.setRecords(SupplierConvert.INSTANCE.convertListPage(record.getRecords()));
|
return page;
|
}).orElse(new Page<>());
|
}
|
|
@Override // org.springblade.modules.cps.service.ISupplierService
|
@Transactional(rollbackFor = {Exception.class})
|
public SupplierDetailVO insert(SupplierSaveVO supplierSaveVO) {
|
if (Func.isBlank(supplierSaveVO.getCode())) {
|
String code = this.codeGeneratorService.getGeneratorCode(supplierSaveVO, MetaTypeEnum.SUPPLIER.getCode());
|
log.info("供应商编码规则生成的code:{}", code + " ," + code.length());
|
supplierSaveVO.setCode(code);
|
}
|
checkSupplier(supplierSaveVO);
|
Supplier supplier = SupplierConvert.INSTANCE.convertSave(supplierSaveVO);
|
saveOrUpdate(supplier);
|
return SupplierConvert.INSTANCE.convertDetail(supplier);
|
}
|
|
@Override // org.springblade.modules.cps.service.ISupplierService
|
public Boolean delete(List<Long> supplierIds) {
|
remove(Wrappers.<Supplier>query()
|
.lambda()
|
.in(Func.isNotEmpty(supplierIds), Supplier::getId, supplierIds));
|
|
return true;
|
}
|
|
private void checkSupplier(SupplierSaveVO supplierSaveVO) {
|
Long count = count(Wrappers.<Supplier>query()
|
.lambda()
|
.ne(Func.isNotEmpty(supplierSaveVO.getId()), Supplier::getId, supplierSaveVO.getId())
|
.eq(Func.isNotEmpty(supplierSaveVO.getCode()), Supplier::getCode, supplierSaveVO.getCode()));
|
/*
|
Long count1 = Long.valueOf(count(Wrappers.query().lambda().ne(Func.isNotEmpty(supplierSaveVO.getId()), (v0) -> {
|
return v0.getId();
|
}, supplierSaveVO.getId()).eq(Func.isNotEmpty(supplierSaveVO.getCode()), (v0) -> {
|
return v0.getCode();
|
}, supplierSaveVO.getCode())));*/
|
if (count.longValue() > 0) {
|
throw new ServiceException(MessageUtils.message("cps.supplier.code.already.exits", new Object[0]));
|
}
|
}
|
}
|