platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BusinessCustomerServiceImpl.java
@@ -1,16 +1,19 @@
package com.by4cloud.platformx.business.service.impl;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.business.dto.BusinessCustomerAddDTO;
import com.by4cloud.platformx.business.entity.BusinessCustomer;
import com.by4cloud.platformx.business.mapper.BipBanklViewMapper;
import com.by4cloud.platformx.business.mapper.BipViewMapper;
import com.by4cloud.platformx.business.mapper.BusinessCustomerMapper;
import com.by4cloud.platformx.business.service.BusinessCustomerService;
import com.by4cloud.platformx.business.vo.BankNameVo;
import com.by4cloud.platformx.business.vo.BusinessCustomerMainVo;
import com.by4cloud.platformx.business.vo.CustBankVo;
import com.by4cloud.platformx.business.vo.CustInfoVo;
import com.by4cloud.platformx.common.core.util.R;
@@ -35,34 +38,46 @@
   private final BipBanklViewMapper bipBanklViewMapper;
   @Override
   public R syncMainBusCus() {
      List<BusinessCustomer> bcList = baseMapper.selectList(Wrappers.<BusinessCustomer>lambdaQuery().isNull(BusinessCustomer::getCreditCode)
            .or().isNull(BusinessCustomer::getLegalPerson).or().isNull(BusinessCustomer::getLegalPerson)
            .or().isNull(BusinessCustomer::getBankName).or().isNull(BusinessCustomer::getBankAccount)
            .or().isNull(BusinessCustomer::getRegisterName));
      if (ArrayUtil.isNotEmpty(bcList.toArray())){
   public R syncMainBusCus(String compId) {
      List<BusinessCustomer> bcList = baseMapper.selectList(Wrappers.<BusinessCustomer>lambdaQuery()
            .eq(StrUtil.isNotEmpty(compId),BusinessCustomer::getCompId,compId)
            .and(wrapper -> wrapper.isNull(BusinessCustomer::getCreditCode)
            .or().isNull(BusinessCustomer::getLegalPerson)
            .or().isNull(BusinessCustomer::getBankName)
            .or().isNull(BusinessCustomer::getBankAccount)
            .or().isNull(BusinessCustomer::getRegisterName)
            .or().isNull(BusinessCustomer::getBipCode))
      );
      if (CollUtil.isNotEmpty(bcList)){
         for (BusinessCustomer bc:bcList
             ) {
            log.info("开始同步{}信息",bc.getCompanyName());
            CustInfoVo custInfo = bipViewMapper.selectBaseInfoByCustName(bc.getCompanyName());
            if (ObjUtil.isNull(custInfo)){
               continue;
            }
            if (ObjUtil.isNotNull(custInfo)){
               bc.setCreditCode(custInfo.getCertificateId());
               bc.setRegisterName(custInfo.getCustName());
               bc.setLegalPerson(custInfo.getLegalGerson());
               bc.setLegalPerson(custInfo.getLegalPerson());
               bc.setAddress(custInfo.getRegistrationAddress());
               bc.setBipCode(custInfo.getCustCode());
               baseMapper.updateById(bc);
               log.info("{}同步名称、法人、地址、信用码信息成功",bc.getCompanyName());
               log.info("{}同步名称、法人、地址、信用码、bipcode信息成功",bc.getCompanyName());
            }
            CustBankVo bankVo = bipViewMapper.selectBankByCustName(bc.getCompanyName());
            if (ObjUtil.isNotNull(bankVo)){
            List<CustBankVo> bankVoList = bipViewMapper.selectBankByCustName(bc.getCompanyName());
            if (CollUtil.isEmpty(bankVoList)){
               continue;
            }
            if (CollUtil.isNotEmpty(bankVoList)){
               if (StrUtil.isEmpty(bc.getBankAccount())){
                  bc.setBankAccount(bankVo.getBankAccount());
                  bc.setBankAccount(bankVoList.get(0).getBankAccount());
                  baseMapper.updateById(bc);
                  log.info("{}同步银行卡号信息成功",bc.getCompanyName());
               }
               BankNameVo bankNameVo = bipBanklViewMapper.selectBankByCode(bankVo.getBankName());
               if (ObjUtil.isNotNull(bankVo)){
                  bc.setBankName(bankNameVo.getBankNameName());
               List<BankNameVo> bankNameVoList = bipBanklViewMapper.selectBankByCode(bankVoList.get(0).getBankName());
               if (CollUtil.isNotEmpty(bankNameVoList)){
                  bc.setBankName(bankNameVoList.get(0).getBankNameName());
                  baseMapper.updateById(bc);
                  log.info("{}同步银行名称信息成功",bc.getCompanyName());
               }
@@ -72,4 +87,83 @@
      }
      return R.ok();
   }
   @Override
   public BusinessCustomerMainVo queryMainBC(String companyName) {
      BusinessCustomerMainVo bc = new BusinessCustomerMainVo();
      bc.setCompanyName(companyName);
      log.info("主数据查询{}信息",companyName);
      CustInfoVo custInfo = bipViewMapper.selectBaseInfoByCustName(companyName);
      if (ObjUtil.isNotNull(custInfo)){
         bc.setCreditCode(custInfo.getCertificateId());
         bc.setRegisterName(custInfo.getCustName());
         bc.setLegalPerson(custInfo.getLegalPerson());
         bc.setAddress(custInfo.getRegistrationAddress());
         log.info("{}主数据查询名称、法人、地址、信用码信息成功",companyName);
      }
      List<CustBankVo> bankVoList = bipViewMapper.selectBankByCustName(bc.getCompanyName());
      if (CollUtil.isNotEmpty(bankVoList)){
         if (StrUtil.isEmpty(bc.getBankAccount())){
            bc.setBankAccount(bankVoList.get(0).getBankAccount());
            log.info("{}主数据查询银行卡号信息成功",companyName);
         }
         List<BankNameVo> bankNameVoList = bipBanklViewMapper.selectBankByCode(bankVoList.get(0).getBankName());
         if (CollUtil.isNotEmpty(bankNameVoList)){
            bc.setBankName(bankNameVoList.get(0).getBankNameName());
            log.info("{}主数据查询银行名称信息成功",companyName);
         }
      }
      return bc;
   }
   @Override
   public R saveCustomerSgb(BusinessCustomerAddDTO addDTO) {
      if (StrUtil.isBlank(addDTO.getCompanyName())||StrUtil.isBlank(addDTO.getCreditCode())){
         return R.failed("客商名称或社会信用代码不能为空");
      }
      BusinessCustomer bc = baseMapper.selectOne(Wrappers.<BusinessCustomer>lambdaQuery().eq(BusinessCustomer::getCompanyName,addDTO.getCompanyName())
            .eq(BusinessCustomer::getCreditCode,addDTO.getCreditCode()).last("limit 1"));
      if (ObjUtil.isNotNull(bc)){
         return R.failed("客商已存在");
      }
      BusinessCustomer customer = new BusinessCustomer();
      log.info("主数据查询{}信息",addDTO.getCompanyName());
      CustInfoVo custInfo = bipViewMapper.selectBaseInfoByCustName(addDTO.getCompanyName());
      if (ObjUtil.isNotNull(custInfo)){
         if (!addDTO.getCreditCode().equals(custInfo.getCertificateId())){
            return R.failed("主数据社会信用代码与新增的不一致");
         }
         customer.setCompanyName(addDTO.getCompanyName());
         customer.setCreditCode(custInfo.getCertificateId());
         customer.setRegisterName(custInfo.getCustName());
         customer.setLegalPerson(custInfo.getLegalPerson());
         customer.setAddress(custInfo.getRegistrationAddress());
         customer.setProvince(customer.getCreditCode().substring(2,4));
         if (StrUtil.isNotEmpty(addDTO.getSalesModel())&& addDTO.getSalesModel().matches("[0-9]+")){
            customer.setSalesModel(Long.valueOf(addDTO.getSalesModel()));
         }
         if (StrUtil.isNotEmpty(addDTO.getExportServiceAttr())&& addDTO.getExportServiceAttr().matches("[0-9]+")){
            customer.setExportServiceAttr(Long.valueOf(addDTO.getExportServiceAttr()));
         }
         if (StrUtil.isNotEmpty(addDTO.getClassId())&& addDTO.getClassId().matches("[0-9]+")){
            customer.setClassId(Long.valueOf(addDTO.getClassId()));
         }
         customer.setInvoiceType("01");
         log.info("{}主数据查询名称、法人、地址、信用码信息成功",addDTO.getCompanyName());
         List<CustBankVo> bankVoList = bipViewMapper.selectBankByCustName(addDTO.getCompanyName());
         if (CollUtil.isNotEmpty(bankVoList)){
            customer.setBankAccount(bankVoList.get(0).getBankAccount());
            log.info("{}主数据查询银行卡号信息成功",addDTO.getCompanyName());
            List<BankNameVo> bankNameVoList = bipBanklViewMapper.selectBankByCode(bankVoList.get(0).getBankName());
            if (CollUtil.isNotEmpty(bankNameVoList)){
               customer.setBankName(bankNameVoList.get(0).getBankNameName());
               log.info("{}主数据查询银行名称信息成功",addDTO.getCompanyName());
            }
         }
         customer.setRegisterName(custInfo.getCustName());
         baseMapper.insert(customer);
         return R.ok();
      }
      return R.failed("主数据客商信息不存在");
   }
}