当前位置: 首页 > wzjs >正文

本地建站discuz站长之家网站

本地建站discuz,站长之家网站,黄浦b2c网站制作价格,建e网效果图本项目专栏: 物流项目_Auc23的博客-CSDN博客 关于Neo4j的可以看这一期: Neo4j入门第二期(Spring Data Neo4j的使用)-CSDN博客 需求分析 对于运输路线规划,总的需求有两个,一个是机构管理,一…

本项目专栏:

物流项目_Auc23的博客-CSDN博客

关于Neo4j的可以看这一期:

Neo4j入门第二期(Spring Data Neo4j的使用)-CSDN博客

需求分析

对于运输路线规划,总的需求有两个,一个是机构管理,一个是路线管理。

IService

package com.sl.transport.service;import com.sl.transport.entity.node.BaseEntity;/*** 基础服务实现*/
public interface IService<T extends BaseEntity> {/*** 根据业务id查询数据** @param bid 业务id* @return 节点数据*/T queryByBid(Long bid);/*** 新增节点** @param t 节点数据* @return 新增的节点数据*/T create(T t);/*** 更新节点** @param t 节点数据* @return 更新的节点数据*/T update(T t);/*** 根据业务id删除数据** @param bid 业务id* @return 是否删除成功*/Boolean deleteByBid(Long bid);}
/*** 基础服务的实现*/
public class ServiceImpl<M extends BaseRepository<T, Long>, T extends BaseEntity> implements IService<T> {@Autowiredprivate M repository;@Overridepublic T queryByBid(Long bid) {return this.repository.findByBid(bid).orElse(null);}@Overridepublic T create(T t) {t.setId(null); //主键id由neo4j生成,不能设置值return this.repository.save(t);}@Overridepublic T update(T t) {//先查询,后更新T entity = this.queryByBid(t.getBid());if (ObjectUtil.isEmpty(entity)) {return null;}//将更新的数据复制到entity中BeanUtil.copyProperties(t, entity, CopyOptions.create().ignoreNullValue().setIgnoreProperties("id", "bid"));//更新return this.repository.save(entity);}@Overridepublic Boolean deleteByBid(Long bid) {return this.repository.deleteByBid(bid) > 0;}
}

