From 5030f3d30ccc1bd16db371c6970a48103aff9191 Mon Sep 17 00:00:00 2001
From: yyt <306727702@qq.com>
Date: 星期一, 03 六月 2024 13:56:57 +0800
Subject: [PATCH] 380新产品,优化

---
 jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java                                                      |   66 +
 jcdm-ui/src/views/main/cfkb/connectingRod/index.vue                                                             |  119 +-
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/controller/DaTileMatchMiddlewareController.java    |  160 ++++
 jcdm-ui/src/views/main/da/tileMatchMiddleware/index.vue                                                         |  336 +++++++++
 jcdm-ui/src/views/main/cfkb/connectingRodUp/index.vue                                                           |   28 
 jcdm-admin/src/main/resources/application.yml                                                                   |    4 
 jcdm-ui/src/views/main/cfkb/BalanceShaft/index.vue                                                              |   81 -
 jcdm-ui/src/views/main/cfkb/crankshaftUp/cs1.vue                                                                |   83 ++
 jcdm-ui/src/views/main/cfkb/crankshaftUp/cs7.vue                                                                |   93 ++
 jcdm-ui/src/views/main/cfkb/crankshaftUp/cs5.vue                                                                |   16 
 jcdm-ui/src/views/main/cfkb/crankshaftUp/index.vue                                                              |   40 +
 jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js                                                        |    8 
 jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml                                |    4 
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/impl/DaTileMatchMiddlewareServiceImpl.java |   93 ++
 jcdm-ui/src/api/main/da/tileMatchMiddleware/tileMatchMiddleware.js                                              |   60 +
 jcdm-ui/src/views/main/bs/orderScheduling/index.vue                                                             |   42 
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/IDaTileMatchMiddlewareService.java         |   61 +
 jcdm-ui/src/views/main/cfkb/crankshaftUp/cs2.vue                                                                |   65 +
 jcdm-ui/src/views/main/cfkb/crankshaftUp/cs6.vue                                                                |   91 ++
 jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml                              |   18 
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/domain/DaTileMatchMiddleware.java                  |  135 +++
 jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js                                                              |    7 
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java              |   49 +
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/mapper/DaTileMatchMiddlewareMapper.java            |   61 +
 jcdm-ui/src/views/main/cfkb/crankshaftUp/cs3.vue                                                                |   30 
 jcdm-ui/src/views/main/cfkb/tileMatchKb/index.vue                                                               |   25 
 jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java                    |   54 +
 jcdm-ui/src/views/main/cfkb/crankshaft/index.vue                                                                |   87 +-
 jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java                                      |   19 
 jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java                                 |   28 
 jcdm-main/src/main/resources/mapper/da/tileMatchMiddleware/DaTileMatchMiddlewareMapper.xml                      |   87 ++
 31 files changed, 1,843 insertions(+), 207 deletions(-)

diff --git a/jcdm-admin/src/main/resources/application.yml b/jcdm-admin/src/main/resources/application.yml
index 1a67159..03bb932 100644
--- a/jcdm-admin/src/main/resources/application.yml
+++ b/jcdm-admin/src/main/resources/application.yml
@@ -138,8 +138,8 @@
       default:
         endpoint: opc.tcp://127.0.0.1:49320
         security-policy: none
-#websocketUrl: 'ws://10.10.12.100:8081/websocket/'
-websocketUrl: 'ws://127.0.0.1:8081/websocket/'
+websocketUrl: 'ws://10.10.12.100:8081/websocket/'
+#websocketUrl: 'ws://127.0.0.1:8081/websocket/'
 
 # mybatis-plus
 #mybatis-plus:
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java b/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java
index f17d9a4..8578039 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java
@@ -1,14 +1,20 @@
 package com.jcdm.main.da.opcuaconfig.controller;
 
 import java.util.List;
+import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.hutool.core.collection.CollUtil;
 import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
 import com.jcdm.main.da.opcuaconfig.domain.NodeEntity;
 import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService;
 import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
 import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
 import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
