状态设计模式完成商品的创建状态之间的流转

/**
* 产品状态:1编辑、2提审、3撤审、4通过、5运行(审核通过后worker扫描状态)、6拒绝、7关闭、8开启
*/
public enum ActivityState {

    /** 1:编辑 */EDIT(1, "编辑"),/** 2:提审 */ARRAIGNMENT(2, "提审"),/** 3:撤审 */REVOKE(3, "撤审"),/** 4:通过 */PASS(4, "通过"),/** 5:运行(活动中) */DOING(5, "运行(活动中)"),/** 6:拒绝 */REFUSE(6, "拒绝"),/** 7:关闭 */CLOSE(7, "关闭"),/** 8:开启 */OPEN(8, "开启");private Integer code;private String info;ActivityState(Integer code, String info) {this.code = code;this.info = info;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}

产品状态抽象类

/*** 产品状态抽象类*/
public abstract class AbstractState {@Resourceprotected IActivityRepository activityRepository;/*** 活动提审** @param activityId   活动ID* @param currentState 当前状态* @return 执行结果*/public abstract Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState);/*** 审核通过** @param activityId   活动ID* @param currentState 当前状态* @return 执行结果*/public abstract Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState);/*** 审核拒绝** @param activityId   活动ID* @param currentState 当前状态* @return 执行结果*/public abstract Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState);/*** 撤审撤销** @param activityId   活动ID* @param currentState 当前状态* @return 执行结果*/public abstract Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState);/*** 活动关闭** @param activityId   活动ID* @param currentState 当前状态* @return 执行结果*/public abstract Result close(Long activityId, Enum<Constants.ActivityState> currentState);/*** 活动开启** @param activityId   活动ID* @param currentState 当前状态* @return 执行结果*/public abstract Result open(Long activityId, Enum<Constants.ActivityState> currentState);/*** 活动执行** @param activityId   活动ID* @param currentState 当前状态* @return 执行结果*/public abstract Result doing(Long activityId, Enum<Constants.ActivityState> currentState);
}
/*** 编辑状态*/
@Component
public class EditingState extends AbstractState {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.ARRAIGNMENT);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动提审成功") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "编辑中不可审核通过");}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "编辑中不可审核拒绝");}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "编辑中不可撤销审核");}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.CLOSE);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动关闭成功") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "非关闭活动不可开启");}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "编辑中活动不可执行活动中变更");}
}
/*** 提审状态*/
@Component
public class ArraignmentState extends AbstractState {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR,"代审核状态不可重复提审");}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.PASS);return isSuccess?Result.buildResult(Constants.ResponseCode.SUCCESS,"活动审核通过完成"):Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.REFUSE);return isSuccess?Result.buildResult(Constants.ResponseCode.SUCCESS,"活动审核拒绝完成"):Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.EDIT);return isSuccess?Result.buildResult(Constants.ResponseCode.SUCCESS,"活动审核撤销回到编辑中"):Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.CLOSE);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动审核关闭完成") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "非关闭活动不可开启");}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "待审核活动不可执行活动中变更");}
}
/*** 审核通过状态*/
@Component
public class PassState extends AbstractState {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "已审核状态不可重复提审");}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "已审核状态不可重复审核");}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.REFUSE);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动审核拒绝完成") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "审核通过不可撤销(可先拒绝审核)");}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.CLOSE);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动审核关闭完成") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "非关闭活动不可开启");}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.DOING);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动变更活动中完成") : Result.buildErrorResult("活动状态变更失败");}
}
/*** 运行【活动中】状态*/
@Component
public class DoingState extends AbstractState {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动中不可提审");}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动中不可审核通过");}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动中不可审核拒绝");}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动中不可撤销审核");}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.CLOSE);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动关闭成功") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动中不可开启");}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动中不可重复执行");}
}
/*** 审核拒绝状态*/
@Component
public class RefuseState extends AbstractState {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "已审核状态不可重复提审");}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "已审核状态不可重复审核");}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动审核拒绝不可重复审核");}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.EDIT);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "撤销审核完成") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.CLOSE);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动审核关闭完成") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "非关闭活动不可开启");}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "审核拒绝不可执行活动为进行中");}}
/*** 活动关闭状态*/
@Component
public class CloseState extends AbstractState {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动关闭不可提审");}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动关闭不可审核通过");}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动关闭不可审核拒绝");}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动关闭不可撤销审核");}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动关闭不可重复关闭");}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.OPEN);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动开启完成") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动关闭不可变更活动中");}
}
/*** 活动开启状态*/
@Component
public class OpenState extends AbstractState {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动开启不可提审");}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动开启不可审核通过");}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动开启不可审核拒绝");}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动开启不可撤销审核");}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.CLOSE);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动关闭完成") : Result.buildErrorResult("活动状态变更失败");}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentState) {return Result.buildResult(Constants.ResponseCode.UN_ERROR, "活动不可重复开启");}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentState) {boolean isSuccess = activityRepository.alterStatus(activityId, currentState, Constants.ActivityState.DOING);return isSuccess ? Result.buildResult(Constants.ResponseCode.SUCCESS, "活动变更活动中完成") : Result.buildErrorResult("活动状态变更失败");}}
/*** 状态处理接口*/
public interface IStateHandler {/*** 提审* @param activityId    活动ID* @param currentStatus 当前状态* @return              审核结果*/Result arraignment(Long activityId, Enum<Constants.ActivityState> currentStatus);/*** 审核通过* @param activityId    活动ID* @param currentStatus 当前状态* @return              审核结果*/Result checkPass(Long activityId, Enum<Constants.ActivityState> currentStatus);/*** 审核拒绝* @param activityId    活动ID* @param currentStatus 当前状态* @return              审核结果*/Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentStatus);/*** 撤销审核* @param activityId    活动ID* @param currentStatus 当前状态* @return              审核结果*/Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentStatus);/*** 关闭* @param activityId    活动ID* @param currentStatus 当前状态* @return              审核结果*/Result close(Long activityId, Enum<Constants.ActivityState> currentStatus);/*** 开启* @param activityId    活动ID* @param currentStatus 当前状态* @return              审核结果*/Result open(Long activityId, Enum<Constants.ActivityState> currentStatus);/*** 运行活动中* @param activityId    活动ID* @param currentStatus 当前状态* @return              审核结果*/Result doing(Long activityId, Enum<Constants.ActivityState> currentStatus);}
/*** 状态处理服务*/
@Service
public class StateHandlerImpl extends StateConfig implements IStateHandler {@Overridepublic Result arraignment(Long activityId, Enum<Constants.ActivityState> currentStatus) {return stateGroup.get(currentStatus).arraignment(activityId,currentStatus);}@Overridepublic Result checkPass(Long activityId, Enum<Constants.ActivityState> currentStatus) {return stateGroup.get(currentStatus).checkPass(activityId,currentStatus);}@Overridepublic Result checkRefuse(Long activityId, Enum<Constants.ActivityState> currentStatus) {return stateGroup.get(currentStatus).checkRefuse(activityId, currentStatus);}@Overridepublic Result checkRevoke(Long activityId, Enum<Constants.ActivityState> currentStatus) {return stateGroup.get(currentStatus).checkRevoke(activityId, currentStatus);}@Overridepublic Result close(Long activityId, Enum<Constants.ActivityState> currentStatus) {return stateGroup.get(currentStatus).close(activityId, currentStatus);}@Overridepublic Result open(Long activityId, Enum<Constants.ActivityState> currentStatus) {return stateGroup.get(currentStatus).open(activityId, currentStatus);}@Overridepublic Result doing(Long activityId, Enum<Constants.ActivityState> currentStatus) {return stateGroup.get(currentStatus).doing(activityId, currentStatus);}
}