 AgencyServiceImpl

package com.sl.transport.service.impl;import com.sl.transport.entity.node.AgencyEntity;
import com.sl.transport.repository.AgencyRepository;
import com.sl.transport.service.AgencyService;
import org.springframework.stereotype.Service;@Service
public class AgencyServiceImpl extends ServiceImpl<AgencyRepository, AgencyEntity> implements AgencyService {}

机构同步

业务流程

/*** 对于权限管家系统消息的处理*/
@Slf4j
@Component
public class AuthMQListener {@RabbitListener(bindings = @QueueBinding(value = @Queue(name = Constants.MQ.Queues.AUTH_TRANSPORT),exchange = @Exchange(name = "${rabbitmq.exchange}", type = ExchangeTypes.TOPIC),key = "#"))public void listenAgencyMsg(String msg) {//{"type":"ORG","operation":"ADD","content":[{"id":"977263044792942657","name":"55","parentId":"0","managerId":null,"status":true}]}log.info("接收到消息 -> {}", msg);JSONObject jsonObject = JSONUtil.parseObj(msg);String type = jsonObject.getStr("type");if (!StrUtil.equalsIgnoreCase(type, "ORG")) {//非机构消息return;}String operation = jsonObject.getStr("operation");JSONObject content = (JSONObject) jsonObject.getJSONArray("content").getObj(0);String name = content.getStr("name");Long parentId = content.getLong("parentId");IService iService;BaseEntity entity;if (StrUtil.endWith(name, "转运中心")) {//一级转运中心iService = OrganServiceFactory.getBean(OrganTypeEnum.OLT.getCode());entity = new OLTEntity();entity.setParentId(0L);} else if (StrUtil.endWith(name, "分拣中心")) {//二级转运中心iService = OrganServiceFactory.getBean(OrganTypeEnum.TLT.getCode());entity = new TLTEntity();entity.setParentId(parentId);} else if (StrUtil.endWith(name, "营业部")) {//网点iService = OrganServiceFactory.getBean(OrganTypeEnum.AGENCY.getCode());entity = new AgencyEntity();entity.setParentId(parentId);} else {return;}//设置参数entity.setBid(content.getLong("id"));entity.setName(name);entity.setStatus(content.getBool("status"));switch (operation) {case "ADD": {iService.create(entity);break;}case "UPDATE": {iService.update(entity);break;}case "DEL": {iService.deleteByBid(entity.getBid());break;}}}}

机构管理

*** @author zzj* @version 1.0*/
public interface OrganService {/*** 无需指定type,根据id查询** @param bid 机构id* @return 机构信息*/OrganDTO findByBid(Long bid);/*** 无需指定type,根据ids查询** @param bids 机构ids* @return 机构信息*/List<OrganDTO> findByBids(List<Long> bids);/*** 查询所有的机构,如果name不为空的按照name模糊查询** @param name 机构名称* @return 机构列表*/List<OrganDTO> findAll(String name);/*** 查询机构树* @return 机构树*/String findAllTree();
}
@Service
public class OrganServiceImpl implements OrganService {@Resourceprivate OrganRepository organRepository;@Resourceprivate ObjectMapper objectMapper;@Overridepublic OrganDTO findByBid(Long bid) {OrganDTO organDTO = this.organRepository.findByBid(bid);if (ObjectUtil.isNotEmpty(organDTO)) {return organDTO;}throw new SLException(ExceptionEnum.ORGAN_NOT_FOUND);}@Overridepublic List<OrganDTO> findByBids(List<Long> bids) {List<OrganDTO> organDTOS = this.organRepository.findByBids(bids);if (ObjectUtil.isNotEmpty(organDTOS)) {return organDTOS;}throw new SLException(ExceptionEnum.ORGAN_NOT_FOUND);}@Overridepublic List<OrganDTO> findAll(String name) {return this.organRepository.findAll(name);}@Overridepublic String findAllTree() {return "";}
}
@Component
public class OrganRepositoryImpl implements OrganRepository {@Resourceprivate Neo4jClient neo4jClient;@Overridepublic OrganDTO findByBid(Long bid) {String cypherQuery = StrUtil.format("MATCH (n)\n" +"WHERE n.bid = {}\n" +"RETURN n", bid);return CollUtil.getFirst(executeQuery(cypherQuery));}@Overridepublic List<OrganDTO> findByBids(List<Long> bids) {String cypherQuery = StrUtil.format("MATCH (n)\n" +"WHERE n.bid in {}\n" +"RETURN n", bids);return executeQuery(cypherQuery);}@Overridepublic List<OrganDTO> findAll(String name) {name = StrUtil.removeAll(name, '\'', '"');String cypherQuery = StrUtil.isEmpty(name) ?"MATCH (n) RETURN n" :StrUtil.format("MATCH (n) WHERE n.name CONTAINS '{}' RETURN n", name);return executeQuery(cypherQuery);}private List<OrganDTO> executeQuery(String cypherQuery) {return ListUtil.toList(this.neo4jClient.query(cypherQuery).fetchAs(OrganDTO.class) //设置响应的类型.mappedBy((typeSystem, record) -> { //对结果进行封装处理Map<String, Object> map = record.get("n").asMap();OrganDTO organDTO = BeanUtil.toBean(map, OrganDTO.class);InternalPoint2D location = (InternalPoint2D) map.get("location");if (ObjectUtil.isNotEmpty(location)) {organDTO.setLongitude(location.x());organDTO.setLatitude(location.y());}//获取类型String type = CollUtil.getFirst(record.get("n").asNode().labels());organDTO.setType(OrganTypeEnum.valueOf(type).getCode());return organDTO;}).all());}
}

http://www.dtcms.com/wzjs/514928.html

相关文章:

  • 网站sem优化怎么做东莞网络推广平台
  • 成都服装网站建设北京seo优化服务
  • 湖南网页设计培训网站建设求购买链接
  • 做网站那些好seo优化要做什么
  • 海南省旅游专业网站发展电子商务缺乏强大的专业产业资源做后盾软件推广怎么赚钱
  • 网站制作叫什么制作网站需要多少费用
  • 做平面设计赚钱靠谱的网站有哪些怎么给自己的公司建立网站
  • 做网站用的系统武汉推广服务
  • 广东省建设注册执业资格中心网站百度搜索风云榜
  • 网站开发 参考文献网站运营及推广方案
  • 网站设计联系网站seo技术能不能赚钱
  • vuejs 做网站 性能十大室内设计网站
  • 购物网站的建设思维导图百度seo排名教程
  • 公司请做网站seo课程培训班费用
  • 做网站怎么选择上市公司搜索引擎推广步骤
  • 手机能制作网站吗推广网站模板
  • 888网创上海优化公司
  • 工程施工合同电子版在线网站seo优化
  • 熊撑号怎么做网站推广万网域名管理入口
  • 网站搭建福州公司个人网站推广平台大全
  • 横店影视城网站建设企业营销咨询
  • 即墨网站建设招聘百度公司在哪里
  • 软件下载类型网站怎么做排位及资讯
  • 杭州做网站建设百度移动开放平台
  • i57500网站开发网站功能优化的方法
  • 辽宁网站制作公司品牌网站建设制作
  • 山西住房与城乡建设厅定额网站搭建一个网站需要多少钱
  • jsp高级动态网站开发试卷seo型网站
  • 网站搭建教室南宁网络推广热线
  • 网站做更改后台怎么做seo在哪学