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.rcs.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<String, Object> param) { 
 | 
        List<LinkedHashMap<String, Object>> data = (List<LinkedHashMap<String, Object>>) param.get("data"); 
 | 
  
 | 
        ArrayList<FlowLogicCodeParam> list = new ArrayList<>(); 
 | 
  
 | 
        FlowLogicCodeParam first = new FlowLogicCodeParam(); 
 | 
        first.setId("1"); 
 | 
        list.add(first); 
 | 
        for (LinkedHashMap<String, Object> map : data) { 
 | 
            LinkedHashMap<String, Object> mapData = (LinkedHashMap<String, Object>) 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<String, Object> param) { 
 | 
        FlowGraph flowGraph = flowGraphService.getById(param.get("id").toString()); 
 | 
        if (flowGraph == null) { 
 | 
            return R.error("流程图不存在"); 
 | 
        } 
 | 
  
 | 
        //开始模拟执行 
 | 
        String processData = flowGraph.getProcessData(); 
 | 
        List<FlowLogicCodeParam> list = JSON.parseArray(processData, FlowLogicCodeParam.class); 
 | 
        boolean execute = flowExecute.execute(list); 
 | 
        return R.ok().add(execute); 
 | 
    } 
 | 
  
 | 
} 
 |