From 77ac6b72ed82d51d0d45bf156ac1b5bb3cb15782 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 19 三月 2024 14:01:43 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/DevpThread.java                 |    9 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/FlowGraphService.java          |    8 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/CrnThread.java                  |    7 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowGraphController.java    |  113 +++++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/entity/FlowGraph.java                  |  137 +++++++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/FlowExecute.java                |   72 +++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensDevpThread.java     |   21 ++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensCrnThread.java      |   12 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java         |   55 ++++-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/protocol/StaProtocol.java        |   83 ++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/impl/FlowGraphServiceImpl.java |   12 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/mapper/FlowGraphMapper.java            |   12 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/SlaveType.java             |   23 ++
 zy-asrs-wcs/src/main/resources/mapper/asrs/FlowGraphMapper.xml                        |    5 
 14 files changed, 557 insertions(+), 12 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java
index 441ea98..8b75166 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java
@@ -1,24 +1,28 @@
 package com.zy.asrs.wcs.asrs.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 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.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
+import java.util.*;
 
 @RestController
-@RequestMapping("/flow")
-public class FlowController {
+@RequestMapping("/api")
+public class FlowController extends BaseController {
 
-    @PostMapping("/analysisExportData")
+    @Autowired
+    private FlowGraphService flowGraphService;
+    @Autowired
+    private FlowExecute flowExecute;
+
+    @PostMapping("/flow/analysisExportData")
     public R analysisExportData(@RequestBody HashMap<String, Object> param) {
-        System.out.println(param);
         List<LinkedHashMap<String, Object>> data = (List<LinkedHashMap<String, Object>>) param.get("data");
 
         ArrayList<FlowLogicCodeParam> list = new ArrayList<>();
@@ -32,7 +36,7 @@
             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").toString();
+            String codeContent = mapData.get("codeContent") == null ? "" : mapData.get("codeContent").toString();
             if (isLogic) {
                 FlowLogicCodeParam flowLogicCodeParam = new FlowLogicCodeParam();
                 flowLogicCodeParam.setId(id);
@@ -60,9 +64,36 @@
 
         }
 
-        System.out.println(list);
+        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);
+    }
+
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowGraphController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowGraphController.java
new file mode 100644
index 0000000..85f264c
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowGraphController.java
@@ -0,0 +1,113 @@
+package com.zy.asrs.wcs.asrs.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wcs.common.annotation.OperationLog;
+import com.zy.asrs.wcs.common.domain.BaseParam;
+import com.zy.asrs.wcs.common.domain.KeyValVo;
+import com.zy.asrs.wcs.common.domain.PageParam;
+import com.zy.asrs.wcs.asrs.entity.FlowGraph;
+import com.zy.asrs.wcs.asrs.service.FlowGraphService;
+import com.zy.asrs.wcs.system.controller.BaseController;
+import com.zy.asrs.wcs.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+@RestController
+@RequestMapping("/api")
+public class FlowGraphController extends BaseController {
+
+    @Autowired
+    private FlowGraphService flowGraphService;
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:list')")
+    @PostMapping("/flowGraph/page")
+    public R page(@RequestBody Map<String, Object> map) {
+        BaseParam baseParam = buildParam(map, BaseParam.class);
+        PageParam<FlowGraph, BaseParam> pageParam = new PageParam<>(baseParam, FlowGraph.class);
+        return R.ok().add(flowGraphService.page(pageParam, pageParam.buildWrapper(true)));
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:list')")
+    @PostMapping("/flowGraph/list")
+    public R list(@RequestBody(required = false) Map<String, Object> map) {
+        return R.ok().add(flowGraphService.list());
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:list')")
+    @GetMapping("/flowGraph/{id}")
+    public R get(@PathVariable("id") Long id) {
+        return R.ok().add(flowGraphService.getById(id));
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:save')")
+    @OperationLog("娣诲姞娴佺▼鍥�")
+    @PostMapping("/flowGraph/save")
+    public R save(@RequestBody FlowGraph flowGraph) {
+        if (!flowGraphService.save(flowGraph)) {
+            return R.error("娣诲姞澶辫触");
+        }
+        return R.ok("娣诲姞鎴愬姛");
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:update')")
+    @OperationLog("淇敼娴佺▼鍥�")
+    @PostMapping("/flowGraph/update")
+    public R update(@RequestBody FlowGraph flowGraph) {
+        if (!flowGraphService.updateById(flowGraph)) {
+            return R.error("淇敼澶辫触");
+        }
+        return R.ok("淇敼鎴愬姛");
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:update')")
+    @OperationLog("淇敼娴佺▼鍥剧姸鎬�")
+    @PostMapping("/flowGraph/updateFlowStatus")
+    public R updateFlowStatus(@RequestBody Map<String,Object> param) {
+        FlowGraph flowGraph = flowGraphService.getById(param.get("id").toString());
+        if (flowGraph == null) {
+            return R.error("娴佺▼鍥句笉瀛樺湪");
+        }
+        flowGraph.setStatus(Integer.parseInt(param.get("status").toString()));
+        flowGraph.setUpdateTime(new Date());
+        flowGraphService.saveOrUpdate(flowGraph);
+        return R.ok("淇敼鎴愬姛");
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:remove')")
+    @OperationLog("鍒犻櫎娴佺▼鍥�")
+    @PostMapping("/flowGraph/remove/{ids}")
+    public R remove(@PathVariable Long[] ids) {
+        if (!flowGraphService.removeByIds(Arrays.asList(ids))) {
+            return R.error("鍒犻櫎澶辫触");
+        }
+        return R.ok("鍒犻櫎鎴愬姛");
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:list')")
+    @PostMapping("/flowGraph/query")
+    public R query(@RequestParam(required = false) String condition) {
+        List<KeyValVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<FlowGraph> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(FlowGraph::getId, condition);
+        }
+        flowGraphService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
+                item -> vos.add(new KeyValVo(item.getId(), item.getId()))
+        );
+        return R.ok().add(vos);
+    }
+
+    @PreAuthorize("hasAuthority('asrs:flowGraph:list')")
+    @PostMapping("/flowGraph/export")
+    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+        ExcelUtil.build(ExcelUtil.create(flowGraphService.list(), FlowGraph.class), response);
+    }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/entity/FlowGraph.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/entity/FlowGraph.java
new file mode 100644
index 0000000..9acf37e
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/entity/FlowGraph.java
@@ -0,0 +1,137 @@
+package com.zy.asrs.wcs.asrs.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.zy.asrs.wcs.system.entity.Host;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.system.service.UserService;
+import com.zy.asrs.wcs.system.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wcs_flow_graph")
+public class FlowGraph implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 鍘熷鏁版嵁
+     */
+    @ApiModelProperty(value= "鍘熷鏁版嵁")
+    private String originData;
+
+    /**
+     * 澶勭悊鍚庣殑鏁版嵁
+     */
+    @ApiModelProperty(value= "澶勭悊鍚庣殑鏁版嵁")
+    private String processData;
+
+    @ApiModelProperty(value= "")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @ApiModelProperty(value= "")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 鏄惁鍚敤 0: 鍚�  1: 鏄�  
+     */
+    @ApiModelProperty(value= "鏄惁鍚敤 0: 鍚�  1: 鏄�  ")
+    private Integer status;
+
+    /**
+     * 鎵�灞炴満鏋�
+     */
+    @ApiModelProperty(value= "鎵�灞炴満鏋�")
+    private Long hostId;
+
+    /**
+     * 娴佺▼鍥惧悕绉�
+     */
+    @ApiModelProperty(value= "娴佺▼鍥惧悕绉�")
+    private String name;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public FlowGraph() {}
+
+    public FlowGraph(String originData, String processData, Date createTime, Date updateTime, Integer status, Long hostId, String name, String memo) {
+        this.originData = originData;
+        this.processData = processData;
+        this.createTime = createTime;
+        this.updateTime = updateTime;
+        this.status = status;
+        this.hostId = hostId;
+        this.name = name;
+        this.memo = memo;
+    }
+
+    //    FlowGraph flowGraph = new FlowGraph(
+//            null,    // 鍘熷鏁版嵁
+//            null,    // 澶勭悊鍚庣殑鏁版嵁
+//            null,    // 
+//            null,    // 
+//            null    // 鏄惁鍚敤
+//    );
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 0:
+                return "鍚�";
+            case 1:
+                return "鏄�";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.getById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/mapper/FlowGraphMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/mapper/FlowGraphMapper.java
new file mode 100644
index 0000000..981c203
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/mapper/FlowGraphMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.asrs.mapper;
+
+import com.zy.asrs.wcs.asrs.entity.FlowGraph;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface FlowGraphMapper extends BaseMapper<FlowGraph> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/FlowGraphService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/FlowGraphService.java
new file mode 100644
index 0000000..e9f4dc7
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/FlowGraphService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.wcs.asrs.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.wcs.asrs.entity.FlowGraph;
+
+public interface FlowGraphService extends IService<FlowGraph> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/impl/FlowGraphServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/impl/FlowGraphServiceImpl.java
new file mode 100644
index 0000000..45a9a2f
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/service/impl/FlowGraphServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.asrs.service.impl;
+
+import com.zy.asrs.wcs.asrs.mapper.FlowGraphMapper;
+import com.zy.asrs.wcs.asrs.entity.FlowGraph;
+import com.zy.asrs.wcs.asrs.service.FlowGraphService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("flowGraphService")
+public class FlowGraphServiceImpl extends ServiceImpl<FlowGraphMapper, FlowGraph> implements FlowGraphService {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/SlaveType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/SlaveType.java
new file mode 100644
index 0000000..1118943
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/SlaveType.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.wcs.core.model.enums;
+
+public enum SlaveType {
+
+    Crn,
+    Devp,
+    Barcode,
+    Led,
+    Scale,
+    Ste,
+    Shuttle,
+    Lift,
+    ;
+
+    public static SlaveType findInstance(String s){
+        for (SlaveType type : SlaveType.values()) {
+            if (type.toString().equals(s)) {
+                return type;
+            }
+        }
+        return null;
+    }
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/protocol/StaProtocol.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/protocol/StaProtocol.java
new file mode 100644
index 0000000..bc3d5d3
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/protocol/StaProtocol.java
@@ -0,0 +1,83 @@
+package com.zy.asrs.wcs.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * 杈撻�佺嚎plc鍗曚釜绔欑偣璇︾粏淇℃伅
+ */
+@Data
+public class StaProtocol implements Cloneable {
+
+    // 绔欑偣缂栧彿
+    private Integer siteId;
+
+    // ----------------------------------------------------------------
+    // 宸ヤ綔鍙�
+    private Short workNo = 0;
+
+    // ----------------------------------------------------------------
+    // 鐩爣绔�
+    private Short staNo;
+
+    // ----------------------------------------------------------------
+    // 鑷姩
+    private boolean autoing;
+
+    // 鏈夌墿
+    private boolean loading;
+
+    // 鍙叆
+    private boolean inEnable;
+
+    // 鍙嚭
+    private boolean outEnable;
+
+    // 绌烘澘淇″彿
+    private boolean emptyMk;
+
+    // 婊℃墭鐩�
+    private boolean fullPlt;
+
+    // 楂�
+    private boolean high;
+
+    // 浣�
+    private boolean low;
+
+    // 閿佸畾鏍囪
+    private boolean pakMk = true;
+
+    // 澶栧舰妫�娴� ------------------------------------------------------------------------
+
+    // 鍓嶈秴闄�
+    private boolean frontErr;
+
+    // 鍚庤秴闄�
+    private boolean backErr;
+
+    // 楂樿秴闄�
+    private boolean highErr;
+
+    // 宸﹁秴闄�
+    private boolean leftErr;
+
+    // 鍙宠秴闄�
+    private boolean rightErr;
+
+    // 瓒呴噸
+    private boolean weightErr;
+
+    // 鎵爜澶辫触
+    private boolean barcodeErr;
+
+    @Override
+    public StaProtocol clone() {
+        try {
+            return (StaProtocol) super.clone();
+        } catch (CloneNotSupportedException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/CrnThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/CrnThread.java
new file mode 100644
index 0000000..1431322
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/CrnThread.java
@@ -0,0 +1,7 @@
+package com.zy.asrs.wcs.core.thread;
+
+public interface CrnThread {
+
+    boolean loadAndUnload();//鍙栨斁璐�
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/DevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/DevpThread.java
new file mode 100644
index 0000000..b826dc2
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/DevpThread.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.wcs.core.thread;
+
+public interface DevpThread {
+
+    boolean writeWorkNo(short workNo);//鍐欏叆宸ヤ綔鍙�
+
+    boolean writeStaNo(short staNo);//鍐欏叆鐩爣绔�
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/FlowExecute.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/FlowExecute.java
new file mode 100644
index 0000000..082a163
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/FlowExecute.java
@@ -0,0 +1,72 @@
+package com.zy.asrs.wcs.core.thread;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.zy.asrs.wcs.asrs.entity.param.FlowLogicCodeParam;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+@Component
+public class FlowExecute {
+
+    //鎵ц娴佺▼鍥�
+    public boolean execute(List<FlowLogicCodeParam> list) {
+        for (FlowLogicCodeParam param : list) {
+            if (param.getId().equals("1")) {
+                return executeFlow(param.getLogicTrue());
+            }
+        }
+        System.out.println(list);
+        return false;
+    }
+
+    private boolean executeFlow(List<Map<String, Object>> list) {
+        for (Map<String, Object> map : list) {
+            JSONObject data = (JSONObject) map.get("data");
+            if (data.getString("type").equals("devp")) {
+                JSONObject devp = data.getJSONObject("devpType");
+                String devpNo = devp.getString("devpNo");//杈撻�佺嚎PLC
+                String staNo = devp.getString("staNo");//绔欏彿
+                Boolean enableStaStatus = devp.getBoolean("enableStaStatus");//鍒ゆ柇绔欑偣鐘舵��
+                JSONArray staStatus = devp.getJSONArray("staStatus");//绔欑偣鐘舵�佸垪琛�
+                String staJudgementFailExecute = devp.getString("staJudgementFailExecute");//鍒ゆ柇澶辫触鍚庢槸鍚︾户缁墽琛屾祦绋�
+                Boolean writeWorkNoStatus = devp.getBoolean("writeWorkNoStatus");//鏄惁鍐欏叆宸ヤ綔鍙�
+                Boolean writeStaNoStatus = devp.getBoolean("writeStaNoStatus");//鏄惁鍐欏叆鐩爣绔�
+                String writeWorkNo = devp.getString("writeWorkNo");//鍐欏叆宸ヤ綔鍙锋暟鎹�
+                String writeStaNo = devp.getString("writeStaNo");//鍐欏叆鐩爣绔欐暟鎹�
+                if (enableStaStatus) {
+                    //鍒ゆ柇绔欑偣鐘舵��
+                    boolean statusFlag = true;//榛樿鍒ゆ柇閫氳繃
+                    for (Object status : staStatus) {
+                        System.out.println(status);
+                    }
+
+                    if (!statusFlag) {
+                        //鍒ゆ柇涓嶉�氳繃
+                        if (staJudgementFailExecute.equals("stop")) {
+                            //鍒ゆ柇澶辫触鍚庝笉缁х画鎵ц
+                            return false;
+                        }
+                    }
+
+                }
+
+                if (writeWorkNoStatus) {
+                    //鍐欏叆宸ヤ綔鍙�
+                }
+
+                if (writeStaNoStatus) {
+                    //鍐欏叆鐩爣绔�
+                }
+                System.out.println(devp);
+            }
+            System.out.println(data);
+        }
+
+        System.out.println(list);
+        return false;
+    }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensCrnThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensCrnThread.java
new file mode 100644
index 0000000..2c6db5c
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensCrnThread.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.core.thread.impl;
+
+import com.zy.asrs.wcs.core.thread.CrnThread;
+
+public class SiemensCrnThread implements CrnThread {
+
+    @Override
+    public boolean loadAndUnload() {
+        System.out.println("loadAndUnload 琚墽琛�");
+        return false;
+    }
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensDevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensDevpThread.java
new file mode 100644
index 0000000..01928d1
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/thread/impl/SiemensDevpThread.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.wcs.core.thread.impl;
+
+import com.zy.asrs.wcs.core.model.protocol.StaProtocol;
+import com.zy.asrs.wcs.core.thread.DevpThread;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class SiemensDevpThread implements DevpThread {
+
+    private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
+
+    @Override
+    public boolean writeWorkNo(short workNo) {
+        return false;
+    }
+
+    @Override
+    public boolean writeStaNo(short staNo) {
+        return false;
+    }
+}
diff --git a/zy-asrs-wcs/src/main/resources/mapper/asrs/FlowGraphMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/asrs/FlowGraphMapper.xml
new file mode 100644
index 0000000..248a5ff
--- /dev/null
+++ b/zy-asrs-wcs/src/main/resources/mapper/asrs/FlowGraphMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.wcs.asrs.mapper.FlowGraphMapper">
+
+</mapper>

--
Gitblit v1.9.1