测试类

    @Testpublic void test_alterState() {logger.info("提交审核,测试:{}", JSON.toJSONString(stateHandler.arraignment(100001L, Constants.ActivityState.EDIT)));logger.info("审核通过,测试:{}", JSON.toJSONString(stateHandler.checkPass(100001L, Constants.ActivityState.ARRAIGNMENT)));logger.info("运行活动,测试:{}", JSON.toJSONString(stateHandler.doing(100001L, Constants.ActivityState.PASS)));logger.info("二次提审,测试:{}", JSON.toJSONString(stateHandler.checkPass(100001L, Constants.ActivityState.EDIT)));}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[office] excel2003横向求和的方法步骤图 #媒体#笔记#经验分享

excel2003横向求和的方法步骤图 Excel中经常需要横向求和&#xff0c;横向求和具体该如何操作呢?下面是小编带来的关于excel2003横向求和的方法&#xff0c;希望阅读过后对你有所启发! excel2003横向求和的方法 横向求和步骤1&#xff1a;下面这个表格就是我们需要求和的示例表…

应对差旅报销的“三多一低”,科世达、众瑞智能、高仙机器人为何都选择分贝通?

制造企业是典型的复杂体,从研发、采购、生产、销售到售后等盘根错节。在业务复杂度、流程规范化等持续进阶的同时,报销单据量更是月月破万,可企业在差旅报销的管理依然保持“传统风格”。 从申请、审批、预订到报销,环节复杂冗长,这也逐渐形成了制造业特有的支出管理难题———…

