yangys
2024-03-28 23a939ed820ee32f9a4309f9c81b7bab5a566f30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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]));
        }
    }
}