diff --git a/PDA/PDA/pages.json b/PDA/PDA/pages.json
index 8ffe9d4..e635828 100644
--- a/PDA/PDA/pages.json
+++ b/PDA/PDA/pages.json
@@ -31,7 +31,7 @@
"path" : "pages/bindSelectMat/bindSelectMat",
"style" :
{
- "navigationBarTitleText" : ""
+ "navigationBarTitleText" : "智慧物流系统-物料绑定选择物料"
}
},
{
@@ -54,6 +54,20 @@
{
"navigationBarTitleText" : "智慧物流系统-货架位置绑定解绑"
}
+ },
+ {
+ "path" : "pages/productionLineCallIn/productionLineCallIn",
+ "style" :
+ {
+ "navigationBarTitleText" : "智慧物流系统-产线呼叫"
+ }
+ },
+ {
+ "path" : "pages/productionLineCallOut/productionLineCallOut",
+ "style" :
+ {
+ "navigationBarTitleText" : "智慧物流系统-货架送回"
+ }
}
],
"globalStyle": {
diff --git a/PDA/PDA/pages/main/main.vue b/PDA/PDA/pages/main/main.vue
index 4e85bb8..cd8d290 100644
--- a/PDA/PDA/pages/main/main.vue
+++ b/PDA/PDA/pages/main/main.vue
@@ -20,7 +20,7 @@
-
+
@@ -28,10 +28,12 @@
-
-
-
- 产线呼叫
+
+
+
+
+ 产线呼叫
+
@@ -39,7 +41,7 @@
-
+
@@ -62,34 +64,34 @@
-
+
-
-
-
-
-
-
- 货架位置绑定解绑
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/PDA/PDA/pages/productionLineCallIn/productionLineCallIn.vue b/PDA/PDA/pages/productionLineCallIn/productionLineCallIn.vue
new file mode 100644
index 0000000..95318bb
--- /dev/null
+++ b/PDA/PDA/pages/productionLineCallIn/productionLineCallIn.vue
@@ -0,0 +1,578 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 记录数:[{{recordCount}}]
+
+
+
+ 工位码:{{locationCode}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PDA/PDA/pages/productionLineCallOut/productionLineCallOut.vue b/PDA/PDA/pages/productionLineCallOut/productionLineCallOut.vue
new file mode 100644
index 0000000..8183fd0
--- /dev/null
+++ b/PDA/PDA/pages/productionLineCallOut/productionLineCallOut.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
diff --git a/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue b/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue
index 492a51c..7b61abd 100644
--- a/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue
+++ b/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue
@@ -120,7 +120,7 @@
const self = this; // 保存this的引用
recive(function(res) {
- if (self.shelfCode == '') {
+ if (self.shelfId == 0) {
self.analysisScanCode(res.data);
} else {
self.saveScanedShelfCode(res.data);
diff --git a/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js b/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js
index cd44844..d676b53 100644
--- a/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js
+++ b/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js
@@ -2,7 +2,7 @@
;(function(){
let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[];
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"智慧物流系统-移动端","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"PDA","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.45","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
- const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"navigationBar":{"titleText":"智慧物流系统-登录","type":"default"},"isNVue":false}},{"path":"pages/config/config","meta":{"navigationBar":{"titleText":"智慧物流系统-用户配置","type":"default"},"isNVue":false}},{"path":"pages/main/main","meta":{"navigationBar":{"titleText":"智慧物流系统-主页","type":"default"},"isNVue":false}},{"path":"pages/bind/bind","meta":{"navigationBar":{"titleText":"智慧物流系统-物料绑定","type":"default"},"isNVue":false}},{"path":"pages/bindSelectMat/bindSelectMat","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/queryBindList/queryBindList","meta":{"navigationBar":{"titleText":"智慧物流系统-绑定查询","type":"default"},"isNVue":false}},{"path":"pages/stockTaking/stockTaking","meta":{"navigationBar":{"titleText":"智慧物流系统-库存盘点","type":"default"},"isNVue":false}},{"path":"pages/shelfLocationBindUnbind/shelfLocationBindUnbind","meta":{"navigationBar":{"titleText":"智慧物流系统-货架位置绑定解绑","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
+ const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"navigationBar":{"titleText":"智慧物流系统-登录","type":"default"},"isNVue":false}},{"path":"pages/config/config","meta":{"navigationBar":{"titleText":"智慧物流系统-用户配置","type":"default"},"isNVue":false}},{"path":"pages/main/main","meta":{"navigationBar":{"titleText":"智慧物流系统-主页","type":"default"},"isNVue":false}},{"path":"pages/bind/bind","meta":{"navigationBar":{"titleText":"智慧物流系统-物料绑定","type":"default"},"isNVue":false}},{"path":"pages/bindSelectMat/bindSelectMat","meta":{"navigationBar":{"titleText":"智慧物流系统-物料绑定选择物料","type":"default"},"isNVue":false}},{"path":"pages/queryBindList/queryBindList","meta":{"navigationBar":{"titleText":"智慧物流系统-绑定查询","type":"default"},"isNVue":false}},{"path":"pages/stockTaking/stockTaking","meta":{"navigationBar":{"titleText":"智慧物流系统-库存盘点","type":"default"},"isNVue":false}},{"path":"pages/shelfLocationBindUnbind/shelfLocationBindUnbind","meta":{"navigationBar":{"titleText":"智慧物流系统-货架位置绑定解绑","type":"default"},"isNVue":false}},{"path":"pages/productionLineCallIn/productionLineCallIn","meta":{"navigationBar":{"titleText":"智慧物流系统-产线呼叫","type":"default"},"isNVue":false}},{"path":"pages/productionLineCallOut/productionLineCallOut","meta":{"navigationBar":{"titleText":"智慧物流系统-货架送回","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
__uniConfig.styles=[];//styles
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
diff --git a/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js b/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js
index ab8935d..90e3d8b 100644
--- a/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js
+++ b/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js
@@ -151,7 +151,7 @@ if (uni.restoreGlobal) {
}
return target;
};
- const _sfc_main$d = {
+ const _sfc_main$f = {
data() {
return {
title: "登录",
@@ -227,7 +227,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [
vue.createElementVNode("navigator", {
url: "../config/config",
@@ -313,8 +313,8 @@ if (uni.restoreGlobal) {
])
]);
}
- const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$c], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/index/index.vue"]]);
- const _sfc_main$c = {
+ const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$e], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/index/index.vue"]]);
+ const _sfc_main$e = {
data() {
return {
serverIP: "",
@@ -336,7 +336,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
vue.createElementVNode("view", null, [
vue.createElementVNode("label", null, "服务器IP:"),
@@ -373,7 +373,7 @@ if (uni.restoreGlobal) {
}, "保存配置")
]);
}
- const PagesConfigConfig = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$b], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/config/config.vue"]]);
+ const PagesConfigConfig = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$d], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/config/config.vue"]]);
const _imports_0$1 = "/static/logOut.png";
const _imports_1 = "/static/bind.png";
const _imports_2 = "/static/bindQuery.png";
@@ -382,13 +382,13 @@ if (uni.restoreGlobal) {
const _imports_5 = "/static/stockTaking.png";
const _imports_6 = "/static/task.png";
const _imports_7 = "/static/shelfLocation.png";
- const _sfc_main$b = {
+ const _sfc_main$d = {
data() {
return {};
},
methods: {}
};
- function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [
vue.createElementVNode("view", null, [
vue.createElementVNode("navigator", {
@@ -431,7 +431,7 @@ if (uni.restoreGlobal) {
style: { "flex": "5" }
}, [
vue.createElementVNode("navigator", {
- url: "../queryBindList/queryBindList",
+ url: "../bind/bind",
"hover-class": "navigator-hover"
}, [
vue.createElementVNode("view", {
@@ -450,16 +450,21 @@ if (uni.restoreGlobal) {
class: "uni-flex uni-column",
style: { "flex": "5" }
}, [
- vue.createElementVNode("view", {
- class: "uni-flex uni-row",
- style: { "-webkit-justify-content": "center", "justify-content": "center" }
+ vue.createElementVNode("navigator", {
+ url: "../productionLineCallIn/productionLineCallIn",
+ "hover-class": "navigator-hover"
}, [
- vue.createElementVNode("image", {
- class: "function-image",
- src: _imports_3
- })
- ]),
- vue.createElementVNode("view", { class: "function-text" }, "产线呼叫")
+ vue.createElementVNode("view", {
+ class: "uni-flex uni-row",
+ style: { "-webkit-justify-content": "center", "justify-content": "center" }
+ }, [
+ vue.createElementVNode("image", {
+ class: "function-image",
+ src: _imports_3
+ })
+ ]),
+ vue.createElementVNode("view", { class: "function-text" }, "产线呼叫")
+ ])
]),
vue.createElementVNode("view", { style: { "flex": "1" } })
]),
@@ -470,7 +475,7 @@ if (uni.restoreGlobal) {
style: { "flex": "5" }
}, [
vue.createElementVNode("navigator", {
- url: "../bind/bind",
+ url: "../productionLineCallOut/productionLineCallOut",
"hover-class": "navigator-hover"
}, [
vue.createElementVNode("view", {
@@ -560,8 +565,8 @@ if (uni.restoreGlobal) {
])
]);
}
- const PagesMainMain = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$a], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/main/main.vue"]]);
- const _sfc_main$a = {
+ const PagesMainMain = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$c], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/main/main.vue"]]);
+ const _sfc_main$c = {
data() {
return {
visible: false,
@@ -647,7 +652,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
return $data.visible ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "popup-container"
@@ -678,9 +683,9 @@ if (uni.restoreGlobal) {
])
])) : vue.createCommentVNode("v-if", true);
}
- const PagesBindSelectMatBindSelectMat = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$9], ["__scopeId", "data-v-68e7b952"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bindSelectMat/bindSelectMat.vue"]]);
+ const PagesBindSelectMatBindSelectMat = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$b], ["__scopeId", "data-v-68e7b952"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bindSelectMat/bindSelectMat.vue"]]);
const _imports_0 = "/static/scan.png";
- const _sfc_main$9 = {
+ const _sfc_main$b = {
components: {
bindSelectMat: PagesBindSelectMatBindSelectMat
},
@@ -904,7 +909,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
const _component_bindSelectMat = vue.resolveComponent("bindSelectMat");
return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [
vue.createVNode(_component_bindSelectMat, {
@@ -1085,7 +1090,7 @@ if (uni.restoreGlobal) {
])
]);
}
- const PagesBindBind = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$8], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bind/bind.vue"]]);
+ const PagesBindBind = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$a], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bind/bind.vue"]]);
class MPAnimation {
constructor(options, _this) {
this.options = options;
@@ -1196,7 +1201,7 @@ if (uni.restoreGlobal) {
clearTimeout(_this.timer);
return new MPAnimation(option, _this);
}
- const _sfc_main$8 = {
+ const _sfc_main$a = {
name: "uniTransition",
emits: ["click", "change"],
props: {
@@ -1443,7 +1448,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
return $data.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
ref: "ani",
@@ -1455,8 +1460,8 @@ if (uni.restoreGlobal) {
vue.renderSlot(_ctx.$slots, "default")
], 14, ["animation"])) : vue.createCommentVNode("v-if", true);
}
- const __easycom_0$1 = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$7], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-transition/components/uni-transition/uni-transition.vue"]]);
- const _sfc_main$7 = {
+ const __easycom_0$1 = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$9], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-transition/components/uni-transition/uni-transition.vue"]]);
+ const _sfc_main$9 = {
name: "uniPopup",
components: {},
emits: ["change", "maskClick"],
@@ -1784,7 +1789,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
const _component_uni_transition = resolveEasycom(vue.resolveDynamicComponent("uni-transition"), __easycom_0$1);
return $data.showPopup ? (vue.openBlock(), vue.createElementBlock(
"view",
@@ -1844,8 +1849,8 @@ if (uni.restoreGlobal) {
/* CLASS */
)) : vue.createCommentVNode("v-if", true);
}
- const __easycom_0 = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$6], ["__scopeId", "data-v-4dd3c44b"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-popup/components/uni-popup/uni-popup.vue"]]);
- const _sfc_main$6 = {
+ const __easycom_0 = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$8], ["__scopeId", "data-v-4dd3c44b"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-popup/components/uni-popup/uni-popup.vue"]]);
+ const _sfc_main$8 = {
__name: "Card",
props: {
item: {
@@ -1869,7 +1874,7 @@ if (uni.restoreGlobal) {
return __returned__;
}
};
- function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "card" }, [
vue.createElementVNode("view", { class: "card-header" }, [
vue.createElementVNode(
@@ -1970,8 +1975,8 @@ if (uni.restoreGlobal) {
])
]);
}
- const Card = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5], ["__scopeId", "data-v-29c414df"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/Card.vue"]]);
- const _sfc_main$5 = {
+ const Card = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$7], ["__scopeId", "data-v-29c414df"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/Card.vue"]]);
+ const _sfc_main$7 = {
name: "uniPopup",
components: {},
emits: ["change", "maskClick"],
@@ -2324,7 +2329,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
const _component_uni_transition = resolveEasycom(vue.resolveDynamicComponent("uni-transition"), __easycom_0$1);
return $data.showPopup ? (vue.openBlock(), vue.createElementBlock(
"view",
@@ -2384,8 +2389,8 @@ if (uni.restoreGlobal) {
/* CLASS */
)) : vue.createCommentVNode("v-if", true);
}
- const uniPopup = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$4], ["__scopeId", "data-v-7db519c7"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.vue"]]);
- const _sfc_main$4 = {
+ const uniPopup = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$6], ["__scopeId", "data-v-7db519c7"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.vue"]]);
+ const _sfc_main$6 = {
components: {
uniPopup,
Card
@@ -2705,7 +2710,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
const _component_uni_popup = resolveEasycom(vue.resolveDynamicComponent("uni-popup"), __easycom_0);
const _component_Card = vue.resolveComponent("Card");
return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [
@@ -2886,8 +2891,8 @@ if (uni.restoreGlobal) {
])
]);
}
- const PagesQueryBindListQueryBindList = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/queryBindList/queryBindList.vue"]]);
- const _sfc_main$3 = {
+ const PagesQueryBindListQueryBindList = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/queryBindList/queryBindList.vue"]]);
+ const _sfc_main$5 = {
__name: "StocktakingCard",
props: {
item: {
@@ -2911,7 +2916,7 @@ if (uni.restoreGlobal) {
return __returned__;
}
};
- function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", null, [
vue.createElementVNode("view", { class: "card-header" }, [
vue.createElementVNode(
@@ -3025,8 +3030,8 @@ if (uni.restoreGlobal) {
])
]);
}
- const StocktakingCard = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__scopeId", "data-v-e2c0cdac"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/StocktakingCard.vue"]]);
- const _sfc_main$2 = {
+ const StocktakingCard = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$4], ["__scopeId", "data-v-e2c0cdac"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/StocktakingCard.vue"]]);
+ const _sfc_main$4 = {
components: {
uniPopup,
StocktakingCard
@@ -3270,7 +3275,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
const _component_uni_popup = resolveEasycom(vue.resolveDynamicComponent("uni-popup"), __easycom_0);
const _component_StocktakingCard = vue.resolveComponent("StocktakingCard");
return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [
@@ -3462,8 +3467,8 @@ if (uni.restoreGlobal) {
])
]);
}
- const PagesStockTakingStockTaking = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/stockTaking/stockTaking.vue"]]);
- const _sfc_main$1 = {
+ const PagesStockTakingStockTaking = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/stockTaking/stockTaking.vue"]]);
+ const _sfc_main$3 = {
data() {
return {
//初始化
@@ -3486,7 +3491,7 @@ if (uni.restoreGlobal) {
this.userName = getConfig("userName", "admin");
const self = this;
recive(function(res) {
- if (self.shelfCode == "") {
+ if (self.shelfId == 0) {
self.analysisScanCode(res.data);
} else {
self.saveScanedShelfCode(res.data);
@@ -3726,7 +3731,7 @@ if (uni.restoreGlobal) {
}
}
};
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [
vue.createElementVNode("view", { class: "diy-flex-row" }, [
vue.createElementVNode("view", { style: { "flex": "3" } }, [
@@ -3861,7 +3866,522 @@ if (uni.restoreGlobal) {
])
]);
}
- const PagesShelfLocationBindUnbindShelfLocationBindUnbind = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue"]]);
+ const PagesShelfLocationBindUnbindShelfLocationBindUnbind = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue"]]);
+ const _sfc_main$2 = {
+ components: {
+ uniPopup,
+ Card
+ },
+ setup() {
+ const {
+ proxy
+ } = vue.getCurrentInstance();
+ const fixedInfo = {
+ infoId: 0,
+ matCode: "示例名称",
+ matName: "这是一段示例描述",
+ matSpec: "",
+ matQty: 0
+ };
+ const popup = vue.ref(null);
+ const inputValue = vue.ref("");
+ const showPopup = (info) => {
+ fixedInfo.infoId = info.id;
+ fixedInfo.matCode = info.matCode;
+ fixedInfo.matName = info.matName;
+ fixedInfo.matSpec = info.matSpec;
+ fixedInfo.matQty = info.matQty;
+ inputValue.value = info.matQty;
+ popup.value.open();
+ };
+ const hidePopup = () => {
+ popup.value.close();
+ };
+ const saveData = () => {
+ if (inputValue.value == fixedInfo.matQty) {
+ uni.showToast({
+ title: "本次修改未修改数量",
+ icon: "none",
+ duration: 1500
+ });
+ hidePopup();
+ return;
+ }
+ if (inputValue.value < 0) {
+ uni.showToast({
+ title: "您所输入的数量应该大于0!",
+ icon: "none",
+ duration: 1500
+ });
+ return;
+ }
+ if (inputValue.value == 0) {
+ uni.showToast({
+ title: "数量为0,请使用删除功能!",
+ icon: "none",
+ duration: 1500
+ });
+ return;
+ }
+ var serverIPAndPort = getServerIPAndPort();
+ uni.request({
+ url: "http://" + serverIPAndPort + "/matDetailCurrenInfo/updateMatDetailCurrentInfoById",
+ // 请求的接口地址
+ method: "POST",
+ // 设置请求方式为 POST
+ data: {
+ "matQty": inputValue.value,
+ "matDetailCurrentInfoId": fixedInfo.infoId,
+ "userName": getConfig("userName", "admin"),
+ "deviceType": "PDA"
+ },
+ header: {
+ "Content-Type": "application/json"
+ // 如果需要以JSON格式发送数据
+ },
+ success: (res) => {
+ if (res.statusCode === 200) {
+ if (res.data.code == 200) {
+ hidePopup();
+ uni.showToast({
+ title: "修改成功!",
+ icon: "none",
+ duration: 2e3
+ });
+ proxy.queryMatList();
+ } else {
+ uni.showToast({
+ title: "修改失败:" + res.data.message,
+ icon: "none",
+ duration: 2500
+ });
+ }
+ } else {
+ uni.showToast({
+ title: "服务器返回错误状态码" + res.statusCode,
+ icon: "none",
+ duration: 2500
+ });
+ }
+ },
+ fail: (err) => {
+ uni.showToast({
+ title: "请求失败" + err,
+ icon: "none",
+ duration: 2500
+ });
+ this.clear();
+ },
+ complete: (event) => {
+ }
+ });
+ };
+ return {
+ fixedInfo,
+ popup,
+ inputValue,
+ showPopup,
+ hidePopup,
+ saveData
+ };
+ },
+ data() {
+ return {
+ placeholderText: "请先扫描工位码",
+ matCodeCondition: "",
+ //物料编码搜索条件
+ //工位ID 工位码
+ locationId: 0,
+ locationCode: "",
+ userName: "",
+ //当前登录的用户名 用于调用接口传参
+ recordCount: 0,
+ //记录数
+ cardData: null,
+ //列表数据
+ shelfId: null,
+ shelfCode: "",
+ //监控滑动的位置
+ touchStartX: 0,
+ touchStartY: 0,
+ isMove: false
+ //滑动标识 是否滑动
+ };
+ },
+ onShow: function() {
+ this.userName = getConfig("userName", "admin");
+ const self = this;
+ recive(function(res) {
+ formatAppLog("log", "at pages/productionLineCallIn/productionLineCallIn.vue:276", "Success:" + res.data);
+ self.analysisScanCode(res.data);
+ }, function(err) {
+ formatAppLog("log", "at pages/productionLineCallIn/productionLineCallIn.vue:280", "Error:", JSON.stringify(err));
+ });
+ },
+ methods: {
+ analysisScanCode: function(encodedString) {
+ encodedString = encodedString.replace(/,\s*\.\.\.$/, "");
+ this.locationCode = encodedString;
+ var serverIPAndPort = getServerIPAndPort();
+ uni.request({
+ url: "http://" + serverIPAndPort + "/matDetailCurrenInfo/getMatDetailCurrentInfos",
+ // 请求的接口地址
+ method: "POST",
+ // 设置请求方式为 POST
+ data: {
+ "shelfCode": this.shelfCode,
+ "matCode": "",
+ "userName": this.userName,
+ "deviceType": "PDA",
+ "pageNumber": 1,
+ "pageSize": 300
+ },
+ header: {
+ "Content-Type": "application/json"
+ // 如果需要以JSON格式发送数据
+ },
+ success: (res) => {
+ if (res.statusCode === 200) {
+ if (res.data.code == 200) {
+ if (res.data.data == null || res.data.data.count == 0) {
+ uni.showToast({
+ title: "该货架不存在绑定的物料信息!",
+ icon: "none",
+ duration: 1500
+ });
+ return;
+ }
+ this.cardData = res.data.data.lists;
+ this.recordCount = res.data.data.count;
+ uni.showToast({
+ title: "获取成功!",
+ icon: "none",
+ duration: 100
+ });
+ } else {
+ uni.showToast({
+ title: "获取失败:" + res.data.message,
+ icon: "none",
+ duration: 3500
+ });
+ this.clear();
+ }
+ } else {
+ uni.showToast({
+ title: "服务器返回错误状态码" + res.statusCode,
+ icon: "none",
+ duration: 3e3
+ });
+ this.clear();
+ }
+ },
+ fail: (err) => {
+ uni.showToast({
+ title: "请求失败" + err,
+ icon: "none",
+ duration: 3e3
+ });
+ this.clear();
+ },
+ complete: (event) => {
+ formatAppLog("log", "at pages/productionLineCallIn/productionLineCallIn.vue:358", "请求完成", event);
+ }
+ });
+ },
+ queryMatList: function() {
+ if (this.shelfCode == null || this.shelfCode == "") {
+ uni.showToast({
+ title: "请先扫描货架码!",
+ icon: "none",
+ duration: 1e3
+ });
+ return;
+ }
+ var serverIPAndPort = getServerIPAndPort();
+ uni.request({
+ url: "http://" + serverIPAndPort + "/matDetailCurrenInfo/getMatDetailCurrentInfos",
+ // 请求的接口地址
+ method: "POST",
+ // 设置请求方式为 POST
+ data: {
+ "shelfCode": this.shelfCode,
+ "matCode": this.matCodeCondition,
+ "userName": this.userName,
+ "deviceType": "PDA",
+ "pageNumber": 1,
+ "pageSize": 300
+ },
+ header: {
+ "Content-Type": "application/json"
+ // 如果需要以JSON格式发送数据
+ },
+ success: (res) => {
+ if (res.statusCode === 200) {
+ if (res.data.code == 200) {
+ if (res.data.data == null || res.data.data.count == 0) {
+ uni.showToast({
+ title: "该货架不存在绑定的物料信息!",
+ icon: "none",
+ duration: 1500
+ });
+ return;
+ }
+ this.cardData = res.data.data.lists;
+ this.recordCount = res.data.data.count;
+ uni.showToast({
+ title: "获取成功!",
+ icon: "none",
+ duration: 100
+ });
+ } else {
+ uni.showToast({
+ title: "获取失败:" + res.data.message,
+ icon: "none",
+ duration: 3500
+ });
+ this.clear();
+ }
+ } else {
+ uni.showToast({
+ title: "服务器返回错误状态码" + res.statusCode,
+ icon: "none",
+ duration: 3e3
+ });
+ this.clear();
+ }
+ },
+ fail: (err) => {
+ uni.showToast({
+ title: "请求失败" + err,
+ icon: "none",
+ duration: 3e3
+ });
+ this.clear();
+ },
+ complete: (event) => {
+ formatAppLog("log", "at pages/productionLineCallIn/productionLineCallIn.vue:443", "请求完成", event);
+ }
+ });
+ },
+ //清空当前界面所有内容
+ clear: function() {
+ this.placeholderText = "请先扫描货架码";
+ this.cardData = null;
+ this.recordCount = 0;
+ },
+ //解决长按和滑动冲突的问题
+ cardTouchStart(e) {
+ this.isMove = false;
+ this.touchStartX = e.touches[0].clientX;
+ this.touchStartY = e.touches[0].clientY;
+ },
+ cardTouchMove(e) {
+ var deltaX = e.changedTouches[0].clientX - this.touchStartX;
+ var deltaY = e.changedTouches[0].clientY - this.touchStartY;
+ if (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5) {
+ this.isMove = true;
+ }
+ },
+ //长按
+ longpress(item) {
+ if (this.isMove == false) {
+ this.showPopup(item);
+ }
+ }
+ }
+ };
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
+ const _component_uni_popup = resolveEasycom(vue.resolveDynamicComponent("uni-popup"), __easycom_0);
+ const _component_Card = vue.resolveComponent("Card");
+ return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [
+ vue.createVNode(
+ _component_uni_popup,
+ {
+ ref: "popup",
+ type: "dialog"
+ },
+ {
+ default: vue.withCtx(() => [
+ vue.createElementVNode("view", { class: "popup-content" }, [
+ vue.createElementVNode("view", { class: "info-item" }, [
+ vue.createElementVNode("label", null, "物料编码:"),
+ vue.createElementVNode(
+ "text",
+ null,
+ vue.toDisplayString($setup.fixedInfo.matCode),
+ 1
+ /* TEXT */
+ )
+ ]),
+ vue.createElementVNode("view", { class: "info-item" }, [
+ vue.createElementVNode("label", null, "物料名称:"),
+ vue.createElementVNode(
+ "text",
+ null,
+ vue.toDisplayString($setup.fixedInfo.matName),
+ 1
+ /* TEXT */
+ )
+ ]),
+ vue.createElementVNode("view", { class: "info-item" }, [
+ vue.createElementVNode("label", null, "物料规格:"),
+ vue.createElementVNode(
+ "text",
+ null,
+ vue.toDisplayString($setup.fixedInfo.matSpec),
+ 1
+ /* TEXT */
+ )
+ ]),
+ vue.createElementVNode("view", {
+ class: "input-item",
+ style: { "background-color": "wheat" }
+ }, [
+ vue.createElementVNode("label", null, "数量:"),
+ vue.withDirectives(vue.createElementVNode(
+ "input",
+ {
+ ref: "inputRef",
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.inputValue = $event),
+ type: "number",
+ placeholder: "输入数量"
+ },
+ null,
+ 512
+ /* NEED_PATCH */
+ ), [
+ [
+ vue.vModelText,
+ $setup.inputValue,
+ void 0,
+ { number: true }
+ ]
+ ])
+ ]),
+ vue.createElementVNode("view", { class: "button-group" }, [
+ vue.createElementVNode("button", {
+ onClick: _cache[1] || (_cache[1] = (...args) => $setup.hidePopup && $setup.hidePopup(...args))
+ }, "取消"),
+ vue.createElementVNode("button", {
+ onClick: _cache[2] || (_cache[2] = (...args) => $setup.saveData && $setup.saveData(...args))
+ }, "保存")
+ ])
+ ])
+ ]),
+ _: 1
+ /* STABLE */
+ },
+ 512
+ /* NEED_PATCH */
+ ),
+ vue.createElementVNode("view", { class: "diy-flex-row" }, [
+ vue.createElementVNode("view", { style: { "flex": "3" } }, [
+ vue.createCommentVNode(" 占位 ")
+ ]),
+ vue.createElementVNode("view", { style: { "flex": "80", "margin": "5rpx" } }, [
+ vue.createElementVNode("view", { class: "diy-flex-row" }, [
+ vue.createElementVNode("view", {
+ class: "rightImageContainer",
+ style: { "flex": "12", "padding-top": "20rpx" }
+ }, [
+ vue.createElementVNode("image", {
+ style: { "width": "60rpx", "height": "60rpx" },
+ src: _imports_0
+ })
+ ]),
+ vue.createElementVNode("view", {
+ class: "uni-input-wrapper",
+ style: { "flex": "60" }
+ }, [
+ vue.withDirectives(vue.createElementVNode("input", {
+ id: "inputMatCode",
+ class: "uni-input",
+ style: { "font-size": "50rpx", "padding": "10rpx" },
+ placeholder: $data.placeholderText,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.matCodeCondition = $event),
+ onBlur: _cache[4] || (_cache[4] = (...args) => $options.queryMatList && $options.queryMatList(...args))
+ }, null, 40, ["placeholder"]), [
+ [vue.vModelText, $data.matCodeCondition]
+ ])
+ ]),
+ vue.createElementVNode("view", { style: { "flex": "3" } }),
+ vue.createElementVNode("view", { style: { "flex": "30" } }, [
+ vue.createElementVNode("button", {
+ onClick: _cache[5] || (_cache[5] = (...args) => $options.queryMatList && $options.queryMatList(...args))
+ }, "查询")
+ ])
+ ])
+ ]),
+ vue.createElementVNode("view", { style: { "flex": "2" } }, [
+ vue.createCommentVNode(" 占位 ")
+ ])
+ ]),
+ vue.createElementVNode("view", {
+ class: "diy-flex-column",
+ style: { "margin-top": "5rpx" }
+ }, [
+ vue.createElementVNode("view", { class: "diy-flex-inforow" }, [
+ vue.createElementVNode("view", { style: { "width": "10rpx" } }),
+ vue.createElementVNode(
+ "view",
+ { style: { "width": "275rpx" } },
+ "记录数:[" + vue.toDisplayString($data.recordCount) + "]",
+ 1
+ /* TEXT */
+ ),
+ vue.createElementVNode("view", { style: { "width": "10rpx" } }),
+ vue.createElementVNode(
+ "view",
+ { style: { "width": "455rpx" } },
+ "工位码:" + vue.toDisplayString($data.locationCode),
+ 1
+ /* TEXT */
+ )
+ ])
+ ]),
+ vue.createElementVNode("view", {
+ class: "diy-flex-column",
+ style: { "margin-top": "5rpx" }
+ }, [
+ vue.createElementVNode("scroll-view", {
+ class: "scroll-view",
+ "scroll-y": "true"
+ }, [
+ (vue.openBlock(true), vue.createElementBlock(
+ vue.Fragment,
+ null,
+ vue.renderList($data.cardData, (item, index) => {
+ return vue.openBlock(), vue.createElementBlock("view", {
+ key: index,
+ onTouchstart: _cache[6] || (_cache[6] = (...args) => $options.cardTouchStart && $options.cardTouchStart(...args)),
+ onTouchmove: _cache[7] || (_cache[7] = (...args) => $options.cardTouchMove && $options.cardTouchMove(...args)),
+ onLongpress: ($event) => $options.longpress(item)
+ }, [
+ vue.createVNode(_component_Card, {
+ item,
+ currentIndex: index,
+ cardData: $data.cardData
+ }, null, 8, ["item", "currentIndex", "cardData"])
+ ], 40, ["onLongpress"]);
+ }),
+ 128
+ /* KEYED_FRAGMENT */
+ ))
+ ])
+ ])
+ ]);
+ }
+ const PagesProductionLineCallInProductionLineCallIn = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/productionLineCallIn/productionLineCallIn.vue"]]);
+ const _sfc_main$1 = {
+ data() {
+ return {};
+ },
+ methods: {}
+ };
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return vue.openBlock(), vue.createElementBlock("view");
+ }
+ const PagesProductionLineCallOutProductionLineCallOut = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/productionLineCallOut/productionLineCallOut.vue"]]);
__definePage("pages/index/index", PagesIndexIndex);
__definePage("pages/config/config", PagesConfigConfig);
__definePage("pages/main/main", PagesMainMain);
@@ -3870,6 +4390,8 @@ if (uni.restoreGlobal) {
__definePage("pages/queryBindList/queryBindList", PagesQueryBindListQueryBindList);
__definePage("pages/stockTaking/stockTaking", PagesStockTakingStockTaking);
__definePage("pages/shelfLocationBindUnbind/shelfLocationBindUnbind", PagesShelfLocationBindUnbindShelfLocationBindUnbind);
+ __definePage("pages/productionLineCallIn/productionLineCallIn", PagesProductionLineCallInProductionLineCallIn);
+ __definePage("pages/productionLineCallOut/productionLineCallOut", PagesProductionLineCallOutProductionLineCallOut);
const _sfc_main = {
onLaunch: function() {
formatAppLog("log", "at App.vue:4", "App Launch");
diff --git a/WCS.BLL/Manager/AGVManager.cs b/WCS.BLL/Manager/AGVManager.cs
new file mode 100644
index 0000000..a3133a2
--- /dev/null
+++ b/WCS.BLL/Manager/AGVManager.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WCS.BLL.Manager
+{
+ //AGV动作相关
+ public static class AGVManager
+ {
+
+ }
+}
diff --git a/WCS.Model/ApiModel/PDAProductionLineCallIn/CallInRequest.cs b/WCS.Model/ApiModel/PDAProductionLineCallIn/CallInRequest.cs
new file mode 100644
index 0000000..7587628
--- /dev/null
+++ b/WCS.Model/ApiModel/PDAProductionLineCallIn/CallInRequest.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WCS.Model.ApiModel.PDAProductionLineCallIn
+{
+ public class CallInRequest
+ {
+ public int LocationId { get; set; }
+ public string LocationCode { get; set; }
+ public int ShelfId { get; set; }
+ public string ShelfCode { get; set; }
+ }
+}
diff --git a/WCS.Model/ApiModel/PDAProductionLineCallIn/GetLocationInfoForCallInRequest.cs b/WCS.Model/ApiModel/PDAProductionLineCallIn/GetLocationInfoForCallInRequest.cs
new file mode 100644
index 0000000..7bf0be5
--- /dev/null
+++ b/WCS.Model/ApiModel/PDAProductionLineCallIn/GetLocationInfoForCallInRequest.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WCS.Model.ApiModel.PDAProductionLineCallIn
+{
+ public class GetLocationInfoForCallInRequest:RequestBase
+ {
+ ///
+ /// 工位码 位置码
+ ///
+ public string LocationCode { get; set; }
+ }
+}
diff --git a/WCS.Model/ApiModel/PDAProductionLineCallIn/GetLocationInfoForCallInResponseData.cs b/WCS.Model/ApiModel/PDAProductionLineCallIn/GetLocationInfoForCallInResponseData.cs
new file mode 100644
index 0000000..3285488
--- /dev/null
+++ b/WCS.Model/ApiModel/PDAProductionLineCallIn/GetLocationInfoForCallInResponseData.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WCS.Model.ApiModel.PDAProductionLineCallIn
+{
+ public class GetLocationInfoForCallInResponseData
+ {
+ public int LocationId { get; set; }
+
+ public string LocationCode { get; set; }
+
+ public string ShelfTransStatusStr { get; set; } = string.Empty;
+
+ public string ShelfCode { get; set; } = string.Empty;
+ }
+}
diff --git a/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/GetMatDetailCurrentInfosForCallInRequest.cs b/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/GetMatDetailCurrentInfosForCallInRequest.cs
new file mode 100644
index 0000000..d72fb19
--- /dev/null
+++ b/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/GetMatDetailCurrentInfosForCallInRequest.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WCS.Model.ApiModel.PDAShelfLocationBindUnbind
+{
+ public class GetMatDetailCurrentInfosForCallInRequest : RequestBase
+ {
+ public int LocationId { get; set; } = 0;
+ public string LocationCode { get; set; } = string.Empty;
+ public string MatCodeCondition { get; set; } = string.Empty;//物料编码条件
+ }
+}
diff --git a/WCS.WebApi/Controllers/PDAProductionLineCallInController.cs b/WCS.WebApi/Controllers/PDAProductionLineCallInController.cs
new file mode 100644
index 0000000..e9f4502
--- /dev/null
+++ b/WCS.WebApi/Controllers/PDAProductionLineCallInController.cs
@@ -0,0 +1,327 @@
+using Microsoft.AspNetCore.Mvc;
+using WCS.BLL.DbModels;
+using WCS.BLL.Services.IService;
+using WCS.BLL.Services.Service;
+using WCS.DAL.Db;
+using WCS.DAL.DbModels;
+using WCS.Model;
+using WCS.Model.ApiModel.MatBaseInfo;
+using WCS.Model.ApiModel.MatDetailCurrentInfo;
+using WCS.Model.ApiModel.PDAProductionLineCallIn;
+using WCS.Model.ApiModel.PDAShelfLocationBindUnbind;
+using WCS.Model.ApiModel.Stocktaking;
+
+namespace WCS.WebApi.Controllers
+{
+ ///
+ /// PDA产线呼叫功能
+ ///
+ [ApiController]
+ [Route("[controller]")]
+ public class PDAProductionLineCallInController : ControllerBase
+ {
+
+ public PDAProductionLineCallInController(IStockTakingService stockTakingService)
+ {
+
+ }
+
+ ///
+ /// 扫描工位码 获取工位信息 返回工位是否可以呼叫货架等信息
+ ///
+ ///
+ ///
+ [Route("getLocationInfoForCallIn")]
+ [HttpPost(Name = "getLocationInfoForCallIn")]
+ public async Task getLocationInfoForCallIn(GetLocationInfoForCallInRequest request)
+ {
+ try
+ {
+ #region 参数校验
+ if (string.IsNullOrEmpty(request.LocationCode))
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"参数错误:请重新扫描工位码!",
+ Data = null,
+ };
+ }
+ #endregion
+ //获取位置信息
+ var locationInfo = await DbHelp.db.Queryable()
+ .Where(t => t.LocationCode == request.LocationCode)
+ .FirstAsync();
+ if (locationInfo == null)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"获取失败:工位{request.LocationCode}不存在!",
+ Data = null,
+ };
+ }
+
+ if (locationInfo.IsEnable == false)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"获取失败:工位{locationInfo.LocationCode}已被禁用!",
+ Data = null,
+ };
+ }
+
+ var shelfInfo = await DbHelp.db.Queryable()
+ .Where(t => t.CurrentLocationId == locationInfo.Id)
+ .FirstAsync();
+
+ return new ResponseCommon()
+ {
+ Code = 200,
+ Message = $"success",
+ Data = new GetLocationInfoForCallInResponseData()
+ {
+ LocationId = locationInfo.Id,
+ LocationCode = locationInfo.LocationCode,
+ ShelfTransStatusStr = shelfInfo?.TransStatus.ToString(),
+ ShelfCode = shelfInfo?.ShelfCode,
+ },
+ };
+ }
+ catch (Exception ex)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = ex.Message,
+ Data = null,
+ };
+ }
+ }
+
+ ///
+ /// 通过工位码、模糊搜索条件 返回库存存量数据(带货架信息的)
+ ///
+ ///
+ ///
+ [Route("getMatDetailCurrentInfosForCallIn")]
+ [HttpPost(Name = "getMatDetailCurrentInfosForCallIn")]
+ public async Task getMatDetailCurrentInfosForCallIn(GetMatDetailCurrentInfosForCallInRequest request)
+ {
+ try
+ {
+ #region 校验位置是否可以呼叫货架
+ if (request.LocationId == 0)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"参数错误:请重新扫描工位码!",
+ Data = null,
+ };
+ }
+ //获取位置信息
+ var locationInfo = await DbHelp.db.Queryable()
+ .Where(t => t.Id == request.LocationId)
+ .FirstAsync();
+ if (locationInfo == null)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"获取失败:工位{request.LocationCode}不存在!",
+ Data = null,
+ };
+ }
+ if (locationInfo.IsEnable == false)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"获取失败:工位{locationInfo.LocationCode}已被禁用!",
+ Data = null,
+ };
+ }
+
+ var shelfInfo = await DbHelp.db.Queryable()
+ .Where(t => t.CurrentLocationId == locationInfo.Id)
+ .FirstAsync();
+ if (shelfInfo != null)
+ {
+ return new ResponseCommon()
+ {
+ Code = 301,
+ Message = $"获取失败:工位{locationInfo.LocationCode}已被货架{shelfInfo.ShelfCode}占用!",
+ Data = null,
+ };
+ }
+ #endregion
+
+ #region 查询货架当前存量
+ var recordsQueryable = DbHelp.db.Queryable()
+ .LeftJoin((mci, si) => mci.ShelfId == si.Id)
+ //货架状态是静止的 代表这个货架没有被呼叫走哦
+ .LeftJoin((mci, si, li) => (si.TransStatus == TransStatusEnum.静止 && si.CurrentLocationId == li.Id))
+ .WhereIF(!string.IsNullOrEmpty(request.MatCodeCondition), (mci, si, li) => mci.MatCode.Contains(request.MatCodeCondition))
+ .Select((mci, si, li) => new MatDetailCurrentInfoModel()
+ {
+ Id = mci.Id,
+ ShelfId = mci.ShelfId,
+ ShelfCode = mci.ShelfCode,
+ ShelfType = mci.ShelfType,
+
+ LocationArea = li.LocationArea,
+ LocationCode = li.LocationCode,
+
+ MatCode = mci.MatCode,
+ MatName = mci.MatName,
+ MatSpec = mci.MatSpec,
+ MatUnit = mci.MatUnit,
+ MatCustomer = mci.MatCustomer,
+ MatQty = mci.MatQty,
+ MatSupplier = mci.MatSupplier,
+
+ StationCode = mci.StationCode,
+ ModifyUser = mci.ModifyUser,
+ ModifyTime = mci.ModifyTime
+ });
+
+ //分页
+ var totalCount = await recordsQueryable.CountAsync();
+ var records = await recordsQueryable
+ .OrderByDescending(mci => mci.Id)
+ .Skip((1 - 1) * 300).Take(300)
+ .ToListAsync();
+ return new PageQueryResponse()
+ {
+ Code = 200,
+ Message = $"success",
+ Data = new PageQueryResponseData()
+ {
+ TotalCount = totalCount,
+ MaxPage = 1,
+ Count = records.Count,
+ Lists = records.ToList()
+ }
+ };
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = ex.Message,
+ Data = null,
+ };
+ }
+ }
+
+ ///
+ /// 呼叫货架 通过工位ID(终点) 货架ID 等信息呼叫货架
+ ///
+ ///
+ ///
+ [Route("callIn")]
+ [HttpPost(Name = "callIn")]
+ public async Task callIn(CallInRequest request)
+ {
+ try
+ {
+ #region 校验位置是否可以呼叫货架
+ if (request.LocationId == 0)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"呼叫失败:请重新扫描工位码!",
+ Data = null,
+ };
+ }
+ //获取位置信息
+ var locationInfo = await DbHelp.db.Queryable()
+ .Where(t => t.Id == request.LocationId)
+ .FirstAsync();
+ if (locationInfo == null)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"呼叫失败:工位{request.LocationCode}不存在!",
+ Data = null,
+ };
+ }
+ if (locationInfo.IsEnable == false)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"呼叫失败:工位{locationInfo.LocationCode}已被禁用!",
+ Data = null,
+ };
+ }
+
+ var shelfInfo = await DbHelp.db.Queryable()
+ .Where(t => t.CurrentLocationId == locationInfo.Id)
+ .FirstAsync();
+ if (shelfInfo != null)
+ {
+ return new ResponseCommon()
+ {
+ Code = 301,
+ Message = $"呼叫失败:工位{locationInfo.LocationCode}已被货架{shelfInfo.ShelfCode}占用!",
+ Data = null,
+ };
+ }
+ #endregion
+
+ #region 获取货架是否可以被呼叫
+ shelfInfo = await DbHelp.db.Queryable()
+ .Where(t => t.Id == request.ShelfId)
+ .Where(t => t.IsEnable)
+ .FirstAsync();
+ if (shelfInfo == null)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"呼叫失败:货架{shelfInfo.ShelfCode}不存在或已被禁用!",
+ Data = null,
+ };
+ }
+
+ if (shelfInfo.TransStatus == TransStatusEnum.运输中)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"呼叫失败:货架{shelfInfo.ShelfCode}正在运输中!",
+ Data = null,
+ };
+ }
+ #endregion
+
+ #region
+ //TO DO 调用AGV接口开始呼叫 呼叫成功更新运输状态和目标库位
+
+ return new ResponseCommon()
+ {
+ Code = 200,
+ Message = $"呼叫成功!",
+ Data = null,
+ };
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = ex.Message,
+ Data = null,
+ };
+ }
+ }
+ }
+}