【Linux】进程(9):进程控制1

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux进程&#xff08;9&#xff09;进程控制1&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1 fork函数2 进程终止&#xff08;A&#xff09;终止是…

java中异常-异常概述+异常体系结构

一、异常概述 1、什么是异常&#xff1f; java程序在运行时出现的不正常情况 2、java中提供的默认的异常处理机制 java中对java程序运行时可能会出现的每种不正常情况都创建了一个唯一对应的类&#xff0c;在java程序运行时如果出现不正常情况&#xff0c;java程序就会创建…

[minepy][python]minepy所有whl文件下载地址汇总

minepy是一个基于最大信息系数&#xff08;MIC和MINE族&#xff09;的Python库&#xff0c;它提供了对非参数勘探的有力支持。以下是关于minepy的详细介绍&#xff1a; 主要功能与特点&#xff1a; minepy提供了APPROX-MIC、MIC_e、总信息系数&#xff08;TIC&#xff09;和广义…

Java | Leetcode Java题解之第140题单词拆分II

题目&#xff1a; 题解&#xff1a; class Solution {public List<String> wordBreak(String s, List<String> wordDict) {Map<Integer, List<List<String>>> map new HashMap<Integer, List<List<String>>>();List<List…

USB Type-C 和 USB供电数据和电源角色

USB Type-C 连接器生态系统随着现代平台和设备需求的变化而不断发展。 USB Type-C 连接器生态系统可满足现代平台和设备不断变化的需求&#xff0c;并且符合更小、更薄且更轻便的外形设计趋势。此外&#xff0c;针对 Type-C 连接器修改 USB PD 有助于满足高耗电应用的需求。 …

自己做的精灵图制作,图片合成,卓宠,窗口置顶,磁力链下载等工具软件

欢迎使用和提bug&#xff0c;才v1.0.2&#xff0c;有新奇的自己需要的功能可以提给我&#xff0c;我看看能不能做。 网站地址 github

Qt对二进制文件进行加密及解密操作

在工作中可能会做一些二进制文件加密及解密的任务&#xff0c;比如说仪器的时序指令bin文件。 #include <iostream> #include <fstream> #include <vector> #include <QCryptographicHash> #include <QFile> #include <QDataStream> #inc…

Next.js初始化和一些配置

