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 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 listPage(Query query, String keyword) { IPage supplierPage = page(Condition.getPage(query), Wrappers.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 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 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 supplierIds) { remove(Wrappers.query() .lambda() .in(Func.isNotEmpty(supplierIds), Supplier::getId, supplierIds)); return true; } private void checkSupplier(SupplierSaveVO supplierSaveVO) { Long count = count(Wrappers.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])); } } }