package vip.xiaonuo.quality.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import vip.xiaonuo.common.pojo.CommonResult;
import vip.xiaonuo.quality.entity.QualityReagentInStock;
import vip.xiaonuo.quality.entity.QualityReagentStock;
import vip.xiaonuo.quality.mapper.QualityReagentInStockMapper;
import vip.xiaonuo.quality.mapper.QualityReagentStockMapper;
import vip.xiaonuo.quality.param.QualityStockPageParam;
import vip.xiaonuo.quality.service.IQualityReagentInStockService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.Date;
/**
*
* 质量试剂入库 服务实现类
*
*
* @author author
* @since 2025-03-10
*/
@Service
public class QualityReagentInStockServiceImpl extends ServiceImpl implements IQualityReagentInStockService {
@Autowired
private QualityReagentInStockMapper inStockMapper;
@Autowired
private QualityReagentStockMapper stockMapper;
@Override
@Transactional
public CommonResult add(QualityReagentInStock inStock) {
if ("".equals(inStock.getOrgId()) || null == inStock.getOrgId()) {
return CommonResult.error();
} else {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", inStock.getId());
QualityReagentStock stock = stockMapper.selectOne(queryWrapper);
QualityReagentInStock qualityReagentInStock = new QualityReagentInStock();
qualityReagentInStock.setCreateTime(inStock.getCreateTime());
qualityReagentInStock.setInValue(inStock.getInValue());
qualityReagentInStock.setOrgId(inStock.getOrgId());
qualityReagentInStock.setOrgName(inStock.getOrgName());
qualityReagentInStock.setReagent(inStock.getReagent());
qualityReagentInStock.setReagentId(inStock.getReagentId());
inStockMapper.insert(qualityReagentInStock);
if (ObjectUtil.isEmpty(stock)) {
QualityReagentStock stock1 = new QualityReagentStock();
stock1.setOrgId(inStock.getOrgId());
stock1.setOrgName(inStock.getOrgName());
stock1.setReagent(inStock.getReagent());
stock1.setStock(inStock.getInValue());
stockMapper.insert(stock1);
} else {
stock.setStock(stock.getStock() + inStock.getInValue());
stock.setInTime(new Date());
stockMapper.updateById(stock);
}
}
return CommonResult.ok();
}
@Override
public CommonResult edit(QualityReagentInStock inStock) {
QualityReagentInStock inStock1 = inStockMapper.selectById(inStock);
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("org_id", inStock.getOrgId()).eq("reagent", inStock.getReagent());
QualityReagentStock stock = stockMapper.selectOne(queryWrapper);
stock.setStock(stock.getStock() - inStock1.getInValue()+inStock.getInValue());
stock.setInTime(new Date());
stockMapper.updateById(stock);
inStockMapper.updateById(inStock);
return CommonResult.ok();
}
@Override
public Page page(QualityStockPageParam pageParam) {
Integer pageSize = pageParam.getPageSize();
Integer pageNum = pageParam.getPageNum();
String orgId = pageParam.getOrgId();
String reagent = pageParam.getReagent();
Integer reagentId = pageParam.getId();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
queryWrapper.eq(StringUtils.isNotBlank(reagent), "reagent", reagent);
if (null != reagentId) {
queryWrapper.eq("reagent_id", reagentId);
}
queryWrapper.orderByDesc("create_time");
Page page = new Page<>(pageNum, pageSize);
return inStockMapper.selectPage(page,queryWrapper);
}
}