package com.by4cloud.platformx.device.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.by4cloud.platformx.device.entity.Contract; import com.by4cloud.platformx.device.entity.ContractItem; import com.by4cloud.platformx.device.mapper.ContractItemMapper; import com.by4cloud.platformx.device.mapper.ContractMapper; import com.by4cloud.platformx.device.service.ContractService; import org.springframework.stereotype.Service; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.transaction.annotation.Transactional; import lombok.RequiredArgsConstructor; import java.io.Serializable; import java.util.List; import java.util.Objects; /** * 合同表 * * @author pig * @date 2025-03-13 10:20:35 */ @Service @RequiredArgsConstructor public class ContractServiceImpl extends ServiceImpl implements ContractService { private final ContractItemMapper contractItemMapper; @Override @Transactional(rollbackFor = Exception.class) public Boolean saveDeep(Contract contract) { contract.setStatus(0); baseMapper.insert(contract); for (ContractItem contractItem : contract.getContractItemList()) { contractItem.setContractId(contract.getId()); contractItemMapper.insert( contractItem); } return Boolean.TRUE; } @Override @Transactional(rollbackFor = Exception.class) public Boolean updateDeep(Contract contract) { baseMapper.updateById(contract); if (contract.getContractItemList() != null&&contract.getContractItemList().size()>0) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("contract_id",contract.getId()); contractItemMapper.delete(queryWrapper); for (ContractItem contractItem : contract.getContractItemList()) { contractItem.setId(null); contractItem.setContractId(contract.getId()); contractItemMapper.insert( contractItem); } } return Boolean.TRUE; } @Override @Transactional(rollbackFor = Exception.class) public Boolean removeDeep(Long[] ids) { baseMapper.deleteBatchIds(CollUtil.toList(ids)); contractItemMapper.delete(Wrappers.lambdaQuery().in(ContractItem::getContractId, ids)); return Boolean.TRUE; } @Override @Transactional(rollbackFor = Exception.class) public Boolean removeChild(Long[] ids) { contractItemMapper.deleteBatchIds(CollUtil.toList(ids)); return Boolean.TRUE; } @Override public Contract getDetailById(Long id) { Contract contract = baseMapper.selectById(id); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("contract_id",id); List itemList = contractItemMapper.selectList(queryWrapper); contract.setContractItemList(itemList); return contract; } @Override public Boolean approved(Long id) { Contract contract = baseMapper.selectById(id); contract.setStatus(1); baseMapper.updateById(contract); return Boolean.TRUE; } @Override public List getApprovedContractList() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status",1); List list = baseMapper.selectList(queryWrapper); return list; } }