liujie
2025-06-02 4b55eb4a50938ace45b2b2266caa0ce2aadfcd40
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCompanyServiceImpl.java
@@ -4,18 +4,23 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.dto.EditCompanyDto;
import com.ruoyi.system.dto.PushCompanyDto;
import com.ruoyi.system.mapper.TbCompanyMapper;
import com.ruoyi.system.model.TbCompany;
import com.ruoyi.system.model.TbIndustry;
import com.ruoyi.system.model.TbPermit;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.CompanyListQuery;
import com.ruoyi.system.service.TbCompanyService;
import com.ruoyi.system.service.TbIndustryService;
import com.ruoyi.system.service.TbPermitService;
import com.ruoyi.system.query.MyPushCompanyListQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.CompanyDetailVo;
import com.ruoyi.system.vo.CustomerInfoVo;
import com.ruoyi.system.vo.IndexCompanyListVo;
import com.ruoyi.system.vo.MyPushCompanyListVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@@ -38,67 +43,86 @@
    @Autowired
    private TbIndustryService industryService;
    @Autowired
    private TbOpeningBankService openingBankService;
    @Autowired
    private TbOrderService orderService;
    @Autowired
    private TbScheduleService scheduleService;
    @Autowired
    private TbBuyerCompanyInfoService buyerCompanyInfoService;
    @Autowired
    private TbUserService userService;
    @Override
    public Page<IndexCompanyListVo> getCompanyList(CompanyListQuery query, Long userId) {
        Page<TbCompany> page = new Page<>(query.getPageNum(), query.getPageSize());
        Page<IndexCompanyListVo> page1 = new Page<>();
        LambdaQueryWrapper<TbCompany> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TbCompany::getIsDelete,0);
        if(query.getCertificateNames()!=null && query.getCertificateNames().size()>0){
        queryWrapper.eq(TbCompany::getIsDelete, 0);
        queryWrapper.eq(TbCompany::getStatus, 1);
        if (query.getCertificateNames() != null && query.getCertificateNames().size() > 0) {
            List<TbPermit> tbPermits = permitService.list(new LambdaQueryWrapper<TbPermit>().in(TbPermit::getName, query.getCertificateNames()));
            if(tbPermits.isEmpty()){
            if (tbPermits.isEmpty()) {
                return page1;
            }
            queryWrapper.in(TbCompany::getId, tbPermits.stream().map(TbPermit::getCompanyId).collect(Collectors.toList()));
        }
        queryWrapper.eq(TbCompany::getCityCode,query.getCityCode());
        queryWrapper.eq(TbCompany::getAreaCode,query.getAreaCode());
        queryWrapper.eq(TbCompany::getCityCode, query.getCityCode());
        queryWrapper.eq(TbCompany::getAreaCode, query.getAreaCode());
        if(query.getCompanyCategorys()!=null && query.getCompanyCategorys().size()>0){
        if (query.getCompanyCategorys() != null && query.getCompanyCategorys().size() > 0) {
            queryWrapper.in(TbCompany::getCompanyCategory, query.getCompanyCategorys());
        }
        if(query.getRegisteredCapitals()!=null && query.getRegisteredCapitals().size()>0){
        if (query.getRegisteredCapitals() != null && query.getRegisteredCapitals().size() > 0) {
            queryWrapper.in(TbCompany::getRegisteredCapital, query.getRegisteredCapitals());
        }
        if(query.getCompanyIndustryIds()!=null && query.getCompanyIndustryIds().size()>0){
        if (query.getCompanyIndustryIds() != null && query.getCompanyIndustryIds().size() > 0) {
            queryWrapper.in(TbCompany::getCompanyIndustryId, query.getCompanyIndustryIds());
        }
        if(query.getTaxpayerTypes()!=null && query.getTaxpayerTypes().size()>0){
        if (query.getTaxpayerTypes() != null && query.getTaxpayerTypes().size() > 0) {
            queryWrapper.in(TbCompany::getTaxpayerType, query.getTaxpayerTypes());
        }
        if(query.getTaxCredits()!=null && query.getTaxCredits().size()>0){
        if (query.getTaxCredits() != null && query.getTaxCredits().size() > 0) {
            queryWrapper.in(TbCompany::getTaxCredit, query.getTaxCredits());
        }
        if(query.getHighTechEnterpriseTechnology()!=null){
        if (query.getHighTechEnterpriseTechnology() != null) {
            queryWrapper.eq(TbCompany::getHighTechEnterpriseTechnology, query.getHighTechEnterpriseTechnology());
        }
        if(query.getSocialSecurity()!=null){
        if (query.getSocialSecurity() != null) {
            queryWrapper.eq(TbCompany::getSocialSecurity, query.getSocialSecurity());
        }
        if(query.getTendering()!=null){
        if (query.getTendering() != null) {
            queryWrapper.eq(TbCompany::getTendering, query.getTendering());
        }
        if(query.getHaveTrademark()!=null){
        if (query.getHaveTrademark() != null) {
            queryWrapper.eq(TbCompany::getHaveTrademark, query.getHaveTrademark());
        }
        if(query.getHavePatent()!=null){
        if (query.getHavePatent() != null) {
            queryWrapper.eq(TbCompany::getHavePatent, query.getHavePatent());
        }
        if(query.getHaveSoftWorks()!=null){
        if (query.getHaveSoftWorks() != null) {
            queryWrapper.eq(TbCompany::getHaveSoftWorks, query.getHaveSoftWorks());
        }
        if(query.getMoneySort()!=null && query.getMoneySort()==1){
        if (query.getMoneySort() != null && query.getMoneySort() == 1) {
            queryWrapper.orderByDesc(TbCompany::getSaleMoney);
        }else if(query.getMoneySort()!=null && query.getMoneySort()==2){
        } else if (query.getMoneySort() != null && query.getMoneySort() == 2) {
            queryWrapper.orderByAsc(TbCompany::getSaleMoney);
        }else {
        } else {
            queryWrapper.orderByDesc(TbCompany::getCreateTime);
        }
        Page<TbCompany> companyPage = this.baseMapper.selectPage(page, queryWrapper);
        if(companyPage.getRecords().isEmpty()){
             return page1;
        }
        List<Integer> ids = companyPage.getRecords().stream().map(TbCompany::getCompanyIndustryId).collect(Collectors.toList());
        List<TbIndustry> tbIndustries = industryService.list(new LambdaQueryWrapper<TbIndustry>().in(TbIndustry::getId, ids));
        ArrayList<IndexCompanyListVo> list = new ArrayList<>();
@@ -116,14 +140,108 @@
            indexCompanyListVo.setPaidInFunds(record.getPaidInFunds());
            indexCompanyListVo.setRegisteredCapital(record.getRegisteredCapital());
            indexCompanyListVo.setSaleMoney(record.getSaleMoney());
            if(record.getUserId().equals(userId.toString())){
            if (record.getUserId().equals(userId.toString())) {
                indexCompanyListVo.setIsMyself(1);
            }
            list.add(indexCompanyListVo);
        }
        BeanUtils.copyProperties(companyPage,page1);
        BeanUtils.copyProperties(companyPage, page1);
        page1.setRecords(list);
        return page1;
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void pushCompany(PushCompanyDto dto, Long userId) {
        TbCompany tbCompany = new TbCompany();
        BeanUtils.copyProperties(dto, tbCompany);
        tbCompany.setUserId(userId.toString());
        this.save(tbCompany);
        List<TbPermit> permits = dto.getPermits();
        for (TbPermit permit : permits) {
            permit.setCompanyId(tbCompany.getId());
            permitService.save(permit);
        }
        List<TbOpeningBank> openingBanks = dto.getOpeningBanks();
        for (TbOpeningBank openingBank : openingBanks) {
            openingBank.setCompanyId(tbCompany.getId());
            openingBankService.save(openingBank);
        }
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void editCompany(EditCompanyDto dto, TbCompany company, Long userId) {
        BeanUtils.copyProperties(dto, company);
        company.setUserId(userId.toString());
        this.updateById(company);
        permitService.remove(new LambdaQueryWrapper<TbPermit>().eq(TbPermit::getCompanyId, dto.getId()));
        openingBankService.remove(new LambdaQueryWrapper<TbOpeningBank>().eq(TbOpeningBank::getCompanyId, dto.getId()));
        List<TbPermit> permits = dto.getPermits();
        for (TbPermit permit : permits) {
            permit.setCompanyId(company.getId());
            permitService.save(permit);
        }
        List<TbOpeningBank> openingBanks = dto.getOpeningBanks();
        for (TbOpeningBank openingBank : openingBanks) {
            openingBank.setCompanyId(company.getId());
            openingBankService.save(openingBank);
        }
    }
    @Override
    public Page<MyPushCompanyListVo> getMyPushCompanyList(MyPushCompanyListQuery query, Long userId) {
        Page<MyPushCompanyListVo> page = new Page<>(query.getPageNum(), query.getPageSize());
        return this.baseMapper.getMyPushCompanyList(page, query, userId);
    }
    @Override
    public CompanyDetailVo companyDetail(String companyId, Long userId) {
        CompanyDetailVo companyDetailVo = new CompanyDetailVo();
        TbCompany tbCompany = this.baseMapper.selectById(companyId);
        BeanUtils.copyProperties(tbCompany, companyDetailVo);
        TbIndustry industry = industryService.getById(tbCompany.getCompanyIndustryId());
        companyDetailVo.setCompanyIndustryName(industry.getName());
        List<TbPermit> list = permitService.list(new LambdaQueryWrapper<TbPermit>().eq(TbPermit::getCompanyId, companyId));
        companyDetailVo.setPermits(list);
        List<TbOpeningBank> list1 = openingBankService.list(new LambdaQueryWrapper<TbOpeningBank>().eq(TbOpeningBank::getCompanyId, companyId));
        companyDetailVo.setOpeningBanks(list1);
        // 当前未产生订单
        if (tbCompany.getStatus() == 1) {
            companyDetailVo.setStatus(1);
            return companyDetailVo;
        }
        TbOrder order = orderService.getOne(new LambdaQueryWrapper<TbOrder>().eq(TbOrder::getCompanyId, companyId).gt(TbOrder::getStatus, 0).orderByDesc(TbOrder::getCreateTime).last("limit 1"));
        companyDetailVo.setStatus(order.getStatus());
        List<TbSchedule> list2 = scheduleService.list(new LambdaQueryWrapper<TbSchedule>().eq(TbSchedule::getOrderId, order.getId()).orderByDesc(TbSchedule::getCreateTime));
        List<TbSchedule> collect = list2.stream().filter(e -> StringUtils.isEmpty(e.getParentId())).collect(Collectors.toList());
        for (TbSchedule tbSchedule : collect) {
            List<TbSchedule> collect1 = list2.stream().filter(e -> StringUtils.isNotEmpty(e.getParentId()) && e.getParentId().equals(tbSchedule.getId())).collect(Collectors.toList());
            tbSchedule.setSchedules(collect1);
        }
        companyDetailVo.setSchedules(collect);
        companyDetailVo.setPayTime(order.getPayTime());
        companyDetailVo.setConfirmTime(order.getConfirmTime());
        TbBuyerCompanyInfo one = buyerCompanyInfoService.getOne(new LambdaQueryWrapper<TbBuyerCompanyInfo>().eq(TbBuyerCompanyInfo::getOrderId, order.getId()));
        CustomerInfoVo customerInfoVo = new CustomerInfoVo();
        BeanUtils.copyProperties(one, customerInfoVo);
        companyDetailVo.setCustomerInfoVo(customerInfoVo);
        companyDetailVo.setEstimatedRevenue(order.getPrice().subtract(order.getCommissionPrice()).subtract(order.getCommissionPlatform()));
        TbUser user = userService.getById(order.getUserId());
        companyDetailVo.setCustomerName(user.getUserName());
        return companyDetailVo;
    }
}