package com.ruoyi.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.enums.StandardProductListChcekTypeEnums; import com.ruoyi.basic.mapper.StandardProductListMapper; import com.ruoyi.basic.mapper.StandardProductListSupplierAskBackupRelMapper; import com.ruoyi.basic.pojo.StandardProductList; import com.ruoyi.basic.pojo.StandardProductListSupplierAskBackupRel; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.basic.mapper.StandardProductListSupplierAskMapper; import com.ruoyi.basic.pojo.StandardProductListSupplierAsk; import com.ruoyi.basic.service.StandardProductListSupplierAskService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; /** * 检验项目厂家密度绑定表 * * @author zhuo * @since 2024-09-23 */ @Service public class StandardProductListSupplierAskServiceImpl extends ServiceImpl implements StandardProductListSupplierAskService { @Autowired private StandardProductListSupplierAskBackupRelMapper standardProductListSupplierAskBackupRelMapper; @Autowired private StandardProductListMapper standardProductListMapper; /** * 查询厂家要求值绑定 * @param supplierAsk * @return */ @Override public List selectByProductId(StandardProductListSupplierAsk supplierAsk) { if (supplierAsk.getProductListId() == null) { throw new BaseException("缺少检验项id"); } return baseMapper.selectList(Wrappers.lambdaQuery() .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId())); } /** * 新增厂家要求值绑定 * @param supplierAsk * @return */ @Override @Transactional(rollbackFor = Exception.class) public Integer addProductSupplierAsk(StandardProductListSupplierAsk supplierAsk) { if (supplierAsk.getProductListId() == null) { throw new BaseException("缺少产品对象id"); } // 新增前备份 backupSupplierAsk(supplierAsk); // 修改状态为待提交 StandardProductList standardProductList = new StandardProductList(); standardProductList.setId(supplierAsk.getProductListId()); standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); standardProductListMapper.updateById(standardProductList); // 查询改厂家是否绑定过 Long count = baseMapper.selectCount(Wrappers.lambdaQuery() .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId()) .eq(StandardProductListSupplierAsk::getSupplierName, supplierAsk.getSupplierName())); if (count > 0){ throw new BaseException("该产品已绑定过该厂家"); } baseMapper.insert(supplierAsk); return supplierAsk.getSupplierAskId(); } /** * 修改厂家要求值绑定 * @param supplierAsk * @return */ @Override @Transactional(rollbackFor = Exception.class) public Integer updateProductSupplierAsk(StandardProductListSupplierAsk supplierAsk) { if (supplierAsk.getProductListId() == null) { throw new BaseException("缺少检验项id"); } // 修改前备份 backupSupplierAsk(supplierAsk); // 修改状态为待提交 StandardProductList standardProductList = new StandardProductList(); standardProductList.setId(supplierAsk.getProductListId()); standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); standardProductListMapper.updateById(standardProductList); // 查询改厂家是否绑定过 Long count = baseMapper.selectCount(Wrappers.lambdaQuery() .ne(StandardProductListSupplierAsk::getSupplierAskId, supplierAsk.getSupplierAskId()) .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId()) .eq(StandardProductListSupplierAsk::getSupplierName, supplierAsk.getSupplierName())); if (count > 0){ throw new BaseException("该检验项已绑定过该厂家"); } baseMapper.updateById(supplierAsk); return supplierAsk.getSupplierAskId(); } @Override @Transactional(rollbackFor = Exception.class) public void deleteProductSupplierAsk(Integer supplierAskId) { StandardProductListSupplierAsk supplierAsk = baseMapper.selectById(supplierAskId); // 删除前备份 backupSupplierAsk(supplierAsk); // 修改状态为待提交 StandardProductList standardProductList = new StandardProductList(); standardProductList.setId(supplierAsk.getProductListId()); standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); standardProductListMapper.updateById(standardProductList); baseMapper.deleteById(supplierAskId); } /** * 检验项目厂家密度绑定备份表表备份 * * @param supplierAsk */ @Override public void backupSupplierAsk(StandardProductListSupplierAsk supplierAsk) { // 查询备份数据是否存在,如果有不做备份 QueryWrapper backupQueryWrapper = new QueryWrapper<>(); backupQueryWrapper.eq("product_list_id", supplierAsk.getProductListId()); List standardProductListSupplierAskBackupRels = standardProductListSupplierAskBackupRelMapper.selectList(backupQueryWrapper); // 查询原数据进行备份 if(CollectionUtils.isEmpty(standardProductListSupplierAskBackupRels)){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("product_list_id", supplierAsk.getProductListId()); List standardProductListSupplierAskList = baseMapper.selectList(queryWrapper); List supplierAskBackupRelInsertList = new ArrayList<>(); for (StandardProductListSupplierAsk standardProductListSupplierAsk : standardProductListSupplierAskList) { StandardProductListSupplierAskBackupRel standardProductListSupplierAskBackupRel = new StandardProductListSupplierAskBackupRel(); BeanUtils.copyProperties(standardProductListSupplierAsk, standardProductListSupplierAskBackupRel); supplierAskBackupRelInsertList.add(standardProductListSupplierAskBackupRel); } if(!CollectionUtils.isEmpty(supplierAskBackupRelInsertList)){ standardProductListSupplierAskBackupRelMapper.batchInsertSupplierAskBackUpRel(supplierAskBackupRelInsertList); } } } }