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

重庆巴南网站制作网络科技公司经营范围

重庆巴南网站制作,网络科技公司经营范围,网站建设及安全管理,易企秀官网本项目专栏: 物流项目_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/417426.html

相关文章:

  • 网站开发质量管理四川seo哪里有
  • 自己做网站卖视频石家庄百度快照优化
  • 新闻网站模板html网站seo公司
  • 文山北京网站建设seo网络营销
  • 有没有专门做橱窗的案例网站网络推广的渠道有哪些
  • 怎么找人做淘宝网站吗深圳网络推广怎么做
  • android 移动网站开发最牛餐饮营销手段
  • 交友网站建设策划方案(2)百度关键词排名软件
  • 程序员做网站给女朋友海南seo顾问服务
  • 文章类型的网站模版推广app网站
  • 购物网站开发 项目描述正规引流推广公司
  • 做蛋糕网站的优点独立站怎么建站
  • 国外设计欣赏网站优化网站广告优化
  • 甘肃网站设计公司付费推广有几种方式
  • 展示型企业网站设计方案如何查看百度搜索指数
  • 中铁建设集团门户网站网站seo提升
  • 网络营销工具中推送者seo
  • 西安有那些做网站的公司好品牌策划书
  • 网站建设运营预算明细百度收录网站要多久
  • 邯郸做网站的地方百度推广开户免费
  • 网站建设费用明细公司品牌推广方案范文
  • 对网站做维护磁力链搜索引擎入口
  • cms做网站可以做些什么网站百度搜索关键词排名
  • 商城型网站开发网站建设网页百度网盘
  • b2b 网站 建设营销案例最新
  • 网站开发报告新闻稿范文300字
  • 义乌小程序开发制作公司应用宝aso优化
  • 怎么做跳转流量网站网络推广产品公司
  • 做招聘网站要多久好看的网站设计
  • 长沙微网站建设互联网营销培训课程