Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215
| | |
| | | type: 'warning', |
| | | onClick: function () { |
| | | } |
| | | },{ |
| | | name: "æ¤éç»ç", |
| | | icon: '', |
| | | class: '', |
| | | value: 'UndoPalletGroup', |
| | | type: 'warning', |
| | | onClick: function () { |
| | | } |
| | | },,{ |
| | | name: "å
³éåæ®", |
| | | icon: '', |
| | | class: '', |
| | | value: 'CloseOrder', |
| | | type: 'warning', |
| | | onClick: function () { |
| | | } |
| | | }, |
| | | ] |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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('ç½ç»å¼å¸¸ææ¥å£é误ï¼è¯·ç¨åéè¯') |
| | | 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> |
| | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | 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: "", |
| | |
| | | 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("ç½ç»å¼å¸¸ææ¥å£é误ï¼è¯·ç¨åéè¯"); |
| | | selectPalletCodeInput(); |
| | | } |
| | | }; |
| | | |
| | | // éä¸è¾å
¥æ¡ææ¬ï¼æ¹ä¾¿éæ°è¾å
¥ï¼ |
| | | const selectPalletCodeInput = () => { |
| | | setTimeout(() => { |
| | | const inputRef = vnode.component.refs.palletCodeInput; |
| | | if (inputRef) { |
| | | const targetInput = |
| | | inputRef.$el?.querySelector("input") || inputRef; |
| | | targetInput?.focus(); |
| | | targetInput?.select(); |
| | | } |
| | | }, 100); |
| | | }; |
| | | |
| | | // åå»ºå¯¹è¯æ¡VNode |
| | | 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('ç½ç»å¼å¸¸ææ¥å£é误ï¼è¯·ç¨åéè¯'); |
| | | // } |
| | | // } |
| | | // }, |
| | | |
| | | ], |
| | | box: [], |
| | | detail: [], |
| | |
| | | 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( |
| | |
| | | }; |
| | | } |
| | | |
| | | // 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 CloseOrderBtn = this.buttons.find( |
| | | (x) => x.value == "CloseOrder" |
| | | ); |
| | | if (CloseOrderBtn != null) { |
| | | CloseOrderBtn.onClick = () => { |
| | | var rows = this.$refs.table.getSelected(); |
| | | // æ ¡éªæ¯å¦æé䏿°æ® |
| | | if (!rows || rows.length === 0) { |
| | | return this.$Message.error("请å
éæ©éè¦å
³éçåæ®"); |
| | | } |
| | | if (rows.length > 1) { |
| | | return this.$Message.error("è¯·éæ©ä¸æ¡åæ®"); |
| | | } |
| | | this.http.post(`api/InboundOrder/HandCloseOrder?orderIds=${rows[0].id}`, {}, "æ°æ®å¤çä¸...") |
| | | .then((x) => { |
| | | if (x.status) { |
| | | this.$Message.success(x.message); |
| | | this.refresh(); |
| | | } else { |
| | | return this.$Message.error(x.message); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | // å¢å å¼å¸¸æè·ï¼å¤çç½ç»é误çæ
åµ |
| | | //_this.$Message.error('请æ±å¤±è´¥ï¼' + (error.message || 'æªç¥é误')); |
| | | }); |
| | | }; |
| | | } |
| | | var GroupPalletBtn = this.buttons.find((x) => x.value == "GroupPallet"); |
| | | if (GroupPalletBtn != null) { |
| | | GroupPalletBtn.onClick = () => { |
| | |
| | | using IBigBreenService; |
| | | using Microsoft.IdentityModel.Tokens; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace BigGreenService |
| | |
| | | : Math.Round((decimal)inStockLocation / totalLocation, 4)*100; |
| | | |
| | | //计ç®å
¥åºä»»å¡ååºåºä»»å¡å®ææ°é |
| | | var inboundCount =_taskHtyRepository.Db.Queryable<Dt_Task_Hty>().Where(x => x.TaskType >= 500 && x.TaskType < 900).Count(); |
| | | var outboundCount =_taskHtyRepository.Db.Queryable<Dt_Task_Hty>().Where(x => x.TaskType >= 100 && x.TaskType < 500).Count(); |
| | | var inboundCount =_taskHtyRepository.Db.Queryable<Dt_Task_Hty>().Where(x => x.TaskType >= 500 && x.TaskType < 900 && x.CreateDate.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")).Count(); |
| | | var outboundCount =_taskHtyRepository.Db.Queryable<Dt_Task_Hty>().Where(x => x.TaskType >= 100 && x.TaskType < 500 && x.CreateDate.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")).Count(); |
| | | |
| | | //è®¡ç®æè´§æç®±æ°é |
| | | var inStockPallet = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletType ==(int) PalletTypeEnum.None).Count(); |
| | | var inStockPallet = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletType ==(int) PalletTypeEnum.None && !string.IsNullOrEmpty(x.LocationCode)).Count(); |
| | | //计ç®ç©ºç®±æ°é |
| | | var freeStockPallet = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletType == (int)PalletTypeEnum.Empty).Count(); |
| | | var freeStockPallet = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletType == (int)PalletTypeEnum.Empty && !string.IsNullOrEmpty(x.LocationCode)).Count(); |
| | | // 4. è·åè¿7æ¥æ¯æ¥åºå
¥åºæç»ï¼æ ¸å¿ä¿®æ¹ï¼è°ç¨ä¸é¢çæ¹æ³ï¼ |
| | | var dailyInOutBoundList = Get7DaysDailyInOutBound(); |
| | | |
| | |
| | | å
¥åºå®æ = 2, |
| | | |
| | | /// <summary> |
| | | /// å
³é |
| | | /// æå¨å
³é |
| | | /// </summary> |
| | | [Description("å
³é")] |
| | | å
³é = 99, |
| | | [Description("æå¨å
³é")] |
| | | æå¨å
³é = 99, |
| | | |
| | | /// <summary> |
| | | /// åæ¶ |
| | |
| | | |
| | | WebResponseContent UnPalletQuantity(string orderNo); |
| | | |
| | | WebResponseContent UndoPalletGroup(string palletCode , string barcode = ""); |
| | | WebResponseContent UndoPalletGroup(string code); |
| | | |
| | | WebResponseContent UnPalletGroupBarcode(string orderNo); |
| | | |
| | | WebResponseContent HandCloseOrder(List<int> orderIds); |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | |
| | | (bool, string, object?) result2 = ModelValidate.ValidateModelData(materielGroupDTO); |
| | | if (!result2.Item1) return content = WebResponseContent.Instance.Error(result2.Item2); |
| | | |
| | |
| | | { |
| | | 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); |
| | |
| | | } |
| | | } |
| | | |
| | | 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) |
| | | { |
| | |
| | | { |
| | | detail.ReceiptQuantity = 0; |
| | | detail.OrderDetailStatus = 0; |
| | | if(inboundOrder.BusinessType == "11") |
| | | { |
| | | detail.WarehouseCode = ""; |
| | | } |
| | | _inboundOrderDetailRepository.UpdateData(detail); |
| | | } |
| | | } |
| | |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | public WebResponseContent HandCloseOrder(List<int> orderIds) |
| | | { |
| | | try |
| | | { |
| | | foreach (int id in orderIds) |
| | | { |
| | | var inbound = _inboundOrderRepository.QueryFirst(x => x.Id == id); |
| | | if(inbound.OrderStatus !=(int)InOrderStatusEnum.æªå¼å§ && inbound.OrderStatus != (int)InOrderStatusEnum.å
¥åºä¸) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è¯¥åæ®ç¶æä¸å¯ä»¥å
³é"); |
| | | } |
| | | inbound.OrderStatus = (int)InOrderStatusEnum.æå¨å
³é; |
| | | _inboundOrderRepository.UpdateData(inbound); |
| | | } |
| | | return WebResponseContent.Instance.OK($"åæ®å
³éæå"); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return WebResponseContent.Instance.Error(e.Message); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | Dt_InboundOrder inboundOrder = new Dt_InboundOrder(); |
| | | |
| | | var details = _inboundOrderDetailRepository.QueryData(x => (x.OutBoxbarcodes == palletDto.Barcode|| x.Barcode == palletDto.Barcode) && x.OrderDetailStatus == (int)InOrderStatusEnum.æªå¼å§); |
| | | |
| | | if (details.Count() <= 0) |
| | |
| | | { |
| | | return content.Error("æªæ¾å°è¯¥æ¡ç 主åä¿¡æ¯"); |
| | | } |
| | | if(inboundOrder.OrderStatus == (int)InOrderStatusEnum.æå¨å
³é) |
| | | { |
| | | return content.Error("è¯¥åæ®çç¶æä¸è½ç»ç"); |
| | | } |
| | | var warehouse =_warehouseAreaRepository.QueryFirst(x => x.Code == palletDto.WarehouseType); |
| | | if(inboundOrder.BusinessType=="11" && inboundOrder.FactoryArea != warehouse.FactoryArea) |
| | | { |
| | |
| | | using AutoMapper; |
| | | using MailKit.Search; |
| | | using SqlSugar; |
| | | using System.Text.RegularExpressions; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | public override PageGridData<Dt_StockInfo> GetPageData(PageDataOptions options) |
| | | { |
| | | string wheres = ValidatePageOptions(options); |
| | | //è·åæåºå段 |
| | | Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties); |
| | | List<OrderByModel> orderByModels = new List<OrderByModel>(); |
| | | foreach (var item in orderbyDic) |
| | | { |
| | | OrderByModel orderByModel = new() |
| | | { |
| | | FieldName = item.Key, |
| | | OrderByType = item.Value |
| | | }; |
| | | orderByModels.Add(orderByModel); |
| | | } |
| | | ISugarQueryable<Dt_StockInfo> sugarQueryable1 = BaseDal.Db.Queryable<Dt_StockInfo>(); |
| | | |
| | | int totalCount = 0; |
| | | List<SearchParameters> searchParametersList = new List<SearchParameters>(); |
| | | |
| | | var data = sugarQueryable1 |
| | | .WhereIF(!wheres.IsNullOrEmpty(), wheres) |
| | | .Where(x => !string.IsNullOrEmpty(x.LocationCode)) |
| | | .OrderBy(orderByModels) |
| | | .ToPageList(options.Page, options.Rows, ref totalCount); |
| | | |
| | | return new PageGridData<Dt_StockInfo>(totalCount, data); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | [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> |
| | | /// |
| | |
| | | return await _invokeMESService.BatchOrderFeedbackToMes(request.orderNos, request.inout); |
| | | } |
| | | |
| | | |
| | | [HttpPost, Route("HandCloseOrder"), AllowAnonymous, MethodParamsValidate] |
| | | public WebResponseContent HandCloseOrder(List<int> orderIds) |
| | | { |
| | | return Service.HandCloseOrder(orderIds); |
| | | } |
| | | } |
| | | } |