From 0417fafe757f09bfb166b1dd1d9f096e966a30d8 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期六, 11 五月 2024 09:38:43 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes
---
CanadaMes-ui/src/views/Electrical/Positioning1.vue | 54 ++++---
CanadaMes-ui/src/views/Electrical/Servomanual.vue | 8
CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue | 50 +++---
springboot-vue3/src/main/java/com/example/springboot/entity/north_frame_buffer1_frames.java | 102 ++++++++++++++
CanadaMes-ui/src/views/Electrical/Parameter2.vue | 2
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java | 170 ++++++++++++++++--------
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java | 6
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java | 3
8 files changed, 287 insertions(+), 108 deletions(-)
diff --git a/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue b/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
index 4be46c2..3a663e8 100644
--- a/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
+++ b/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
@@ -68,30 +68,15 @@
>
<!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
}}</router-link> -->
+ <router-link v-if="hasPermission" to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+ $t('Cage Positions')
+ }}</router-link>
+
+ <router-link v-if="hasPermission" to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+ $t('Speed parameter settings')
+ }}</router-link>
- <router-link
- to="/Electrical/Positioning1"
- tag="el-button"
- type="text"
- active-class="blue-button"
- >{{ $t("Cage Positions") }}</router-link
- >
- <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
- $t('Positioning2')
- }}</router-link> -->
-
- <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
- $t('ManualonePosition2')
- }}</router-link> -->
- <router-link
- to="/Electrical/AutomaticParameterSetting"
- tag="el-button"
- type="text"
- active-class="blue-button"
- >{{ $t("Speed parameter settings") }}</router-link
- >
-
- <router-link
+<router-link v-if="plcmes"
to="/Electrical/InteractionState"
tag="el-button"
type="text"
@@ -160,6 +145,9 @@
import LanguageMixin from '../../lang/LanguageMixin'
import data from '../../configuration/AutomaticParameterSetting'
import {SelectPassword} from "../../api/home";
+import {
+SelectPermissionByUserName, currentUsername
+} from "../../api/home";
let socket;
@@ -174,6 +162,8 @@
jianju: "",
isPromptVisible: false,
+ hasPermission: false, // 榛樿娌℃湁鏉冮檺
+ plcmes:false
}
},
activated () {
@@ -188,6 +178,20 @@
this.load();
this.showPasswordPrompt();
+ currentUsername().then(res => {
+ SelectPermissionByUserName(res.data).then(res => {
+ res.data.permission.forEach(item => {
+ if (item.permissionId == "36" && item.state == 1) {
+ this.hasPermission = true;
+ }
+ if (item.permissionId == "50" && item.state == 1) {
+ this.plcmes = true;
+ }
+
+ });
+ });
+
+ });
},
methods: {
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter2.vue b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
index 3cc720f..b49619c 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter2.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -236,7 +236,7 @@
this.hasPermission = true;
}
if (item.permissionId == "50" && item.state == 1) {
- this.plcmes = false;
+ this.plcmes = true;
}
});
diff --git a/CanadaMes-ui/src/views/Electrical/Positioning1.vue b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
index d8276e4..d79f73d 100644
--- a/CanadaMes-ui/src/views/Electrical/Positioning1.vue
+++ b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
@@ -69,35 +69,20 @@
<!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
}}</router-link> -->
- <router-link
- to="/Electrical/Positioning1"
- tag="el-button"
- type="text"
- active-class="blue-button"
- >{{ $t("Cage Positions") }}</router-link
- >
- <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
- $t('Positioning2')
- }}</router-link> -->
+ <router-link v-if="hasPermission" to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+ $t('Cage Positions')
+ }}</router-link>
+
+ <router-link v-if="hasPermission" to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+ $t('Speed parameter settings')
+ }}</router-link>
- <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
- $t('ManualonePosition2')
- }}</router-link> -->
- <router-link
- to="/Electrical/AutomaticParameterSetting"
- tag="el-button"
- type="text"
- active-class="blue-button"
- >{{ $t("Speed parameter settings") }}</router-link
- >
-
- <router-link
+<router-link v-if="plcmes"
to="/Electrical/InteractionState"
tag="el-button"
type="text"
active-class="blue-button"
- >{{ $t("PLC-MES Info") }}</router-link
- >
+ >{{ $t("PLC-MES Info") }}</router-link>
</el-breadcrumb>
<el-row :gutter="18" class="card" style="width: 1400px">
@@ -219,6 +204,9 @@
import LanguageMixin from "../../lang/LanguageMixin";
import data from "../../configuration/Positioning1";
import {SelectPassword} from "../../api/home";
+import {
+SelectPermissionByUserName, currentUsername
+} from "../../api/home";
export default {
name: "Positioning1",
@@ -235,6 +223,8 @@
jianju: "",
isPromptVisible: false,
+ hasPermission: false, // 榛樿娌℃湁鏉冮檺
+ plcmes:false
};
},
@@ -251,6 +241,22 @@
// 璋冪敤鍑芥暟锛屾樉绀哄瘑鐮佽緭鍏ュ璇濇
this.showPasswordPrompt();
+
+
+currentUsername().then(res => {
+ SelectPermissionByUserName(res.data).then(res => {
+ res.data.permission.forEach(item => {
+ if (item.permissionId == "36" && item.state == 1) {
+ this.hasPermission = true;
+ }
+ if (item.permissionId == "50" && item.state == 1) {
+ this.plcmes = true;
+ }
+
+ });
+ });
+
+ });
},
methods: {
diff --git a/CanadaMes-ui/src/views/Electrical/Servomanual.vue b/CanadaMes-ui/src/views/Electrical/Servomanual.vue
index 29a3155..89ea9c7 100644
--- a/CanadaMes-ui/src/views/Electrical/Servomanual.vue
+++ b/CanadaMes-ui/src/views/Electrical/Servomanual.vue
@@ -56,7 +56,7 @@
$t('Speed parameter settings')
}}</router-link>
-<router-link v-if="hasPermission"
+<router-link v-if="plcmes"
to="/Electrical/InteractionState"
tag="el-button"
type="text"
@@ -83,7 +83,8 @@
return {
jsonData: data,
- hasPermission: false // 榛樿娌℃湁鏉冮檺
+ hasPermission: false, // 榛樿娌℃湁鏉冮檺
+ plcmes:false
}
},
created () {
@@ -96,6 +97,9 @@
if (item.permissionId == "36" && item.state == 1) {
this.hasPermission = true;
}
+ if (item.permissionId == "50" && item.state == 1) {
+ this.plcmes = true;
+ }
});
});
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index bd3e105..e4b097a 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -45,7 +45,7 @@
public static north_frame_buffer1_frames AluminumFrameInfo=new north_frame_buffer1_frames();
// private Configuration config;
-//
+
private StorageCageService storageCageService;
public static Boolean FeedState = false;
@@ -65,12 +65,12 @@
// b.put()
@Override
public void run() {
-
+
while (this != null) {
Short zhi = 0;
JSONObject jsonObject = new JSONObject();
jsonObject.append("feedglassid", feedglassid);
-
+
try {
Thread.sleep(1000);
// 娉ㄥ叆mapper
@@ -117,6 +117,43 @@
// }
// }
// }
+ // String frameno ="X226422133V";
+ // if (!frameno.equals(Plchome.FrameNo)) {
+ // Plchome.FrameNo = frameno;
+ // try {
+ // Short num = 0;
+ // List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service
+ // .SelectAluminumFrameInfoById(Plchome.FrameNo);
+ // for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) {
+ // if (north_glass_buffer1.getstorageCage() == null) {
+ // break;
+ // }
+ // num++;
+ // }
+ // if(num==0){
+ // Plchome.AluminumFrameInfo=dbserve.SelectFrameBarcode(Plchome.FrameNo);
+ // if(Plchome.AluminumFrameInfo.getbarcode()!=null){
+ // int sequence = homeMapper.SelectMaxSquence();
+ // homeMapper.AddOutSliceS("", AluminumFrameInfo.getflip().toString(), Plchome.FrameNo, "0", "0", sequence, "0", (short)0, AluminumFrameInfo.getordernumber(),AluminumFrameInfo.getlistnumber() , AluminumFrameInfo.getboxnumber(), "0", "0", AluminumFrameInfo.getframelength().toString(), AluminumFrameInfo.getframeheight().toString());
+ // Plchome.AluminumFrameInfo=new north_frame_buffer1_frames();
+ // // void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm,
+ // // int sequence, String position, Short state,
+ // // String orderid, String listid, String boxid, String glasswidth, String glassheight,String framewidthmm,String frameheightmm);
+ // }
+ // }else{
+ // if (num == north_glass_buffer1s.size()) {
+ // north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
+ // } else {
+ // Plchome.AluminumFrame = north_glass_buffer1s;
+ // Plchome.AluminumFrameInfo=dbserve.SelectFrameBarcode(Plchome.FrameNo);
+ // }
+ // }
+
+ // } catch (SQLException e) {
+ // // TODO Auto-generated catch block
+ // e.printStackTrace();
+ // }
+ // }
// 绗煎瓙浣跨敤鎯呭喌
List<StorageCage> tableData = homeMapper.selectAll();
@@ -176,52 +213,52 @@
// E02鐜荤拑id
// log.info("frame1"+S7controlLK.getinstance().CheckConnected());
String E02id="";
- // try {
- // E02id= S7controlLK.getinstance().readStrings("DB17.40");
- // plc2=true;
- // } catch (Exception e) {
- // // TODO: handle exception
- // plc2=false;
- // e.printStackTrace();
- // }
-
- // jsonObject.append("Plc2", plc2);
- // // log.info("閾濇绾胯鍙�2"+S7controlLK.getinstance().CheckConnected());
-
- // // log.info("E02id"+E02id);
- // outSliceServive.FrameStateUpdate(E02id);
- // if (CurrentFrame != null) {
- // S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), "DB17.0");
- // }
- // String J01id = S7controlLK.getinstance().readStrings("DB17.22");
- // List<Short> liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1);
- // Short framerequest = liststate.get(0);
- // // log.info("liststate:" + liststate);
- // if (framerequest == 1) {
- // // 閾濇id
- // String position;
- // try {
- // position = dbserve.SelectPositionByFrameBarcode(J01id);
- // } catch (SQLException e) {
- // // TODO Auto-generated catch block
- // position = "0";
- // e.printStackTrace();
- // }
- // Short send;
- // if (position.equals("1")) {
- // send = 1;
- // } else {
- // send = 2;
- // }
- // if (J01id != null) {
- // int barcodeState = spianMapper.SelectOverState(J01id);// 鑾峰彇璇ラ摑妗嗙殑鐘舵��
- // if (barcodeState == 0) {// 褰撹閾濇鎵�鏈夌殑鐜荤拑閮芥槸瀹屾垚鐘舵�佹椂鍒犻櫎鍦ㄥ嚭鐗囬槦鍒楃殑鏁版嵁
- // spianMapper.DeleteQueue(J01id);
- // // log.info("deleteoutslice:" + J01id);
- // }
- // }
- // S7controlLK.getinstance().WriteWord("DB17.38", (short) send);
- // }
+ try {
+ E02id= S7controlLK.getinstance().readStrings("DB17.40");
+ plc2=true;
+ } catch (Exception e) {
+ // TODO: handle exception
+ plc2=false;
+ e.printStackTrace();
+ }
+
+ jsonObject.append("Plc2", plc2);
+ // log.info("閾濇绾胯鍙�2"+S7controlLK.getinstance().CheckConnected());
+
+ // log.info("E02id"+E02id);
+ outSliceServive.FrameStateUpdate(E02id);
+ if (CurrentFrame != null) {
+ S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), "DB17.0");
+ }
+ String J01id = S7controlLK.getinstance().readStrings("DB17.22");
+ List<Short> liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1);
+ Short framerequest = liststate.get(0);
+ // log.info("liststate:" + liststate);
+ if (framerequest == 1) {
+ // 閾濇id
+ String position;
+ try {
+ position = dbserve.SelectPositionByFrameBarcode(J01id);
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ position = "0";
+ e.printStackTrace();
+ }
+ Short send;
+ if (position.equals("1")) {
+ send = 1;
+ } else {
+ send = 2;
+ }
+ if (J01id != null) {
+ int barcodeState = spianMapper.SelectOverState(J01id);// 鑾峰彇璇ラ摑妗嗙殑鐘舵��
+ if (barcodeState == 0) {// 褰撹閾濇鎵�鏈夌殑鐜荤拑閮芥槸瀹屾垚鐘舵�佹椂鍒犻櫎鍦ㄥ嚭鐗囬槦鍒楃殑鏁版嵁
+ spianMapper.DeleteQueue(J01id);
+ // log.info("deleteoutslice:" + J01id);
+ }
+ }
+ S7controlLK.getinstance().WriteWord("DB17.38", (short) send);
+ }
String E01id = S7controlLK.getinstance().readStrings("DB17.0");
// log.info("frameno:" + E01id);
@@ -260,7 +297,7 @@
height = form6.getglasslengthmm();
width = form6.getglassheightmm();
}
- if (height < 380 || width < 380 || height > 1810 || width > 2760) {
+ if (height < 225 || width < 380 || height > 1810 || width > 2760) {
zhi = 600;
} else {
zhi = spianService.selectAlls(form6);
@@ -316,6 +353,8 @@
// }
// // 鑾峰彇閾濇idDB106.DBW64锛屾坊鍔犲埌鍑虹墖闃熷垪
// String frameno="X21763329601FB";
+
+
String frameno = spianService.queGlassid("DB103.270", 11).toString();
if (!frameno.equals(Plchome.FrameNo)) {
Plchome.FrameNo = frameno;
@@ -329,18 +368,37 @@
}
num++;
}
- if (num == north_glass_buffer1s.size()) {
- north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
- } else {
- Plchome.AluminumFrame = north_glass_buffer1s;
+ if(num==0){
Plchome.AluminumFrameInfo=dbserve.SelectFrameBarcode(Plchome.FrameNo);
+ if(Plchome.AluminumFrameInfo.getbarcode()!=null){
+ int count=homeMapper.SelectCountFrame(AluminumFrameInfo.getbarcode());
+ if(count==0){
+ int sequence = homeMapper.SelectMaxSquence();
+ homeMapper.AddOutSliceS("", AluminumFrameInfo.getflip().toString(), Plchome.FrameNo, "0", "0", sequence, "0", (short)3, AluminumFrameInfo.getordernumber(),AluminumFrameInfo.getlistnumber() , AluminumFrameInfo.getboxnumber(), "0", "0", AluminumFrameInfo.getframelength().toString(), AluminumFrameInfo.getframeheight().toString());
+ log.info("NoGlass"+AluminumFrameInfo.getbarcode());
+ Plchome.AluminumFrameInfo=new north_frame_buffer1_frames();
+ }
+
+
+ // void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm,
+ // int sequence, String position, Short state,
+ // String orderid, String listid, String boxid, String glasswidth, String glassheight,String framewidthmm,String frameheightmm);
+ }
+ }else{
+ if (num == north_glass_buffer1s.size()) {
+ north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
+ } else {
+ Plchome.AluminumFrame = north_glass_buffer1s;
+ Plchome.AluminumFrameInfo=dbserve.SelectFrameBarcode(Plchome.FrameNo);
+ }
}
+
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
-
+
// 澶嶄綅鍊掕鏃�
// 鍦板潃104.9.6
@@ -380,7 +438,7 @@
height = form3.getglasswidth();
width = form3.getglassheight();
}
- if (height < 380 || width < 380 || height > 1810 || width > 2760) {
+ if (height < 225 || width < 380 || height > 1810 || width > 2760) {
zhi = 600;
} else {
if (D01RequestState == true && D01ResponseState != true) {
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index 3b08bdb..c207593 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -23,6 +23,7 @@
import com.example.springboot.entity.CarPosition;
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.alarmmg;
+import com.example.springboot.entity.north_frame_buffer1_frames;
import com.example.springboot.entity.north_glass_buffer1;
import com.example.springboot.entity.Out_slice;
import com.example.springboot.entity.Queue;
@@ -406,7 +407,7 @@
@PostMapping("/CloseForm7")
public Result CloseForm7() {
Plchome.AluminumFrame = null;
- Plchome.AluminumFrameInfo = null;
+ Plchome.AluminumFrameInfo = new north_frame_buffer1_frames();
Map<String, Object> map = new HashMap<>();
map.put("message", "200");
return Result.success(map);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/north_frame_buffer1_frames.java b/springboot-vue3/src/main/java/com/example/springboot/entity/north_frame_buffer1_frames.java
new file mode 100644
index 0000000..c13fab2
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/north_frame_buffer1_frames.java
@@ -0,0 +1,102 @@
+package com.example.springboot.entity;
+
+
+//瀹㈡埛鐜荤拑淇℃伅琛�
+public class north_frame_buffer1_frames {
+ private Integer id; // 鑷id
+ private String listnumber;// 闆嗗悎id
+ private String ordernumber;// 璁㈠崟id
+ private String boxnumber;// 绠卞瓙id
+ private String barcode;// 閾濇id
+ private double framelength;// 閾濇瀹�
+ private double frameheight;// 閾濇楂�
+ private double framelengthmm;// 閾濇瀹絤m
+ private double frameheightmm;// 閾濇楂榤m
+ private Integer flip;// 鏄惁缈昏浆
+
+
+ public Integer id() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public String getordernumber() {
+ return ordernumber;
+ }
+
+ public void setordernumber(String ordernumber) {
+ this.ordernumber = ordernumber;
+ }
+
+ public String getlistnumber() {
+ return listnumber;
+ }
+
+ public void setlistnumber(String listnumber) {
+ this.listnumber = listnumber;
+ }
+
+ public String getboxnumber() {
+ return boxnumber;
+ }
+
+ public void setboxnumber(String boxnumber) {
+ this.boxnumber = boxnumber;
+ }
+
+ public String getbarcode() {
+ return barcode;
+ }
+
+ public void setbarcode(String barcode) {
+ this.barcode = barcode;
+ }
+
+ public Double getframelength() {
+ return framelength;
+ }
+
+ public void setframelength(Double framelength) {
+ this.framelength = framelength;
+ }
+
+ public Double getframeheight() {
+ return frameheight;
+ }
+
+ public void setframeheight(Double frameheight) {
+ this.frameheight = frameheight;
+ }
+
+ public Double getframelengthmm() {
+ return framelengthmm;
+ }
+
+ public void setframelengthmm(Double framelengthmm) {
+ this.framelengthmm = framelengthmm;
+ }
+
+ public Double getframeheightmm() {
+ return frameheightmm;
+ }
+
+ public void setframeheightmm(Double frameheightmm) {
+ this.frameheightmm = frameheightmm;
+ }
+
+ public Integer getflip() {
+ return flip;
+ }
+
+ public void setflip(Integer flip) {
+ this.flip = flip;
+ }
+
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
index 683bcf0..f73bc6d 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -176,7 +176,7 @@
@Select("select ifnull(max(sequence),0)+1 from out_slice ")
Short SelectMaxSquence();
//鏌ヨ鐢ㄦ埛鏉冮檺
- @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35 or permission_id=36 or permission_id=37 or permission_id=38 or permission_id=39)")
+ @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35 or permission_id=36 or permission_id=37 or permission_id=38 or permission_id=39 or permission_id=50)")
List<RolePermission> SelectPermissionByUserName(String username);
// //鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
@@ -226,6 +226,10 @@
//鑾峰彇閾濇鏈夋病鏈夋鍦ㄥ嚭鐗囩殑鐜荤拑
@Select("select count(*) from out_slice where barcode=#{frameNo} and state=1")
Short SelectOutingQueueCount(String frameNo);
+
+ //鑾峰彇閾濇鏄惁瀛樺湪鐜荤拑瀵逛簡
+ @Select("select count(*) from out_slice where barcode=#{frameNo}")
+ int SelectCountFrame(String getbarcode);
}
--
Gitblit v1.8.0