package com.yuanchu.limslaboratory.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yuanchu.limslaboratory.pojo.Material;
import com.yuanchu.limslaboratory.mapper.MaterialMapper;
import com.yuanchu.limslaboratory.pojo.Specifications;
import com.yuanchu.limslaboratory.pojo.Standard;
import com.yuanchu.limslaboratory.pojo.dto.AddMaterialDto;
import com.yuanchu.limslaboratory.service.MaterialService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.limslaboratory.service.ProductService;
import com.yuanchu.limslaboratory.service.SpecificationsService;
import com.yuanchu.limslaboratory.service.StandardService;
import com.yuanchu.limslaboratory.utils.MyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author 江苏鵷雏网络科技有限公司
* @since 2023-07-17
*/
@Service
public class MaterialServiceImpl extends ServiceImpl implements MaterialService {
@Resource
private MaterialMapper materialMapper;
@Autowired
private StandardService standardService;
@Autowired
private SpecificationsService specificationsService;
@Autowired
private ProductService productService;
//查询物料信息
@Override
public List selectMaterialLimit(int pageSize, int countSize, int type) {
return materialMapper.selectMaterialLimit((pageSize - 1) * countSize,pageSize * countSize, type);
}
//根据物料id查询物料信息
@Override
public Map selectMaterialById(String materialId) {
return materialMapper.selectMaterialById(materialId);
}
@Override
public Integer deleteMaterialInformation(Integer materialId) {
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(Material::getId, materialId);
updateWrapper.set(Material::getState, 0);
int isDeleteSuccess = materialMapper.update(new Material(), updateWrapper);
if (isDeleteSuccess == 1){
List isDeleteStandard = standardService.deleteStandardsInformation(materialId);
if (!ObjectUtils.isEmpty(isDeleteStandard)){
List idDeleteSpecifications = specificationsService.StandardIdDeleteSpecifications(isDeleteStandard);
if (!ObjectUtils.isEmpty(idDeleteSpecifications)){
productService.deleteProductInformation(idDeleteSpecifications);
}
}
return 1;
}
return 0;
}
@Override
public Integer addMaterialInformation(AddMaterialDto addMaterialDto) {
Material material = new Material()
.setCode("BZ" + IdWorker.getIdStr())
.setName(addMaterialDto.getMaterialName())
.setType(addMaterialDto.getType());
int isInsertSuccess = materialMapper.insert(material);
if (isInsertSuccess > 0){
Standard standard = new Standard()
.setMaterialId(material.getId())
.setName(addMaterialDto.getStandardName());
boolean save = standardService.save(standard);
if (save){
Specifications specifications = new Specifications()
.setName(addMaterialDto.getSpecificationsName())
.setStandardId(standard.getId());
boolean save1 = specificationsService.save(specifications);
if (save1)
return 1;
}
}
return 0;
}
@Override
public List