StaffRelationServiceImpl.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.winhc.service.impl;
  2. import com.winhc.common.enums.CompanyEnum;
  3. import com.winhc.service.RelationService;
  4. import lombok.AllArgsConstructor;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.neo4j.driver.Driver;
  7. import org.neo4j.driver.Result;
  8. import org.neo4j.driver.Session;
  9. import org.springframework.stereotype.Service;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. /**
  14. * @author π
  15. * @Description:主要成员 人->公司
  16. * @date 2021/1/11 10:03
  17. */
  18. @Slf4j
  19. @Service("staffRelationServiceImpl")
  20. @AllArgsConstructor
  21. public class StaffRelationServiceImpl implements RelationService {
  22. private final Driver driver;
  23. @Override
  24. public String save(List<Map<String, Object>> batch_list) {
  25. if (batch_list.isEmpty()) return null;
  26. long start = System.currentTimeMillis();
  27. Session session = driver.session();
  28. final String cql = "WITH {batch_list} AS batch_list \n" +
  29. "UNWIND batch_list AS row \n" +
  30. "MERGE(s:" + CompanyEnum.Lable.PERSON.code + "{person_id:row.start_id}) \n" +
  31. "SET s.name=row.start_name, s.person_id=row.start_id \n" +
  32. "MERGE(e:" + CompanyEnum.Lable.COMPANY.code + "{company_id:row.end_id}) \n" +
  33. "SET e.name=row.end_name, e.company_id=row.end_id \n" +
  34. "WITH s,e,row \n" +
  35. "MERGE(s)-[r:" + CompanyEnum.Lable.高管.code + "]->(e) \n" +
  36. "SET r.staff_type=row.staff_type, r.deleted=row.deleted \n";
  37. Map parameters = new HashMap() {{
  38. put("batch_list", batch_list);
  39. }};
  40. //log.info("cql:" + cql);
  41. String data = session.writeTransaction(tx -> {
  42. Result result = tx.run(cql, parameters);
  43. return "success";
  44. });
  45. log.info("class:{} | save size:{} | cost:{}", StaffRelationServiceImpl.class.getSimpleName(), batch_list.size(), (System.currentTimeMillis() - start));
  46. return data;
  47. }
  48. }