package com.qianwen.smartman.modules.smis.service.impl;
|
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.qianwen.core.mp.service.impl.BladeServiceImpl;
|
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.common.constant.CommonConstant;
|
import com.qianwen.smartman.common.utils.Lambda;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.modules.smis.convert.StockOutTypeConvert;
|
import com.qianwen.smartman.modules.smis.entity.StockOutType;
|
import com.qianwen.smartman.modules.smis.mapper.StockOutTypeMapper;
|
import com.qianwen.smartman.modules.smis.service.IStockOutTypeService;
|
import com.qianwen.smartman.modules.smis.utils.ThrowFun;
|
import com.qianwen.smartman.modules.smis.vo.StockOutTypeVO;
|
|
@Service
|
public class StockOutTypeServiceImpl extends BladeServiceImpl<StockOutTypeMapper, StockOutType> implements IStockOutTypeService {
|
|
|
|
public StockOutType createStockOutType(StockOutTypeVO vo) {
|
validTheSame(null, vo.getCode(), vo.getName());
|
StockOutType stockOutType = StockOutTypeConvert.INSTANCE.convert(vo);
|
save(stockOutType);
|
return stockOutType;
|
}
|
|
|
public IPage<StockOutTypeVO> pageStockOutType(Query query, String key, Integer status) {
|
IPage<StockOutType> page = page(Condition.getPage(query), Wrappers.<StockOutType>lambdaQuery()
|
.eq(StockOutType::getStatus, status)
|
.and(Func.isNotBlank(key), c -> c.likeRight(StockOutType::getCode, key).or().likeRight(Func.isNotBlank(key), StockOutType::getName, key))
|
|
.orderByDesc(StockOutType::getCreateTime));
|
/*
|
IPage<StockOutType> page = page(Condition.getPage(query), (Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getStatus();
|
}, status)).and(Func.isNotBlank(key), c -> {
|
((LambdaQueryWrapper) ((LambdaQueryWrapper) c.likeRight((v0) -> {
|
return v0.getCode();
|
}, key)).or()).likeRight(Func.isNotBlank(key), (v0) -> {
|
return v0.getName();
|
}, key);
|
}).orderByDesc((v0) -> {
|
return v0.getCreateTime();
|
}));*/
|
return StockOutTypeConvert.INSTANCE.convert(page);
|
}
|
|
private void validTheSame(Long id, String code, String name) {
|
long codeCount = count(Lambda.eq(StockOutType::getCode, code)
|
.eq(StockOutType::getStatus, CommonConstant.ENABLE)
|
.ne(Func.isNotEmpty(id), StockOutType::getId, id));
|
|
ThrowFun.isTrue(codeCount > 0).throwMessage(MessageUtils.message("cps.stock.out.type.code.already.exists", new Object[0]));
|
//FIXME 这里不应该是enable吧
|
long codeCountDisable = count(Lambda.eq(StockOutType::getCode, code)
|
.eq(StockOutType::getStatus, CommonConstant.ENABLE)
|
.ne(Func.isNotEmpty(id), StockOutType::getId, id));
|
|
ThrowFun.isTrue(codeCountDisable > 0).throwMessage(MessageUtils.message("cps.stock.out.type.code.unable.already.exists", new Object[0]));
|
long nameCount = count(Lambda.eq(StockOutType::getName, name)
|
.ne(Func.isNotEmpty(id), StockOutType::getId, id));
|
|
ThrowFun.isTrue(nameCount > 0).throwMessage(MessageUtils.message("cps.stock.out.type.name.already.exists", new Object[0]));
|
long nameCountDisable = count(Lambda.eq(StockOutType::getName, name)
|
.ne(Func.isNotEmpty(id), StockOutType::getId, id));
|
|
ThrowFun.isTrue(nameCountDisable > 0).throwMessage(MessageUtils.message("cps.stock.out.type.name.unable.already.exists", new Object[0]));
|
}
|
|
|
public StockOutTypeVO updateStockOut(StockOutTypeVO vo) {
|
validTheSame(vo.getId(), vo.getCode(), vo.getName());
|
StockOutType stockOutType = StockOutTypeConvert.INSTANCE.convert(vo);
|
updateById(stockOutType);
|
return StockOutTypeConvert.INSTANCE.convert(stockOutType);
|
}
|
}
|