From b13d3d2c634df625dcaa74371f1d36a8376851b4 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期二, 06 一月 2026 14:54:16 +0800
Subject: [PATCH] 优化撤销组盘功能
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs | 153 +++++++++----
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs | 4
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs | 2
项目代码/WIDESEA_WMSClient/config/buttons.js | 8
项目代码/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js | 290 +-------------------------
项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/UndoPalletGroup.vue | 170 +++++++++++++++
6 files changed, 295 insertions(+), 332 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
index 9d55312..456f9a8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
@@ -307,6 +307,14 @@
type: 'warning',
onClick: function () {
}
+},{
+ name: "鎾ら攢缁勭洏",
+ icon: '',
+ class: '',
+ value: 'UndoPalletGroup',
+ type: 'warning',
+ onClick: function () {
+ }
},
]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/UndoPalletGroup.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/UndoPalletGroup.vue"
new file mode 100644
index 0000000..e5c00d1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/UndoPalletGroup.vue"
@@ -0,0 +1,170 @@
+<template>
+ <vol-box v-model="show" title="鎾ら攢缁勭洏" :width="500" :height="300">
+ <template #content>
+ <el-form ref="form" :model="form" :rules="rules" label-width="90px">
+ <el-form-item label="鎵樼洏鏉$爜:" prop="code">
+ <el-input
+ v-model="form.code"
+ placeholder="璇锋壂鎻�/杈撳叆鎵樼洏鏉$爜"
+ @keydown.enter.prevent="submit"
+ clearable
+ @paste="handlePaste"
+ @input="handleInput"
+ ref="boxCodeInput"
+ autocomplete="off"
+ maxlength="50"
+ />
+ </el-form-item>
+ </el-form>
+ </template>
+
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button @click="onCancel">鍙栨秷</el-button>
+ <el-button type="primary" @click="submit">纭鎾ら攢</el-button>
+ </div>
+ </template>
+ </vol-box>
+</template>
+
+<script>
+import VolBox from '@/components/basic/VolBox.vue'
+
+export default {
+ components: { VolBox },
+ props: {
+ value: { type: Boolean, default: false }
+ },
+ data() {
+ return {
+ show: false,
+ form: {
+ code: ''
+ },
+ rules: {
+ code: [
+ { required: true, message: '璇疯緭鍏ユ墭鐩樺彿', trigger: ['blur', 'change'] },
+ { min: 1, max: 50, message: '鎵樼洏鍙烽暱搴︿笉鑳借秴杩�50涓瓧绗�', trigger: ['blur', 'input'] }
+ ]
+ }
+ }
+ },
+ methods: {
+ open() {
+ this.show = true
+ },
+
+ async submit() {
+ try {
+ await this.$refs.form.validate()
+ } catch (error) {
+ this.$message.warning('璇疯緭鍏ユ湁鏁堢殑鎵樼洏鍙�')
+ this.focusAndSelectInput()
+ return
+ }
+
+ try {
+ const response = await this.http.post(
+ `/api/InboundOrder/UndoPalletGroup?code=${encodeURIComponent(this.form.code.trim())}`
+ )
+ const { status, message, data } = response
+
+ if (status) {
+ this.$message.success(message || '鎾ら攢缁勭洏鎴愬姛')
+ this.refresh()
+
+ if (message && message.includes('鎵樼洏浠嶆湁鍓╀綑鏄庣粏')) {
+ this.form.code = ''
+ this.$refs.form.clearValidate('code')
+ this.focusAndSelectInput()
+ } else {
+ this.show = false
+ }
+ } else {
+ this.$message.error(message || data?.message || '鎾ら攢缁勭洏澶辫触')
+ this.focusAndSelectInput()
+ }
+ } catch (error) {
+ console.error('鎾ら攢缁勭洏璇锋眰寮傚父锛�', error)
+ this.$message.error('缃戠粶寮傚父鎴栨帴鍙i敊璇紝璇风◢鍚庨噸璇�')
+ this.focusAndSelectInput()
+ }
+ },
+
+ handleInput(value) {
+ this.form.code = value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()
+ },
+
+ handlePaste(e) {
+ const clipboardData = e.clipboardData || window.clipboardData
+ const pastedText = clipboardData.getData('text')
+ const cleanedText = pastedText.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()
+ if (cleanedText) {
+ this.form.code = cleanedText
+ setTimeout(() => {
+ this.submit()
+ }, 50)
+ }
+ e.preventDefault()
+ },
+
+ focusAndSelectInput() {
+ this.$nextTick(() => {
+ setTimeout(() => {
+ const inputRef = this.$refs.boxCodeInput
+ if (inputRef) {
+ const inputEl = inputRef.$el ? inputRef.$el.querySelector('input') : inputRef
+ if (inputEl) {
+ inputEl.focus()
+ inputEl.select()
+ }
+ }
+ }, 100)
+ })
+ },
+
+ onCancel() {
+ this.$message.info('鍙栨秷鎾ら攢缁勭洏')
+ this.show = false
+ },
+
+ refresh() {
+ this.$emit('refresh')
+ }
+ },
+ watch: {
+ value(val) {
+ this.show = val
+ },
+ show(val) {
+ this.$emit('input', val)
+ if (val) {
+ // 寮圭獥鎵撳紑鏃跺欢杩熻仛鐒︼紝纭繚DOM宸叉覆鏌�
+ this.$nextTick(() => {
+ setTimeout(() => {
+ const inputRef = this.$refs.boxCodeInput
+ if (inputRef) {
+ const inputEl = inputRef.$el ? inputRef.$el.querySelector('input') : inputRef
+ if (inputEl) {
+ inputEl.focus()
+ inputEl.select() // 閫変腑鍐呭锛屾柟渚跨洿鎺ユ壂鐮佽鐩�
+ }
+ }
+ }, 100)
+ })
+ } else {
+ this.form.code = ''
+ if (this.$refs.form) {
+ this.$refs.form.clearValidate()
+ }
+ }
+ }
+ }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+ text-align: right;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
index e70505c..014b9b7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
@@ -1,24 +1,13 @@
//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
import gridHeader from "./extend/EmptyTrayInbound.vue";
import gridBody from "./extend/Pallet.vue";
-import http from "@/api/http.js";
-import { h, createVNode, render, reactive, ref } from "vue";
-import {
- ElDialog,
- ElForm,
- ElFormItem,
- ElInput,
- ElButton,
- ElMessage,
- ElSelect,
- ElOption,
-} from "element-plus";
+import gridFooter from "./extend/UndoPalletGroup.vue";
let extension = {
components: {
//鏌ヨ鐣岄潰鎵╁睍缁勪欢
gridHeader: gridHeader,
gridBody: gridBody,
- gridFooter: "",
+ gridFooter: gridFooter,
//鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
modelHeader: "",
modelBody: "",
@@ -27,243 +16,7 @@
tableAction: "", //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
buttons: {
view: [
- {
- name: "鎾ら攢缁勭洏",
- type: "primary",
- value: "鎾ら攢缁勭洏",
- onClick: function() {
- console.log("鎾ら攢缁勭洏鎸夐挳琚偣鍑�");
- const mountNode = document.createElement("div");
- document.body.appendChild(mountNode);
-
- // 鍝嶅簲寮忚〃鍗曟暟鎹細鎵樼洏鍙凤紙蹇呭~锛�
- const formData = reactive({
- palletCode: "", // 鎵樼洏鍙疯緭鍏ユ
- barcode: "",
- });
-
- // 鎻愪氦琛ㄥ崟鐨勭粺涓�閫昏緫
- const submitForm = async () => {
- const formRef = vnode.component.refs.cancelPalletForm;
- try {
- // 鎵ц琛ㄥ崟鏍¢獙锛堟墭鐩樺彿蹇呭~锛�
- await formRef.validate();
- } catch (err) {
- ElMessage.warning("璇疯緭鍏ユ湁鏁堢殑鎵樼洏鍙�");
- return;
- }
-
- // 鍙戣捣鎾ら攢缁勭洏璇锋眰
- try {
- const response = await http.post(
- "/api/InboundOrder/UndoPalletGroup?palletCode=" +
- formData.palletCode.trim() +
- "&barcode=" +
- formData.barcode.trim()
- );
- const { status, message, data } = response;
- if (status) {
- ElMessage.success(response.message);
- this.refresh(); // 鎴愬姛鍚庡埛鏂板垪琛�
- // 鍏抽棴瀵硅瘽妗�
- render(null, mountNode);
- document.body.removeChild(mountNode);
- } else {
- ElMessage.error(message || data?.message || "鎾ら攢缁勭洏澶辫触");
- selectPalletCodeInput(); // 閫変腑杈撳叆妗嗘柟渚块噸鏂拌緭鍏�
- }
- } catch (error) {
- console.error("鎾ら攢缁勭洏璇锋眰寮傚父锛�", error);
- ElMessage.error("缃戠粶寮傚父鎴栨帴鍙i敊璇紝璇风◢鍚庨噸璇�");
- selectPalletCodeInput();
- }
- };
-
- // 閫変腑杈撳叆妗嗘枃鏈紙鏂逛究閲嶆柊杈撳叆锛�
- const selectPalletCodeInput = () => {
- setTimeout(() => {
- const inputRef = vnode.component.refs.palletCodeInput;
- if (inputRef) {
- const targetInput =
- inputRef.$el?.querySelector("input") || inputRef;
- targetInput?.focus();
- targetInput?.select();
- }
- }, 100);
- };
-
- // 鍒涘缓瀵硅瘽妗哣Node
- const vnode = createVNode(
- ElDialog,
- {
- title: "鎾ら攢缁勭洏",
- width: "400px",
- modelValue: true,
- appendToBody: true,
- onOpened: () => {
- // 瀵硅瘽妗嗘墦寮�鍚庤嚜鍔ㄨ仛鐒﹁緭鍏ユ
- setTimeout(() => {
- const inputRef = vnode.component.refs.palletCodeInput;
- inputRef?.focus();
- }, 100);
- },
- "onUpdate:modelValue": (isVisible) => {
- if (!isVisible) {
- render(null, mountNode);
- document.body.removeChild(mountNode);
- }
- },
- },
- {
- default: () =>
- h(
- ElForm,
- {
- model: formData,
- rules: {
- palletCode: [
- {
- required: true,
- message: "璇疯緭鍏ユ墭鐩樺彿",
- trigger: ["blur", "enter"],
- },
- {
- min: 1,
- max: 50,
- message: "鎵樼洏鍙烽暱搴︿笉鑳借秴杩�50涓瓧绗�",
- trigger: ["blur", "input"],
- },
- ],
- },
- ref: "cancelPalletForm",
- },
- [
- // 鎵樼洏鍙疯緭鍏ラ」
- h(
- ElFormItem,
- { label: "鎵樼洏鏉$爜", prop: "palletCode", required: true },
- [
- h(ElInput, {
- type: "text",
- modelValue: formData.palletCode,
- "onUpdate:modelValue": (val) => {
- formData.palletCode = val;
- },
- ref: "palletCodeInput",
- placeholder: "鎵爜杈撳叆鎴栨墜鍔ㄨ緭鍏ユ墭鐩樺彿",
- maxLength: 50,
- // 鐩戝惉鍥炶溅浜嬩欢锛堟壂鐮佹灙榛樿浼氬彂閫佸洖杞︼級
- onKeydown: (e) => {
- if (e.key === "Enter") {
- e.preventDefault();
- submitForm();
- }
- },
- }),
- ]
- ),
- h(ElFormItem, { label: " 鍐呯鏍囩", prop: "barcode" }, [
- h(ElInput, {
- type: "text",
- modelValue: formData.barcode,
- "onUpdate:modelValue": (val) => {
- formData.barcode = val;
- },
- placeholder: "鍙�夛紝鎵爜杈撳叆鎴栨墜鍔ㄨ緭鍏ユ潯鐮�",
- maxLength: 50,
- onKeydown: (e) => {
- if (e.key === "Enter") {
- e.preventDefault();
- submitForm();
- }
- },
- }),
- ]),
- // 搴曢儴鎸夐挳鍖�
- h(
- "div",
- { style: { textAlign: "right", marginTop: "16px" } },
- [
- h(
- ElButton,
- {
- type: "text",
- onClick: () => {
- render(null, mountNode);
- document.body.removeChild(mountNode);
- ElMessage.info("鍙栨秷鎾ら攢缁勭洏");
- },
- },
- "鍙栨秷"
- ),
- h(
- ElButton,
- {
- type: "primary",
- onClick: submitForm.bind(this), // 缁戝畾this涓婁笅鏂�
- },
- "纭鎾ら攢"
- ),
- ]
- ),
- ]
- ),
- }
- );
-
- vnode.appContext = this.$.appContext;
- render(vnode, mountNode);
- },
- },
- // {
- // name: '鍒嗘壒鍏ュ簱',
- // type: 'primary',
- // value: '鍒嗘壒鍏ュ簱',
- // onClick: async function () {
- // console.log('鍒嗘壒鍏ュ簱鎸夐挳琚偣鍑伙紝寮�濮嬫牎楠�');
- // const selectedRows = this.$refs.table.getSelected();
-
- // // 鏍¢獙1锛氭槸鍚﹂�変腑琛岋紙鑷冲皯閫夋嫨涓�鏉★級
- // if (selectedRows.length === 0) {
- // console.log('鏍¢獙涓嶉�氳繃锛氭湭閫変腑浠讳綍鍗曟嵁');
- // ElMessage.warning('璇烽�夋嫨鑷冲皯涓�鏉″崟鎹�');
- // return;
- // }
-
- // // 鏀堕泦鎵�鏈夐�変腑鍗曟嵁鐨勭紪鍙凤紙杩囨护鏃犲崟鎹彿鐨勫紓甯歌锛�
- // const inboundOrderNos = selectedRows
- // .filter(row => row.inboundOrderNo)
- // .map(row => row.inboundOrderNo);
-
- // // 鏍¢獙2锛氭槸鍚︽湁鏈夋晥鍗曟嵁鍙�
- // if (inboundOrderNos.length === 0) {
- // console.log('鏍¢獙涓嶉�氳繃锛氶�変腑鍗曟嵁鏃犳湁鏁堢紪鍙�');
- // ElMessage.warning('閫変腑鐨勫崟鎹腑鏃犳湁鏁堢紪鍙凤紝璇烽噸鏂伴�夋嫨');
- // return;
- // }
-
- // try {
- // console.log('鍙戣捣鍒嗘壒鍏ュ簱璇锋眰锛屽弬鏁帮細', { inboundOrderNos });
- // const response = await http.post('/api/InboundOrder/BatchOrderFeedbackToMes', {
- // orderNos: inboundOrderNos,
- // inout: 1
- // });
-
- // const { status, message, data } = response;
- // if (status) {
- // console.log('鍒嗘壒鍏ュ簱鎴愬姛锛屽悗绔繑鍥烇細', data);
- // ElMessage.success(`鍒嗘壒鍏ュ簱鎴愬姛锛乣);
- // this.refresh(); // 鍏ュ簱鎴愬姛鍚庡埛鏂板垪琛紙澶嶇敤鍘熸湁閫昏緫锛�
- // } else {
- // console.log('鍒嗘壒鍏ュ簱澶辫触锛屽悗绔彁绀猴細', message);
- // ElMessage.error(message || data?.message || '鍒嗘壒鍏ュ簱澶辫触');
- // }
- // } catch (error) {
- // console.error('鍒嗘壒鍏ュ簱璇锋眰寮傚父锛�', error);
- // ElMessage.error('缃戠粶寮傚父鎴栨帴鍙i敊璇紝璇风◢鍚庨噸璇�');
- // }
- // }
- // },
+
],
box: [],
detail: [],
@@ -277,6 +30,14 @@
if (EmptyTrayInboundBtn != null) {
EmptyTrayInboundBtn.onClick = () => {
this.$refs.gridHeader.open();
+ };
+ }
+ var UndoPalletGroupBtn = this.buttons.find(
+ (x) => x.value == "UndoPalletGroup"
+ );
+ if (UndoPalletGroupBtn != null) {
+ UndoPalletGroupBtn.onClick = () => {
+ this.$refs.gridFooter.open();
};
}
var BatchInOrderFeedbackToMesBtn = this.buttons.find(
@@ -307,35 +68,6 @@
});
};
}
-
- // let BatchInOrderFeedbackToMesBtn = this.buttons.find((x) => x.value == "BatchInOrderFeedbackToMes");
- // if (BatchInOrderFeedbackToMesBtn != null) {
- // BatchInOrderFeedbackToMesBtn.onClick = ()=> {
- // let selectedRows = this.$refs.table.getSelected();
-
- // // 鏍¢獙鏄惁鏈夐�変腑鏁版嵁
- // if (!selectedRows || selectedRows.length === 0) {
- // return this.$Message.warning("璇峰厛閫夋嫨闇�瑕佸鐞嗙殑鍗曟嵁");
- // }
- // if (selectedRows.length > 1) {
- // return this.$Message.warning("璇烽�夋嫨涓�鏉℃暟鎹�");
- // }
- // this.http.post(`api/Inbound/BatchInOrderFeedbackToMes?orderNo=${selectedRows[0].orderNo}`,{},"鏁版嵁澶勭悊涓�...")
- // .then((x) => {
- // if (x.status) {
- // this.$Message.success("鍒嗘壒鍑哄簱鍥炶皟瀹屾垚");
- // this.refresh();
- // } else {
- // return this.$Message.error("鍒嗘壒鍑哄簱鍥炶皟澶辫触");
- // }
- // })
- // .catch((error) => {
- // // 澧炲姞寮傚父鎹曡幏锛屽鐞嗙綉缁滈敊璇瓑鎯呭喌
- // //_this.$Message.error('璇锋眰澶辫触锛�' + (error.message || '鏈煡閿欒'));
- // });
- // };
- // }
-
var GroupPalletBtn = this.buttons.find((x) => x.value == "GroupPallet");
if (GroupPalletBtn != null) {
GroupPalletBtn.onClick = () => {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
index fc84e96..dc0d91e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
@@ -24,7 +24,7 @@
WebResponseContent UnPalletQuantity(string orderNo);
- WebResponseContent UndoPalletGroup(string palletCode , string barcode = "");
+ WebResponseContent UndoPalletGroup(string code);
WebResponseContent UnPalletGroupBarcode(string orderNo);
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index 6b609ac..1e5d637 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -18,6 +18,7 @@
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Base;
using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Stock;
using WIDESEA_IBasicService;
using WIDESEA_IInboundService;
using WIDESEA_IRecordService;
@@ -466,7 +467,7 @@
WebResponseContent content = new WebResponseContent();
try
{
-
+
(bool, string, object?) result2 = ModelValidate.ValidateModelData(materielGroupDTO);
if (!result2.Item1) return content = WebResponseContent.Instance.Error(result2.Item2);
@@ -659,9 +660,9 @@
{
resultDTO.UniqueUnit = "";
}
- var inbound =_inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == orderNo);
+ var inbound = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == orderNo);
var inboundDetails = _inboundOrderDetailRepository.Db.Queryable<Dt_InboundOrderDetail>().Where(x => x.OrderId == inbound.First().Id).ToList();
- resultDTO.StockSumQuantity = inboundDetails.Where(x=>x.ReceiptQuantity==0).Sum(x=>x.OrderQuantity);
+ resultDTO.StockSumQuantity = inboundDetails.Where(x => x.ReceiptQuantity == 0).Sum(x => x.OrderQuantity);
resultDTO.StockCount = inboundDetails.Where(x => x.ReceiptQuantity == 0).Count();
//var validDetails = _stockDetailRepository.Db.Queryable<Dt_StockInfoDetail>().Where(s => s.OrderNo == orderNo).ToList();
//resultDTO.StockSumQuantity = orderDetail.Details.Sum(d => d.OrderQuantity);
@@ -680,91 +681,139 @@
}
}
- public WebResponseContent UndoPalletGroup(string palletCode, string barcode = "")
+ /// <summary>
+ /// 鎾ら攢缁勭洏锛堟櫤鑳借瘑鍒緭鍏ユ槸鎵樼洏鍙锋垨鏉$爜锛�
+ /// </summary>
+ /// <param name="code">鎵樼洏鍙锋垨鏉$爜</param>
+ /// <returns>鎿嶄綔缁撴灉</returns>
+ public WebResponseContent UndoPalletGroup(string code)
{
-
- if (string.IsNullOrWhiteSpace(palletCode))
+ if (string.IsNullOrWhiteSpace(code))
{
- return WebResponseContent.Instance.Error("鎵樼洏鍙蜂笉鑳戒负绌�");
+ return WebResponseContent.Instance.Error("鎵樼洏鍙锋垨鏉$爜涓嶈兘涓虹┖");
}
-
try
{
_unitOfWorkManage.BeginTran();
- // 2. 鏌ヨ鎵樼洏搴撳瓨涓昏褰曪紙閬垮厤鏃犳暟鎹姏寮傚父锛�
- var stock = _stockRepository.Db.Queryable<Dt_StockInfo>()
- .Includes(o => o.Details)
- .First(x => x.PalletCode == palletCode
- && (x.StockStatus == (int)StockStatusEmun.缁勭洏鏆傚瓨
- || x.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt()));
+ // 鏅鸿兘璇嗗埆杈撳叆绫诲瀷
+ string palletCode = null;
+ string barcode = null;
- if (stock == null)
+ // 1. 鍏堝皾璇曟寜鎵樼洏鍙锋煡璇�
+ var stockByPallet = _stockRepository.Db.Queryable<Dt_StockInfo>()
+ .Includes(o => o.Details)
+ .First(x => x.PalletCode == code
+ && (x.StockStatus == (int)StockStatusEmun.缁勭洏鏆傚瓨
+ || x.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt()));
+
+ if (stockByPallet != null)
{
- return WebResponseContent.Instance.Error($"鏈壘鍒版墭鐩樺彿{palletCode}瀵瑰簲鐨勫簱瀛樿褰�");
+ // 璇嗗埆涓烘墭鐩樺彿
+ palletCode = code;
+ }
+ else
+ {
+ var detail = _stockDetailRepository.Db.Queryable<Dt_StockInfoDetail>().Where(d => d.Barcode == code).First();
+
+ if (detail != null)
+ {
+ var stockInfo = _stockRepository
+ .Db.Queryable<Dt_StockInfo>()
+ .Where(s => s.Id == detail.StockId&& (s.StockStatus == (int)StockStatusEmun.缁勭洏鏆傚瓨 || s.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt()))
+ .First();
+
+ if (stockInfo != null)
+ {
+ barcode = code;
+ palletCode = stockInfo.PalletCode;
+ }
+ }
+ else
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error($"鏈壘鍒� {code} 瀵瑰簲鐨勬墭鐩樻垨鏉$爜璁板綍");
+ }
}
- // 3. 鍦烘櫙1锛氬垹闄ゆ寚瀹氭潯鐮�
+ // 鏍规嵁璇嗗埆缁撴灉鎵ц鎾ら攢閫昏緫
if (!string.IsNullOrWhiteSpace(barcode))
{
+ // ===== 鎾ら攢鎸囧畾鏉$爜 =====
+ var stock = _stockRepository.Db.Queryable<Dt_StockInfo>()
+ .Includes(o => o.Details)
+ .First(x => x.PalletCode == palletCode
+ && (x.StockStatus == (int)StockStatusEmun.缁勭洏鏆傚瓨
+ || x.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt()));
+
+ if (stock == null)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error($"鏈壘鍒版墭鐩樺彿 {palletCode} 瀵瑰簲鐨勫簱瀛樿褰�");
+ }
+
var targetDetail = stock.Details?.FirstOrDefault(x => x.Barcode == barcode);
if (targetDetail == null)
{
_unitOfWorkManage.RollbackTran();
- return WebResponseContent.Instance.Error($"鎵樼洏{palletCode}涓嬫湭鎵惧埌鏉$爜{barcode}鐨勬槑缁嗚褰�");
+ return WebResponseContent.Instance.Error($"鎵樼洏 {palletCode} 涓嬫湭鎵惧埌鏉$爜 {barcode} 鐨勬槑缁嗚褰�");
}
ResetInboundOrderStatus(new List<string> { targetDetail.OrderNo }, new List<string> { targetDetail.Barcode });
- // 鍒犻櫎鎸囧畾鏄庣粏
_stockDetailRepository.DeleteData(targetDetail);
-
- // 閲嶆柊鏌ヨ鍓╀綑鏄庣粏锛堜繚璇佹暟鎹噯纭�э級
var remainingDetails = _stockDetailRepository.Db.Queryable<Dt_StockInfoDetail>()
.Where(x => x.StockId == stock.Id)
.ToList();
- // 鍓╀綑鏄庣粏涓虹┖ 鈫� 鍒犻櫎涓昏〃 + 閲嶇疆鍏ュ簱鍗曞強鏄庣粏鐘舵��
if (!remainingDetails.Any())
{
- // 閲嶇疆鍏ュ簱鍗曞強鏄庣粏鐘舵��
ResetInboundOrderStatus(stock.Details.Select(d => d.OrderNo).Distinct().ToList());
-
_stockRepository.DeleteData(stock);
_unitOfWorkManage.CommitTran();
- return WebResponseContent.Instance.OK($"鏉$爜{barcode}鎾ら攢鎴愬姛锛屾墭鐩樻棤鍓╀綑鏄庣粏锛屽凡鍒犻櫎鎵樼洏骞堕噸缃叧鑱斿叆搴撳崟鐘舵��");
+ return WebResponseContent.Instance.OK($"鏉$爜 {barcode} 鎾ら攢鎴愬姛锛屾墭鐩樻棤鍓╀綑鏄庣粏锛屽凡鍒犻櫎鎵樼洏骞堕噸缃叧鑱斿叆搴撳崟鐘舵��");
}
_unitOfWorkManage.CommitTran();
- return WebResponseContent.Instance.OK($"鏉$爜{barcode}鎾ら攢鎴愬姛锛屾墭鐩樹粛鏈夊墿浣欐槑缁�");
+ return WebResponseContent.Instance.OK($"鏉$爜 {barcode} 鎾ら攢鎴愬姛锛屾墭鐩樹粛鏈夊墿浣欐槑缁�");
}
-
- // 鍒犻櫎鏁存墭鐩橈紙鏃犳潯鐮佷紶鍏ワ級
- if (stock.Details == null || !stock.Details.Any())
+ else
{
+ // ===== 鎾ら攢鏁翠釜鎵樼洏 =====
+ var stock = _stockRepository.Db.Queryable<Dt_StockInfo>()
+ .Includes(o => o.Details)
+ .First(x => x.PalletCode == palletCode
+ && (x.StockStatus == (int)StockStatusEmun.缁勭洏鏆傚瓨
+ || x.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt()));
+
+ if (stock == null)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error($"鏈壘鍒版墭鐩樺彿 {palletCode} 瀵瑰簲鐨勫簱瀛樿褰�");
+ }
+
+ if (stock.Details == null || !stock.Details.Any())
+ {
+ _stockRepository.DeleteData(stock);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK("鎵樼洏鏃犳槑缁嗚褰曪紝宸茬洿鎺ュ垹闄ゆ墭鐩樹富鏁版嵁");
+ }
+
+ var relatedOrderNos = stock.Details.Select(d => d.OrderNo).Distinct().ToList();
+ if (!relatedOrderNos.Any())
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error("搴撳瓨鏄庣粏鏈叧鑱斾换浣曞叆搴撳崟鍙凤紝鏃犳硶瀹屾垚鎾ら攢");
+ }
+
+ ResetInboundOrderStatus(relatedOrderNos, stock.Details.Select(d => d.Barcode).ToList());
+ _stockDetailRepository.DeleteData(stock.Details);
_stockRepository.DeleteData(stock);
+
_unitOfWorkManage.CommitTran();
- return WebResponseContent.Instance.OK("鎵樼洏鏃犳槑缁嗚褰曪紝宸茬洿鎺ュ垹闄ゆ墭鐩樹富鏁版嵁");
+ return WebResponseContent.Instance.OK("鎵樼洏鎾ら攢鎴愬姛锛屽凡閲嶇疆鍏宠仈鍏ュ簱鍗曞強鏄庣粏鐘舵��");
}
-
- // 鏈夋槑缁� 鈫� 閲嶇疆鍏ュ簱鍗曞強鏄庣粏鐘舵�� + 鍒犻櫎搴撳瓨
- var relatedOrderNos = stock.Details.Select(d => d.OrderNo).Distinct().ToList();
- if (!relatedOrderNos.Any())
- {
- _unitOfWorkManage.RollbackTran();
- return WebResponseContent.Instance.Error("搴撳瓨鏄庣粏鏈叧鑱斾换浣曞叆搴撳崟鍙凤紝鏃犳硶瀹屾垚鎾ら攢");
- }
-
- // 閲嶇疆鍏ュ簱鍗曚富鐘舵�� + 鏄庣粏鐘舵��
- ResetInboundOrderStatus(relatedOrderNos, stock.Details.Select(d => d.Barcode).ToList());
-
- // 4.3 鍒犻櫎搴撳瓨鏄庣粏鍜屼富琛�
- _stockDetailRepository.DeleteData(stock.Details);
- _stockRepository.DeleteData(stock);
-
- _unitOfWorkManage.CommitTran();
- return WebResponseContent.Instance.OK("鎵樼洏鎾ら攢鎴愬姛锛屽凡閲嶇疆鍏宠仈鍏ュ簱鍗曞強鏄庣粏鐘舵��");
}
catch (Exception ex)
{
@@ -803,6 +852,10 @@
{
detail.ReceiptQuantity = 0;
detail.OrderDetailStatus = 0;
+ if(inboundOrder.BusinessType == "11")
+ {
+ detail.WarehouseCode = "";
+ }
_inboundOrderDetailRepository.UpdateData(detail);
}
}
@@ -904,14 +957,14 @@
{
WebResponseContent content = new WebResponseContent();
var inbound = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == orderNo).First();
- if(inbound == null)
+ if (inbound == null)
{
return content.Error();
}
var details = _inboundOrderDetailRepository.Db.Queryable<Dt_InboundOrderDetail>().Where(x => x.OrderId == inbound.Id && x.ReceiptQuantity == 0).ToList();
- return content.OK(data:details);
+ return content.OK(data: details);
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
index 67a1cdf..519d52e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
@@ -228,9 +228,9 @@
}
[HttpPost, Route("UndoPalletGroup"), AllowAnonymous, MethodParamsValidate]
- public WebResponseContent UndoPalletGroup(string palletCode,string barcode="")
+ public WebResponseContent UndoPalletGroup(string code)
{
- return Service.UndoPalletGroup(palletCode,barcode);
+ return Service.UndoPalletGroup(code);
}
/// <summary>
///
--
Gitblit v1.9.3