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
107
108
109
110
111
112
113
114
115
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);
    }
}