package com.zy.asrs.wcs.asrs.controller; import com.alibaba.fastjson.JSON; import com.zy.asrs.framework.common.R; import com.zy.asrs.wcs.asrs.entity.FlowGraph; import com.zy.asrs.wcs.asrs.entity.param.FlowLogicCodeParam; import com.zy.asrs.wcs.asrs.service.FlowGraphService; import com.zy.asrs.wcs.core.thread.FlowExecute; import com.zy.asrs.wcs.system.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController @RequestMapping("/api") public class FlowController extends BaseController { @Autowired private FlowGraphService flowGraphService; @Autowired private FlowExecute flowExecute; @PostMapping("/flow/analysisExportData") public R analysisExportData(@RequestBody HashMap param) { List> data = (List>) param.get("data"); ArrayList list = new ArrayList<>(); FlowLogicCodeParam first = new FlowLogicCodeParam(); first.setId("1"); list.add(first); for (LinkedHashMap map : data) { LinkedHashMap mapData = (LinkedHashMap) map.get("data"); String id = map.get("id").toString(); Boolean isLogic = Boolean.parseBoolean(mapData.get("isLogic").toString()); String searchLogicId = mapData.get("searchLogicId").toString(); Boolean searchLogicBool = Boolean.parseBoolean(mapData.get("searchLogicBool").toString()); String codeContent = mapData.get("codeContent") == null ? "" : mapData.get("codeContent").toString(); if (isLogic) { FlowLogicCodeParam flowLogicCodeParam = new FlowLogicCodeParam(); flowLogicCodeParam.setId(id); flowLogicCodeParam.setLogic(codeContent); FlowLogicCodeParam last = list.get(list.size() - 1); if (searchLogicBool) { last.getLogicTrue().add(map); }else { last.getLogicFalse().add(map); } list.add(flowLogicCodeParam); }else { for (FlowLogicCodeParam codeParam : list) { if (codeParam.getId().equals(searchLogicId)) { if (searchLogicBool) { codeParam.getLogicTrue().add(map); }else { codeParam.getLogicFalse().add(map); } } } } } FlowGraph flowGraph = new FlowGraph(); if (param.get("id") != null) { flowGraph.setId(Integer.parseInt(param.get("id").toString())); }else { flowGraph.setCreateTime(new Date()); flowGraph.setStatus(0); } flowGraph.setName(param.get("name").toString()); flowGraph.setMemo(param.get("memo").toString()); flowGraph.setOriginData(param.get("originData").toString()); flowGraph.setProcessData(JSON.toJSONString(list)); flowGraph.setUpdateTime(new Date()); flowGraph.setHostId(getHostId()); flowGraphService.saveOrUpdate(flowGraph); return R.ok(); } @PostMapping("/flow/mockRun") public R mockRun(@RequestBody HashMap param) { FlowGraph flowGraph = flowGraphService.getById(param.get("id").toString()); if (flowGraph == null) { return R.error("流程图不存在"); } //开始模拟执行 String processData = flowGraph.getProcessData(); List list = JSON.parseArray(processData, FlowLogicCodeParam.class); boolean execute = flowExecute.execute(list); return R.ok().add(execute); } }