Next.js初始化和一些配置 Next.js初始化和一些配置初始化配置路径别名跨域问题图片跨域问题 Next.js初始化和一些配置 我的版本是14.2.3 初始化 配置 路径别名 跨域问题 改为服务端组件 把发起跨域请求的组件顶层的use client删掉使用后端接口转发 在Next.js自定义一个接…

数据总线、位扩展、字长

数据总线&#xff08;Data Bus&#xff09; 定义 数据总线是计算机系统中的一组并行信号线&#xff0c;用于在计算机内部传输数据。这些数据可以在中央处理器&#xff08;CPU&#xff09;、内存和输入/输出设备之间传输。 作用 数据传输&#xff1a;数据总线负责在计算机各…

c++【入门】求圆环的面积

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 如下图所示的圆环铁片&#xff0c;中间是空心的&#xff0c;已知圆环外圆的半径是r1厘米&#xff08;如&#xff1a;10cm&#xff09;&#xff0c;内圆半径是r2厘米&#xff08;如&#xff1a;6cm&#xff09;&#xff0c;请编…

心链13---主页切换功能 + loading特效 + 导航栏完善 + 队伍页接口修改

心链 — 伙伴匹配系统 直接取出所有用户&#xff0c;依次和当前用户计算分数&#xff0c;取 TOP N&#xff08;54 秒&#xff09; 优化方法&#xff1a; 切忌不要在数据量大的时候循环输出日志&#xff08;取消掉日志后 20 秒&#xff09;Map 存了所有的分数信息&#xff0c;占…

C++ | Leetcode C++题解之第140题单词拆分II

题目&#xff1a; 题解&#xff1a; class Solution { private:unordered_map<int, vector<string>> ans;unordered_set<string> wordSet;public:vector<string> wordBreak(string s, vector<string>& wordDict) {wordSet unordered_set(w…

SpringBoot+Vue网上购物商城系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 系统角色对应功能 用户商家管理员 系统功能截图

docker部署redis实践

1.拉取redis镜像 # 拉取镜像 sudo docker pull redis2.创建映射持久化目录 # 创建目录 sudo mkdir -p $PWD/redis/{conf,data}3. 运行redis 容器&#xff0c;查看当前redis 版本号 # 运行 sudo docker run --name redis -d -p 6379:6379 redis # 查看版本号 sudo docker ex…

java异常处理知识点总结

一.前提知识 首先当运行出错的时候&#xff0c;有两种情况&#xff0c;一种叫做“错误”&#xff0c;另一种叫做“异常”。错误指的是运行过程中遇到了硬件或操作系统出错&#xff0c;这种情况程序员是没办法处理的&#xff0c;因为这是硬件和系统的问题&#xff0c;不能靠代码…

React Native中集成ArcGIS以显示地图、渲染自定义图层和获取地理信息数据

在您的数据采集上传的应用中集成ArcGIS以显示地图、渲染自定义图层和获取地理信息数据是一项常见需求。下面是如何实现这些功能的详细指南&#xff0c;包括具体步骤和示例代码。 1. 显示地图 原生开发 Android&#xff1a; 使用ArcGIS Android SDK。您需要在AndroidManifest…

tile-join的详细解释和使用说明

tile-join是Tippecanoe工具集中的一个实用命令&#xff0c;主要用于合并多个MBTiles文件&#xff0c;或者将属性数据添加到已有的MBTiles文件中。它可以处理大量的GeoJSON、Shapefile和MBTiles数据&#xff0c;并将它们合并成一个新的MBTiles文件。这对于需要结合多个数据源或者…

使用GPT-soVITS再4060下2小时训练声音模型以及处理断句带来的声音模糊问题

B站UP主视频 感谢UP主“白菜工厂1145号员工”的“熟肉”&#xff0c;我这篇笔记就不展示整一个训练和推理流程&#xff0c;重点写的4060该注意的一些事项。如何解决断句模糊的问题&#xff0c;在本篇笔记的最末尾。 相关连接&#xff1a; 原项目github UP主的说明文档 1、训…