package com.qianwen.smartman.modules.smis.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.smis.convert.MaterialTypeConvert; import com.qianwen.smartman.modules.smis.entity.MaterialType; import com.qianwen.smartman.modules.smis.mapper.MaterialTypeMapper; import com.qianwen.smartman.modules.smis.service.IMaterialService; import com.qianwen.smartman.modules.smis.service.IMaterialTypeService; import com.qianwen.smartman.modules.smis.vo.MaterialTypeAddVO; import com.qianwen.smartman.modules.smis.vo.MaterialTypeUpdateVO; import com.qianwen.smartman.modules.smis.vo.MaterialTypeVO; @Service public class MaterialTypeServiceImpl extends BaseServiceImpl implements IMaterialTypeService { @Autowired @Lazy private IMaterialService materialService; public List enableList() { return list(Wrappers.lambdaQuery().eq(MaterialType::getStatus, CommonConstant.ENABLE)); } public IPage getPageMaterialType(Query query, String keyWord, Integer status) { return page(Condition.getPage(query), Wrappers.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(); }));*/ } 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.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.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])); } } 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); } public boolean deleteMaterialType(List ids, Integer type) { if (StatusType.REMOVE.getType().equals(type)) { List 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); } }