package com.winhc.service.impl; import com.winhc.common.enums.CompanyEnum; import com.winhc.service.RelationService; import com.winhc.utils.CompanyUtils; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.neo4j.driver.Driver; import org.neo4j.driver.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author π * @Description:股东关系 人->公司 * @date 2021/1/11 10:03 */ @Slf4j @Service("companyNodeServiceImpl") @AllArgsConstructor public class CompanyNodeServiceImpl implements RelationService { @Autowired @Qualifier("DriverV1") Driver driver; @Override public String save(List> batch_list) { if (batch_list.isEmpty()) return null; long start = System.currentTimeMillis(); Session session = driver.session(); final String cql = "WITH {batch_list} AS batch_list \n" + "UNWIND batch_list AS row \n" + "MERGE(e:" + CompanyEnum.Lable.COMPANY.code + "{company_id:row.id}) \n" + "SET e.name=row.name, e.company_id=row.id \n"; log.info("consumer size: {}, cql:{}", batch_list.size(), cql); String data = CompanyUtils.writeNeo4j(session, cql, new HashMap() {{ put("batch_list", batch_list); }}); session.close(); log.info("class:{} | save size:{} | cost:{}", CompanyNodeServiceImpl.class.getSimpleName(), batch_list.size(), (System.currentTimeMillis() - start)); return data; } }