栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 单步步骤数据处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 单步步骤数据处理

为了生成单步步骤条数据 且为了能更好的扩展

一个订单存在多个工种 每个工种存在多个工序
在统计显示各个工序的状态时 才有了以下的内容。

首先定义枚举类型 用于标识每个步骤节点的状态

public enum StepState {
	INIT(0, "未开始"), 
	LOADING(1, "进行中"), 
	FINISH(2, "已完成");
	
	@Getter
	Integer code;
	
	@Getter
	String name;

	StepState(Integer code, String name) {
		this.code = code;
		this.name = name;
	}
}

定义节点

public class Step{

	@Getter
	@Setter
	Consumer initCon;
	
	@Getter
	@Setter
	Predicate loadingPre;
	
	@Getter
	@Setter
	Predicate finishPre;

	Integer index;
	Integer state;

	@Getter
	StepState stepState;
	
	@Getter
	@Setter
	String name;

	@Getter
	@Setter
	Map data;
	
	Step(Integer index) {
		this.index = index;
		data = new HashMap();
	}
	
	public Integer getState() {
		return stepState.getCode();
	}
	
	public void setStepState(StepState stepState) {
		if (stepState == null) {
			return;
		}
		boolean flag = true;
		if (StepState.INIT.getCode().equals(stepState.getCode())) {
			if (initCon != null) {
				initCon.accept(this);
			}
		} else if (StepState.LOADING.getCode().equals(stepState.getCode())) {
			if (loadingPre != null) {
				flag = loadingPre.test(this);
			}
		} else if (StepState.FINISH.getCode().equals(stepState.getCode())) {
			if (finishPre != null) {
				flag = finishPre.test(this);
			}
		}
		if (flag) {
			this.stepState = stepState;
			this.state = stepState.getCode();
		}
	}	

}

定义步骤实体类

public class StepBean {

	// 当前到第几步
	@Getter
	private Integer index;
	// 总步记录
	@Getter
	private List value;
	
	public StepBean() {
		value = new ArrayList();
		index = 0;
	}
	
	public StepBean(String[] stepArr) {
		this.setStepArr(stepArr, null, null, null);
	}

	public StepBean(String[] stepArr, Consumer initCon) {
		this.setStepArr(stepArr, initCon, null, null);
	}

	public StepBean(String[] stepArr, Predicate loadingPre, Predicate finishPre) {
		this.setStepArr(stepArr, null, loadingPre, finishPre);
	}
	
	
	public void setStepArr(String[] stepArr, Consumer initCon, Predicate loadingPre,
		Predicate finishPre) {
		value = new ArrayList();
		index = 0;
		if (stepArr != null && stepArr.length > 0) {
			for (int i = 0; i < stepArr.length; i++) {
				String stepName = stepArr[i];
				Step step = new Step(i);
				step.setInitCon(initCon);
				step.setLoadingPre(loadingPre);
				step.setFinishPre(finishPre);
				step.setName(stepName);
				step.setStepState(StepState.INIT);
				value.add(step);
			}
		}
	}
	
	private Step next() {
		if (value == null || index >= value.size()) {
			return null;
		}
		Step step = value.get(index);
		index++;
		return step;
	}
	
	private void finishPre(Integer index) {
		if (index == null || index <= 0 || index >= value.size()) {
			return;
		}
		for (int i = 0; i < index; i++) {
			Step otherStep = value.get(i);
			otherStep.setStepState(StepState.FINISH);
		}
	}
	
	
	public void loading() {
		Step step = this.next();
		if (step == null) {
			return;
		}
		step.setStepState(StepState.LOADING);
		this.finishPre(getIndex() - 2);
	}

	
	public void finish() {
		Step step = this.next();
		if (step == null) {
			return;
		}
		step.setStepState(StepState.FINISH);
		Integer curIndex = getIndex();
		this.finishPre(curIndex - 2);
		// 使下一个节点处于进行中状态
		if (curIndex >= value.size()) {
			return;
		}
		Step nextStep = value.get(curIndex);
		nextStep.setStepState(StepState.LOADING);
	}
}

测试

public static void main(String[] args) {
	String[] orderItems = { "下层机构", "上层机构"};
	String[] stepNames = { "售前合同签订", "销售订单生效", "配置上传" };
	List result = new ArrayList();
	for(String orderItem : orderItems ) {
		StepBean sb = new StepBean(stepNames);
		// 第一步
		sb.finish();
		// 第二步
		sb.loading();
		// 第三步

		Map m = new HashMap();
		m.put(orderItem, sb.getValue());
		result.add(m);
	}
	Gson gson = new Gson();
	System.out.println(gson.toJson(result));
}

生成的Json如下

[
	{"下层机构":
		[
			{
				"index":0,
				"state":2,
				"stepState":"FINISH",
				"name":"售前合同签订",
				"data":{}
			}, {
				"index":1,
				"state":1,
				"stepState":"LOADING",
				"name":"销售订单生效",
				"data":{}
			}, {
				"index":2,
				"state":0,
				"stepState":"INIT",
				"name":"配置上传",
				"data":{}
			}
		]
	}, {"上层机构":
		[
			{
				"index":0,
				"state":2,
				"stepState":"FINISH",
				"name":"售前合同签订",
				"data":{}
			}, {
				"index":1,
				"state":1,
				"stepState":"LOADING",
				"name":"销售订单生效",
				"data":{}
			},{
				"index":2,
				"state":0,
				"stepState":"INIT",
				"name":"配置上传",
				"data":{}
			}
		]
	}
]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872027.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号