+import com.jcdm.main.da.tileMatchMiddleware.domain.DaTileMatchMiddleware;
+import com.jcdm.main.da.tileMatchMiddleware.service.IDaTileMatchMiddlewareService;
+import com.jcdm.main.da.tileMatchRules.domain.DaTileMatchRules;
+import com.jcdm.main.da.tileMatchRules.service.IDaTileMatchRulesService;
 import com.jcdm.main.plcserver.sub.OPCUaSubscription;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -42,7 +48,12 @@
 {
     @Autowired
     private IDaOpcuaConfigService daOpcuaConfigService;
+    @Autowired
     private IDaParamCollectionService daParamCollectionService;
+    @Autowired
+    private IDaTileMatchRulesService daTileMatchRulesService;
+    @Autowired
+    private IDaTileMatchMiddlewareService daTileMatchMiddlewareService;
 
     /**
      * 鏌ヨ浜や簰淇″彿閰嶇疆鍒楄〃
@@ -132,15 +143,16 @@
      * 閰嶇摝鎵爜
      */
     @PreAuthorize("@ss.hasPermi('da:opcuaconfig:query')")
-    @GetMapping(value = "/barcode/{barcode}/{locationCode}")
-    public AjaxResult setBarcode(@PathVariable("barcode") String barcode,@PathVariable("locationCode") String locationCode) {
-        Boolean out= true;
+    @GetMapping(value = "/barcode1")
+    public DaParamCollection setBarcode1(String barcode,String locationCode) {
+        Boolean out = true;
+        DaParamCollection xParamCollection = null;
         try {
-            Object SNCodeObject = miloService.readFromOpcUa("CFL4HX."+locationCode+".Code1").getValue();
-            if (null == SNCodeObject){
-                SNCodeObject = miloService.readFromOpcUa("CFL4HX."+locationCode+ ".Code").getValue();
+            Object SNCodeObject = miloService.readFromOpcUa("CFL4HX." + locationCode + ".Code1").getValue();
+            if (null == SNCodeObject) {
+                SNCodeObject = miloService.readFromOpcUa("CFL4HX." + locationCode + ".Code").getValue();
             }
-            if (null != SNCodeObject){
+            if (null != SNCodeObject) {
                 String SNCode = SNCodeObject.toString();
                 //鎻掑叆鏁版嵁
                 DaParamCollection saveData = new DaParamCollection();
@@ -148,12 +160,36 @@
                 saveData.setParamValue(barcode);
                 saveData.setLocationCode(locationCode);
                 saveData.setParamCode("CZM");
-                saveData.setParamName("鏇茶酱鐮�");
+                saveData.setParamName("鏇茶酱");
                 daParamCollectionService.insertDaParamCollection(saveData);
+
+                DaTileMatchRules TileMatchRules = new DaTileMatchRules();
+                TileMatchRules.setProductSeries("380Y");
+                TileMatchRules.setScanObject1("杩炴潌");
+                TileMatchRules.setScanObject2("鏇茶酱");
+                daTileMatchRulesService.selectDaTileMatchRulesList(TileMatchRules);
+
+                for (int i = 1; i <= 3; i++) {
+                    DaTileMatchMiddleware TileMatchMiddleware = new DaTileMatchMiddleware();
+                    TileMatchMiddleware.setSfcCode(SNCode);
+                    TileMatchMiddleware.setCrankshaftNo(barcode);
+                    TileMatchMiddleware.setCylinder((long) i);
+                    TileMatchMiddleware.setState(1L);
+                    daTileMatchMiddlewareService.insertDaTileMatchMiddleware(TileMatchMiddleware);
+                }
+
+                DaParamCollection ParamCollection = new DaParamCollection();
+                ParamCollection.setSfcCode(SNCode);
+                ParamCollection.setParamName("绠变綋");
+                List<DaParamCollection> DaParamCollectionlist = daParamCollectionService.selectDaParamCollectionList(ParamCollection);
+                List<DaParamCollection> XTParamCollection = DaParamCollectionlist.stream().filter(x -> "绠变綋".equals(x.getParamName())).collect(Collectors.toList());
+                if (CollUtil.isNotEmpty(XTParamCollection)) {
+                    xParamCollection = XTParamCollection.get(0);
+                }
             }
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
-        return toAjax(out);
+        return xParamCollection;
     }
 }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/controller/DaTileMatchMiddlewareController.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/controller/DaTileMatchMiddlewareController.java
new file mode 100644
index 0000000..1e7d0d6
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/controller/DaTileMatchMiddlewareController.java
@@ -0,0 +1,160 @@
+package com.jcdm.main.da.tileMatchMiddleware.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
+import com.jcdm.main.da.tileMatchRules.domain.DaTileMatchRules;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.main.da.tileMatchMiddleware.domain.DaTileMatchMiddleware;
+import com.jcdm.main.da.tileMatchMiddleware.service.IDaTileMatchMiddlewareService;
+import com.jcdm.common.utils.poi.ExcelUtil;
+import com.jcdm.common.core.page.TableDataInfo;
+
+import static com.jcdm.main.plcserver.sub.OPCUaSubscription.miloService;
+
+/**
+ * 娲诲杩炴潌閰嶇摝涓棿Controller
+ * 
+ * @author yyt
+ * @date 2024-05-28
+ */
+@RestController
+@RequestMapping("/da/tileMatchMiddleware")
+public class DaTileMatchMiddlewareController extends BaseController
+{
+    @Autowired
+    private IDaTileMatchMiddlewareService daTileMatchMiddlewareService;
+
+    /**
+     * 鏌ヨ娲诲杩炴潌閰嶇摝涓棿鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DaTileMatchMiddleware daTileMatchMiddleware)
+    {
+        startPage();
+        List<DaTileMatchMiddleware> list = daTileMatchMiddlewareService.selectDaTileMatchMiddlewareList(daTileMatchMiddleware);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭娲诲杩炴潌閰嶇摝涓棿鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:export')")
+    @Log(title = "娲诲杩炴潌閰嶇摝涓棿", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DaTileMatchMiddleware daTileMatchMiddleware)
+    {
+        List<DaTileMatchMiddleware> list = daTileMatchMiddlewareService.selectDaTileMatchMiddlewareList(daTileMatchMiddleware);
+        ExcelUtil<DaTileMatchMiddleware> util = new ExcelUtil<DaTileMatchMiddleware>(DaTileMatchMiddleware.class);
+        util.exportExcel(response, list, "娲诲杩炴潌閰嶇摝涓棿鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇娲诲杩炴潌閰嶇摝涓棿璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(daTileMatchMiddlewareService.selectDaTileMatchMiddlewareById(id));
+    }
+
+    /**
+     * 鏂板娲诲杩炴潌閰嶇摝涓棿
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:add')")
+    @Log(title = "娲诲杩炴潌閰嶇摝涓棿", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DaTileMatchMiddleware daTileMatchMiddleware)
+    {
+        return toAjax(daTileMatchMiddlewareService.insertDaTileMatchMiddleware(daTileMatchMiddleware));
+    }
+
+    /**
+     * 淇敼娲诲杩炴潌閰嶇摝涓棿
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:edit')")
+    @Log(title = "娲诲杩炴潌閰嶇摝涓棿", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DaTileMatchMiddleware daTileMatchMiddleware)
+    {
+        return toAjax(daTileMatchMiddlewareService.updateDaTileMatchMiddleware(daTileMatchMiddleware));
+    }
+
+    /**
+     * 鍒犻櫎娲诲杩炴潌閰嶇摝涓棿
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:remove')")
+    @Log(title = "娲诲杩炴潌閰嶇摝涓棿", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(daTileMatchMiddlewareService.deleteDaTileMatchMiddlewareByIds(ids));
+    }
+
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:query')")
+    @GetMapping(value = "/barcodeup")
+    public DaTileMatchMiddleware setBarcodeup(String barcode,String locationCode) {
+        DaTileMatchMiddleware rMiddleware=null;
+        try {
+            //Object SNCodeObject = miloService.readFromOpcUa("CFL4HX."+locationCode+".Code1").getValue();
+            Object SNCodeObject = miloService.readFromOpcUa("CFL4HX.OP050.Code1").getValue();
+            if (null == SNCodeObject){
+                //SNCodeObject = miloService.readFromOpcUa("CFL4HX."+locationCode+ ".Code").getValue();
+                SNCodeObject = miloService.readFromOpcUa("CFL4HX.OP050.Code").getValue();
+            }
+            if (null != SNCodeObject){
+                String SNCode = SNCodeObject.toString();
+
+                DaTileMatchMiddleware TileMatchMiddleware=new DaTileMatchMiddleware();
+                TileMatchMiddleware.setSfcCode(SNCode);
+                TileMatchMiddleware.setPalletNo(barcode);
+                TileMatchMiddleware.setState(2L);
+                List<DaTileMatchMiddleware> TileMatchMiddlewareList=daTileMatchMiddlewareService.selectDaTileMatchMiddlewareList(TileMatchMiddleware);
+                if(TileMatchMiddlewareList.size()>0){
+                    for(int i=0;i<TileMatchMiddlewareList.size();i++){
+                        DaTileMatchMiddleware Middleware=TileMatchMiddlewareList.get(i);
+                        Middleware.setState(3L);
+                        daTileMatchMiddlewareService.updateDaTileMatchMiddleware(Middleware);
+                    }
+                    rMiddleware=TileMatchMiddlewareList.get(0);
+                }
+            }
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return rMiddleware;
+    }
+
+    @PreAuthorize("@ss.hasPermi('da:tileMatchMiddleware:query')")
+    @GetMapping(value = "/barcode")
+    public DaTileMatchMiddleware setBarcode(String barcode,String locationCode) {
+        DaTileMatchMiddleware rMiddleware=new DaTileMatchMiddleware();;
+        rMiddleware.setState(1L);
+        List<DaTileMatchMiddleware> TileMatchMiddlewareList=daTileMatchMiddlewareService.selectDaTileMatchMiddlewareList(rMiddleware);
+        if(TileMatchMiddlewareList.size()>0){
+            rMiddleware=TileMatchMiddlewareList.get(0);
+            rMiddleware.setPalletNo(locationCode);
+            rMiddleware.setConnectingrodNo(barcode);
+            rMiddleware.setState(2L);
+            daTileMatchMiddlewareService.updateDaTileMatchMiddleware(rMiddleware);
+        }
+        return rMiddleware;
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/domain/DaTileMatchMiddleware.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/domain/DaTileMatchMiddleware.java
new file mode 100644
index 0000000..47f23bc
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/domain/DaTileMatchMiddleware.java
@@ -0,0 +1,135 @@
+package com.jcdm.main.da.tileMatchMiddleware.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.jcdm.common.annotation.Excel;
+import com.jcdm.common.core.domain.BaseEntity;
+
+/**
+ * 娲诲杩炴潌閰嶇摝涓棿瀵硅薄 da_tile_match_middleware
+ * 
+ * @author yyt
+ * @date 2024-05-28
+ */
+public class DaTileMatchMiddleware extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 浜у搧SN鍙� */
+    @Excel(name = "浜у搧SN鍙�")
+    private String sfcCode;
+
+    /** 鎵樼洏鍙� */
+    @Excel(name = "鎵樼洏鍙�")
+    private String palletNo;
+
+    /** 鏇茶酱鐮� */
+    @Excel(name = "鏇茶酱鐮�")
+    private String crankshaftNo;
+
+    /** 鐘舵�� */
+    @Excel(name = "鐘舵��")
+    private Long state;
+
+    /** 澶囨敞 */
+    @Excel(name = "澶囨敞")
+    private String remarks;
+
+    /** 杩炴潌鐮� */
+    @Excel(name = "杩炴潌鐮�")
+    private String connectingrodNo;
+
+    /** 姘旂几缂栧彿 */
+    @Excel(name = "姘旂几缂栧彿")
+    private Long cylinder;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSfcCode(String sfcCode) 
+    {
+        this.sfcCode = sfcCode;
+    }
+
+    public String getSfcCode() 
+    {
+        return sfcCode;
+    }
+    public void setPalletNo(String palletNo) 
+    {
+        this.palletNo = palletNo;
+    }
+
+    public String getPalletNo() 
+    {
+        return palletNo;
+    }
+    public void setCrankshaftNo(String crankshaftNo) 
+    {
+        this.crankshaftNo = crankshaftNo;
+    }
+
+    public String getCrankshaftNo() 
+    {
+        return crankshaftNo;
+    }
+    public void setState(Long state) 
+    {
+        this.state = state;
+    }
+
+    public Long getState() 
+    {
+        return state;
+    }
+    public void setRemarks(String remarks) 
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() 
+    {
+        return remarks;
+    }
+    public void setConnectingrodNo(String connectingrodNo) 
+    {
+        this.connectingrodNo = connectingrodNo;
+    }
+
+    public String getConnectingrodNo() 
+    {
+        return connectingrodNo;
+    }
+    public void setCylinder(Long cylinder) 
+    {
+        this.cylinder = cylinder;
+    }
+
+    public Long getCylinder() 
+    {
+        return cylinder;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sfcCode", getSfcCode())
+            .append("palletNo", getPalletNo())
+            .append("crankshaftNo", getCrankshaftNo())
+            .append("state", getState())
+            .append("remarks", getRemarks())
+            .append("connectingrodNo", getConnectingrodNo())
+            .append("cylinder", getCylinder())
+            .toString();
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/mapper/DaTileMatchMiddlewareMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/mapper/DaTileMatchMiddlewareMapper.java
new file mode 100644
index 0000000..8bd3b62
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/mapper/DaTileMatchMiddlewareMapper.java
@@ -0,0 +1,61 @@
+package com.jcdm.main.da.tileMatchMiddleware.mapper;
+
+import java.util.List;
+import com.jcdm.main.da.tileMatchMiddleware.domain.DaTileMatchMiddleware;
+
+/**
+ * 娲诲杩炴潌閰嶇摝涓棿Mapper鎺ュ彛
+ * 
+ * @author yyt
+ * @date 2024-05-28
+ */
+public interface DaTileMatchMiddlewareMapper 
+{
+    /**
+     * 鏌ヨ娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param id 娲诲杩炴潌閰嶇摝涓棿涓婚敭
+     * @return 娲诲杩炴潌閰嶇摝涓棿
+     */
+    public DaTileMatchMiddleware selectDaTileMatchMiddlewareById(Long id);
+
+    /**
+     * 鏌ヨ娲诲杩炴潌閰嶇摝涓棿鍒楄〃
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 娲诲杩炴潌閰嶇摝涓棿闆嗗悎
+     */
+    public List<DaTileMatchMiddleware> selectDaTileMatchMiddlewareList(DaTileMatchMiddleware daTileMatchMiddleware);
+
+    /**
+     * 鏂板娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 缁撴灉
+     */
+    public int insertDaTileMatchMiddleware(DaTileMatchMiddleware daTileMatchMiddleware);
+
+    /**
+     * 淇敼娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 缁撴灉
+     */
+    public int updateDaTileMatchMiddleware(DaTileMatchMiddleware daTileMatchMiddleware);
+
+    /**
+     * 鍒犻櫎娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param id 娲诲杩炴潌閰嶇摝涓棿涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchMiddlewareById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchMiddlewareByIds(Long[] ids);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/IDaTileMatchMiddlewareService.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/IDaTileMatchMiddlewareService.java
new file mode 100644
index 0000000..78d0001
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/IDaTileMatchMiddlewareService.java
@@ -0,0 +1,61 @@
+package com.jcdm.main.da.tileMatchMiddleware.service;
+
+import java.util.List;
+import com.jcdm.main.da.tileMatchMiddleware.domain.DaTileMatchMiddleware;
+
+/**
+ * 娲诲杩炴潌閰嶇摝涓棿Service鎺ュ彛
+ * 
+ * @author yyt
+ * @date 2024-05-28
+ */
+public interface IDaTileMatchMiddlewareService 
+{
+    /**
+     * 鏌ヨ娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param id 娲诲杩炴潌閰嶇摝涓棿涓婚敭
+     * @return 娲诲杩炴潌閰嶇摝涓棿
+     */
+    public DaTileMatchMiddleware selectDaTileMatchMiddlewareById(Long id);
+
+    /**
+     * 鏌ヨ娲诲杩炴潌閰嶇摝涓棿鍒楄〃
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 娲诲杩炴潌閰嶇摝涓棿闆嗗悎
+     */
+    public List<DaTileMatchMiddleware> selectDaTileMatchMiddlewareList(DaTileMatchMiddleware daTileMatchMiddleware);
+
+    /**
+     * 鏂板娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 缁撴灉
+     */
+    public int insertDaTileMatchMiddleware(DaTileMatchMiddleware daTileMatchMiddleware);
+
+    /**
+     * 淇敼娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 缁撴灉
+     */
+    public int updateDaTileMatchMiddleware(DaTileMatchMiddleware daTileMatchMiddleware);
+
+    /**
+     * 鎵归噺鍒犻櫎娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑娲诲杩炴潌閰嶇摝涓棿涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchMiddlewareByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎娲诲杩炴潌閰嶇摝涓棿淇℃伅
+     * 
+     * @param id 娲诲杩炴潌閰嶇摝涓棿涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchMiddlewareById(Long id);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/impl/DaTileMatchMiddlewareServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/impl/DaTileMatchMiddlewareServiceImpl.java
new file mode 100644
index 0000000..47cac73
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchMiddleware/service/impl/DaTileMatchMiddlewareServiceImpl.java
@@ -0,0 +1,93 @@
+package com.jcdm.main.da.tileMatchMiddleware.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.jcdm.main.da.tileMatchMiddleware.mapper.DaTileMatchMiddlewareMapper;
+import com.jcdm.main.da.tileMatchMiddleware.domain.DaTileMatchMiddleware;
+import com.jcdm.main.da.tileMatchMiddleware.service.IDaTileMatchMiddlewareService;
+
+/**
+ * 娲诲杩炴潌閰嶇摝涓棿Service涓氬姟灞傚鐞�
+ * 
+ * @author yyt
+ * @date 2024-05-28
+ */
+@Service
+public class DaTileMatchMiddlewareServiceImpl implements IDaTileMatchMiddlewareService 
+{
+    @Autowired
+    private DaTileMatchMiddlewareMapper daTileMatchMiddlewareMapper;
+
+    /**
+     * 鏌ヨ娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param id 娲诲杩炴潌閰嶇摝涓棿涓婚敭
+     * @return 娲诲杩炴潌閰嶇摝涓棿
+     */
+    @Override
+    public DaTileMatchMiddleware selectDaTileMatchMiddlewareById(Long id)
+    {
+        return daTileMatchMiddlewareMapper.selectDaTileMatchMiddlewareById(id);
+    }
+
+    /**
+     * 鏌ヨ娲诲杩炴潌閰嶇摝涓棿鍒楄〃
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 娲诲杩炴潌閰嶇摝涓棿
+     */
+    @Override
+    public List<DaTileMatchMiddleware> selectDaTileMatchMiddlewareList(DaTileMatchMiddleware daTileMatchMiddleware)
+    {
+        return daTileMatchMiddlewareMapper.selectDaTileMatchMiddlewareList(daTileMatchMiddleware);
+    }
+
+    /**
+     * 鏂板娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDaTileMatchMiddleware(DaTileMatchMiddleware daTileMatchMiddleware)
+    {
+        return daTileMatchMiddlewareMapper.insertDaTileMatchMiddleware(daTileMatchMiddleware);
+    }
+
+    /**
+     * 淇敼娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param daTileMatchMiddleware 娲诲杩炴潌閰嶇摝涓棿
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDaTileMatchMiddleware(DaTileMatchMiddleware daTileMatchMiddleware)
+    {
+        return daTileMatchMiddlewareMapper.updateDaTileMatchMiddleware(daTileMatchMiddleware);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎娲诲杩炴潌閰嶇摝涓棿
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑娲诲杩炴潌閰嶇摝涓棿涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaTileMatchMiddlewareByIds(Long[] ids)
+    {
+        return daTileMatchMiddlewareMapper.deleteDaTileMatchMiddlewareByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎娲诲杩炴潌閰嶇摝涓棿淇℃伅
+     * 
+     * @param id 娲诲杩炴潌閰嶇摝涓棿涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaTileMatchMiddlewareById(Long id)
+    {
+        return daTileMatchMiddlewareMapper.deleteDaTileMatchMiddlewareById(id);
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java
index 5b2b18a..8b410f7 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java
@@ -1,7 +1,13 @@
 package com.jcdm.main.da.tileMatchRules.controller;
 
 import java.util.List;
+import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.collection.CollUtil;
+import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
+import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
+import com.jcdm.main.da.tileMatchMiddleware.domain.DaTileMatchMiddleware;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -21,6 +27,8 @@
 import com.jcdm.common.utils.poi.ExcelUtil;
 import com.jcdm.common.core.page.TableDataInfo;
 
+import static com.jcdm.main.plcserver.sub.OPCUaSubscription.miloService;
+
 /**
  * 閰嶇摝瑙勫垯Controller
  * 
@@ -33,6 +41,9 @@
 {
     @Autowired
     private IDaTileMatchRulesService daTileMatchRulesService;
+
+    @Autowired
+    public IDaParamCollectionService daParamCollectionService;
 
     /**
      * 鏌ヨ閰嶇摝瑙勫垯鍒楄〃()
@@ -137,4 +148,42 @@
     {
         return toAjax(daTileMatchRulesService.deleteDaTileMatchRulesByIds(ids));
     }
+
+    @PreAuthorize("@ss.hasPermi('da:tileMatchRules:query')")
+    @GetMapping(value = "/barcode")
+    public String setBarcode(String barcode,String locationCode) {
+        String XT="";
+        try {
+            //Object SNCodeObject = miloService.readFromOpcUa("CFL4HX."+locationCode+".Code1").getValue();
+            Object SNCodeObject = miloService.readFromOpcUa("CFL4HX.HOP040.Code1").getValue();
+            if (null == SNCodeObject){
+                //SNCodeObject = miloService.readFromOpcUa("CFL4HX."+locationCode+ ".Code").getValue();
+                SNCodeObject = miloService.readFromOpcUa("CFL4HX.HOP040.Code").getValue();
+            }
+            if (null != SNCodeObject){
+                String SNCode = SNCodeObject.toString();
+
+                //鎻掑叆鏁版嵁
+                DaParamCollection saveData = new DaParamCollection();
+                saveData.setSfcCode(SNCode);
+                saveData.setParamValue(barcode);
+                saveData.setLocationCode(locationCode);
+                saveData.setParamCode("CZM");
+                saveData.setParamName("鏇茶酱");
+                daParamCollectionService.insertDaParamCollection(saveData);
+
+                DaParamCollection ParamCollection = new DaParamCollection();
+                ParamCollection.setSfcCode(SNCode);
+                List<DaParamCollection> DaParamCollectionlist=daParamCollectionService.selectDaParamCollectionList(ParamCollection);
+                List<DaParamCollection> XTParamCollection = DaParamCollectionlist.stream().filter(x -> "绠变綋".equals(x.getParamName())).collect(Collectors.toList());
+                if (CollUtil.isNotEmpty(XTParamCollection)){
+                    DaParamCollection lastOne = XTParamCollection.get(0);
+                    XT = lastOne.getParamValue();
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return XT;
+    }
 }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
index 1db0ce5..49742b7 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -105,8 +105,23 @@
                             SNCodeObject = miloService.readFromOpcUa("CFL4HX.OP060.Code").getValue();
                         }
                         if (null != SNCodeObject){
+                            String XT="";
+                            String CZ="";
                             String SNCode = SNCodeObject.toString();
-                            passingStationCollectionServiceImpl.sendMessage("P0SQ0-01FZ01-1000;T231224116;DBBBBA*P0SQ0-041000-1002;T2312020675;DAABBA;S500003","OP060");
+                            DaParamCollection ParamCollection = new DaParamCollection();
+                            ParamCollection.setSfcCode(SNCode);
+                            List<DaParamCollection> DaParamCollectionlist=daParamCollectionService.selectDaParamCollectionList(ParamCollection);
+                            List<DaParamCollection> XTParamCollection = DaParamCollectionlist.stream().filter(x -> "绠变綋".equals(x.getParamName())).collect(Collectors.toList());
+                            if (CollUtil.isNotEmpty(XTParamCollection)){
+                                DaParamCollection lastOne = XTParamCollection.get(0);
+                                XT = lastOne.getParamValue();
+                            }
+                            List<DaParamCollection> CZParamCollection = DaParamCollectionlist.stream().filter(x -> "鏇茶酱".equals(x.getParamName())).collect(Collectors.toList());
+                            if (CollUtil.isNotEmpty(CZParamCollection)){
+                                DaParamCollection lastOne = CZParamCollection.get(0);
+                                CZ = lastOne.getParamValue();
+                            }
+                            passingStationCollectionServiceImpl.sendMessage(XT+"*"+CZ,"OP060");
                         }
                     }
                 }
@@ -187,7 +202,7 @@
                 if (StrUtil.isNotBlank(a)){
                     int input = Integer.parseInt(a);
                     ReadWriteEntity entity = new ReadWriteEntity(parts[0]+"."+parts[1]+".CodeCheckFeed", input);
-                    logger.info("-------鐩戝惉鍒�,{}鐨凜odeCheck鐨勪俊鍙�",Node);
+                    logger.info("鍙戝姩鏈哄彿锛歿},鐩戝惉鍒皗}鐨凜odeCheck鐨勪俊鍙�",SNCode,Node);
                     miloService.writeToOpcByte(entity);
                     logger.info("鐩戝惉鍒拌繑鍥瀋odecheckfeed淇″彿锛寋}",entity);
                     //棣栫珯浼犺緭璁㈠崟鍙�
diff --git a/jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java b/jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java
index e0c7c4a..4230b84 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java
@@ -210,6 +210,34 @@
                 .getAsJsonObject("ET_DATA");
         return etData.toString();
     }
+    /**
+     * 鏂瑰紡--璐�
+     * 浣跨敤hutool宸ュ叿鍖呬腑鐨勫伐鍏疯浆鍖�
+     * @param xmlStr
+     * @return
+     */
+    public static String xmlToJSON1(String xmlStr){
+        String status = "";
+        if(xmlStr.contains("EV_MESSAGE")){
+            JSONObject jsonObject1 = cn.hutool.json.XML.toJSONObject(xmlStr, true);
+
+            ObjectMapper objectMapper = new ObjectMapper();
+            JsonNode rootNode = null;
+            try {
+                rootNode = objectMapper.readTree(String.valueOf(jsonObject1));
+            } catch (JsonProcessingException e) {
+                throw new RuntimeException(e);
+            }
+            String evStatus = rootNode
+                    .path("SOAP:Envelope")
+                    .path("SOAP:Body")
+                    .path("n0:ZPP_BC_001.Response")
+                    .path("EV_MESSAGE")
+                    .asText();
+            status = evStatus;
+        }
+        return status;
+    }
 
     /**
      * 鏂瑰紡--璐�
diff --git a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml b/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
index c6bcddd..9ccd8f1 100644
--- a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
+++ b/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
@@ -1,9 +1,9 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jcdm.main.bs.orderScheduling.mapper.BsOrderSchedulingMapper">
-    
+
     <resultMap type="BsOrderScheduling" id="BsOrderSchedulingResult">
         <result property="id"    column="id"    />
         <result property="orderNo"    column="order_no"    />
@@ -47,7 +47,7 @@
 
     <select id="selectBsOrderSchedulingList" parameterType="BsOrderScheduling" resultMap="BsOrderSchedulingResult">
         <include refid="selectBsOrderSchedulingVo"/>
-        <where>  
+        <where>
             <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
             <if test="engineNo != null  and engineNo != ''"> and engine_no = #{engineNo}</if>
             <if test="productType != null  and productType != ''"> and product_type = #{productType}</if>
@@ -64,8 +64,8 @@
             <if test="operator != null  and operator != ''"> and operator = #{operator}</if>
             <if test="operateTime != null  and operateTime != ''"> and operate_time = #{operateTime}</if>
             <if test="status != null  and status != ''"> and status = #{status}</if>
-            <if test="spareField1 != null  and spareField1 != ''"> and spare_field_1 = #{spareField1}</if>
-            <if test="spareField2 != null  and spareField2 != ''"> and spare_field_2 = #{spareField2}</if>
+            <if test="spareField1 != null  and spareField1 != ''"> and isnull(spare_field_1,'') != #{spareField1}</if>
+            <if test="spareField2 != null  and spareField2 != ''"> and isnull(spare_field_2,'') != #{spareField2}</if>
             <if test="spareField3 != null  and spareField3 != ''"> and spare_field_3 = #{spareField3}</if>
             <if test="spareField4 != null  and spareField4 != ''"> and spare_field_4 = #{spareField4}</if>
             <if test="createUser != null  and createUser != ''"> and create_user = #{createUser}</if>
@@ -146,7 +146,7 @@
         </where>
         order by create_time DESC
     </select>
-    
+
     <select id="selectBsOrderSchedulingById" parameterType="Long" resultMap="BsOrderSchedulingResult">
         <include refid="selectBsOrderSchedulingVo"/>
         where id = #{id}
@@ -209,7 +209,7 @@
             <if test="finalAssemblyOfflineTime != null">final_assembly_offline_time,</if>
             <if test="cvtLaunchTime != null">cvt_launch_time,</if>
             <if test="cvtOfflineTime != null">cvt_offline_time,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="orderNo != null">#{orderNo},</if>
             <if test="engineNo != null">#{engineNo},</if>
@@ -292,7 +292,7 @@
     </delete>
 
     <delete id="deleteBsOrderSchedulingByIds" parameterType="String">
-        delete from bs_order_scheduling where id in 
+        delete from bs_order_scheduling where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
diff --git a/jcdm-main/src/main/resources/mapper/da/tileMatchMiddleware/DaTileMatchMiddlewareMapper.xml b/jcdm-main/src/main/resources/mapper/da/tileMatchMiddleware/DaTileMatchMiddlewareMapper.xml
new file mode 100644
index 0000000..2c3253e
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/da/tileMatchMiddleware/DaTileMatchMiddlewareMapper.xml
@@ -0,0 +1,87 @@
+<?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.jcdm.main.da.tileMatchMiddleware.mapper.DaTileMatchMiddlewareMapper">
+    <resultMap type="DaTileMatchMiddleware" id="DaTileMatchMiddlewareResult">
+        <result property="id"    column="id"    />
+        <result property="sfcCode"    column="sfc_code"    />
+        <result property="palletNo"    column="Pallet_no"    />
+        <result property="crankshaftNo"    column="crankshaft_no"    />
+        <result property="state"    column="state"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="connectingrodNo"    column="connectingRod_no"    />
+        <result property="cylinder"    column="cylinder"    />
+    </resultMap>
+
+    <sql id="selectDaTileMatchMiddlewareVo">
+        select id, sfc_code, Pallet_no, crankshaft_no, state, remarks, connectingRod_no, cylinder from da_tile_match_middleware
+    </sql>
+
+    <select id="selectDaTileMatchMiddlewareList" parameterType="DaTileMatchMiddleware" resultMap="DaTileMatchMiddlewareResult">
+        <include refid="selectDaTileMatchMiddlewareVo"/>
+        <where>  
+            <if test="sfcCode != null  and sfcCode != ''"> and sfc_code = #{sfcCode}</if>
+            <if test="palletNo != null  and palletNo != ''"> and Pallet_no = #{palletNo}</if>
+            <if test="crankshaftNo != null  and crankshaftNo != ''"> and crankshaft_no = #{crankshaftNo}</if>
+            <if test="state != null "> and state = #{state}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="connectingrodNo != null  and connectingrodNo != ''"> and connectingRod_no = #{connectingrodNo}</if>
+            <if test="cylinder != null "> and cylinder = #{cylinder}</if>
+        </where>
+    </select>
+    
+    <select id="selectDaTileMatchMiddlewareById" parameterType="Long" resultMap="DaTileMatchMiddlewareResult">
+        <include refid="selectDaTileMatchMiddlewareVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDaTileMatchMiddleware" parameterType="DaTileMatchMiddleware">
+        insert into da_tile_match_middleware
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="sfcCode != null">sfc_code,</if>
+            <if test="palletNo != null">Pallet_no,</if>
+            <if test="crankshaftNo != null">crankshaft_no,</if>
+            <if test="state != null">state,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="connectingrodNo != null">connectingRod_no,</if>
+            <if test="cylinder != null">cylinder,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="sfcCode != null">#{sfcCode},</if>
+            <if test="palletNo != null">#{palletNo},</if>
+            <if test="crankshaftNo != null">#{crankshaftNo},</if>
+            <if test="state != null">#{state},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="connectingrodNo != null">#{connectingrodNo},</if>
+            <if test="cylinder != null">#{cylinder},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDaTileMatchMiddleware" parameterType="DaTileMatchMiddleware">
+        update da_tile_match_middleware
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sfcCode != null">sfc_code = #{sfcCode},</if>
+            <if test="palletNo != null">Pallet_no = #{palletNo},</if>
+            <if test="crankshaftNo != null">crankshaft_no = #{crankshaftNo},</if>
+            <if test="state != null">state = #{state},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="connectingrodNo != null">connectingRod_no = #{connectingrodNo},</if>
+            <if test="cylinder != null">cylinder = #{cylinder},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDaTileMatchMiddlewareById" parameterType="Long">
+        delete from da_tile_match_middleware where id = #{id}
+    </delete>
+
+    <delete id="deleteDaTileMatchMiddlewareByIds" parameterType="String">
+        delete from da_tile_match_middleware where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml b/jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml
index 8061641..e36a211 100644
--- a/jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml
+++ b/jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml
@@ -39,8 +39,8 @@
             <if test="tileName != null  and tileName != ''"> and tile_name like concat('%', #{tileName}, '%')</if>
             <if test="axisParameterNoPosition != null "> and axis_parameter_no_position = #{axisParameterNoPosition}</if>
             <if test="neckParameterPosition != null "> and neck_parameter_position = #{neckParameterPosition}</if>
-            <if test="axisValue != null  and axisValue != ''"> and axis_value = SUBSTRING(#{axisValue}, axis_parameter_no_position, 1)</if>
-            <if test="neckValue != null  and neckValue != ''"> and neck_value = SUBSTRING(#{neckValue}, neck_parameter_position, 1)</if>
+            <if test="axisValue != null  and axisValue != ''"> and axis_value = SUBSTRING(#{axisValue}, axis_parameter_no_position+1, 1)</if>
+            <if test="neckValue != null  and neckValue != ''"> and neck_value = SUBSTRING(#{neckValue}, neck_parameter_position+1, 1)</if>
             <if test="tileColor != null  and tileColor != ''"> and tile_color = #{tileColor}</if>
             <if test="createUser != null  and createUser != ''"> and create_user = #{createUser}</if>
             <if test="updateUser != null  and updateUser != ''"> and update_user = #{updateUser}</if>
diff --git a/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java b/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java
index 6a15961..c9f410a 100644
--- a/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java
+++ b/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java
@@ -52,14 +52,38 @@
         BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
         bsOrderScheduling.setReport10("0");
         List<BsOrderScheduling> bsOrderSchedulings = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling);
+        String status="";
+        String ev_meassage="";
         for (BsOrderScheduling orderScheduling : bsOrderSchedulings) {
-            String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0010"));
-            String status = ReceivingServices.xmlToJSON3(xmlResult);
-            if(status.equals("1")){
+            try {
+                String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0010"));
+                ev_meassage=ReceivingServices.xmlToJSON1(xmlResult);
+                status = ReceivingServices.xmlToJSON3(xmlResult);
+            } catch (Exception e) {
+                status="3";
+            }
+            if(status.equals("1")) {
                 orderScheduling.setReport10("1");
                 int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
-                System.out.println("鏇存柊鐘舵�佹垚鍔�");
-                //logger.info("{}鍚堢鎶ュ伐鎴愬姛",orderScheduling.getOrderNo());
+                logger.info("{}鍚堢鎶ュ伐鎴愬姛",orderScheduling.getOrderNo());
+            }else {
+                if(StringUtils.isEmpty(orderScheduling.getSpareField1())){
+                    orderScheduling.setSpareField1("1");
+                    bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
+                }else{
+                    if(Integer.valueOf(orderScheduling.getSpareField1())+1>=3) {
+                        //绱鎶ュ伐寮傚父瓒呰繃3娆�
+                        orderScheduling.setReport10("3");
+                        orderScheduling.setSpareField1(String.valueOf(Integer.valueOf(orderScheduling.getSpareField1()) + 1));
+                    }else {
+                        orderScheduling.setSpareField1(String.valueOf(Integer.valueOf(orderScheduling.getSpareField1()) + 1));
+                    }
+                    bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
+                }
+                if(status.equals("3"))
+                    logger.info("{}鍚堢鎶ュ伐鍥犱负缃戠粶鍘熷洜锛屾姤宸ュけ璐ワ紒",orderScheduling.getOrderNo());
+                else
+                    logger.info("{}鍚堢鎶ュ伐澶辫触,鍘熷洜锛歿}",orderScheduling.getOrderNo(),ev_meassage);
             }
         }
     }
@@ -68,14 +92,38 @@
         BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
         bsOrderScheduling.setReport20("0");
         List<BsOrderScheduling> bsOrderSchedulings = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling);
+        String status="";
+        String ev_meassage="";
         for (BsOrderScheduling orderScheduling : bsOrderSchedulings) {
-            String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0020"));
-            String status = ReceivingServices.xmlToJSON3(xmlResult);
+            try {
+                String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0020"));
+                ev_meassage=ReceivingServices.xmlToJSON1(xmlResult);
+                status = ReceivingServices.xmlToJSON3(xmlResult);
+            } catch (Exception e) {
+                status="3";
+            }
             if(status.equals("1")){
                 orderScheduling.setReport20("1");
                 int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
-                System.out.println("鏇存柊鐘舵�佹垚鍔�");
-                //logger.info("{}鎬昏鎶ュ伐鎴愬姛",orderScheduling.getOrderNo());
+                logger.info("{}鎬昏鎶ュ伐鎴愬姛",orderScheduling.getOrderNo());
+            }else {
+                if(StringUtils.isEmpty(orderScheduling.getSpareField2())){
+                    orderScheduling.setSpareField2("1");
+                    bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
+                }else{
+                    if(Integer.valueOf(orderScheduling.getSpareField2())+1>=3) {
+                        //绱鎶ュ伐寮傚父瓒呰繃3娆�
+                        orderScheduling.setReport20("3");
+                        orderScheduling.setSpareField2(String.valueOf(Integer.valueOf(orderScheduling.getSpareField2()) + 1));
+                    }else{
+                        orderScheduling.setSpareField2(String.valueOf(Integer.valueOf(orderScheduling.getSpareField2()) + 1));
+                    }
+                    bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
+                    if(status.equals("3"))
+                        logger.info("{}鎬昏鎶ュ伐鍥犱负缃戠粶鍘熷洜锛屾姤宸ュけ璐ワ紒",orderScheduling.getOrderNo());
+                    else
+                        logger.info("{}鎬昏鎶ュ伐澶辫触,鍘熷洜锛歿}",orderScheduling.getOrderNo(),ev_meassage);
+                }
             }
         }
     }
diff --git a/jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js b/jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js
index 6baf4e4..050732f 100644
--- a/jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js
+++ b/jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js
@@ -42,3 +42,11 @@
     method: 'delete'
   })
 }
+
+export function setBarcode(param) {
+  return request({
+    url: '/da/tileMatchRules/barcode',
+    method: 'get',
+    params: param
+  })
+}
diff --git a/jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js b/jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js
index e8ceb38..5f30fe2 100644
--- a/jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js
+++ b/jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js
@@ -18,10 +18,11 @@
 }
 
 // 鏌ヨ浜や簰淇″彿閰嶇疆璇︾粏
-export function setBarcode(barcode,locationCode) {
+export function setBarcode1(param) {
   return request({
-    url: '/da/opcuaconfig/barcode/' + barcode+'/'+locationCode,
-    method: 'get'
+    url: '/da/opcuaconfig/barcode1',
+    method: 'get',
+    params: param
   })
 }
 
diff --git a/jcdm-ui/src/api/main/da/tileMatchMiddleware/tileMatchMiddleware.js b/jcdm-ui/src/api/main/da/tileMatchMiddleware/tileMatchMiddleware.js
new file mode 100644
index 0000000..b4159a7
--- /dev/null
+++ b/jcdm-ui/src/api/main/da/tileMatchMiddleware/tileMatchMiddleware.js
@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 鏌ヨ娲诲杩炴潌閰嶇摝涓棿鍒楄〃
+export function listTileMatchMiddleware(query) {
+  return request({
+    url: '/da/tileMatchMiddleware/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ娲诲杩炴潌閰嶇摝涓棿璇︾粏
+export function getTileMatchMiddleware(id) {
+  return request({
+    url: '/da/tileMatchMiddleware/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板娲诲杩炴潌閰嶇摝涓棿
+export function addTileMatchMiddleware(data) {
+  return request({
+    url: '/da/tileMatchMiddleware',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼娲诲杩炴潌閰嶇摝涓棿
+export function updateTileMatchMiddleware(data) {
+  return request({
+    url: '/da/tileMatchMiddleware',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎娲诲杩炴潌閰嶇摝涓棿
+export function delTileMatchMiddleware(id) {
+  return request({
+    url: '/da/tileMatchMiddleware/' + id,
+    method: 'delete'
+  })
+}
+
+export function setBarcodeup(param) {
+  return request({
+    url: '/da/tileMatchMiddleware/barcodeup',
+    method: 'get',
+    params: param
+  })
+}
+
+export function setBarcode(param) {
+  return request({
+    url: '/da/tileMatchMiddleware/barcode',
+    method: 'get',
+    params: param
+  })
+}
diff --git a/jcdm-ui/src/views/main/bs/orderScheduling/index.vue b/jcdm-ui/src/views/main/bs/orderScheduling/index.vue
index 4fb42a3..52ebbac 100644
--- a/jcdm-ui/src/views/main/bs/orderScheduling/index.vue
+++ b/jcdm-ui/src/views/main/bs/orderScheduling/index.vue
@@ -62,20 +62,33 @@
         </el-form-item>
         <br/>
         <el-form-item label="鍚堢鎶ュ伐" prop="report10">
-          <el-input
+          <el-select
             v-model="queryParams.report10"
             placeholder="璇疯緭鍏ュ悎绠辨姤宸�"
             clearable
-            @keyup.enter.native="handleQuery"
-          />
+            @keyup.enter.native="handleQuery">
+            <el-option
+              v-for="dict in dict.type.workreportingstatus"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="鎬昏鎶ュ伐" prop="report20">
-          <el-input
+          <el-select
             v-model="queryParams.report20"
             placeholder="璇疯緭鍏ユ�昏鎶ュ伐"
             clearable
-            @keyup.enter.native="handleQuery"
-          />
+            @keyup.enter.native="handleQuery">
+
+            <el-option
+              v-for="dict in dict.type.workreportingstatus"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="CVT鎶ュ伐" prop="report30">
           <el-input
@@ -195,14 +208,23 @@
             </template>
           </el-table-column>
           <el-table-column label="鍚堢鎶ュ伐" align="center" prop="report10">
-
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.workreportingstatus" :value="scope.row.report10"/>
+            </template>
           </el-table-column>
+
           <el-table-column label="鎬昏鎶ュ伐" align="center" prop="report20">
-
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.workreportingstatus" :value="scope.row.report20"/>
+            </template>
           </el-table-column>
+
           <el-table-column label="CVT鎶ュ伐" align="center" prop="report30">
-
           </el-table-column>
+
+          <el-table-column label="鎶ュ伐寮傚父" align="center" prop="report30">
+          </el-table-column>
+
           <el-table-column label="鍚堢涓婄嚎鏃堕棿" align="center" prop="boxClosingOnlineTime" width="160">
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.boxClosingOnlineTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
@@ -321,7 +343,7 @@
 
 export default {
   name: "OrderScheduling",
-  dicts: ['order_scheduling_produce_status','quality_status','print_status','material_type'],
+  dicts: ['order_scheduling_produce_status','quality_status','print_status','material_type','workreportingstatus'],
   data() {
     return {
       // 閬僵灞�
diff --git a/jcdm-ui/src/views/main/cfkb/BalanceShaft/index.vue b/jcdm-ui/src/views/main/cfkb/BalanceShaft/index.vue
index b929b8c..25d3719 100644
--- a/jcdm-ui/src/views/main/cfkb/BalanceShaft/index.vue
+++ b/jcdm-ui/src/views/main/cfkb/BalanceShaft/index.vue
@@ -3,16 +3,6 @@
     <div style="width: 100%">
       <el-card class="box-card" >
         <el-form :model="from" size="large" :inline="true" label-width="68px" @submit.native.prevent>
-<!--          <el-form-item label="绠变綋鐮�:" prop="scanObject1" >-->
-<!--            <el-input-->
-<!--              style="width: 350px"-->
-<!--              v-model="from.scanObject1"-->
-<!--              placeholder="璇疯緭鍏ョ浣撶爜"-->
-<!--              clearable-->
-<!--              @keyup.enter.native="handleQuery"-->
-<!--              @input="handleQuery"-->
-<!--            />-->
-<!--          </el-form-item>-->
           <el-form-item label-width="200" label="骞宠 杞寸爜" :prop="from.scanObject2"  style="align-content: center">
             <input v-model="from.scanObject2"
                    ref="inputdata"
@@ -30,29 +20,6 @@
                 :key="dict.value"
                 :label="dict.label"
                 :value="dict.value"
-                @keyup.enter.native="handleQuery"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item  label="杞村悕绉�:" prop="axisName" >
-            <el-select v-model="from.axisName" placeholder="" clearable style="width: 125px">
-              <el-option
-                v-for="dict in dict.type.axisname"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-                @keyup.enter.native="handleQuery"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item  label="棰堝悕绉�:" prop="neckName" >
-            <el-select v-model="from.neckName" placeholder="" clearable style="width: 125px">
-              <el-option
-                v-for="dict in dict.type.neckname"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-                @keyup.enter.native="handleQuery"
               />
             </el-select>
           </el-form-item>
@@ -63,7 +30,6 @@
                 :key="dict.value"
                 :label="dict.label"
                 :value="dict.value"
-                @keyup.enter.native="handleQuery"
               />
             </el-select>
           </el-form-item>
@@ -86,17 +52,11 @@
             <el-descriptions-item label="骞宠 杞寸爜">
               <span>{{queryParams.scanObject2}}</span>
             </el-descriptions-item>
-            <el-descriptions-item label="杞村悕绉�">
-              <span>{{queryParams.axisName}}</span>
-            </el-descriptions-item>
-            <el-descriptions-item label="棰堝悕绉�">
-              <span>{{queryParams.neckName}}</span>
-            </el-descriptions-item>
             <el-descriptions-item label="鐡﹀悕绉�">
               <span>{{queryParams.tileName}}</span>
             </el-descriptions-item>
             <el-descriptions-item label="閰嶇摝棰滆壊">
-              <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.tileColor}}</span>
+              <span v-for="(word, index) in queryParams.words" :key="index" :style="{ backgroundColor: queryParams.colors[index],fontSize: '30px',}">{{ word }}</span>
             </el-descriptions-item>
           </el-descriptions>
           <el-divider></el-divider>
@@ -108,6 +68,7 @@
 <script>
 import VueQr from 'vue-qr'
 import { listTileMatchRules, getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules } from "@/api/main/bs/tileMatchRules/tileMatchRules";
+import {setBarcode} from "@/api/main/bs/tileMatchRules/tileMatchRules";
 export default {
   name: "index",
   dicts: ['colour_hex','productseries','axisname','neckname','tilename'],
@@ -124,13 +85,12 @@
       from:{
         pageNum: 1,
         pageSize: 10,
-        productSeries: null,
-        //scanObject1: null,
-        //scanObject1: 'P0SQ0-01FZ01-1000;T231224116;DBBBBA',
-        scanObject2: '',
+        productSeries: '380Y',
+        scanObject1: null,
+        scanObject2: 'P0NYK0410001000;T231107031;D2222232;S500003',
         axisName: null,
         neckName: null,
-        tileName: null,
+        tileName: '骞宠 杞寸摝',
         axisParameterNoPosition: null,
         neckParameterPosition: null,
         axisValue: null,
@@ -146,11 +106,12 @@
         pageSize: 10,
         productSeries: null,
         scanObject1: null,
-        // scanObject1: 'P0SQ0-01FZ01-1000;T231224116;DBBBBA',
-        scanObject2: null,
+        scanObject2: 'P0NYK0410001000;T231107031;D2222232;S500003',
         axisName: null,
         neckName: null,
         tileName: null,
+        words: ['------', '------', ],
+        colors: ['#FFFFFF', '#FFFFFF'],
         axisParameterNoPosition: null,
         neckParameterPosition: null,
         axisValue: null,
@@ -192,6 +153,14 @@
         this.scannerFlag = true
         console.log('鏉$爜锛�',this.from.scanObject2)
         //鎵弿瀹屾垚
+        if (typeof this.from.scanObject2 !== 'undefined') {
+          console.log('鏉$爜锛�',this.from.scanObject2,'HOP040')
+          setBarcode({barcode:this.from.scanObject2,locationCode:'HOP040'}).then(res =>{
+            console.log('res',res)
+            this.from.scanObject1=res
+          })
+        }
+        this.handleQuery()
       }
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -199,9 +168,9 @@
       this.clear();
 
       if(this.from.scanObject1 !== null && this.from.scanObject2 !== null
-        && this.from.axisName !== null && this.from.axisName !== ""
-        && this.from.neckName !== null && this.from.neckName !== ""
-        && this.from.tileName !== null && this.from.tileName !== ""
+        // && this.from.axisName !== null && this.from.axisName !== ""
+        // && this.from.neckName !== null && this.from.neckName !== ""
+        // && this.from.tileName !== null && this.from.tileName !== ""
         && this.from.productSeries !== null && this.from.productSeries !== "")
       {
         this.axisValueextracted();
@@ -224,6 +193,7 @@
         }
       }
       else{
+        console.log("鎼滅储鏉′欢",this.from.scanObject1 ,this.from.scanObject2)
         const h = this.$createElement;
         this.$message({
           message: h('p',null, [
@@ -269,7 +239,14 @@
       }
       console.log(queryParams)
       listTileMatchRules(queryParams).then(response => {
-        this.queryParams.tileColor = response.rows[0].tileColor;
+        // this.queryParams.tileColor = response.rows[0].tileColor;
+        this.queryParams.words= ['------', '------']
+        this.queryParams.colors= ['#FFFFFF', '#FFFFFF']
+        for (var i=0;i<response.rows.length;i++){
+          this.queryParams.colors[i]=response.rows[i].tileColor;
+          this.queryParams.words[i]=response.rows[i].tileName;
+        }
+        console.log('棰滆壊锛�',response)
       });
     },
     clear(){
diff --git a/jcdm-ui/src/views/main/cfkb/connectingRod/index.vue b/jcdm-ui/src/views/main/cfkb/connectingRod/index.vue
index b0d7ff5..80351c2 100644
--- a/jcdm-ui/src/views/main/cfkb/connectingRod/index.vue
+++ b/jcdm-ui/src/views/main/cfkb/connectingRod/index.vue
@@ -2,7 +2,7 @@
   <div class="app-container">
     <div style="width: 100%">
       <el-card class="box-card" >
-        <el-form :model="from" ref="queryForm" :inline="true" >
+        <el-form :model="from" size="large" :inline="true" label-width="68px" @submit.native.prevent>
           <el-form-item label="鎵樼洏鐮�:" prop="scanObject1" >
             <el-input
               style="width: 350px"
@@ -13,14 +13,11 @@
               @input="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="杩炴潌鐮�:" prop="scanObject2" >
-            <el-input
-              style="width: 350px"
-              v-model="from.scanObject2"
-              placeholder="璇疯緭鍏ヨ繛鏉嗙爜"
-              clearable
-              @keyup.enter.native="handleQuery"
-              @input="handleQuery"
+          <el-form-item label-width="200" label="杩炴潌鐮�" :prop="from.scanObject2"  style="align-content: center">
+            <input v-model="from.scanObject2"
+                   ref="inputdata"
+                   style="height: 39px; width: 300px"
+                   placeholder="璇疯緭鍏ヨ繛鏉嗙爜"
             />
           </el-form-item>
         </el-form>
@@ -30,28 +27,6 @@
               <el-option
 
                 v-for="dict in dict.type.productseries"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-                @keyup.enter.native="handleQuery"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item  label="杞村悕绉�:" prop="axisName" >
-            <el-select v-model="from.axisName" placeholder="" clearable style="width: 125px">
-              <el-option
-                v-for="dict in dict.type.axisname"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-                @keyup.enter.native="handleQuery"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item  label="棰堝悕绉�:" prop="neckName" >
-            <el-select v-model="from.neckName" placeholder="" clearable style="width: 125px">
-              <el-option
-                v-for="dict in dict.type.neckname"
                 :key="dict.value"
                 :label="dict.label"
                 :value="dict.value"
@@ -83,23 +58,17 @@
             <el-descriptions-item label="鏈哄瀷">
               <span>{{queryParams.productSeries}}</span>
             </el-descriptions-item>
-            <el-descriptions-item label="绠变綋鐮�">
+            <el-descriptions-item label="鏇茶酱鐮�">
               <span>{{queryParams.scanObject1}}</span>
             </el-descriptions-item>
-            <el-descriptions-item label="鏇茶酱鐮�">
+            <el-descriptions-item label="杩炴潌鐮�">
               <span>{{queryParams.scanObject2}}</span>
-            </el-descriptions-item>
-            <el-descriptions-item label="杞村悕绉�">
-              <span>{{queryParams.axisName}}</span>
-            </el-descriptions-item>
-            <el-descriptions-item label="棰堝悕绉�">
-              <span>{{queryParams.neckName}}</span>
             </el-descriptions-item>
             <el-descriptions-item label="鐡﹀悕绉�">
               <span>{{queryParams.tileName}}</span>
             </el-descriptions-item>
-            <el-descriptions-item label="閲嶉噺">
-              <span>{{queryParams.weight}}</span>
+            <el-descriptions-item label="杩炴潌鐮�">
+              <span>{{queryParams.axisName}}</span>
             </el-descriptions-item>
             <el-descriptions-item label="閰嶇摝棰滆壊">
               <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.tileColor}}</span>
@@ -113,7 +82,8 @@
 </template>
 <script>
 import VueQr from 'vue-qr'
-import { listTileMatchRules, getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules } from "@/api/main/bs/tileMatchRules/tileMatchRules";
+import {setBarcode} from "@/api/main/da/tileMatchMiddleware/tileMatchMiddleware";
+import {listTileMatchRules, getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules} from "@/api/main/bs/tileMatchRules/tileMatchRules";
 export default {
   name: "index",
   dicts: ['colour_hex','productseries','axisname','neckname','tilename'],
@@ -122,6 +92,7 @@
   },
   data(){
     return{
+      scannerFlag: false,
       loading: true,
       tileMatchKbList: [],
       qrCode: '',
@@ -129,13 +100,12 @@
       from:{
         pageNum: 1,
         pageSize: 10,
-        productSeries: null,
+        productSeries:'380Y',
         scanObject1: null,
-        //scanObject1: 'P0SQ0-01FZ01-1000;T231224116;DBBBBA',
-        scanObject2: 'P0SQ0-041000-1002;T2312020675;DAABBA;S500003',
+        scanObject2: null,
         axisName: null,
         neckName: null,
-        tileName: null,
+        tileName: '杩炴潌鐡�',
         axisParameterNoPosition: null,
         neckParameterPosition: null,
         axisValue: null,
@@ -151,7 +121,6 @@
         pageSize: 10,
         productSeries: null,
         scanObject1: null,
-        // scanObject1: 'P0SQ0-01FZ01-1000;T231224116;DBBBBA',
         scanObject2: null,
         axisName: null,
         neckName: null,
@@ -168,15 +137,55 @@
       },
     }
   },
+  mounted() {
+    this.setFocus()
+    this.$refs.inputdata.addEventListener('keydown',this.handleScannerInput)
+  },
+  beforeDestroy() {
+    this.$refs.inputdata.removeEventListener('keydown',this.handleScannerInput)
+  },
   methods:{
+    refresh() {
+      location.reload();
+    },
+    setFocus(){
+      this.$nextTick(()=>{
+        this.$refs.inputdata.focus()
+      })
+    },
+    handleScannerInput(event){
+      if (this.scannerFlag){
+        this.from.scanObject2 = ''
+        this.$refs.inputdata.value = ''
+        this.scannerFlag = false
+      }
+      const input = event.target
+      const inputValue = input.value
+      this.from.scanObject2 = inputValue
+      if (event.key === 'Enter'){
+        this.scannerFlag = true
+        //console.log('鏉$爜锛�',this.from.scanObject2)
+        //鎵弿瀹屾垚
+        if (typeof this.from.scanObject2 !== 'undefined') {
+          setBarcode({barcode:this.from.scanObject2,locationCode:'HOP040'}).then(res =>{
+            console.log('res',res)
+            this.queryParams.productSeries=res.sfcCode;
+            this.queryParams.scanObject1=res.crankshaftNo;
+            this.queryParams.axisName=res.cylinder;
+            this.from.scanObject1=this.queryParams.scanObject1
+            this.queryParams.tileName=this.from.tileName;
+            this.queryParams.scanObject2=this.from.scanObject2;
+            //this.from.scanObject1=res
+          })
+        }
+        this.handleQuery()
+      }
+    },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
       this.clear();
 
       if(this.from.scanObject1 !== null && this.from.scanObject2 !== null
-        && this.from.axisName !== null && this.from.axisName !== ""
-        && this.from.neckName !== null && this.from.neckName !== ""
-        && this.from.tileName !== null && this.from.tileName !== ""
         && this.from.productSeries !== null && this.from.productSeries !== "")
       {
         this.axisValueextracted();
@@ -214,7 +223,7 @@
 
     // 鍙栫浣撶爜绗笁娈典负閰嶇摝鍊�
     axisValueextracted() {
-      const parts1 = this.from.scanObject1.split(";");
+      const parts1 = this.from.scanObject2.split(";");
       if (parts1.length >= 3) {
         //const axisValueextracted = parts1[2].substring(3,4);
         const axisValueextracted = parts1[2];
@@ -225,7 +234,7 @@
 
     //鍙栨洸杞寸爜绗笁娈典负閰嶇摝鍊�
     neckValueextracted() {
-      const parts2 = this.from.scanObject2.split(";");
+      const parts2 = this.from.scanObject1.split(";");
       if (parts2.length >= 3) {
         //const neckValueextracted = parts2[2].substring(3,4);
         const neckValueextracted = parts2[2];
@@ -237,12 +246,12 @@
       let queryParams = {
         productSeries : this.queryParams.productSeries,
         axisName : this.queryParams.axisName,
-        neckName : this.queryParams.neckName,
+        // neckName : this.queryParams.neckName,
         tileName : this.queryParams.tileName,
         axisValue: this.queryParams.axisValue,
         neckValue: this.queryParams.neckValue,
       }
-      console.log(queryParams)
+      console.log('鍙傛暟锛�',queryParams)
       listTileMatchRules(queryParams).then(response => {
         this.queryParams.tileColor = response.rows[0].tileColor;
       });
@@ -253,7 +262,7 @@
     },
     insetFromToQueryParams(){
       this.queryParams.productSeries=this.from.productSeries;
-      this.queryParams.axisName=this.from.axisName;
+      //this.queryParams.axisName=this.from.axisName;
       this.queryParams.neckName=this.from.neckName;
       this.queryParams.tileName=this.from.tileName;
       this.queryParams.scanObject1=this.from.scanObject1;
diff --git a/jcdm-ui/src/views/main/cfkb/connectingRodUp/index.vue b/jcdm-ui/src/views/main/cfkb/connectingRodUp/index.vue
index cc4f3c9..6961117 100644
--- a/jcdm-ui/src/views/main/cfkb/connectingRodUp/index.vue
+++ b/jcdm-ui/src/views/main/cfkb/connectingRodUp/index.vue
@@ -57,7 +57,7 @@
               <span>{{queryParams.scanObject2}}</span>
             </el-descriptions-item>
             <el-descriptions-item label="缁撴灉">
-              <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.tileColor}}</span>
+              <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.words}}</span>
             </el-descriptions-item>
           </el-descriptions>
           <el-divider></el-divider>
@@ -70,6 +70,7 @@
 import VueQr from 'vue-qr'
 import { listTileMatchRules, getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules } from "@/api/main/bs/tileMatchRules/tileMatchRules";
 import {listStationConf,getIp} from "@/api/main/sc/stationConf";
+import {setBarcodeup} from "@/api/main/da/tileMatchMiddleware/tileMatchMiddleware";
 export default {
   name: "index",
   dicts: ['colour_hex','productseries','axisname','neckname','tilename'],
@@ -91,7 +92,7 @@
         productSeries: null,
         scanObject1: null,
         //scanObject1: 'P0SQ0-01FZ01-1000;T231224116;DBBBBA',
-        scanObject2: "",
+        scanObject2: null,
         axisName: null,
         neckName: null,
         tileName: null,
@@ -119,6 +120,7 @@
         neckParameterPosition: null,
         axisValue: null,
         neckValue: null,
+        words:"",
         tileColor: null,
         createUser: null,
         updateUser: null,
@@ -156,8 +158,28 @@
       this.from.scanObject2 = inputValue
       if (event.key === 'Enter'){
         this.scannerFlag = true
-        console.log('鏉$爜锛�',this.from.scanObject2)
         //鎵弿瀹屾垚
+        if (typeof this.from.scanObject2 !== 'undefined'&& typeof this.locationCode !== 'undefined' ) {
+          setBarcodeup({barcode:this.from.scanObject2,locationCode:this.locationCode}).then(res => {
+            if (res===''){
+              this.$message({
+                message:res.msg,
+                type:'warning'
+              })
+            }else {
+              this.$message({
+                message:'鎿嶄綔鎴愬姛',
+                type:'success'
+              })
+              console.log('杩斿洖锛�',res)
+              this.queryParams.productSeries=res.sfcCode;
+              this.queryParams.scanObject1=res.connectingRodNo;
+              this.queryParams.scanObject2=res.PalletNo;
+              this.queryParams.words="鎵爜鎴愬姛";
+              this.queryParams.tileColor='#00FF00';
+            }
+          })
+        }
       }
     },
 
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaft/index.vue b/jcdm-ui/src/views/main/cfkb/crankshaft/index.vue
index 023ed95..7bd506f 100644
--- a/jcdm-ui/src/views/main/cfkb/crankshaft/index.vue
+++ b/jcdm-ui/src/views/main/cfkb/crankshaft/index.vue
@@ -37,28 +37,28 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item  label="杞村悕绉�:" prop="axisName" >
-            <el-select v-model="from.axisName" placeholder="" clearable style="width: 125px">
-              <el-option
-                v-for="dict in dict.type.axisname"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-                @keyup.enter.native="handleQuery"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item  label="棰堝悕绉�:" prop="neckName" >
-            <el-select v-model="from.neckName" placeholder="" clearable style="width: 125px">
-              <el-option
-                v-for="dict in dict.type.neckname"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-                @keyup.enter.native="handleQuery"
-              />
-            </el-select>
-          </el-form-item>
+<!--          <el-form-item  label="杞村悕绉�:" prop="axisName" >-->
+<!--            <el-select v-model="from.axisName" placeholder="" clearable style="width: 125px">-->
+<!--              <el-option-->
+<!--                v-for="dict in dict.type.axisname"-->
+<!--                :key="dict.value"-->
+<!--                :label="dict.label"-->
+<!--                :value="dict.value"-->
+<!--                @keyup.enter.native="handleQuery"-->
+<!--              />-->
+<!--            </el-select>-->
+<!--          </el-form-item>-->
+<!--          <el-form-item  label="棰堝悕绉�:" prop="neckName" >-->
+<!--            <el-select v-model="from.neckName" placeholder="" clearable style="width: 125px">-->
+<!--              <el-option-->
+<!--                v-for="dict in dict.type.neckname"-->
+<!--                :key="dict.value"-->
+<!--                :label="dict.label"-->
+<!--                :value="dict.value"-->
+<!--                @keyup.enter.native="handleQuery"-->
+<!--              />-->
+<!--            </el-select>-->
+<!--          </el-form-item>-->
           <el-form-item  label="鐡﹀悕绉�:" prop="tileName" >
             <el-select v-model="from.tileName" placeholder="" clearable style="width: 125px" >
               <el-option
@@ -89,20 +89,20 @@
             <el-descriptions-item label="鏇茶酱鐮�">
               <span>{{queryParams.scanObject2}}</span>
             </el-descriptions-item>
-            <el-descriptions-item label="杞村悕绉�">
-              <span>{{queryParams.axisName}}</span>
-            </el-descriptions-item>
-            <el-descriptions-item label="棰堝悕绉�">
-              <span>{{queryParams.neckName}}</span>
-            </el-descriptions-item>
+<!--            <el-descriptions-item label="杞村悕绉�">-->
+<!--              <span>{{queryParams.axisName}}</span>-->
+<!--            </el-descriptions-item>-->
+<!--            <el-descriptions-item label="棰堝悕绉�">-->
+<!--              <span>{{queryParams.neckName}}</span>-->
+<!--            </el-descriptions-item>-->
             <el-descriptions-item label="鐡﹀悕绉�">
               <span>{{queryParams.tileName}}</span>
             </el-descriptions-item>
-            <el-descriptions-item label="閲嶉噺">
-              <span>{{queryParams.weight}}</span>
-            </el-descriptions-item>
+<!--            <el-descriptions-item label="閲嶉噺">-->
+<!--              <span>{{queryParams.weight}}</span>-->
+<!--            </el-descriptions-item>-->
             <el-descriptions-item label="閰嶇摝棰滆壊">
-              <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.tileColor}}</span>
+              <span v-for="(word, index) in queryParams.words" :key="index" :style="{ backgroundColor: queryParams.colors[index],fontSize: '30px',}">{{ word }}</span>
             </el-descriptions-item>
           </el-descriptions>
           <el-divider></el-divider>
@@ -133,13 +133,14 @@
       from:{
         pageNum: 1,
         pageSize: 10,
-        productSeries: null,
-        //scanObject1: null,
+        productSeries: '380Y',
+        // scanObject1: 'ONYL01FZ0120003023123;1206B0026;D2212BA',
+        // scanObject2: 'P0NYK0410001000;T231107031;D2222232;S500003',
         scanObject1: null,
         scanObject2: null,
         axisName: null,
         neckName: null,
-        tileName: null,
+        tileName: '涓昏酱鐡�',
         axisParameterNoPosition: null,
         neckParameterPosition: null,
         axisValue: null,
@@ -164,6 +165,8 @@
         axisValue: null,
         neckValue: null,
         tileColor: null,
+        words: ['------', '------', '------', '------'],
+        colors: ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],
         createUser: null,
         updateUser: null,
         state: null,
@@ -223,9 +226,9 @@
       this.clear();
 
       if(this.from.scanObject1 !== null && this.from.scanObject2 !== null
-        && this.from.axisName !== null && this.from.axisName !== ""
-        && this.from.neckName !== null && this.from.neckName !== ""
-        && this.from.tileName !== null && this.from.tileName !== ""
+        // && this.from.axisName !== null && this.from.axisName !== ""
+        // && this.from.neckName !== null && this.from.neckName !== ""
+        // && this.from.tileName !== null && this.from.tileName !== ""
         && this.from.productSeries !== null && this.from.productSeries !== "")
       {
         this.axisValueextracted();
@@ -293,7 +296,13 @@
       }
       console.log(queryParams)
       listTileMatchRules(queryParams).then(response => {
-        this.queryParams.tileColor = response.rows[0].tileColor;
+        this.queryParams.words= ['------', '------', '------', '------']
+        this.queryParams.colors= ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF']
+        for (var i=0;i<response.rows.length;i++){
+          this.queryParams.colors[i]=response.rows[i].tileColor;
+          this.queryParams.words[i]=response.rows[i].tileName;
+        }
+        console.log('棰滆壊锛�',response)
       });
     },
     clear(){
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs1.vue b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs1.vue
new file mode 100644
index 0000000..9e98dd8
--- /dev/null
+++ b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs1.vue
@@ -0,0 +1,83 @@
+<template>
+  <el-input
+    慰nkeyup="this.value=this.value.replace(/\D|/g,'')"
+    clearable
+    maxlength="116"
+    v-model="codeValue"
+    placeholder="璇疯緭鍏ユ潯褰㈢爜"
+  />
+</template>
+<script>
+export default {
+  data(){
+    return {
+      codeValue: "",
+      code: "",
+      lastTime: "",
+      nextTime: "",
+      lastCode: "",
+      nextCode: "",
+      dtmainId: "",
+    };
+  },
+  created() {
+    window.document.onkeypress = (e) => {
+      if (window.event) {
+        // IE
+        this.nextCode = e.keyCode;
+      } else if (e.which) {
+        // Netscape/Firefox/Opera
+        this.nextCode = e.which;
+      }
+      if (e.which === 13) {
+        // 閿洏鍥炶溅浜嬩欢
+        if (this.code.length < 3) return; // 鎵爜鏋殑閫熷害寰堝揩锛屾墜鍔ㄨ緭鍏ョ殑鏃堕棿涓嶄細璁ヽode鐨勯暱搴﹀ぇ浜�2锛屾墍浠ヨ繖閲屼笉浼氬鎵爜鏋湁鏁�
+
+        //console.log("鎵爜缁撴潫銆�");
+        //console.log("鏉″舰鐮侊細", this.code);
+        this.parseQRCode(this.code); // 鑾峰彇鍒版壂鐮佹灙杈撳叆鐨勫唴瀹癸紝鍋氬埆鐨勬搷浣�
+        this.lastCode = "";
+        this.lastTime = "";
+        return;
+      }
+      this.nextTime = new Date().getTime();
+      if (!this.lastTime && !this.lastCode) {
+        this.code = ""; // 娓呯┖涓婃鐨勬潯褰㈢爜
+        this.code += e.key;
+        //console.log("鎵爜寮�濮�---", this.code);
+      }
+      if (this.lastCode && this.lastTime && this.nextTime - this.lastTime > 500) {
+        // 褰撴壂鐮佸墠鏈塳eypress浜嬩欢鏃�,闃叉棣栧瓧缂哄け
+        this.code = e.key;
+        //console.log("闃叉棣栧瓧缂哄け銆傘�傘��", this.code);
+      } else if (this.lastCode && this.lastTime) {
+        this.code += e.key;
+        //console.log("鎵爜涓�傘�傘��", this.code);
+      }
+      this.lastCode = this.nextCode;
+      this.lastTime = this.nextTime;
+    };
+  },
+  methods: {
+    parseQRCode(code) {
+      // if (code.length === 16) {
+      //   console.log(code);
+      // } else if (code.length === 0) {
+      //   console.log("璇疯緭鍏ユ潯鐮侊紒");
+      // } else {
+      //   alert("鏉$爜涓嶅悎娉曪細" + code);
+      // }
+      this.codeValue = code;
+      // 鍙戦�佺綉缁滆姹�
+    },
+  },
+}
+</script>
+<style scoped lang="scss">
+
+</style>
+
+
+
+
+
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs2.vue b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs2.vue
new file mode 100644
index 0000000..24f8f13
--- /dev/null
+++ b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs2.vue
@@ -0,0 +1,65 @@
+<template>
+  <div style="height: 100%;width: 100%">
+    <el-card class="box-card">
+      <el-form size="large" :inline="true" label-width="68px" @submit.native.prevent>
+        <el-form-item label-width="200" label="绠变綋鐮�" :prop="barcode"  style="align-content: center">
+          <input v-model="barcode"
+               ref="inputdata"
+               style="height: 39px; width: 300px"
+               placeholder="璇锋壂鎻忕浣撶爜"
+          />
+        </el-form-item>
+      </el-form>
+    </el-card>
+  </div>
+</template>
+<script>
+export default {
+  data(){
+    return {
+      scannerFlag: false,
+      barcode: "",
+    };
+  },
+
+  mounted() {
+    this.setFocus()
+    this.$refs.inputdata.addEventListener('keydown',this.handleScannerInput)
+  },
+  beforeDestroy() {
+    this.$refs.inputdata.removeEventListener('keydown',this.handleScannerInput)
+  },
+  methods: {
+    refresh() {
+      location.reload();
+    },
+    setFocus(){
+      this.$nextTick(()=>{
+        this.$refs.inputdata.focus()
+      })
+    },
+    handleScannerInput(event){
+      if (this.scannerFlag){
+        this.barcode = ''
+        this.$refs.inputdata.value = ''
+        this.scannerFlag = false
+      }
+      const input = event.target
+      const inputValue = input.value
+      this.barcode = inputValue
+      if (event.key === 'Enter'){
+        this.scannerFlag = true
+        console.log('鏉$爜锛�',this.barcode)
+        //鎵弿瀹屾垚
+      }
+    },
+  },
+}
+</script>
+<style scoped lang="scss">
+</style>
+
+
+
+
+
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs3.vue b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs3.vue
new file mode 100644
index 0000000..9d6554a
--- /dev/null
+++ b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs3.vue
@@ -0,0 +1,30 @@
+<!--鍦╒ue涓紝浣犲彲浠ヤ娇鐢╲-model鏉ョ粦瀹氬涓緭鍏ュ瓧娈靛埌鍚屼竴涓暟鎹ā鍨嬬殑涓嶅悓灞炴�т笂銆備互涓嬫槸涓�涓畝鍗曠殑渚嬪瓙锛屽睍绀轰簡濡備綍杩炵画鎵弿澶氫釜灞炴�х殑鏉$爜锛�-->
+<template>
+  <div>
+    <input v-model="scannedCode.partNumber" @input="handleScan" placeholder="Part Number">
+    <input v-model="scannedCode.serialNumber" @input="handleScan" placeholder="Serial Number">
+    <input v-model="scannedCode.batchCode" @input="handleScan" placeholder="Batch Code">
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      scannedCode: {
+        partNumber: '',
+        serialNumber: '',
+        batchCode: ''
+      }
+    };
+  },
+  methods: {
+    handleScan() {
+      // 鎵弿澶勭悊閫昏緫
+      console.log('Scanned code:', this.scannedCode);
+      // 鏍规嵁瀹為檯闇�姹傦紝杩欓噷鍙互娣诲姞鎵弿澶勭悊閫昏緫锛屼緥濡傚彂閫佹暟鎹埌鏈嶅姟鍣ㄧ瓑
+    }
+  }
+};
+</script>
+<!--鍦ㄨ繖涓緥瀛愪腑锛屾垜浠湁涓変釜杈撳叆瀛楁缁戝畾鍒皊cannedCode瀵硅薄鐨勪笉鍚屽睘鎬т笂銆傛瘡褰撶敤鎴疯緭鍏ユ椂锛宧andleScan鏂规硶浼氳璋冪敤锛屼綘鍙互鍦ㄨ繖涓柟娉曚腑娣诲姞鎵弿澶勭悊鐨勯�昏緫銆傝繖涓緥瀛愬亣璁炬壂鎻忓鐞嗗彧鏄畝鍗曞湴鍦ㄦ帶鍒跺彴杈撳嚭鎵弿鐨勪唬鐮佷俊鎭紱鍦ㄥ疄闄呭簲鐢ㄤ腑锛屼綘鍙兘闇�瑕佽繘琛屾洿澶嶆潅鐨勫鐞嗭紝姣斿楠岃瘉鏁版嵁鎴栧彂閫佸埌鏈嶅姟鍣ㄣ��-->
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs5.vue b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs5.vue
new file mode 100644
index 0000000..d47eea5
--- /dev/null
+++ b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs5.vue
@@ -0,0 +1,16 @@
+<template>
+  <div>
+    <span v-for="(word, index) in words" :key="index" :style="{ color: colors[index] }">{{ word }}</span>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      words: ['涓�妗�   .', '浜屾。  .', '涓夋。  .', '鍥涙。  .'],
+      colors: ['#FF0000', '#00FF00', '#0000FF', '#FFFF00']
+    };
+  }
+};
+</script>
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs6.vue b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs6.vue
new file mode 100644
index 0000000..e1fdc2c
--- /dev/null
+++ b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs6.vue
@@ -0,0 +1,91 @@
+<template>
+  <el-form size="large" :inline="true" label-width="68px" @submit.native.prevent>
+    <el-form-item v-for="(item, index) in scanList"
+                  :key="index"
+                  label-width="200"
+                  label="绠变綋鐮�"
+                  :prop="item.value"
+                  style="align-content: center"
+                  @focus="handleFocus(index)">
+      <input v-model="item.value"
+             ref="scanInput${index}"
+             style="height: 39px; width: 300px"
+             placeholder="璇锋壂鎻忕浣撶爜"
+      />
+    </el-form-item>
+  </el-form>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      scannerFlag: false,
+      scanList: [
+        { value: '' },
+        { value: '' },
+        // 鍙互鏍规嵁闇�瑕佸鍔犳洿澶氱殑椤�
+      ],
+      focusedIndex: 0, // 褰撳墠鑱氱劍鐨刬nput绱㈠紩
+    };
+  },
+  mounted() {
+    this.focusScanInput(this.focusedIndex);
+    this.setFocus()
+    this.$refs.scanInput$index.addEventListener('keydown',this.handleScannerInput)
+  },
+  beforeDestroy() {
+    this.$refs.scanInput$index.removeEventListener('keydown',this.handleScannerInput)
+  },
+  watch: {
+    // 鐩戝惉scanList鐨勫彉鍖栵紝濡傛灉鍙戠幇鐒︾偣绱㈠紩瓒呭嚭鑼冨洿锛屽垯鑷姩鑱氱劍鍒版渶鍚庝竴涓緭鍏ユ
+    scanList: {
+      deep: true,
+      handler(newList) {
+        if (this.focusedIndex >= newList.length) {
+          this.focusedIndex = newList.length - 1;
+          this.$nextTick(() => {
+            this.focusScanInput(this.focusedIndex);
+          });
+        }
+      },
+    },
+  },
+
+  methods: {
+    refresh() {
+      location.reload();
+    },
+    setFocus(){
+      this.$nextTick(()=>{
+        this.$refs.inputdata.focus()
+      })
+    },
+    handleScannerInput(event){
+      if (this.scannerFlag){
+        this.barcode = ''
+        this.$refs.inputdata.value = ''
+        this.scannerFlag = false
+      }
+      const input = event.target
+      const inputValue = input.value
+      this.item.value = inputValue
+      if (event.key === 'Enter'){
+        this.scannerFlag = true
+        console.log('鏉$爜锛�',this.item.value)
+        //鎵弿瀹屾垚
+      }
+    },
+
+    handleFocus(index) {
+      this.focusedIndex = index;
+    },
+    focusScanInput(index) {
+      this.$refs[`scanInput${index}`][0].focus();
+    },
+  },
+};
+</script>
+<!--鍦ㄨ繖涓緥瀛愪腑锛屾垜浠娇鐢ㄤ簡涓�涓暟缁剆canList鏉ュ姩鎬佺敓鎴愬涓緭鍏ユ銆傞�氳繃handleFocus鏂规硶鏇存柊褰撳墠鑱氱劍鐨勮緭鍏ユ绱㈠紩锛�
+骞堕�氳繃watch鏉ョ洃鍚瑂canList鐨勫彉鍖栵紝浠ョ‘淇濆鏋滄柊娣诲姞鐨勮緭鍏ユ瓒呭嚭浜嗗師鏈夌殑绱㈠紩鑼冨洿锛�
+鎴戜滑鍙互鑷姩鑱氱劍鍒版渶鍚庝竴涓緭鍏ユ涓娿�俧ocusScanInput鏂规硶鐢ㄤ簬璁剧疆鐪熷疄DOM鐨勭劍鐐广��-->
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs7.vue b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs7.vue
new file mode 100644
index 0000000..193ccad
--- /dev/null
+++ b/jcdm-ui/src/views/main/cfkb/crankshaftUp/cs7.vue
@@ -0,0 +1,93 @@
+<template>
+  <div style="height: 100%;width: 100%">
+    <el-card class="box-card">
+      <el-form size="large" :inline="true" label-width="68px" @submit.native.prevent>
+        <el-form-item label-width="200" label="绠变綋鐮�" :prop="barcode1"  style="align-content: center">
+          <input v-model="barcode1"
+                 ref="inputdata1"
+                 style="height: 39px; width: 300px"
+                 placeholder="璇锋壂鎻忕浣撶爜"
+          />
+        </el-form-item>
+
+        <el-form-item label-width="200" label="瀹濈爜" :prop="barcode2"  style="align-content: center">
+          <input v-model="barcode2"
+                 ref="inputdata2"
+                 style="height: 39px; width: 300px"
+                 placeholder="璇锋壂鎻忓疂鐮�"
+          />
+        </el-form-item>
+      </el-form>
+    </el-card>
+  </div>
+</template>
+<script>
+export default {
+  data(){
+    return {
+      scannerFlag: false,
+      barcode1: "",
+      barcode2: "",
+    };
+  },
+
+  mounted() {
+    this.setFocus()
+    this.$refs.inputdata1.addEventListener('keydown',this.handleScannerInput1)
+    this.$refs.inputdata2.addEventListener('keydown',this.handleScannerInput2)
+  },
+  beforeDestroy() {
+    this.$refs.inputdata1.removeEventListener('keydown',this.handleScannerInput1)
+    this.$refs.inputdata2.removeEventListener('keydown',this.handleScannerInput2)
+  },
+  methods: {
+    refresh() {
+      location.reload();
+    },
+    setFocus(){
+      this.$nextTick(()=>{
+        this.$refs.inputdata1.focus()
+      })
+    },
+    handleScannerInput1(event){
+      if (this.scannerFlag){
+        this.barcode1 = ''
+        this.$refs.inputdata1.value = ''
+        this.scannerFlag = false
+      }
+      const input = event.target
+      const inputValue = input.value
+      this.barcode1 = inputValue
+      if (event.key === 'Enter'){
+        this.scannerFlag = true
+        console.log('鏉$爜1锛�',this.barcode1)
+        this.$refs.inputdata2.focus();
+        //鎵弿瀹屾垚
+      }
+    },
+    handleScannerInput2(event){
+      if (this.scannerFlag){
+        this.barcode2 = ''
+        this.$refs.inputdata2.value = ''
+        this.scannerFlag = false
+      }
+      const input = event.target
+      const inputValue = input.value
+      this.barcode2 = inputValue
+      if (event.key === 'Enter'){
+        this.scannerFlag = true
+        console.log('鏉$爜2锛�',this.barcode2)
+        this.$refs.inputdata1.focus();
+        //鎵弿瀹屾垚
+      }
+    },
+  },
+}
+</script>
+<style scoped lang="scss">
+</style>
+
+
+
+
+
diff --git a/jcdm-ui/src/views/main/cfkb/crankshaftUp/index.vue b/jcdm-ui/src/views/main/cfkb/crankshaftUp/index.vue
index 180fe9b..e8fb564 100644
--- a/jcdm-ui/src/views/main/cfkb/crankshaftUp/index.vue
+++ b/jcdm-ui/src/views/main/cfkb/crankshaftUp/index.vue
@@ -57,7 +57,7 @@
               <span>{{queryParams.scanObject2}}</span>
             </el-descriptions-item>
             <el-descriptions-item label="缁撴灉">
-              <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.tileColor}}</span>
+              <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.words}}</span>
             </el-descriptions-item>
           </el-descriptions>
           <el-divider></el-divider>
@@ -70,6 +70,7 @@
 import VueQr from 'vue-qr'
 import { listTileMatchRules, getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules } from "@/api/main/bs/tileMatchRules/tileMatchRules";
 import {listStationConf,getIp} from "@/api/main/sc/stationConf";
+import {setBarcode1} from "@/api/main/da/opcuaconfig/opcuaconfig";
 export default {
   name: "index",
   dicts: ['colour_hex','productseries','axisname','neckname','tilename'],
@@ -119,6 +120,7 @@
         neckParameterPosition: null,
         axisValue: null,
         neckValue: null,
+        words:"",
         tileColor: null,
         createUser: null,
         updateUser: null,
@@ -153,11 +155,41 @@
       }
       const input = event.target
       const inputValue = input.value
-      this.from.scanObject2 = inputValue
+      //this.from.scanObject2 = inputValue
       if (event.key === 'Enter'){
         this.scannerFlag = true
-        console.log('鏉$爜锛�',this.from.scanObject2)
-        //鎵弿瀹屾垚
+        this.from.scanObject2 = inputValue
+        //console.log('鏉$爜锛�',this.from.scanObject2,this.locationCode)
+        if (typeof this.from.scanObject2 !== 'undefined'&& typeof this.locationCode !== 'undefined' ) {
+          console.log('鏉$爜锛�',this.from.scanObject2,this.locationCode)
+          setBarcode1({barcode:this.from.scanObject2,locationCode:this.locationCode}).then(res => {
+            if (res.data===500){
+              this.$message({
+                message:res.msg,
+                type:'warning'
+              })
+            }else {
+              this.$message({
+                message:'鎿嶄綔鎴愬姛',
+                type:'success'
+              })
+              console.log('杩斿洖锛�',res)
+              this.queryParams.productSeries=res.sfcCode
+              this.queryParams.scanObject1=res.paramValue
+              this.queryParams.scanObject2=this.from.scanObject2
+              this.queryParams.words="鎵爜鎴愬姛";
+              this.queryParams.tileColor='#00FF00';
+
+            }
+          })
+
+        }
+        //setBarcode({barcode:'1111',locationCode:'555555'})
+        // //鎵弿瀹屾垚
+        // if(this.form.scanObject2 !== null && this.form.scanObject2 !== undefined){
+        //   console.log('鏉$爜锛�',this.from.scanObject2,this.locationCode)
+        //   //setBarcode(this.form.scanObject2,this.locationCode)
+        // }
       }
     },
 
diff --git a/jcdm-ui/src/views/main/cfkb/tileMatchKb/index.vue b/jcdm-ui/src/views/main/cfkb/tileMatchKb/index.vue
index d3e8197..75e4bcd 100644
--- a/jcdm-ui/src/views/main/cfkb/tileMatchKb/index.vue
+++ b/jcdm-ui/src/views/main/cfkb/tileMatchKb/index.vue
@@ -144,7 +144,8 @@
               <span>{{queryParams.weight}}</span>
             </el-descriptions-item>
             <el-descriptions-item label="閰嶇摝棰滆壊">
-              <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.tileColor}}</span>
+<!--          <span  style="color: #FFFFFF;"  :style="{ backgroundColor: queryParams.tileColor }">{{queryParams.tileColor}}</span>-->
+              <span v-for="(word, index) in queryParams.words" :key="index" :style="{ backgroundColor: queryParams.colors[index],fontSize: '30px',}">{{ word }}</span>
             </el-descriptions-item>
           </el-descriptions>
           <el-divider></el-divider>
@@ -173,8 +174,8 @@
         pageSize: 10,
         productSeries: null,
         //scanObject1: null,
-        scanObject1: 'P0SQ0-01FZ01-1000;T231224116;DBBBBA',
-        scanObject2: 'P0SQ0-041000-1002;T2312020675;DAABBA;S500003',
+        scanObject1: 'ONYL01FZ0120003023123;1206B0026;D2212BA',
+        scanObject2: 'P0NYK0410001000;T231107031;D2222232;S500003',
         axisName: null,
         neckName: null,
         tileName: null,
@@ -202,7 +203,9 @@
         neckParameterPosition: null,
         axisValue: null,
         neckValue: null,
-        tileColor: null,
+        tileColor: "",
+        words: ['涓�妗�   .', '浜屾。  .', '涓夋。  .', '鍥涙。  .'],
+        colors: ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],
         createUser: null,
         updateUser: null,
         state: null,
@@ -216,9 +219,9 @@
       this.clear();
 
       if(this.from.scanObject1 !== null && this.from.scanObject2 !== null
-        && this.from.axisName !== null && this.from.axisName !== ""
-        && this.from.neckName !== null && this.from.neckName !== ""
-        && this.from.tileName !== null && this.from.tileName !== ""
+        // && this.from.axisName !== null && this.from.axisName !== ""
+        // && this.from.neckName !== null && this.from.neckName !== ""
+        // && this.from.tileName !== null && this.from.tileName !== ""
         && this.from.productSeries !== null && this.from.productSeries !== "")
       {
         this.axisValueextracted();
@@ -286,7 +289,13 @@
       }
       console.log(queryParams)
       listTileMatchRules(queryParams).then(response => {
-        this.queryParams.tileColor = response.rows[0].tileColor;
+        this.queryParams.words= ['------', '------', '------', '------']
+        this.queryParams.colors= ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF']
+        for (var i=0;i<response.rows.length;i++){
+          this.queryParams.colors[i]=response.rows[i].tileColor;
+          this.queryParams.words[i]=response.rows[i].tileName;
+        }
+        console.log('棰滆壊锛�',response)
       });
     },
     clear(){
diff --git a/jcdm-ui/src/views/main/da/tileMatchMiddleware/index.vue b/jcdm-ui/src/views/main/da/tileMatchMiddleware/index.vue
new file mode 100644
index 0000000..e78118d
--- /dev/null
+++ b/jcdm-ui/src/views/main/da/tileMatchMiddleware/index.vue
@@ -0,0 +1,336 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="浜у搧SN鍙�" prop="sfcCode">
+            <el-input
+              v-model="queryParams.sfcCode"
+              placeholder="璇疯緭鍏ヤ骇鍝丼N鍙�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鎵樼洏鍙�" prop="palletNo">
+            <el-input
+              v-model="queryParams.palletNo"
+              placeholder="璇疯緭鍏ユ墭鐩樺彿"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鏇茶酱鐮�" prop="crankshaftNo">
+            <el-input
+              v-model="queryParams.crankshaftNo"
+              placeholder="璇疯緭鍏ユ洸杞寸爜"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鐘舵��" prop="state">
+            <el-input
+              v-model="queryParams.state"
+              placeholder="璇疯緭鍏ョ姸鎬�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="杩炴潌鐮�" prop="connectingrodNo">
+            <el-input
+              v-model="queryParams.connectingrodNo"
+              placeholder="璇疯緭鍏ヨ繛鏉嗙爜"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+          </el-form-item>
+        </el-form>
+    </el-card>
+
+    <el-card style="margin-top: 10px" class="box-card">
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['da:tileMatchMiddleware:add']"
+            >鏂板</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['da:tileMatchMiddleware:edit']"
+            >淇敼</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="mini"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['da:tileMatchMiddleware:remove']"
+            >鍒犻櫎</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['da:tileMatchMiddleware:export']"
+            >瀵煎嚭</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table border v-loading="loading" :data="tileMatchMiddlewareList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="ID" align="center" prop="id" />
+          <el-table-column label="浜у搧SN鍙�" align="center" prop="sfcCode">
+          </el-table-column>
+          <el-table-column label="鎵樼洏鍙�" align="center" prop="palletNo">
+          </el-table-column>
+          <el-table-column label="鏇茶酱鐮�" align="center" prop="crankshaftNo">
+          </el-table-column>
+          <el-table-column label="鐘舵��" align="center" prop="state">
+          </el-table-column>
+          <el-table-column label="澶囨敞" align="center" prop="remarks">
+          </el-table-column>
+          <el-table-column label="杩炴潌鐮�" align="center" prop="connectingrodNo">
+          </el-table-column>
+          <el-table-column label="姘旂几缂栧彿" align="center" prop="cylinder">
+          </el-table-column>
+          <el-table-column fixed="right" width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="success"
+                plain
+                style="width: 72px"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['da:tileMatchMiddleware:edit']"
+              >淇敼</el-button>
+              <el-button
+                size="mini"
+                type="danger"
+                plain
+                style="width: 72px"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['da:tileMatchMiddleware:remove']"
+              >鍒犻櫎</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+    </el-card>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀规椿濉炶繛鏉嗛厤鐡︿腑闂村璇濇 -->
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
+      <span slot="title">
+        <i class="el-icon-s-order"></i>
+        {{titleName}}
+      </span>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="浜у搧SN鍙�" prop="sfcCode">
+          <el-input v-model="form.sfcCode" placeholder="璇疯緭鍏ヤ骇鍝丼N鍙�" />
+        </el-form-item>
+        <el-form-item label="鎵樼洏鍙�" prop="palletNo">
+          <el-input v-model="form.palletNo" placeholder="璇疯緭鍏ユ墭鐩樺彿" />
+        </el-form-item>
+        <el-form-item label="鏇茶酱鐮�" prop="crankshaftNo">
+          <el-input v-model="form.crankshaftNo" placeholder="璇疯緭鍏ユ洸杞寸爜" />
+        </el-form-item>
+        <el-form-item label="鐘舵��" prop="state">
+          <el-input v-model="form.state" placeholder="璇疯緭鍏ョ姸鎬�" />
+        </el-form-item>
+        <el-form-item label="澶囨敞" prop="remarks">
+          <el-input v-model="form.remarks" placeholder="璇疯緭鍏ュ娉�" />
+        </el-form-item>
+        <el-form-item label="杩炴潌鐮�" prop="connectingrodNo">
+          <el-input v-model="form.connectingrodNo" placeholder="璇疯緭鍏ヨ繛鏉嗙爜" />
+        </el-form-item>
+        <el-form-item label="姘旂几缂栧彿" prop="cylinder">
+          <el-input v-model="form.cylinder" placeholder="璇疯緭鍏ユ皵缂哥紪鍙�" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listTileMatchMiddleware, getTileMatchMiddleware, delTileMatchMiddleware, addTileMatchMiddleware, updateTileMatchMiddleware } from "@/api/main/da/tileMatchMiddleware/tileMatchMiddleware";
+
+export default {
+  name: "TileMatchMiddleware",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      titleName: "",
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 娲诲杩炴潌閰嶇摝涓棿琛ㄦ牸鏁版嵁
+      tileMatchMiddlewareList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sfcCode: null,
+        palletNo: null,
+        crankshaftNo: null,
+        state: null,
+        remarks: null,
+        connectingrodNo: null,
+        cylinder: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        id: [
+          { required: true, message: "ID涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ娲诲杩炴潌閰嶇摝涓棿鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listTileMatchMiddleware(this.queryParams).then(response => {
+        this.tileMatchMiddlewareList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        sfcCode: null,
+        palletNo: null,
+        crankshaftNo: null,
+        state: null,
+        remarks: null,
+        connectingrodNo: null,
+        cylinder: null
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.titleName = "娣诲姞娲诲杩炴潌閰嶇摝涓棿";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getTileMatchMiddleware(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.titleName = "淇敼娲诲杩炴潌閰嶇摝涓棿";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateTileMatchMiddleware(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addTileMatchMiddleware(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎娲诲杩炴潌閰嶇摝涓棿缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+        return delTileMatchMiddleware(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('da/tileMatchMiddleware/export', {
+        ...this.queryParams
+      }, `tileMatchMiddleware_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3