已修改55个文件
已重命名4个文件
已删除9个文件
已添加30个文件
| | |
| | | /项ç®ä»£ç /WMS/WMSServices/.vs/WIDESEA_WMSServer/CopilotIndices/17.13.441.19478/CodeChunks.db |
| | | /项ç®ä»£ç /WMS/WMSServices/.vs/WIDESEA_WMSServer/CopilotIndices/17.13.441.19478/SemanticSymbols.db |
| | | /项ç®ä»£ç /WCS/WCSServices/.vs/WIDESEAWCS_Server/CopilotIndices/17.13.441.19478/CodeChunks.db |
| | | /项ç®ä»£ç /WCS/WCSServices/WIDESEAWCS_TaskInfoService/FakesAssemblies/WIDESEAWCS_PackInfoService.Fakes.dll |
| | |
| | | "fastq": "^1.6.0" |
| | | } |
| | | }, |
| | | "@popperjs/core": { |
| | | "version": "npm:@sxzz/popperjs-es@2.11.7", |
| | | "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", |
| | | "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" |
| | | }, |
| | | "@soda/friendly-errors-webpack-plugin": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.8.0.tgz?cache=0&sync_timestamp=1607927406873&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40soda%2Ffriendly-errors-webpack-plugin%2Fdownload%2F%40soda%2Ffriendly-errors-webpack-plugin-1.8.0.tgz", |
| | |
| | | "webpack-chain": "^6.4.0", |
| | | "webpack-dev-server": "^3.11.0", |
| | | "webpack-merge": "^4.2.2" |
| | | }, |
| | | "dependencies": { |
| | | "ansi-styles": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", |
| | | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "color-convert": "^2.0.1" |
| | | } |
| | | }, |
| | | "chalk": { |
| | | "version": "4.1.2", |
| | | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", |
| | | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "ansi-styles": "^4.1.0", |
| | | "supports-color": "^7.1.0" |
| | | } |
| | | }, |
| | | "color-convert": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", |
| | | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "color-name": "~1.1.4" |
| | | } |
| | | }, |
| | | "color-name": { |
| | | "version": "1.1.4", |
| | | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", |
| | | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", |
| | | "dev": true, |
| | | "optional": true |
| | | }, |
| | | "has-flag": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", |
| | | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", |
| | | "dev": true, |
| | | "optional": true |
| | | }, |
| | | "loader-utils": { |
| | | "version": "2.0.4", |
| | | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", |
| | | "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "big.js": "^5.2.2", |
| | | "emojis-list": "^3.0.0", |
| | | "json5": "^2.1.2" |
| | | } |
| | | }, |
| | | "supports-color": { |
| | | "version": "7.2.0", |
| | | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", |
| | | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "has-flag": "^4.0.0" |
| | | } |
| | | }, |
| | | "vue-loader-v16": { |
| | | "version": "npm:vue-loader@16.8.3", |
| | | "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", |
| | | "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "chalk": "^4.1.0", |
| | | "hash-sum": "^2.0.0", |
| | | "loader-utils": "^2.0.0" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "@vue/cli-shared-utils": { |
| | |
| | | "lodash-unified": "^1.0.2", |
| | | "memoize-one": "^6.0.0", |
| | | "normalize-wheel-es": "^1.2.0" |
| | | }, |
| | | "dependencies": { |
| | | "@popperjs/core": { |
| | | "version": "npm:@sxzz/popperjs-es@2.11.7", |
| | | "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", |
| | | "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" |
| | | } |
| | | } |
| | | }, |
| | | "elliptic": { |
| | |
| | | "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", |
| | | "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | | "vue-loader-v16": { |
| | | "version": "npm:vue-loader@16.8.3", |
| | | "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", |
| | | "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "chalk": "^4.1.0", |
| | | "hash-sum": "^2.0.0", |
| | | "loader-utils": "^2.0.0" |
| | | }, |
| | | "dependencies": { |
| | | "ansi-styles": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", |
| | | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "color-convert": "^2.0.1" |
| | | } |
| | | }, |
| | | "chalk": { |
| | | "version": "4.1.2", |
| | | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", |
| | | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "ansi-styles": "^4.1.0", |
| | | "supports-color": "^7.1.0" |
| | | } |
| | | }, |
| | | "color-convert": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", |
| | | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "color-name": "~1.1.4" |
| | | } |
| | | }, |
| | | "color-name": { |
| | | "version": "1.1.4", |
| | | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", |
| | | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", |
| | | "dev": true, |
| | | "optional": true |
| | | }, |
| | | "has-flag": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", |
| | | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", |
| | | "dev": true, |
| | | "optional": true |
| | | }, |
| | | "loader-utils": { |
| | | "version": "2.0.4", |
| | | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", |
| | | "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "big.js": "^5.2.2", |
| | | "emojis-list": "^3.0.0", |
| | | "json5": "^2.1.2" |
| | | } |
| | | }, |
| | | "supports-color": { |
| | | "version": "7.2.0", |
| | | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", |
| | | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", |
| | | "dev": true, |
| | | "optional": true, |
| | | "requires": { |
| | | "has-flag": "^4.0.0" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | |
| | | let loadingInstance; |
| | | let loadingStatus = false; |
| | | if (process.env.NODE_ENV == 'development') { |
| | | // axios.defaults.baseURL = 'http://127.0.0.1:9281/'; |
| | | axios.defaults.baseURL = 'http://192.168.35.3:9281/'; |
| | | axios.defaults.baseURL = 'http://127.0.0.1:9291/'; |
| | | // axios.defaults.baseURL = 'http://192.168.35.3:9281/'; |
| | | } |
| | | else if (process.env.NODE_ENV == 'debug') { |
| | | axios.defaults.baseURL = 'http://127.0.0.1:8098/'; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | // this.$Notice.success({ title: this.detailOptions.cnName + ',æ¥è¯¢ç»æ', desc: 'è¿åç对象ï¼' + JSON.stringify(data) }); |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | // this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | } |
| | | } |
| | | }; |
| | | export default extension; |
| | |
| | | path: '/router', |
| | | name: 'router', |
| | | component: () => import('@/views/basicinfo/router.vue') |
| | | }, { |
| | | path: '/packaxis', |
| | | name: 'packaxis', |
| | | component: () => import('@/views/PackInfo/packaxis.vue') |
| | | }] |
| | | |
| | | export default viewgird |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/PackInfo/packaxis.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: "id", |
| | | footer: "Foots", |
| | | cnName: "ç ååæ ä¿¡æ¯", |
| | | name: "Packaxis", |
| | | url: "/Packaxis/", |
| | | sortName: "CreateDate", |
| | | }); |
| | | const editFormFields = ref({}); |
| | | const editFormOptions = ref([]); |
| | | const searchFormFields = ref({ |
| | | |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "ä»»å¡å·", field: "taskNum", type: "int" }, |
| | | { title: "æçç¼å·", field: "palletCode", type: "like" }, |
| | | { |
| | | title: "ä»»å¡ç±»å", |
| | | field: "taskType", |
| | | type: "selectList", |
| | | dataKey: "taskType", |
| | | data: [], |
| | | }, |
| | | { |
| | | title: "ä»»å¡ç¶æ", |
| | | field: "taskState", |
| | | type: "selectList", |
| | | dataKey: "taskState", |
| | | data: [], |
| | | }, |
| | | ], |
| | | [ |
| | | { title: "èµ·å§å°å", field: "sourceAddress", type: "like" }, |
| | | { title: "ç®æ å°å", field: "targetAddress", type: "like" }, |
| | | { title: "å½åä½ç½®", field: "currentAddress", type: "like" }, |
| | | { title: "ä¸ä¸ä½ç½®", field: "nextAddress", type: "like" }, |
| | | ], |
| | | [ |
| | | { title: "å··éå·", field: "roadway", type: "like", type: "select",dataKey: "Stacker",data: [],}, |
| | | { title: "å建人", field: "creater", type: "like" }, |
| | | { title: "å建æ¶é´", field: "createDate", type: "datetime" }, |
| | | ], |
| | | ]); |
| | | const columns = ref([ |
| | | { |
| | | field: "id", |
| | | title: "id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "deviceCode", |
| | | title: "设å¤ç¼å·", |
| | | type: "int", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "stationCode", |
| | | title: "å·¥ä½å·", |
| | | type: "string", |
| | | width: 200, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "packType", |
| | | title: "åå", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "packNum", |
| | | title: "ç åæ°é", |
| | | type: "int", |
| | | width: 130, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisX", |
| | | title: "Xåæ ", |
| | | type: "int", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisXCount", |
| | | title: "Xåæ ç å个æ°", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisXSpacing", |
| | | title: "Xåæ ç åé´è·", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisY", |
| | | title: "Yåæ ", |
| | | type: "int", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisYCount", |
| | | title: "Yåæ ç å个æ°", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisYSpacing", |
| | | title: "Yåæ ç åé´è·", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisZ", |
| | | title: "Zåæ ", |
| | | type: "int", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisZCount", |
| | | title: "Zåæ ç å个æ°", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "axisZSpacing", |
| | | title: "Zåæ ç åé´è·", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "", |
| | | table: "", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "", |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | |
| | |
| | | "WorkspaceRootPath": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u7801\u579B\\mdjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u7801\u579B\\mdjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_common\\utilities\\importexcelhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\utilities\\importexcelhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_model\\models\\packinfo\\dt_packaxis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\packinfo\\dt_packaxis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u539F\u6599\u5E93\\conveyorlinejob_yl1ndfloor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u539F\u6599\u5E93\\conveyorlinejob_yl1ndfloor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_model\\models\\basicinfo\\dt_apiinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\basicinfo\\dt_apiinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u6210\u54C1\u4ED3\\rgvjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u6210\u54C1\u4ED3\\rgvjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u6210\u54C1\u4ED3\\conveyorlinejob_cpc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u6210\u54C1\u4ED3\\conveyorlinejob_cpc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u539F\u6599\u5E93\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u539F\u6599\u5E93\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | "AbsoluteMoniker": "D:0:0:{E1633BFD-8807-4A29-89F2-0A7F26DF6976}|WIDESEAWCS_PackInfoService\\WIDESEAWCS_PackInfoService.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_packinfoservice\\dt_packaxisservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E1633BFD-8807-4A29-89F2-0A7F26DF6976}|WIDESEAWCS_PackInfoService\\WIDESEAWCS_PackInfoService.csproj|solutionrelative:wideseawcs_packinfoservice\\dt_packaxisservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 10, |
| | | "SelectedChildIndex": 2, |
| | | "Children": [ |
| | | { |
| | | "$type": "Bookmark", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "ConveyorLineJob_YL1ndFloor.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "ViewState": "AgIAAG4AAAAAAAAAAAAQwIkAAABoAAAAAAAAAA==", |
| | | "DocumentIndex": 0, |
| | | "Title": "ImportExcelHelper.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "ViewState": "AgIAAFQAAAAAAAAAAAAQwAsBAAAJAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-30T07:16:03.123Z", |
| | | "WhenOpened": "2025-08-31T01:25:32.766Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "Dt_ApiInfo.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "ViewState": "AgIAABEAAAAAAAAAAAAxwCoAAAAFAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T08:39:38.773Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "Dt_Task.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "ViewState": "AgIAABIAAAAAAAAAAAAAAB0AAABFAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T08:39:25.012Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "Dt_Packaxis.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "ViewState": "AgIAABUAAAAAAAAAAAAlwCkAAAASAAAAAAAAAA==", |
| | | "Title": "Dt_PackaxisService.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs*", |
| | | "RelativeToolTip": "WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs*", |
| | | "ViewState": "AgIAACQAAAAAAAAAAAAUwDoAAAAwAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T08:39:16.544Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "ConveyorLineJob_CPC.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "ViewState": "AgIAAEgAAAAAAAAAAAAkwEoAAAAUAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T07:57:43.158Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "RGVJob_CP.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "ViewState": "AgIAAFYAAAAAAAAAAAAqwEoAAAAQAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T07:52:50.611Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "RequestInbound.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T06:39:10.96Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvxAAAABgAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2025-08-29T06:03:36.387Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "MDJob_CP.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "ViewState": "AgIAAFgAAAAAAAAAAAAswGoAAADNAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T05:53:11.231Z", |
| | | "WhenOpened": "2025-08-31T01:15:08.521Z", |
| | | "EditorCaption": "" |
| | | } |
| | | ] |
| | |
| | | "WorkspaceRootPath": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u7801\u579B\\mdjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u7801\u579B\\mdjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{E1633BFD-8807-4A29-89F2-0A7F26DF6976}|WIDESEAWCS_PackInfoService\\WIDESEAWCS_PackInfoService.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_packinfoservice\\dt_packaxisservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E1633BFD-8807-4A29-89F2-0A7F26DF6976}|WIDESEAWCS_PackInfoService\\WIDESEAWCS_PackInfoService.csproj|solutionrelative:wideseawcs_packinfoservice\\dt_packaxisservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_model\\models\\packinfo\\dt_packaxis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\packinfo\\dt_packaxis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u539F\u6599\u5E93\\conveyorlinejob_yl1ndfloor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u539F\u6599\u5E93\\conveyorlinejob_yl1ndfloor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_model\\models\\basicinfo\\dt_apiinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\basicinfo\\dt_apiinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u6210\u54C1\u4ED3\\rgvjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u6210\u54C1\u4ED3\\rgvjob_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u6210\u54C1\u4ED3\\conveyorlinejob_cpc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u6210\u54C1\u4ED3\\conveyorlinejob_cpc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_tasks\\\u539F\u6599\u5E93\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\\u539F\u6599\u5E93\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\get\\longdeliliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wcsservices\\wideseawcs_common\\utilities\\importexcelhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\utilities\\importexcelhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 10, |
| | | "SelectedChildIndex": 4, |
| | | "Children": [ |
| | | { |
| | | "$type": "Bookmark", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "ConveyorLineJob_YL1ndFloor.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\ConveyorLineJob_YL1ndFloor.cs", |
| | | "ViewState": "AgIAAG4AAAAAAAAAAAAQwIkAAABoAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-30T07:16:03.123Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "Dt_ApiInfo.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_ApiInfo.cs", |
| | | "ViewState": "AgIAABEAAAAAAAAAAAAxwCoAAAAFAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T08:39:38.773Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "Dt_Task.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs", |
| | | "ViewState": "AgIAABIAAAAAAAAAAAAAAB0AAABFAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T08:39:25.012Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "Dt_Packaxis.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\PackInfo\\Dt_Packaxis.cs", |
| | | "ViewState": "AgIAABUAAAAAAAAAAAAlwCkAAAASAAAAAAAAAA==", |
| | | "Title": "TaskService.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "ViewState": "AgIAAAoBAAAAAAAAAAAgwO0AAAA7AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T08:39:16.544Z", |
| | | "WhenOpened": "2025-08-31T02:17:00.82Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "ConveyorLineJob_CPC.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\ConveyorLineJob_CPC.cs", |
| | | "ViewState": "AgIAAEgAAAAAAAAAAAAkwEoAAAAUAAAAAAAAAA==", |
| | | "DocumentIndex": 2, |
| | | "Title": "ImportExcelHelper.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\Utilities\\ImportExcelHelper.cs", |
| | | "ViewState": "AgIAAFQAAAAAAAAAAAAQwAsBAAAJAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T07:57:43.158Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "RGVJob_CP.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u6210\u54C1\u4ED3\\RGVJob_CP.cs", |
| | | "ViewState": "AgIAAFYAAAAAAAAAAAAqwEoAAAAQAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T07:52:50.611Z", |
| | | "WhenOpened": "2025-08-31T01:25:32.766Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "RequestInbound.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u539F\u6599\u5E93\\Task\\RequestInbound.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T06:39:10.96Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvxAAAABgAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2025-08-29T06:03:36.387Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "MDJob_CP.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\\u7801\u579B\\MDJob_CP.cs", |
| | | "ViewState": "AgIAAEAAAAAAAAAAAAAqwFcAAAAYAAAAAAAAAA==", |
| | | "Title": "Dt_PackaxisService.cs", |
| | | "DocumentMoniker": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs", |
| | | "ToolTip": "E:\\GET\\LongDeLiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WCSServices\\WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_PackInfoService\\Dt_PackaxisService.cs", |
| | | "ViewState": "AgIAAG0AAAAAAAAAAAAUwIQAAAAtAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-08-29T05:53:11.231Z", |
| | | "WhenOpened": "2025-08-31T01:15:08.521Z", |
| | | "EditorCaption": "" |
| | | } |
| | | ] |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using NPOI.HSSF.UserModel; |
| | | using NPOI.SS.UserModel; |
| | | using NPOI.XSSF.UserModel; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Data; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEAWCS_Common.Utilities |
| | | { |
| | | public class ImportExcelHelper : IDisposable |
| | | { |
| | | private string fileName = null; //æä»¶å |
| | | private IWorkbook workbook = null; |
| | | private FileStream fs = null; |
| | | private bool disposed; |
| | | |
| | | public ImportExcelHelper(string fileName) |
| | | { |
| | | this.fileName = fileName; |
| | | disposed = false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å°DataTableæ°æ®å¯¼å
¥å°excelä¸ |
| | | /// </summary> |
| | | /// <param name="data">è¦å¯¼å
¥çæ°æ®</param> |
| | | /// <param name="isColumnWritten">DataTableçå忝å¦è¦å¯¼å
¥</param> |
| | | /// <param name="sheetName">è¦å¯¼å
¥çexcelçsheetçåç§°</param> |
| | | /// <returns>导å
¥æ°æ®è¡æ°(å
å«ååé£ä¸è¡)</returns> |
| | | public int DataTableToExcel(DataTable data, string sheetName, bool isColumnWritten) |
| | | { |
| | | int i = 0; |
| | | int j = 0; |
| | | int count = 0; |
| | | ISheet sheet = null; |
| | | |
| | | fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); |
| | | if (fileName.IndexOf(".xlsx") > 0) // 2007çæ¬ |
| | | workbook = new XSSFWorkbook(); |
| | | else if (fileName.IndexOf(".xls") > 0) // 2003çæ¬ |
| | | workbook = new HSSFWorkbook(); |
| | | |
| | | try |
| | | { |
| | | if (workbook != null) |
| | | { |
| | | sheet = workbook.CreateSheet(sheetName); |
| | | } |
| | | else |
| | | { |
| | | return -1; |
| | | } |
| | | |
| | | if (isColumnWritten == true) //åå
¥DataTableçåå |
| | | { |
| | | IRow row = sheet.CreateRow(0); |
| | | for (j = 0; j < data.Columns.Count; ++j) |
| | | { |
| | | row.CreateCell(j).SetCellValue(data.Columns[j].ColumnName); |
| | | } |
| | | count = 1; |
| | | } |
| | | else |
| | | { |
| | | count = 0; |
| | | } |
| | | |
| | | for (i = 0; i < data.Rows.Count; ++i) |
| | | { |
| | | IRow row = sheet.CreateRow(count); |
| | | for (j = 0; j < data.Columns.Count; ++j) |
| | | { |
| | | row.CreateCell(j).SetCellValue(data.Rows[i][j].ToString()); |
| | | } |
| | | ++count; |
| | | } |
| | | workbook.Write(fs, true); //åå
¥å°excel |
| | | return count; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("Exception: " + ex.Message); |
| | | return -1; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å°excelä¸çæ°æ®å¯¼å
¥å°DataTableä¸ |
| | | /// </summary> |
| | | /// <param name="sheetName">excelå·¥ä½èsheetçåç§°</param> |
| | | /// <param name="isFirstRowColumn">第ä¸è¡æ¯å¦æ¯DataTableçåå</param> |
| | | /// <returns>è¿åçDataTable</returns> |
| | | //public DataTable ExcelToDataTable(string sheetName = null, bool isFirstRowColumn = true) |
| | | //{ |
| | | // ISheet sheet = null; |
| | | // DataTable data = new DataTable(); |
| | | // int startRow = 0; |
| | | // try |
| | | // { |
| | | // fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); |
| | | // if (fileName.IndexOf(".xlsx") > 0) // 2007çæ¬ |
| | | // workbook = new XSSFWorkbook(fs); |
| | | // else if (fileName.IndexOf(".xls") > 0) // 2003çæ¬ |
| | | // workbook = new HSSFWorkbook(fs); |
| | | |
| | | // if (sheetName != null) |
| | | // { |
| | | // sheet = workbook.GetSheet("Sheet1"); |
| | | // } |
| | | // else |
| | | // { |
| | | // sheet = workbook.GetSheetAt(0); |
| | | // } |
| | | // if (sheet != null) |
| | | // { |
| | | // IRow firstRow = sheet.GetRow(0); |
| | | // int cellCount = firstRow.LastCellNum; //ä¸è¡æåä¸ä¸ªcellçç¼å· 峿»çåæ° |
| | | |
| | | // if (isFirstRowColumn) |
| | | // { |
| | | // for (int i = firstRow.FirstCellNum; i < cellCount; ++i) |
| | | // { |
| | | // DataColumn column = new DataColumn(firstRow.GetCell(i).StringCellValue); |
| | | // data.Columns.Add(column); |
| | | // } |
| | | // startRow = sheet.FirstRowNum + 1; |
| | | // } |
| | | // else |
| | | // { |
| | | // startRow = sheet.FirstRowNum; |
| | | // } |
| | | |
| | | // //æåä¸åçæ å· |
| | | // int rowCount = sheet.LastRowNum; |
| | | // for (int i = startRow; i <= rowCount; ++i) |
| | | // { |
| | | // IRow row = sheet.GetRow(i); |
| | | // if (row == null) continue; //æ²¡ææ°æ®çè¡é»è®¤æ¯nullããããããã |
| | | |
| | | // DataRow dataRow = data.NewRow(); |
| | | // for (int j = row.FirstCellNum; j < cellCount; ++j) |
| | | // { |
| | | // if (row.GetCell(j) != null) //åçï¼æ²¡ææ°æ®çåå
æ ¼é½é»è®¤æ¯null |
| | | // dataRow[j] = row.GetCell(j).ToString(); |
| | | // } |
| | | // data.Rows.Add(dataRow); |
| | | // } |
| | | // } |
| | | |
| | | // return data; |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // Console.WriteLine("Exception: " + ex.Message); |
| | | // return null; |
| | | // } |
| | | //} |
| | | |
| | | public DataTable ExcelToDataTable(string sheetName = null, bool isFirstRowColumn = true) |
| | | { |
| | | ISheet sheet = null; |
| | | DataTable data = new DataTable(); |
| | | int startRow = 0; |
| | | |
| | | try |
| | | { |
| | | using (fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) |
| | | { |
| | | if (fileName.IndexOf(".xlsx", StringComparison.OrdinalIgnoreCase) > 0) |
| | | workbook = new XSSFWorkbook(fs); |
| | | else if (fileName.IndexOf(".xls", StringComparison.OrdinalIgnoreCase) > 0) |
| | | workbook = new HSSFWorkbook(fs); |
| | | |
| | | // ä¿®å¤sheetéæ©é»è¾ |
| | | if (!string.IsNullOrEmpty(sheetName)) |
| | | { |
| | | sheet = workbook.GetSheet(sheetName); // 使ç¨ä¼ å
¥çsheetName |
| | | } |
| | | else |
| | | { |
| | | sheet = workbook.GetSheetAt(0); // é»è®¤ç¬¬ä¸ä¸ªsheet |
| | | } |
| | | |
| | | if (sheet == null) |
| | | { |
| | | Console.WriteLine("æªæ¾å°æå®çå·¥ä½è¡¨"); |
| | | return null; |
| | | } |
| | | |
| | | IRow firstRow = sheet.GetRow(0); |
| | | if (firstRow == null) |
| | | { |
| | | Console.WriteLine("å·¥ä½è¡¨ä¸ºç©º"); |
| | | return null; |
| | | } |
| | | |
| | | int cellCount = firstRow.LastCellNum; |
| | | |
| | | if (isFirstRowColumn) |
| | | { |
| | | for (int i = firstRow.FirstCellNum; i < cellCount; i++) |
| | | { |
| | | ICell cell = firstRow.GetCell(i); |
| | | string columnName = (cell != null) ? cell.ToString() : $"Column{i}"; |
| | | data.Columns.Add(columnName); |
| | | } |
| | | startRow = 1; // ä»ç¬¬äºè¡å¼å§ï¼è·³è¿æ é¢è¡ï¼ |
| | | } |
| | | else |
| | | { |
| | | for (int i = 0; i < cellCount; i++) |
| | | { |
| | | data.Columns.Add($"Column{i}"); |
| | | } |
| | | startRow = 0; |
| | | } |
| | | |
| | | // è¯»åæ°æ®è¡ |
| | | for (int i = startRow; i <= sheet.LastRowNum; i++) |
| | | { |
| | | IRow row = sheet.GetRow(i); |
| | | if (row == null) continue; |
| | | |
| | | DataRow dataRow = data.NewRow(); |
| | | for (int j = 0; j < cellCount; j++) |
| | | { |
| | | ICell cell = row.GetCell(j); |
| | | if (cell != null) |
| | | { |
| | | // æ ¹æ®åå
æ ¼ç±»åæ£ç¡®å¤çæ°æ® |
| | | switch (cell.CellType) |
| | | { |
| | | case CellType.String: |
| | | dataRow[j] = cell.StringCellValue; |
| | | break; |
| | | case CellType.Numeric: |
| | | if (DateUtil.IsCellDateFormatted(cell)) |
| | | dataRow[j] = cell.DateCellValue; |
| | | else |
| | | dataRow[j] = cell.NumericCellValue; |
| | | break; |
| | | case CellType.Boolean: |
| | | dataRow[j] = cell.BooleanCellValue; |
| | | break; |
| | | case CellType.Formula: |
| | | dataRow[j] = cell.ToString(); // æè
å¤çå
¬å¼ç»æ |
| | | break; |
| | | default: |
| | | dataRow[j] = cell.ToString(); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | data.Rows.Add(dataRow); |
| | | } |
| | | } |
| | | return data; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine($"读åExcelå¼å¸¸: {ex.Message}"); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public void Dispose() |
| | | { |
| | | Dispose(true); |
| | | GC.SuppressFinalize(this); |
| | | } |
| | | |
| | | protected virtual void Dispose(bool disposing) |
| | | { |
| | | if (!this.disposed) |
| | | { |
| | | if (disposing) |
| | | { |
| | | if (fs != null) |
| | | fs.Close(); |
| | | } |
| | | |
| | | fs = null; |
| | | disposed = true; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <Nullable>enable</Nullable> |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <PackageReference Include="NPOI" Version="2.7.4" /> |
| | | </ItemGroup> |
| | | |
| | | </Project> |
| | |
| | | /// <returns></returns> |
| | | WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress, int taskNum = 0); |
| | | |
| | | /// <summary> |
| | | /// å
¥åºç³è¯· |
| | | /// </summary> |
| | | /// <param name="palletCode">æ¡ç </param> |
| | | /// <returns></returns> |
| | | WebResponseContent YLPurchaseBoxing(string palletCode); |
| | | |
| | | WebResponseContent AssignCPRoadwayNo(); |
| | | |
| | | // <summary> |
| | |
| | | using System; |
| | | using Magicodes.ExporterAndImporter.Excel.Utility; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Data; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_IPackInfoRepository; |
| | | using WIDESEAWCS_Model.Models.PackInfo; |
| | | using WIDESEAWCS_PackInfoRepository; |
| | | using Magicodes.ExporterAndImporter.Core.Models; |
| | | using Magicodes.ExporterAndImporter.Excel; |
| | | using WIDESEAWCS_Common.Utilities; |
| | | |
| | | namespace WIDESEAWCS_PackInfoService |
| | | { |
| | |
| | | public Dt_PackaxisService(IDt_PackaxisRepository BaseDal) : base(BaseDal) |
| | | { |
| | | } |
| | | public override WebResponseContent Import(List<IFormFile> files) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | // 1. éªè¯æä»¶ |
| | | if (files == null || files.Count == 0) |
| | | return new WebResponseContent { Status = false, Message = "è¯·éæ©ä¸ä¼ çæä»¶" }; |
| | | |
| | | var formFile = files[0]; |
| | | |
| | | // 2. åå¤ç®å½ï¼ä½¿ç¨Path.Combineï¼ |
| | | var dicPath = Path.Combine( |
| | | AppDomain.CurrentDomain.BaseDirectory, |
| | | "ExcelImport", |
| | | DateTime.Now.ToString("yyyyMMdd"), |
| | | typeof(Dt_Packaxis).Name); |
| | | |
| | | Directory.CreateDirectory(dicPath); |
| | | // 3. ä¿åä¸ä¼ æä»¶ |
| | | var fileName = $"{Guid.NewGuid()}_{formFile.FileName}"; |
| | | var fullPath = Path.Combine(dicPath, fileName); |
| | | |
| | | using (var stream = new FileStream(fullPath, FileMode.Create)) |
| | | { |
| | | formFile.CopyToAsync(stream); |
| | | } |
| | | |
| | | // 4. 导å
¥Excelæ°æ® |
| | | DataTable dtExcel = new DataTable(); |
| | | using (ImportExcelHelper excelHelper = new ImportExcelHelper(fullPath)) |
| | | { |
| | | dtExcel = excelHelper.ExcelToDataTable(); |
| | | |
| | | } |
| | | List<Dt_Packaxis> addAxis = new List<Dt_Packaxis>(); |
| | | List<Dt_Packaxis> updateAxis = new List<Dt_Packaxis>(); |
| | | if (dtExcel == null || dtExcel.Rows.Count == 0) |
| | | { |
| | | return content.Error("æªæ¾å°æ°æ®è¯·æ£æ¥Excelè¡¨æ ¼æ°æ®æ ¼å¼æ¯å¦æ£ç¡®ï¼"); |
| | | } |
| | | for (int i = 0; i < dtExcel.Rows.Count; i++) |
| | | { |
| | | DataRow row = dtExcel.Rows[i]; |
| | | string id = row["id"]?.ToString() ?? string.Empty; |
| | | string DeviceCode = row["DeviceCode"]?.ToString() ?? string.Empty; |
| | | string StationCode = row["StationCode"]?.ToString() ?? string.Empty; |
| | | string PackType = row["PackType"]?.ToString() ?? string.Empty; |
| | | string PackNum = row["PackNum"]?.ToString() ?? string.Empty; |
| | | string AxisX = row["AxisX"]?.ToString() ?? string.Empty; |
| | | string AxisXCount = row["AxisXCount"]?.ToString() ?? string.Empty; |
| | | string AxisXSpacing = row["AxisXSpacing"]?.ToString() ?? string.Empty; |
| | | string AxisY = row["AxisY"]?.ToString() ?? string.Empty; |
| | | string AxisYCount = row["AxisYCount"]?.ToString() ?? string.Empty; |
| | | string AxisYSpacing = row["AxisYSpacing"]?.ToString() ?? string.Empty; |
| | | string AxisZ = row["AxisZ"]?.ToString() ?? string.Empty; |
| | | string AxisZCount = row["AxisZCount"]?.ToString() ?? string.Empty; |
| | | string AxisZSpacing = row["AxisZSpacing"]?.ToString() ?? string.Empty; |
| | | var axis = BaseDal.QueryFirst(x => x.DeviceCode == DeviceCode && x.StationCode == Convert.ToInt32(StationCode) && x.PackType == PackType); |
| | | if(axis == null) |
| | | { |
| | | Dt_Packaxis packaxis = new Dt_Packaxis() |
| | | { |
| | | DeviceCode = DeviceCode, |
| | | StationCode = Convert.ToInt32(StationCode), |
| | | PackType = PackType, |
| | | PackNum = Convert.ToInt32(PackNum), |
| | | AxisX = Convert.ToInt32(AxisX), |
| | | AxisXCount = Convert.ToInt32(AxisXCount), |
| | | AxisXSpacing = Convert.ToInt32(AxisXSpacing), |
| | | AxisY = Convert.ToInt32(AxisY), |
| | | AxisYCount = Convert.ToInt32(AxisYCount), |
| | | AxisYSpacing = Convert.ToInt32(AxisYSpacing), |
| | | AxisZ = Convert.ToInt32(AxisZ), |
| | | AxisZCount = Convert.ToInt32(AxisZCount), |
| | | AxisZSpacing = Convert.ToInt32(AxisZSpacing), |
| | | Creater = App.User.UserId > 0 ? App.User.UserName : "System", |
| | | CreateDate = DateTime.Now |
| | | }; |
| | | addAxis.Add(packaxis); |
| | | } |
| | | else |
| | | { |
| | | axis.DeviceCode = DeviceCode; |
| | | axis.StationCode = Convert.ToInt32(StationCode); |
| | | axis.PackType = PackType; |
| | | axis.PackNum = Convert.ToInt32(PackNum); |
| | | axis.AxisX = Convert.ToInt32(AxisX); |
| | | axis.AxisXCount = Convert.ToInt32(AxisXCount); |
| | | axis.AxisXSpacing = Convert.ToInt32(AxisXSpacing); |
| | | axis.AxisY = Convert.ToInt32(AxisY); |
| | | axis.AxisYCount = Convert.ToInt32(AxisYCount); |
| | | axis.AxisYSpacing = Convert.ToInt32(AxisYSpacing); |
| | | axis.AxisZ = Convert.ToInt32(AxisZ); |
| | | axis.AxisZCount = Convert.ToInt32(AxisZCount); |
| | | axis.AxisZSpacing = Convert.ToInt32(AxisZSpacing); |
| | | axis.Modifier = App.User.UserId > 0 ? App.User.UserName : "System"; |
| | | axis.ModifyDate = DateTime.Now; |
| | | updateAxis.Add(axis); |
| | | } |
| | | } |
| | | BaseDal.AddData(addAxis); |
| | | BaseDal.UpdateData(updateAxis); |
| | | |
| | | content = WebResponseContent.Instance.OK("导å
¥æåï¼"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | |
| | | return content; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using HslCommunication.WebSocket; |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseController; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_Model.Models.PackInfo; |
| | | using WIDESEAWCS_PackInfoService; |
| | | using WIDESEAWCS_Tasks; |
| | | |
| | | namespace WIDESEAWCS_WCSServer.Controllers.PackInfo |
| | | { |
| | | [Route("api/Packaxis")] |
| | | [ApiController] |
| | | public class PackaxisController : ApiBaseController<IDt_PackaxisService, Dt_Packaxis> |
| | | { |
| | | private readonly IHttpContextAccessor _httpContextAccessor; |
| | | |
| | | public PackaxisController(IDt_PackaxisService service, IHttpContextAccessor httpContextAccessor) : base(service) |
| | | { |
| | | _httpContextAccessor = httpContextAccessor; |
| | | } |
| | | } |
| | | } |
| | |
| | | //è¿æ¥å符串 |
| | | //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", |
| | | //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=192.168.35.3;Initial Catalog=TestWCS_TC;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=TESTWCSCP_WCS;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"WMSConnectionStrings": "Data Source=10.30.4.92;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //è·¨å |
| | |
| | | } |
| | | return content; |
| | | } |
| | | // <summary> |
| | | /// å
¥åºç³è¯· |
| | | /// </summary> |
| | | public WebResponseContent YLPurchaseBoxing(string palletCode) |
| | | { |
| | | WebResponseContent? content = new WebResponseContent(); |
| | | try |
| | | { |
| | | string address = AppSettings.Get("WMSApiAddress"); |
| | | if (string.IsNullOrEmpty(address)) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°WMSApiå°å"); |
| | | } |
| | | string responseStr = HttpHelper.Get($"{address}/api/Task/YLPurchaseBoxing?palletCode={palletCode}"); |
| | | WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); |
| | | |
| | | content = responseContent; |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | // <summary> |
| | | /// è¯·æ±æåå
¥åºå··é |
| | | /// </summary> |
| | |
| | | R_ConveyorLineYLInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineYLInfo>(deviceProRead.DeviceProAddress); |
| | | if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID)) //䏿¥¼æ¥æç§°éç«å°å
许å
¥åºç³è¯· |
| | | { |
| | | device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode); |
| | | WriteInfo(item.StationCode, $"请æ±å
¥åºæ¡ç :{conveyorLineInfoRead.WR_TMID}"); |
| | | WebResponseContent content = _taskService.YLPurchaseBoxing(conveyorLineInfoRead.WR_TMID); |
| | | if (content.Status) |
| | | { |
| | | device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode); |
| | | WriteInfo(item.StationCode, $"请æ±å
¥åºæ¡ç :{conveyorLineInfoRead.WR_TMID}"); |
| | | } |
| | | else |
| | | { |
| | | WriteError(item.StationCode, $"请æ±å
¥åºå¤±è´¥ï¼{content.Message}"); |
| | | } |
| | | |
| | | } |
| | | else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && conveyorLineInfoRead.WR_Task <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID)) //䏿¥¼åé
ç«å°å
¥åºåé
ç®æ ç¹ |
| | | { |
| | |
| | | <el-col :span="24"> |
| | | <span class="less-style">ç©æåç§°ï¼ {{ row.materielName }} </span> |
| | | <el-divider direction="vertical"></el-divider> |
| | | <span class="less-style">ç©æç¼å·ï¼ {{ row.materielCode }} </span> |
| | | <span class="less-style">ç©æç¼å·ï¼ {{ row.materialNo }} </span> |
| | | <el-divider direction="vertical"></el-divider> |
| | | <span class="less-style" |
| | | >éæ±æ°éï¼ {{ row.orderQuantity }} |
| | | >éæ±æ°éï¼ {{ row.totalUsage }} |
| | | </span> |
| | | <el-divider direction="vertical"></el-divider> |
| | | <span class="less-style" |
| | | >å·²åé
æ°éï¼ {{ row.lockQuantity }} |
| | | >å·²åé
æ°éï¼ {{ row.assignTotalUsage }} |
| | | </span> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | data() { |
| | | return { |
| | | row: null, |
| | | orderNo:null, |
| | | showDetialBox: false, |
| | | tableData: [], |
| | | tableColumns: [ |
| | |
| | | hidden: true, |
| | | }, |
| | | { |
| | | prop: "orderType", |
| | | title: "åæ®ç±»å", |
| | | prop: "materielId", |
| | | title: "ç©æId", |
| | | type: "string", |
| | | width: 90, |
| | | }, |
| | | { |
| | | prop: "batchNo", |
| | | title: "æ¹æ¬¡å·", |
| | | type: "string", |
| | | width: 120, |
| | | }, |
| | | { |
| | | prop: "materielCode", |
| | |
| | | hidden: true, |
| | | }, |
| | | { |
| | | prop: "originalQuantity", |
| | | title: "åå§åºåé", |
| | | prop: "orderQuantity", |
| | | title: "忮鿱é¿åº¦", |
| | | type: "string", |
| | | width: 100, |
| | | width: 110, |
| | | }, |
| | | { |
| | | prop: "originalQuantity", |
| | | title: "ååºåé¿åº¦", |
| | | type: "string", |
| | | width: 110, |
| | | }, |
| | | { |
| | | prop: "assignQuantity", |
| | | title: "åé
åºåºé", |
| | | title: "åé
åºåºé¿åº¦", |
| | | type: "string", |
| | | width: 100, |
| | | width: 110, |
| | | }, |
| | | { |
| | | prop: "taskNum", |
| | |
| | | }, |
| | | { |
| | | prop: "palletCode", |
| | | title: "æçç¼å·", |
| | | title: "æ¡ç ç¼å·", |
| | | type: "string", |
| | | width: 150, |
| | | }, |
| | |
| | | }; |
| | | }, |
| | | methods: { |
| | | open(row) { |
| | | open(row,orderNo) { |
| | | this.row = row; |
| | | this.orderNo=orderNo; |
| | | this.showDetialBox = true; |
| | | this.getData(); |
| | | }, |
| | | getData() { |
| | | this.http |
| | | .post( |
| | | "api/OutStockLockInfo/GetByOrderDetailId?orderDetailId=" + |
| | | "api/OutStockLockInfo/GetByOrderDetailId?orderNo="+this.orderNo+"&orderDetailId=" + |
| | | this.row.id, |
| | | null, |
| | | "æ¥è¯¢ä¸" |
| | |
| | | <span>å·²éä¸ {{ selection.length }} 项</span> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-link |
| | | <!-- <el-link |
| | | type="primary" |
| | | size="small" |
| | | style="float: right; height: 20px" |
| | | @click="lockstocks" |
| | | >éå®åºå</el-link |
| | | > |
| | | > --> |
| | | <el-link |
| | | type="primary" |
| | | size="small" |
| | |
| | | hidden: true, |
| | | }, |
| | | { |
| | | prop: "orderId", |
| | | prop: "outBSTOrderId", |
| | | title: "åºåºå主é®", |
| | | type: "string", |
| | | width: 90, |
| | | hidden: true, |
| | | }, |
| | | { |
| | | prop: "materielCode", |
| | | prop: "materialId", |
| | | title: "䏿¸¸ç©æID", |
| | | type: "string", |
| | | width: 120, |
| | | }, |
| | | { |
| | | prop: "materialNo", |
| | | title: "ç©æç¼å·", |
| | | type: "string", |
| | | width: 150, |
| | |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 150, |
| | | hidden: true, |
| | | }, |
| | | { |
| | | prop: "batchNo", |
| | | title: "æ¹æ¬¡å·", |
| | | prop: "width", |
| | | title: "å¹
宽", |
| | | type: "string", |
| | | width: 90, |
| | | width: 100, |
| | | }, |
| | | { |
| | | prop: "orderQuantity", |
| | | title: "åæ®æ°é", |
| | | prop: "xqLen", |
| | | title: "éæ±é¿åº¦", |
| | | type: "string", |
| | | width: 90, |
| | | width: 130, |
| | | }, |
| | | { |
| | | prop: "lockQuantity", |
| | | title: "é宿°é", |
| | | prop: "totalUsage", |
| | | title: "æ»ç¨éé", |
| | | type: "int", |
| | | width: 90, |
| | | width: 130, |
| | | }, |
| | | { |
| | | prop: "overOutQuantity", |
| | | title: "å·²åºæ°é", |
| | | prop: "assignTotalUsage", |
| | | title: "å·²åé
é¿åº¦", |
| | | type: "string", |
| | | width: 90, |
| | | width: 130, |
| | | }, |
| | | { |
| | | prop: "unit", |
| | | title: "åä½", |
| | | prop: "outTotalUsage", |
| | | title: "å·²åºé¿åº¦", |
| | | type: "string", |
| | | width: 90, |
| | | width: 130, |
| | | }, |
| | | { |
| | | prop: "orderDetailStatus", |
| | | prop: "outBSTOrderDetailStatus", |
| | | title: "订åæç»ç¶æ", |
| | | type: "tag", |
| | | width: 180, |
| | | bindKey: "orderDetailStatusEnum", |
| | | bindKey: "outboundStatusEnum", |
| | | }, |
| | | { |
| | | prop: "assignStock", |
| | | title: "æå®åºå", |
| | | type: "icon", |
| | | width: 90, |
| | | icon: "el-icon-s-grid", |
| | | }, |
| | | // { |
| | | // prop: "assignStock", |
| | | // title: "æå®åºå", |
| | | // type: "icon", |
| | | // width: 90, |
| | | // icon: "el-icon-s-grid", |
| | | // }, |
| | | { |
| | | prop: "viewDetail", |
| | | title: "åºåºè¯¦ç»", |
| | |
| | | icon: "el-icon-s-operation", |
| | | }, |
| | | { |
| | | prop: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | }, |
| | | { |
| | | prop: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | }, |
| | | { |
| | | prop: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | width: 170, |
| | | }, |
| | | { |
| | | prop: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | }, |
| | | { |
| | | prop: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 170, |
| | | }, |
| | | ], |
| | | paginations: { |
| | |
| | | } |
| | | |
| | | // ä»
对æ°å¼åæ±å |
| | | // ä»
对æä¸åæ±å |
| | | if (column.property === 'lockQuantity' || column.property === 'overOutQuantity' || column.property === 'orderQuantity') { |
| | | if (column.property === 'xqLen' || column.property === 'assignTotalUsage' || column.property === 'outTotalUsage' || column.property === 'totalUsage') { |
| | | const values = data.map(item => Number(item[column.property])) |
| | | console.log(values); |
| | | if (!values.every(value => isNaN(value))) { |
| | | sums[index] = values.reduce((prev, curr) => { |
| | | return prev + (isNaN(curr) ? 0 : curr) |
| | | }, 0) |
| | | }, 0); |
| | | //ä¿ç两ä½å°æ° |
| | | sums[index] = sums[index].toFixed(4) |
| | | } else { |
| | | sums[index] = '-' |
| | | } |
| | |
| | | return sums |
| | | }, |
| | | getData() { |
| | | var wheres = [{ name: "orderId", value: this.row.id }]; |
| | | var wheres = [{ name: "outBSTOrderId", value: this.row.id }]; |
| | | var param = { |
| | | page: this.paginations.page, |
| | | rows: this.paginations.rows, |
| | |
| | | wheres: JSON.stringify(wheres), // æ¥è¯¢æ¡ä»¶ï¼æ ¼å¼ä¸º[{ name: "åæ®µ", value: "xx" }] |
| | | }; |
| | | this.http |
| | | .post("api/OutboundOrderDetail/GetPageData", param, "æ¥è¯¢ä¸") |
| | | .post("api/OutBSTOrderDetail/GetPageData", param, "æ¥è¯¢ä¸") |
| | | .then((x) => { |
| | | this.tableData = x.rows; |
| | | }); |
| | |
| | | this.$refs.child.open(row); |
| | | } else { |
| | | //ç¹å»æå¼åºåºè¯¦æ
|
| | | this.$refs.selectedStock.open(row); |
| | | this.$refs.selectedStock.open(row,this.row.outBSTOrderNo); |
| | | } |
| | | }, |
| | | lockstocks() { |
| | | if (this.selection.length === 0) { |
| | | return this.$message.error("è¯·éæ©åæ®æç»"); |
| | | } |
| | | var keys = this.selection.map((item) => item.id); // è·åéä¸è¡çid |
| | | this.http |
| | | .post("api/OutboundOrderDetail/LockOutboundStocks", keys, "æ°æ®å¤çä¸") |
| | | .then((x) => { |
| | | if (!x.status) return this.$message.error(x.message); |
| | | this.$message.success("æä½æå"); |
| | | this.showDetialBox = false; |
| | | this.$emit("parentCall", ($vue) => { |
| | | $vue.getData(); |
| | | }); |
| | | }); |
| | | }, |
| | | // lockstocks() { |
| | | // if (this.selection.length === 0) { |
| | | // return this.$message.error("è¯·éæ©åæ®æç»"); |
| | | // } |
| | | // var keys = this.selection.map((item) => item.id); // è·åéä¸è¡çid |
| | | // this.http |
| | | // .post("api/OutboundOrderDetail/LockOutboundStocks", keys, "æ°æ®å¤çä¸") |
| | | // .then((x) => { |
| | | // if (!x.status) return this.$message.error(x.message); |
| | | // this.$message.success("æä½æå"); |
| | | // this.showDetialBox = false; |
| | | // this.$emit("parentCall", ($vue) => { |
| | | // $vue.getData(); |
| | | // }); |
| | | // }); |
| | | // }, |
| | | outbound() { |
| | | if (this.selection.length === 0) { |
| | | return this.$message.error("è¯·éæ©åæ®æç»"); |
| | |
| | | var keys = this.selection.map((item) => item.id); // è·åéä¸è¡çid |
| | | |
| | | this.http |
| | | .post("api/Task/GenerateOutboundTasks", keys, "æ°æ®å¤çä¸") |
| | | .post("api/Task/CreateBSTOutboundTasks", keys, "æ°æ®å¤çä¸") |
| | | .then((x) => { |
| | | if (!x.status) return this.$message.error(x.message); |
| | | this.$message.success("æä½æå"); |
| | |
| | | name: 'inboundOrderDetail', |
| | | component: () => import('@/views/inbound/inboundOrderDetail.vue') |
| | | }, { |
| | | path: '/outboundOrder', |
| | | name: 'outboundOrder', |
| | | component: () => import('@/views/outbound/outboundOrder.vue') |
| | | path: '/outBSTOrder', |
| | | name: 'outBSTOrder', |
| | | component: () => import('@/views/outbound/outBSTOrder.vue') |
| | | }, { |
| | | path: '/outboundOrderDetail', |
| | | name: 'outboundOrderDetail', |
| | | component: () => import('@/views/outbound/outboundOrderDetail.vue') |
| | | path: '/outBSTOrderDetail', |
| | | name: 'outBSTOrderDetail', |
| | | component: () => import('@/views/outbound/outBSTOrderDetail.vue') |
| | | }, |
| | | { |
| | | path: '/outStockLockInfo', |
| | |
| | | path: '/purchaseOrderDetail', |
| | | name: 'purchaseOrderDetail', |
| | | component: () => import('@/views/inbound/purchaseOrderDetail.vue') |
| | | } |
| | | , { |
| | | path: '/outboundOrder_Hty', |
| | | name: 'outboundOrder_Hty', |
| | | component: () => import('@/views/outbound/outboundOrder_Hty.vue') |
| | | } |
| | | , { |
| | | path: '/outboundOrderDetail_Hty', |
| | | name: 'outboundOrderDetail_Hty', |
| | | component: () => import('@/views/outbound/outboundOrderDetail_Hty.vue') |
| | | } |
| | | , { |
| | | path: '/receiveOrderDetail', |
| | |
| | | materielWide: "", |
| | | materielState: "", |
| | | isCheck: "", |
| | | materielInvOrgId: "" |
| | | materielInvOrgId: "", |
| | | materierlWeight: "", |
| | | |
| | | }); |
| | | const editFormOptions = ref([ |
| | |
| | | required: true, |
| | | field: "materielName", |
| | | type: "string", |
| | | } |
| | | ], |
| | | [ |
| | | }, |
| | | { |
| | | title: "ç©æåç±»", |
| | | field: "materielSourceType", |
| | |
| | | data: [], |
| | | required: true, |
| | | }, |
| | | ], |
| | | [ |
| | | |
| | | { |
| | | title: "ç©æè§æ ¼", |
| | | required: true, |
| | |
| | | title: "åºæ¬åä½", |
| | | required: true, |
| | | field: "materielUnit", |
| | | type: "string", |
| | | type: "select", |
| | | dataKey:"materielUnitEnum", |
| | | data:[] |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "åºåç»ç»", |
| | | required: true, |
| | |
| | | dataKey:"enableEnum", |
| | | data:[] |
| | | }, |
| | | { |
| | | title: "æ¯å¦è´¨æ£", |
| | | required: true, |
| | | field: "isCheck", |
| | | type: "select", |
| | | dataKey:"yesno", |
| | | data:[] |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "ç©æéé", |
| | | field: "materielWeight", |
| | | type: "float", |
| | | }, |
| | | { |
| | | title: "ç©æé¿åº¦", |
| | | field: "materielLength", |
| | |
| | | title: "ç©æå®½åº¦", |
| | | field: "materielWide", |
| | | type: "float", |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "æ¯å¦è´¨æ£", |
| | | required: true, |
| | | field: "isCheck", |
| | | type: "select", |
| | | dataKey:"enableEnum", |
| | | data:[] |
| | | }, |
| | | ] |
| | | ]); |
| | |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | bind: { key: "materielUnitEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "materielState", |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielWeight", |
| | | title: "ç©æéé", |
| | | type: "float", |
| | | width: 180, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielLength", |
| | | title: "ç©æé¿åº¦", |
| | | type: "float", |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/outbound/outBSTOrder.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: "id", |
| | | footer: "Foots", |
| | | cnName: "åºåºå", |
| | | name: "outBSTOrder", |
| | | url: "/OutBSTOrder/", |
| | | sortName: "id", |
| | | }); |
| | | const editFormFields = ref({ |
| | | boardMpsNo:"" |
| | | }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { |
| | | field: "boardMpsNo", |
| | | title: "åæ®ç¼å·", |
| | | type: "string", |
| | | readonly:true |
| | | } |
| | | ], |
| | | ]); |
| | | const searchFormFields = ref({ |
| | | outBSTOrderNo: "", |
| | | boardMpsId: "", |
| | | boardMpsNo: "", |
| | | outBSTOrderStatus: "", |
| | | warehouseId: "", |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "åæ®ç¼å·", field: "outBSTOrderNo", type: "like" }, |
| | | { title: "åºåºä¸æ¸¸ID", field: "boardMpsId", type: "like" }, |
| | | { title: "䏿¸¸åæ®ç¼å·", field: "boardMpsNo", type: "like" }, |
| | | { |
| | | title: "åæ®ç¶æ", |
| | | field: "outBSTOrderStatus", |
| | | type: "select", |
| | | dataKey: "outboundStatusEnum", |
| | | data: [], |
| | | }, |
| | | ], |
| | | [ |
| | | { title: "æå±ä»åº", field: "warehouseId",type: "selectList",dataKey: "warehouses",data: [],} |
| | | ], |
| | | ]); |
| | | const columns = ref([ |
| | | { |
| | | field: "id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "warehouseId", |
| | | title: "ä»åº", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | bind:{key: "warehouses", data: []} |
| | | }, |
| | | { |
| | | field: "outBSTOrderNo", |
| | | title: "åæ®ç¼å·", |
| | | type: "string", |
| | | width: 160, |
| | | align: "left", |
| | | // link: true, |
| | | }, |
| | | { |
| | | field: "boardMpsId", |
| | | title: "䏿¸¸åæ®ID", |
| | | type: "int", |
| | | width: 160, |
| | | align: "left", |
| | | // link: true, |
| | | }, |
| | | { |
| | | field: "boardMpsNo", |
| | | title: "䏿¸¸åæ®ç¼å·", |
| | | type: "string", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "outBSTOrderStatus", |
| | | title: "åºåºåç¶æ", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | bind: { key: "outboundStatusEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "åºåºæç»å", |
| | | table: "OutBSTOrderDetail", |
| | | columns: [ |
| | | { |
| | | field: "id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "outBSTOrderId", |
| | | title: "åºåºå主é®", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "boardMpsId", |
| | | title: "å
³èç主表ID(䏿¸¸)", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materialId", |
| | | title: "å
³èç主表ID(䏿¸¸)", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materialNo", |
| | | title: "ç©æç¼å·", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | edit: { type: "string" }, |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "materielName", |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | edit: { type: "string" }, |
| | | }, |
| | | { |
| | | field: "width", |
| | | title: "å¹
宽", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | edit: { type: "string" }, |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "xqLen", |
| | | title: "éæ±é¿åº¦", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | edit: { type: "number" }, |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "totalUsage", |
| | | title: "æ»ç¨é", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | edit: { type: "number" }, |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "procurementLength", |
| | | title: "éè´é¿åº¦", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "assignTotalUsage", |
| | | title: "å·²åé
ç¨é", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "outTotalUsage", |
| | | title: "å·²åºç¨é", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "outBSTOrderDetailStatus", |
| | | title: "订åæç»ç¶æ", |
| | | type: "string", |
| | | width: 180, |
| | | align: "left", |
| | | bind: { key: "outboundStatusEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | } |
| | | ], |
| | | sortName: "id", |
| | | key: "id", |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | |
ÎļþÃû´Ó ÏîÄ¿´úÂë/WMS/WMSClient/src/views/outbound/outboundOrderDetail.vue ÐÞ¸Ä |
| | |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/outbound/outboundOrderDetail.js"; |
| | | import extend from "@/extension/outbound/outBSTOrderDetail.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | |
| | | key: "id", |
| | | footer: "Foots", |
| | | cnName: "åºåºåæç»", |
| | | name: "outboundOrderDetail", |
| | | url: "/OutboundOrderDetail/", |
| | | name: "outBSTOrderDetail", |
| | | url: "/OutBSTOrderDetail/", |
| | | sortName: "id", |
| | | }); |
| | | const editFormFields = ref({ |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "productName", |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 200, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "lotNumber", |
| | | title: "ç©ææ¹å·", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "productSpec", |
| | | title: "ç©æè§æ ¼", |
| | | type: "string", |
| | | width: 200, |
| | | align: "left", |
| | | }, |
| | | { |
| | |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "productUnit", |
| | | title: "ç©æåä½", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | bind: { key: "materielUnitEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "row", |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "productName", |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "lotNumber", |
| | | title: "ç©ææ¹å·", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "productSpec", |
| | | title: "ç©æè§æ ¼", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "stockQty", |
| | | title: "åºåæ°", |
| | | type: "string", |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "lotNumber", |
| | | title: "ç©ææ¹å·", |
| | | field: "productUnit", |
| | | title: "åä½", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | |
| | | bind: { key: "stockStatusEmun", data: [] }, |
| | | }, |
| | | { |
| | | field: "stockLength", |
| | | title: "åºåæ»é¿", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielWeight", |
| | | title: "ç©æéé", |
| | | type: "string", |
| | |
| | | |
| | | public IPalletTypeInfoRepository PalletTypeInfoRepository { get; } |
| | | |
| | | public BasicRepository(ILocationInfoRepository locationInfoRepository, IMaterielInfoRepository materielInfoRepository, IWarehouseRepository warehouseRepository, IPalletTypeInfoRepository palletTypeInfoRepository) |
| | | public ISupplierInfoRepository SupplierInfoRepository { get; } |
| | | |
| | | public BasicRepository(ILocationInfoRepository locationInfoRepository, IMaterielInfoRepository materielInfoRepository, IWarehouseRepository warehouseRepository, IPalletTypeInfoRepository palletTypeInfoRepository, ISupplierInfoRepository supplierInfoRepository) |
| | | { |
| | | LocationInfoRepository = locationInfoRepository; |
| | | MaterielInfoRepository = materielInfoRepository; |
| | | WarehouseRepository = warehouseRepository; |
| | | PalletTypeInfoRepository = palletTypeInfoRepository; |
| | | SupplierInfoRepository = supplierInfoRepository; |
| | | } |
| | | } |
| | | } |
| | |
| | | /// åè°WCSä»»å¡å®æ |
| | | /// </summary> |
| | | [Description("åè°WCSä»»å¡å®æ")] |
| | | FeedBackWCSTaskCompleted |
| | | FeedBackWCSTaskCompleted, |
| | | /// <summary> |
| | | /// åæééè´å
¥åºä¸ä¼ |
| | | /// </summary> |
| | | [Description("åæééè´å
¥åºä¸ä¼ ")] |
| | | BSTPurchaseUp, |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_Common.MaterielEnum |
| | | { |
| | | /// <summary> |
| | | /// åºåç»ç» |
| | | /// </summary> |
| | | public enum MaterielInvOrgEnum |
| | | { |
| | | /// <summary> |
| | | /// èå |
| | | /// </summary> |
| | | [Description("èå")] |
| | | èå = 1, |
| | | |
| | | /// <summary> |
| | | /// æ°å |
| | | /// </summary> |
| | | [Description("æ°å")] |
| | | æ°å = 2, |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç©æåºæ¬åç±» |
| | | /// </summary> |
| | | public enum MaterielTypeEnum |
| | | { |
| | | /// <summary> |
| | | /// æå |
| | | /// </summary> |
| | | [Description("æå")] |
| | | æå = 1, |
| | | |
| | | /// <summary> |
| | | /// åæå |
| | | /// </summary> |
| | | [Description("åæå")] |
| | | åæå = 2, |
| | | |
| | | /// <summary> |
| | | /// åææ |
| | | /// </summary> |
| | | [Description("åææ")] |
| | | åææ = 3, |
| | | |
| | | /// <summary> |
| | | /// è¾
æå¤ä»¶ |
| | | /// </summary> |
| | | [Description("è¾
æå¤ä»¶")] |
| | | è¾
æå¤ä»¶ = 4 |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç©æåä½åç±» |
| | | /// </summary> |
| | | public enum MaterielUnitEnum |
| | | { |
| | | /// <summary> |
| | | /// åå
|
| | | /// </summary> |
| | | [Description("åå
")] |
| | | Kg = 1, |
| | | |
| | | /// <summary> |
| | | /// ç±³ |
| | | /// </summary> |
| | | [Description("ç±³")] |
| | | M = 2, |
| | | |
| | | /// <summary> |
| | | /// 个 |
| | | /// </summary> |
| | | [Description("个")] |
| | | Pcs = 3 |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// åºåºåæ®ç¶æ<br/> |
| | | /// 0ï¼æªå¼å§<br/> |
| | | /// 1ï¼å
¥åºä¸<br/> |
| | | /// 2ï¼å
¥åºå®æ<br/> |
| | | /// 1ï¼åºåºä¸<br/> |
| | | /// 2ï¼åºåºå®æ<br/> |
| | | /// 99ï¼å
³é<br/> |
| | | public enum OutOrderStatusEnum |
| | | { |
| | |
| | | /// </summary> |
| | | [Description("æååº")] |
| | | LLDCP=2, |
| | | |
| | | /// <summary> |
| | | /// è¾
æåº |
| | | /// </summary> |
| | | [Description("è¾
æåº")] |
| | | LLDFL = 3 |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | else if (expressionType == LinqExpressionType.ThanOrEqual) |
| | | { |
| | | where += $"{searchParametersList[i].Name} {HtmlElementType.ThanOrEqual} '{searchParametersList[i].Value}'"; |
| | | where += $"{searchParametersList[i].Name} {HtmlElementType.thanorequal} '{searchParametersList[i].Value}'"; |
| | | } |
| | | else if (expressionType == LinqExpressionType.LessThanOrEqual) |
| | | { |
| | | where += $"{searchParametersList[i].Name} {HtmlElementType.LessOrequal} '{searchParametersList[i].Value}'"; |
| | | where += $"{searchParametersList[i].Name} {HtmlElementType.lessOrequal} '{searchParametersList[i].Value}'"; |
| | | } |
| | | else if (expressionType == LinqExpressionType.GreaterThan) |
| | | { |
| | |
| | | /// </summary> |
| | | [Description("å
¥åºåå·ç¼ç è§åç¼å·")] |
| | | InboundOrderRule, |
| | | |
| | | /// <summary> |
| | | /// åºåºåå·ç¼ç è§åç¼å· |
| | | /// </summary> |
| | | [Description("åºåºåå·ç¼ç è§åç¼å·")] |
| | | OutboundOrderRule, |
| | | |
| | | /// <summary> |
| | | /// æ¶è´§åå·ç¼ç è§åç¼å· |
| | | /// </summary> |
| | | [Description("æ¶è´§åå·ç¼ç è§åç¼å·")] |
| | | ReceiveOrderRule, |
| | | |
| | | /// <summary> |
| | | /// è´¨æ£åå·ç¼ç è§å |
| | | /// </summary> |
| | | [Description("è´¨æ£åå·ç¼ç è§å")] |
| | | CheckOrderRule, |
| | | /// <summary> |
| | | /// åæåå·ç¼ç è§å |
| | | /// </summary> |
| | | [Description("åæåå·ç¼ç è§å")] |
| | | FLCodeRule, |
| | | /// <summary> |
| | | /// å
¥æåå·ç¼ç è§å |
| | | /// </summary> |
| | | [Description("å
¥æåå·ç¼ç è§å")] |
| | | RLCodeRule, |
| | | /// <summary> |
| | | /// éæåå·ç¼ç è§å |
| | | /// </summary> |
| | | [Description("éæåå·ç¼ç è§å")] |
| | | TLCodeRule, |
| | | /// <summary> |
| | | /// çç¹åå·ç¼ç è§å |
| | | /// </summary> |
| | | [Description("çç¹åå·ç¼ç è§å")] |
| | | PDCodeRule, |
| | | /// <summary> |
| | | /// éæåå·ç¼ç è§å |
| | | /// </summary> |
| | | [Description("éæåå·ç¼ç è§å")] |
| | | TLCodeRule, |
| | | /// <summary> |
| | | /// æåå
¥åºåå·ç¼ç è§å |
| | | /// </summary> |
| | |
| | | /// æååºåºåå·ç¼ç è§å |
| | | /// </summary> |
| | | [Description("æååºåºåå·ç¼ç è§å")] |
| | | ProOutCOdeRule |
| | | ProOutCodeRule |
| | | } |
| | | } |
| | |
| | | public const string LT = "<"; |
| | | public const string like = "like"; |
| | | |
| | | public const string ThanOrEqual = ">="; |
| | | public const string LessOrequal = "<="; |
| | | public const string thanOrEqual = ">="; |
| | | public const string lessOrequal = "<="; |
| | | public const string Contains = "in"; |
| | | public const string Equal = "="; |
| | | } |
| | |
| | | case HtmlElementType.Contains: |
| | | linqExpression = LinqExpressionType.In; |
| | | break; |
| | | case HtmlElementType.ThanOrEqual: |
| | | case HtmlElementType.thanOrEqual: |
| | | linqExpression = LinqExpressionType.ThanOrEqual; |
| | | break; |
| | | case HtmlElementType.LessOrequal: |
| | | case HtmlElementType.lessOrequal: |
| | | linqExpression = LinqExpressionType.LessThanOrEqual; |
| | | break; |
| | | case HtmlElementType.GT: |
| | |
| | | /// ç¶æ |
| | | /// </summary> |
| | | [PropertyValidate("ç¶æ", NotNullAndEmpty = true)] |
| | | public int State { get; set; } |
| | | public int Status { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåç»ç» |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | |
| | | namespace WIDESEA_DTO.Basic |
| | | { |
| | | /// <summary> |
| | | /// åæééè´å
¥åºåæ¥æ¶å®ä½ |
| | | /// </summary> |
| | | [ModelValidate] |
| | | public class BSTOutOrderDTO |
| | | { |
| | | /// <summary> |
| | | /// æ°æ®è·åæ¹å¼æ è¯(1:æ°å¢ 2:ä¿®æ¹ 3:å é¤) |
| | | /// </summary> |
| | | [PropertyValidate("æ°æ®è·åæ¹å¼æ è¯(1:æ°å¢ 2:ä¿®æ¹ 3:å é¤)", NotNullAndEmpty = true)] |
| | | public int Way { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 纸æ¿ä¸»ç产计åID |
| | | /// </summary> |
| | | [PropertyValidate("纸æ¿ä¸»ç产计åID", NotNullAndEmpty = true)] |
| | | public int BoardMpsId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 计åç¼å· |
| | | /// </summary> |
| | | [PropertyValidate("计åç¼å·", NotNullAndEmpty = true)] |
| | | public string BoardMpsNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çäº§æ¥æ |
| | | /// </summary> |
| | | [PropertyValidate("çäº§æ¥æ", NotNullAndEmpty = true)] |
| | | public long ProductionDate { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 纸质åºåºåæç»å表 |
| | | /// </summary> |
| | | [PropertyValidate("纸质åºåºåæç»å表", NotNullAndEmpty = true)] |
| | | public List<BstBoardMpsDetailItem> BstBoardMpsDetails { get; set; } |
| | | } |
| | | /// <summary> |
| | | /// éè´æ¶è´§æç» |
| | | /// </summary> |
| | | public class BstBoardMpsDetailItem |
| | | { |
| | | /// <summary> |
| | | /// å
³èç主表ID |
| | | /// </summary> |
| | | [PropertyValidate("å
³èç主表ID", NotNullAndEmpty = true)] |
| | | public int BoardMpsId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¹
宽 |
| | | /// </summary> |
| | | [PropertyValidate("å¹
宽", NotNullAndEmpty = true)] |
| | | public decimal Width { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæ±é¿åº¦ |
| | | /// </summary> |
| | | [PropertyValidate("éæ±é¿åº¦", NotNullAndEmpty = true)] |
| | | public decimal XqLen { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ»ç¨é |
| | | /// </summary> |
| | | [PropertyValidate("æ»ç¨é", NotNullAndEmpty = true)] |
| | | public decimal TotalUsage { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©ææ¥æºID(䏿¸¸) |
| | | /// </summary> |
| | | [PropertyValidate("ç©æID", NotNullAndEmpty = true)] |
| | | public int MaterialId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [PropertyValidate("ç©æç¼å·", NotNullAndEmpty = true)] |
| | | public string MaterialNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éè´é¿åº¦ |
| | | /// </summary> |
| | | [PropertyValidate("éè´é¿åº¦", NotNullAndEmpty = true)] |
| | | public decimal ProcurementLength { get; set; } |
| | | } |
| | | } |
| | |
| | | [ExporterHeader(DisplayName = "åºè´§åå·")] |
| | | public string ShipmentOrder { get; set; } |
| | | /// <summary> |
| | | /// è¶æ¡å· |
| | | /// æçå· |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "è¶æ¡å·")] |
| | | [ExporterHeader(DisplayName = "æçå·")] |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 产åç¼ç |
| | | /// ç©æç¼ç |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "产åç¼ç ")] |
| | | [ExporterHeader(DisplayName = "ç©æç¼ç ")] |
| | | public string ProductCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çæ¬ |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "çæ¬")] |
| | | public string ProductVersion { get; set; } |
| | | /// <summary> |
| | | /// çæ¬ |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "çæ¬")] |
| | | public string SpecifyVer { get; set; } |
| | | [ExporterHeader(DisplayName = "ç©æåç§°")] |
| | | public string? ProductName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 产å卿 |
| | | /// è§æ ¼ |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "产å卿")] |
| | | public string DateCode { get; set; } |
| | | [ExporterHeader(DisplayName = "è§æ ¼")] |
| | | public string ProductSpec { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "åä½")] |
| | | public string ProductUnit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// äº§åæ¹å· |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "äº§åæ¹å·")] |
| | | public string LotNumber { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ERPå·¥å |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "ERPå·¥å")] |
| | | public string ERPOrder { get; set; } |
| | | /// <summary> |
| | | /// å¶é å·¥å |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "å¶é å·¥å")] |
| | | public string MoNumber { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éå®è®¢å |
| | | /// </summary> |
| | |
| | | { |
| | | ContractResolver = new CamelCasePropertyNamesContractResolver() |
| | | }; |
| | | |
| | | public string BSTPurchaseUp(BSTPurchaseUpModel bSTPurchaseUpModel) |
| | | { |
| | | Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x=>x.ApiCode==APIEnum.BSTPurchaseUp.ToString()); |
| | | |
| | | string request = JsonConvert.SerializeObject(bSTPurchaseUpModel, settings); |
| | | |
| | | string response = HttpHelper.Post(apiInfo.ApiAddress, request); |
| | | |
| | | return response; |
| | | } |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | public interface IInvokeERPService : IDependency |
| | | { |
| | | |
| | | public string BSTPurchaseUp(BSTPurchaseUpModel bSTPurchaseUpModel); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_External.Model |
| | | { |
| | | /// <summary> |
| | | /// éè´ä¸ä¼ |
| | | /// </summary> |
| | | public class BSTPurchaseUpModel |
| | | { |
| | | public string Barcode { get; set; } |
| | | public int BarcodeQty { get; set;} |
| | | public string Rfid { get; set; } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_External.Model |
| | | { |
| | | /// <summary> |
| | | /// åæéè¿å |
| | | /// </summary> |
| | | public class BSTResponse |
| | | { |
| | | /// <summary> |
| | | /// è¿åä¿¡æ¯ |
| | | /// </summary> |
| | | public string Msg { get; set; } |
| | | /// <summary> |
| | | /// è¿åç |
| | | /// </summary> |
| | | public int Code { get; set; } |
| | | } |
| | | } |
| | |
| | | |
| | | IPalletTypeInfoRepository PalletTypeInfoRepository { get; } |
| | | |
| | | ISupplierInfoRepository SupplierInfoRepository { get; } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundRepository |
| | | { |
| | | /// <summary> |
| | | /// åºåºåæç»ä»å¨æ¥å£å± |
| | | /// </summary> |
| | | public interface IOutBSTOrderDetailRepository : IRepository<Dt_OutBSTOrderDetail> |
| | | { |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundRepository |
| | | { |
| | | /// <summary> |
| | | /// åºåºåä»å¨æ¥å£å± |
| | | /// </summary> |
| | | public interface IOutBSTOrderRepository : IRepository<Dt_OutBSTOrder> |
| | | { |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundRepository |
| | | { |
| | | /// <summary> |
| | | /// åºåºè¯¦æ
ä¿¡æ¯ä»å¨æ¥å£å± |
| | | /// </summary> |
| | | public interface IOutStockLockInfoRepository : IRepository<Dt_OutStockLockInfo> |
| | | { |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_DTO.Stock; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundService |
| | | { |
| | | public interface IOutBSTOrderDetailService : IService<Dt_OutBSTOrderDetail> |
| | | { |
| | | IOutBSTOrderDetailRepository Repository { get; } |
| | | /// <summary> |
| | | /// åé
åºå |
| | | /// </summary> |
| | | (List<Dt_StockInfo>, List<Dt_OutBSTOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_OutBSTOrderDetail> outboundOrderDetails); |
| | | |
| | | /// <summary> |
| | | /// åºåºåºååé
åï¼æ´æ°æ°æ®åºæ°æ® |
| | | /// </summary> |
| | | WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_OutBSTOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_DTO.Inbound; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundService |
| | | { |
| | | public interface IOutBSTOrderService : IService<Dt_OutBSTOrder> |
| | | { |
| | | IOutBSTOrderRepository Repository { get; } |
| | | /// <summary> |
| | | /// æ·»å åºåºæç¨ä¿¡æ¯ |
| | | /// </summary> |
| | | WebResponseContent AddOutBSTOrder(List<BSTOutOrderDTO> bSTOutOrderDTOs); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundService |
| | | { |
| | | public interface IOutStockLockInfoService : IService<Dt_OutStockLockInfo> |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | IOutStockLockInfoRepository Repository { get; } |
| | | |
| | | List<Dt_OutStockLockInfo> GetByOrderDetailId(string orderNo,int orderDetailId, OutLockStockStatusEnum? outStockStatus); |
| | | |
| | | /// <summary> |
| | | /// çæåºåºè¯¦æ
|
| | | /// </summary> |
| | | Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutBSTOrder outBSTOrder, Dt_OutBSTOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null); |
| | | } |
| | | } |
| | |
| | | |
| | | List<Dt_StockInfo> GetStockInfos(string materielCode); |
| | | |
| | | List<Dt_StockInfo> GetStockInfos(string materielCode, string lotNo, List<string> locationCodes); |
| | | List<Dt_StockInfo> GetStockInfos(int materielId,decimal width, List<string> locationCodes); |
| | | |
| | | List<Dt_StockInfo> GetStockInfosByIds(List<int> ids); |
| | | |
| | |
| | | { |
| | | IStockInfoRepository Repository { get; } |
| | | WebResponseContent StockQueryData(SaveModel saveModel); |
| | | /// <summary> |
| | | /// æå¨ç»ç |
| | | /// </summary> |
| | | WebResponseContent ManualMaterielGroup(SaveModel saveModel); |
| | | /// <summary> |
| | | /// è·åå¯ä½¿ç¨åºå |
| | | /// </summary> |
| | | List<Dt_StockInfo> GetUseableStocks(int materielId,decimal width, int warehoseId); |
| | | /// <summary> |
| | | /// åé
å®é
åºå |
| | | /// </summary> |
| | | List<Dt_StockInfo> GetOutboundStocks(List<Dt_StockInfo> stockInfos, decimal needQuantity); |
| | | } |
| | | } |
| | |
| | | WebResponseContent DeviceRequestInboundTaskSimple(string stationCode, string palletCode); |
| | | |
| | | /// <summary> |
| | | /// å
¥åºä»»å¡è¯·æ± |
| | | /// åæå
¥åºä»»å¡è¯·æ± |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | WebResponseContent RequestYLWMSTaskSimple(string stationCode, string palletCode); |
| | | |
| | | /// <summary> |
| | | /// åæå
¥åºç³è¯· |
| | | /// </summary> |
| | | /// <param name="palletCode"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent YLPurchaseBoxing(string palletCode); |
| | | |
| | | /// <summary> |
| | | /// åé
åæå··é |
| | |
| | | /// è¾
æå
¥åº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | WebResponseContent InboundFLTask(string barCode, string startPoint, string matCode, int matCount); |
| | | WebResponseContent InboundFLOrCPTask(string barCode, string startPoint, string matCode, int matCount); |
| | | |
| | | /// <summary> |
| | | /// æååºåº |
| | |
| | | /// <param name="saveModel"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent PrintInbound(SaveModel saveModel); |
| | | /// <summary> |
| | | /// å建å纸ç产æç¨åºåºä»»å¡ |
| | | /// </summary> |
| | | /// <param name="keys"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent CreateBSTOutboundTasks(int[] keys); |
| | | } |
| | | } |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_BasicRepository; |
| | | using WIDESEA_Common.MaterielEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | List<BSTPurchaseOrderDTO> bSTPurchaseOrderDTOsUpdate = bSTPurchaseOrderDTOs.Where(x => x.Way == 2).ToList(); |
| | | //å é¤ |
| | | List<BSTPurchaseOrderDTO> bSTPurchaseOrderDTOsDel = bSTPurchaseOrderDTOs.Where(x => x.Way == 3).ToList(); |
| | | |
| | | //è·åææç©æ |
| | | List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && x.MaterialSourceId != 0); |
| | | //è·åææä¾åºå |
| | | List<Dt_SupplierInfo> supplierInfos = _basicRepository.SupplierInfoRepository.QueryData(x => x.InvOrgId == MaterielInvOrgEnum.èå.ObjToInt()); |
| | | |
| | | List<Dt_PurchaseBSTOrder> purchaseAddBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrder> purchaseUpdateBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrder> purchaseDeleteBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | if (bSTPurchaseOrderDTOsAdd.Count>0) |
| | | { |
| | | //夿é夿å
¥ |
| | | //夿ä¾åºå |
| | | BSTPurchaseOrderDTO? bSTPurchaseOrderDTO = bSTPurchaseOrderDTOsAdd.FirstOrDefault(x => !supplierInfos.Select(x=>x.SupplierCode).Contains(x.VendNo)); |
| | | if (bSTPurchaseOrderDTO != null) |
| | | { |
| | | return content.Error($"éè´{nameof(BSTPurchaseOrderDTO.PaperReceiptNo)}:{bSTPurchaseOrderDTO.PaperReceiptNo}ä¾åºå:{bSTPurchaseOrderDTO.VendNo}ä¸åå¨"); |
| | | } |
| | | //夿忮 |
| | | Dt_PurchaseBSTOrder? ExistAddPurchase = OldpurchaseBSTOrders.FirstOrDefault(x => bSTPurchaseOrderDTOsAdd.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)); |
| | | if (ExistAddPurchase != null) |
| | | { |
| | | return content.Error($"éè´æ¶è´§Id{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{ExistAddPurchase.PaperReceiptId}å·²åå¨"); |
| | | } |
| | | //éªè¯æ¡ç éå¤ |
| | | List<Dt_PurchaseBSTOrderDetail> purchaseBSTOrderDetails = OldpurchaseBSTOrders.SelectMany(x => x.Details).ToList(); |
| | | List<PaperReceiptDetailsItem> paperReceiptDetailsItems = bSTPurchaseOrderDTOsAdd.SelectMany(x => x.PaperReceiptDetails).ToList(); |
| | | var ExistDetail = purchaseBSTOrderDetails.FirstOrDefault(x => paperReceiptDetailsItems.Select(x => x.Barcode).Contains(x.Barcode)); |
| | | if (ExistDetail!=null) |
| | | { |
| | | return content.Error($"éè´æ¡ç {nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}å·²åå¨"); |
| | | } |
| | | //夿æ¯å¦åå¨ç©æ |
| | | PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | if (paperReceiptDetailsItem!=null) |
| | | { |
| | | return content.Error($"éè´æ¡ç {nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}ç©æId:{paperReceiptDetailsItem.MaterialId}ä¸åå¨"); |
| | | } |
| | | foreach (var item in bSTPurchaseOrderDTOsAdd) |
| | | { |
| | | List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x=>_mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList(); |
| | | Dt_PurchaseBSTOrder purchaseBSTOrder = _mapper.Map<Dt_PurchaseBSTOrder>(item); |
| | | purchaseBSTOrder.Details = bSTOrderDetails; |
| | | purchaseAddBSTOrders.Add(purchaseBSTOrder); |
| | | } |
| | | } |
| | |
| | | return content.Error($"æªæ¾å°æå®éè´æ¶è´§å{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}"); |
| | | } |
| | | } |
| | | if (bSTPurchaseOrderDTOsDel.Count>0) |
| | | { |
| | | List<Dt_PurchaseBSTOrder>? ExistDelPurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsDel.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList(); |
| | | //æ´æ°çåæ®æ¯å¦åå¨ |
| | | if (ExistDelPurchase.Count == bSTPurchaseOrderDTOsDel.Count) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | | BSTPurchaseOrderDTO? bSTPurchaseOrderDTO = bSTPurchaseOrderDTOsDel.FirstOrDefault(x => !ExistDelPurchase.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)); |
| | | return content.Error($"æªæ¾å°æå®éè´æ¶è´§å{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}"); |
| | | } |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(purchaseAddBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// BSTåºåºæç¨å |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_OutBSTOrder), "BSTåºåºæç¨å"), ModelValidate] |
| | | public class Dt_OutBSTOrder : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ä»åºä¸»é®")] |
| | | public int WarehouseId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºæ¥æºID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåºæ¥æºID")] |
| | | public int BoardMpsId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// WMSåæ®ç¼å· |
| | | /// </summary> |
| | | [CodeRule(RuleCodeEnum.OutboundOrderRule)] |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "WMSåæ®ç¼å·", IsOnlyIgnoreUpdate = true)] |
| | | public string OutBSTOrderNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºç¼å·(䏿¸¸) |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "åºåºç¼å·(䏿¸¸)")] |
| | | public string BoardMpsNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºåç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåºåç¶æ")] |
| | | public int OutBSTOrderStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºè®¡åæ¶é´ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "åºåºè®¡åæ¶é´")] |
| | | public DateTime ProductionDate { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éè´å表 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToMany, nameof(Dt_OutBSTOrderDetail.OutBSTOrderId), nameof(Id))] |
| | | public List<Dt_OutBSTOrderDetail> Details { get; set; } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// BSTåºåºæç¨æç» |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_OutBSTOrderDetail), "BSTåºåºæç¨æç»"), ModelValidate] |
| | | public class Dt_OutBSTOrderDetail : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºä¸»è¡¨ID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåºä¸»è¡¨ID")] |
| | | public int OutBSTOrderId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å
³èç主表ID(䏿¸¸) |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "å
³èç主表ID(䏿¸¸)")] |
| | | public int BoardMpsId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¹
宽 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "å¹
宽")] |
| | | public decimal Width { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæ±é¿åº¦ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éæ±é¿åº¦")] |
| | | public decimal XqLen { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ»ç¨é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "æ»ç¨é")] |
| | | public decimal TotalUsage { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©ææ¥æºID(䏿¸¸) |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ç©ææ¥æºID(䏿¸¸)")] |
| | | public int MaterialId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ç©æç¼å·")] |
| | | public string MaterialNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éè´é¿åº¦ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éè´é¿åº¦")] |
| | | public decimal ProcurementLength { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·²åé
ç¨é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å·²åé
ç¨é")] |
| | | public decimal AssignTotalUsage { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·²åºç¨é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å·²åºç¨é")] |
| | | public decimal OutTotalUsage { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ç©æåç§°")] |
| | | public string MaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºåæç»ç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåºåæç»ç¶æ")] |
| | | public int OutBSTOrderDetailStatus { get; set; } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// åºåºè¯¦æ
|
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_OutStockLockInfo), "åºåºè¯¦æ
")] |
| | | public class Dt_OutStockLockInfo : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ®ç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "åæ®ç¼å·")] |
| | | public string OrderNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ®æç»ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åæ®æç»ä¸»é®")] |
| | | public int OrderDetailId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æId |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ç©æId")] |
| | | public int MaterielId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¹æ¬¡å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æ¹æ¬¡å·")] |
| | | public string BatchNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç©æç¼å·")] |
| | | public string MaterielCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "ç©æåç§°")] |
| | | public string MaterielName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºå主é®")] |
| | | public int StockId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ®æ°é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åæ®æ°é")] |
| | | public decimal OrderQuantity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åå§åºåé |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åå§åºåé")] |
| | | public decimal OriginalQuantity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åé
åºåºé |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åé
åºåºé")] |
| | | public decimal AssignQuantity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è´§ä½ç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "è´§ä½ç¼å·")] |
| | | public string LocationCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æçç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æçç¼å·")] |
| | | public string PalletCode { get; set; } |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "åä½")] |
| | | public string Unit { get; set; } |
| | | /// <summary> |
| | | /// ä»»å¡å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ä»»å¡å·")] |
| | | public int? TaskNum { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ç¶æ")] |
| | | public int Status { get; set; } |
| | | } |
| | | } |
| | |
| | | public string ProductCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç©æåç§°")] |
| | | public string ProductName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§æ ¼ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "è§æ ¼")] |
| | | public string ProductSpec { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "åä½")] |
| | | public string ProductUnit { get; set; } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// åºåæ° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåæ°")] |
| | |
| | | public int StockStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æId |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ç©æId")] |
| | | public int MaterielId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç©æç¼å·")] |
| | |
| | | /// åºåç©ææ»é¿(m) |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "åºåç©ææ»é¿(m)")] |
| | | public int StockLength { get; set; } |
| | | public decimal StockLength { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æéé |
| | |
| | | [ImporterHeader(Name = "ç©ææ°é")] |
| | | [ExporterHeader(DisplayName = "ç©ææ°é")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "ç©ææ°é")] |
| | | public float Quantity { get; set; } |
| | | public decimal Quantity { get; set; } |
| | | } |
| | | } |
| | |
| | | |
| | | <ItemGroup> |
| | | <Folder Include="Models\Check\" /> |
| | | <Folder Include="Models\Outbound\" /> |
| | | </ItemGroup> |
| | | |
| | | </Project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_OutboundRepository |
| | | { |
| | | /// <summary> |
| | | /// éè´åä»å¨å®ç°å± |
| | | /// </summary> |
| | | public class OutBSTOrderDetailRepository : RepositoryBase<Dt_OutBSTOrderDetail>, IOutBSTOrderDetailRepository |
| | | { |
| | | public OutBSTOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_OutboundRepository |
| | | { |
| | | /// <summary> |
| | | /// BSTåºåºåä»å¨å®ç°å± |
| | | /// </summary> |
| | | public class OutBSTOrderRepository : RepositoryBase<Dt_OutBSTOrder>, IOutBSTOrderRepository |
| | | { |
| | | public OutBSTOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundRepository |
| | | { |
| | | /// <summary> |
| | | /// åºåºè¯¦æ
ä¿¡æ¯ä»å¨å®ç°å± |
| | | /// </summary> |
| | | public class OutStockLockInfoRepository : RepositoryBase<Dt_OutStockLockInfo>, IOutStockLockInfoRepository |
| | | { |
| | | public OutStockLockInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_OutboundRepository; |
| | | |
| | | namespace WIDESEA_OutboundService |
| | | { |
| | | public class OutBSTOrderDetailService : ServiceBase<Dt_OutBSTOrderDetail, IOutBSTOrderDetailRepository>, IOutBSTOrderDetailService |
| | | { |
| | | public IOutBSTOrderDetailRepository Repository => BaseDal; |
| | | private IOutBSTOrderRepository _outBSTOrderRepository; |
| | | private IBasicRepository _basicRepository; |
| | | private IStockService _stockService; |
| | | private IOutStockLockInfoService _outStockLockInfoService; |
| | | private IBasicService _basicService; |
| | | private ILocationStatusChangeRecordService _locationStatusChangeRecordService; |
| | | |
| | | public OutBSTOrderDetailService(IOutBSTOrderDetailRepository BaseDal, IOutBSTOrderRepository outBSTOrderRepository,IBasicRepository basicRepository, IStockService stockService, IOutStockLockInfoService outStockLockInfoService,IBasicService basicService, ILocationStatusChangeRecordService locationStatusChangeRecordService) : base(BaseDal) |
| | | { |
| | | _outBSTOrderRepository = outBSTOrderRepository; |
| | | _basicRepository = basicRepository; |
| | | _stockService = stockService; |
| | | _outStockLockInfoService = outStockLockInfoService; |
| | | _basicService = basicService; |
| | | _locationStatusChangeRecordService=locationStatusChangeRecordService; |
| | | } |
| | | /// <summary> |
| | | /// åé
åºå |
| | | /// </summary> |
| | | public (List<Dt_StockInfo>, List<Dt_OutBSTOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_OutBSTOrderDetail> outboundOrderDetails) |
| | | { |
| | | if (!outboundOrderDetails.Any()) |
| | | { |
| | | throw new Exception($"æªæ¾å°åºåºåæç»ä¿¡æ¯"); |
| | | } |
| | | |
| | | if (outboundOrderDetails.GroupBy(x => x.OutBSTOrderId).Count() > 1) |
| | | { |
| | | throw new Exception($"请å¿åæ¶æä½å¤ä¸ªåæ®æç»"); |
| | | } |
| | | //è·åæç¨ä¸»è¡¨ |
| | | Dt_OutBSTOrder outBSTOrder = _outBSTOrderRepository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OutBSTOrderId); |
| | | List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); |
| | | //对åºåºç©æè¿è¡åç» |
| | | List<Dt_OutBSTOrderDetail> groupDetails = outboundOrderDetails.GroupBy(x => new { x.MaterialId,x.Width }).Select(x => |
| | | new Dt_OutBSTOrderDetail { |
| | | XqLen = x.Sum(v => v.XqLen), |
| | | MaterialId = x.Key.MaterialId, |
| | | Width=x.Key.Width |
| | | } |
| | | ).ToList(); |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == outBSTOrder.WarehouseId); |
| | | //åºåºè¯¦æ
|
| | | List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); |
| | | //è´§ä½åå¨ |
| | | List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); |
| | | |
| | | foreach (var item in groupDetails) |
| | | { |
| | | decimal needQuantity = item.XqLen; |
| | | //è·åå¯ç¨åºå |
| | | List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(item.MaterialId,item.Width, outBSTOrder.WarehouseId); |
| | | if (!stockInfos.Any()) |
| | | { |
| | | throw new Exception($"æªæ¾å°å¯åé
åºå"); |
| | | } |
| | | //åé
å®é
åºå |
| | | List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, needQuantity).OrderBy(x => x.StockLength - x.StockOutLength).ToList(); |
| | | //æ·»å åºååé
|
| | | outStocks.AddRange(autoAssignStocks); |
| | | //è·åææè¯¥ç©æåæ® |
| | | List<Dt_OutBSTOrderDetail> details = outboundOrderDetails.Where(x => x.MaterialId == item.MaterialId).ToList(); |
| | | |
| | | for (int i = 0; i < details.Count; i++) |
| | | { |
| | | //è®¢åæ°é |
| | | decimal orderQuantity = details[i].XqLen; |
| | | |
| | | for (int j = 0; j < autoAssignStocks.Count; j++) |
| | | { |
| | | //åºåºè®¢åæç»å·²åé
æ°é |
| | | decimal detailAssignQuantity = outStockLockInfos.Where(x => x.OrderDetailId == details[i].Id).Sum(x => x.AssignQuantity); |
| | | |
| | | decimal orderDetailNeedQuantity = details[i].XqLen - detailAssignQuantity; |
| | | |
| | | decimal useStockLength = autoAssignStocks[j].StockLength; |
| | | |
| | | if (orderDetailNeedQuantity > useStockLength) |
| | | { |
| | | //çæè¯¦æ
|
| | | Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(outBSTOrder, details[i], autoAssignStocks[j], useStockLength); |
| | | outStockLockInfos.Add(outStockLockInfo); |
| | | details[i].AssignTotalUsage += useStockLength; |
| | | |
| | | } |
| | | else |
| | | { |
| | | //çæè¯¦æ
|
| | | Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(outBSTOrder, details[i], autoAssignStocks[j], orderDetailNeedQuantity); |
| | | outStockLockInfos.Add(outStockLockInfo); |
| | | details[i].AssignTotalUsage = orderQuantity; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | locationInfos.AddRange(_basicRepository.LocationInfoRepository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); |
| | | } |
| | | |
| | | return (outStocks, outboundOrderDetails, outStockLockInfos, locationInfos); |
| | | } |
| | | /// <summary> |
| | | /// åºåºåºååé
åï¼æ´æ°æ°æ®åºæ°æ® |
| | | /// </summary> |
| | | public WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_OutBSTOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null) |
| | | { |
| | | try |
| | | { |
| | | _stockService.StockInfoService.Repository.UpdateData(stockInfos); |
| | | BaseDal.UpdateData(outboundOrderDetails); |
| | | |
| | | List<Dt_OutStockLockInfo> addOutStockLockInfos = outStockLockInfos.Where(x => x.Id == 0).ToList(); |
| | | if (addOutStockLockInfos != null && addOutStockLockInfos.Any()) |
| | | { |
| | | if (tasks != null) |
| | | { |
| | | addOutStockLockInfos.ForEach(x => |
| | | { |
| | | x.TaskNum = tasks.FirstOrDefault(v => v.PalletCode == x.PalletCode)?.TaskNum; |
| | | }); |
| | | } |
| | | |
| | | _outStockLockInfoService.Repository.AddData(addOutStockLockInfos); |
| | | } |
| | | List<Dt_OutStockLockInfo> updateOutStockLockInfos = outStockLockInfos.Where(x => x.Id > 0).ToList(); |
| | | if (updateOutStockLockInfos != null && updateOutStockLockInfos.Any()) |
| | | { |
| | | _outStockLockInfoService.Repository.UpdateData(updateOutStockLockInfos); |
| | | } |
| | | //æ·»å è´§ä½ç¶æ |
| | | _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfos, locationStatus, LocationChangeType.OutboundAssignLocation, "", tasks?.Select(x => x.TaskNum).ToList()); |
| | | //æ¹éæ´æ°è´§ä½ç¶æ |
| | | _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, locationStatus); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using AutoMapper; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.MaterielEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_OutboundService |
| | | { |
| | | public class OutBSTOrderService : ServiceBase<Dt_OutBSTOrder, IOutBSTOrderRepository>, IOutBSTOrderService |
| | | { |
| | | public IOutBSTOrderRepository Repository => BaseDal; |
| | | private readonly IBasicRepository _basicRepository; |
| | | private readonly IMapper _mapper; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | |
| | | public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) |
| | | { |
| | | _basicRepository = basicRepository; |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | } |
| | | /// <summary> |
| | | /// æ·»å åºåºæç¨ä¿¡æ¯ |
| | | /// </summary> |
| | | public WebResponseContent AddOutBSTOrder(List<BSTOutOrderDTO> bSTOutOrderDTOs) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //è·åææåºåºå |
| | | List<Dt_OutBSTOrder> OldoutBSTOrders = BaseDal.Db.Queryable<Dt_OutBSTOrder>().Includes(x => x.Details).ToList(); |
| | | //æ°å¢ |
| | | List<BSTOutOrderDTO> outOrderDTOsAdd = bSTOutOrderDTOs.Where(x => x.Way == 1).ToList(); |
| | | //ä¿®æ¹ |
| | | List<BSTOutOrderDTO> outOrderDTOsUpdate = bSTOutOrderDTOs.Where(x => x.Way == 2).ToList(); |
| | | //å é¤ |
| | | List<BSTOutOrderDTO> outOrderDTOsDel = bSTOutOrderDTOs.Where(x => x.Way == 3).ToList(); |
| | | //è·åææç©æ |
| | | List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && x.MaterialSourceId != 0); |
| | | |
| | | List<Dt_OutBSTOrder> outBSTAddOrders = new List<Dt_OutBSTOrder>(); |
| | | List<Dt_OutBSTOrder> outBSTUpOrders = new List<Dt_OutBSTOrder>(); |
| | | List<Dt_OutBSTOrder> outBSTDelOrders = new List<Dt_OutBSTOrder>(); |
| | | //æ°å¢ |
| | | if (outOrderDTOsAdd.Count>0) |
| | | { |
| | | //夿忮 |
| | | Dt_OutBSTOrder? ExistAddOutOrder = OldoutBSTOrders.FirstOrDefault(x => outOrderDTOsAdd.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); |
| | | if (ExistAddOutOrder != null) |
| | | { |
| | | return content.Error($"åºåºæç¨Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{ExistAddOutOrder.BoardMpsId}å·²åå¨"); |
| | | } |
| | | List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList(); |
| | | //夿æ¯å¦åå¨ç©æ |
| | | BstBoardMpsDetailItem? bstBoardMpsDetailItem = bstBoardMpsDetailItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | if (bstBoardMpsDetailItem != null) |
| | | { |
| | | return content.Error($"ç产æç¨{nameof(bstBoardMpsDetailItem.BoardMpsId)}ç©æId:{bstBoardMpsDetailItem.MaterialId}ä¸åå¨"); |
| | | } |
| | | foreach (var item in outOrderDTOsAdd) |
| | | { |
| | | List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList(); |
| | | Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item); |
| | | outBSTOrder.Details=bSTOrderDetails; |
| | | outBSTAddOrders.Add(outBSTOrder); |
| | | } |
| | | } |
| | | //ä¿®æ¹ |
| | | if (outOrderDTOsUpdate.Count > 0) |
| | | { |
| | | List<Dt_OutBSTOrder>? ExistUpdateoutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList(); |
| | | //æ´æ°çåæ®æ¯å¦åå¨ |
| | | if (ExistUpdateoutBSTOrders.Count == outOrderDTOsUpdate.Count) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | | BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdateoutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); |
| | | return content.Error($"æªæ¾å°æå®ç产æç¨åId{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}"); |
| | | } |
| | | } |
| | | //å é¤ |
| | | if (outOrderDTOsDel.Count > 0) |
| | | { |
| | | List<Dt_OutBSTOrder>? ExistDeloutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsDel.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList(); |
| | | //æ´æ°çåæ®æ¯å¦åå¨ |
| | | if (ExistDeloutBSTOrders.Count == outOrderDTOsDel.Count) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | | BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsDel.FirstOrDefault(x => !ExistDeloutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); |
| | | return content.Error($"æªæ¾å°æå®ç产æç¨åId{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}"); |
| | | } |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(outBSTAddOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundService |
| | | { |
| | | public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService |
| | | { |
| | | |
| | | private readonly IStockService _stockService; |
| | | private readonly IRecordService _recordService; |
| | | |
| | | public IOutStockLockInfoRepository Repository => BaseDal; |
| | | public IUnitOfWorkManage _unitOfWorkManage; |
| | | |
| | | public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal, IStockService stockService, IRecordService recordService, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) |
| | | { |
| | | _recordService = recordService; |
| | | _stockService = stockService; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | } |
| | | |
| | | |
| | | public List<Dt_OutStockLockInfo> GetByOrderDetailId(string orderNo, int orderDetailId, OutLockStockStatusEnum? outStockStatus) |
| | | { |
| | | return BaseDal.QueryData(x =>x.OrderNo== orderNo && x.OrderDetailId == orderDetailId && outStockStatus == null ? true : x.Status == outStockStatus.ObjToInt()); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// çæåºåºè¯¦æ
|
| | | /// </summary> |
| | | public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutBSTOrder outBSTOrder, Dt_OutBSTOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null) |
| | | { |
| | | Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo() |
| | | { |
| | | PalletCode = outStock.PalletCode, |
| | | AssignQuantity = assignQuantity, |
| | | MaterielCode = outboundOrderDetail.MaterialNo, |
| | | BatchNo = "", |
| | | LocationCode = outStock.LocationCode, |
| | | MaterielName = outStock.MaterielName, |
| | | OrderDetailId = outboundOrderDetail.Id, |
| | | OrderNo = outBSTOrder.OutBSTOrderNo, |
| | | MaterielId = outStock.MaterielId, |
| | | OriginalQuantity = outStock.StockLength, |
| | | Status = taskNum == null ? OutLockStockStatusEnum.å·²åé
.ObjToInt() : OutLockStockStatusEnum.åºåºä¸.ObjToInt(), |
| | | StockId = outStock.Id, |
| | | TaskNum = taskNum, |
| | | OrderQuantity = outboundOrderDetail.XqLen, |
| | | Unit = outStock.Unit |
| | | }; |
| | | |
| | | return outStockLockInfo; |
| | | } |
| | | } |
| | | } |
| | |
| | | return Db.Queryable<Dt_StockInfo>().Where(x => x.MaterielCode == materielCode).ToList(); |
| | | } |
| | | |
| | | public List<Dt_StockInfo> GetStockInfos(string materielCode, string lotNo, List<string> locationCodes) |
| | | public List<Dt_StockInfo> GetStockInfos(int materielId,decimal width, List<string> locationCodes) |
| | | { |
| | | List<Dt_StockInfo> stockInfos = null; |
| | | if (!string.IsNullOrEmpty(lotNo)) |
| | | { |
| | | var stockSort = Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode) && x.MaterielCode == materielCode && x.BatchNo == lotNo).ToList(); |
| | | } |
| | | else |
| | | { |
| | | var stockSort = Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode) && x.MaterielCode == materielCode).ToList(); |
| | | } |
| | | |
| | | List<Dt_StockInfo> stockInfos = Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode) && x.MaterielId == materielId && x.MaterielWide==width && x.StockOutLength<=0).OrderBy(x=>x.CreateDate).ToList(); |
| | | return stockInfos; |
| | | } |
| | | |
| | |
| | | stockViewDTOs.ForEach(x => |
| | | { |
| | | x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct()); |
| | | x.ProductName = x.Details.FirstOrDefault()?.ProductName ?? ""; |
| | | x.ProductSpec = x.Details.FirstOrDefault()?.ProductSpec ?? ""; |
| | | x.ProductUnit = x.Details.FirstOrDefault()?.ProductUnit ?? ""; |
| | | } |
| | | ); |
| | | return new PageGridData<ProStockViewDTO>(totalCount + pktotalCount, stockViewDTOs.OrderByDescending(x=>x.CreateDate).ToList()); |
| | |
| | | stockViewDTOs.ForEach(x => |
| | | { |
| | | x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct()); |
| | | x.StockRemark = warehouses.FirstOrDefault(v => v.WarehouseId == x.WarehouseId).WarehouseName; |
| | | x.ProductName = x.Details.FirstOrDefault()?.ProductName ?? ""; |
| | | x.ProductSpec = x.Details.FirstOrDefault()?.ProductSpec ?? ""; |
| | | x.ProductUnit = x.Details.FirstOrDefault()?.ProductUnit ?? ""; |
| | | } |
| | | ); |
| | | |
| | |
| | | return content; |
| | | } |
| | | |
| | | public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, int warehoseId) |
| | | public List<Dt_StockInfo> GetUseableStocks(int materielId,decimal width, int warehoseId) |
| | | { |
| | | List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId); |
| | | |
| | | return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes); |
| | | return BaseDal.GetStockInfos(materielId,width, locationCodes); |
| | | } |
| | | |
| | | public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, string palletcode, int warehoseId) |
| | | /// <summary> |
| | | /// åé
å®é
åºå |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public List<Dt_StockInfo> GetOutboundStocks(List<Dt_StockInfo> stockInfos, decimal needQuantity) |
| | | { |
| | | Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletcode && x.WarehouseId == warehoseId).First(); |
| | | |
| | | List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(stockInfo.LocationCode); |
| | | |
| | | return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes); |
| | | List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); |
| | | //è·ååºåå¯ç¨æ°é |
| | | decimal stockTotalQuantity = stockInfos.Sum(x => x.StockLength-x.StockOutLength); |
| | | if (stockTotalQuantity >= needQuantity)//åºåå¤ |
| | | { |
| | | int index = 0; |
| | | while (needQuantity > 0) |
| | | { |
| | | Dt_StockInfo stockInfo = stockInfos[index]; |
| | | decimal useableStockQuantity = stockInfo.StockLength-stockInfo.StockOutLength; |
| | | if (useableStockQuantity < needQuantity && useableStockQuantity > 0) |
| | | { |
| | | stockInfo.StockOutLength=stockInfo.StockLength; |
| | | needQuantity -= useableStockQuantity; |
| | | } |
| | | else |
| | | { |
| | | stockInfo.StockOutLength += needQuantity; |
| | | needQuantity = 0; |
| | | } |
| | | outStocks.Add(stockInfo); |
| | | index++; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("åºåä¸è¶³"); |
| | | } |
| | | return outStocks; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | vueDictionaryDTOs.AddRange(selectDics); |
| | | } |
| | | |
| | | //object GetSourceData(string dicNo, string dbSql, object data) |
| | | //{ |
| | | // if (string.IsNullOrEmpty(dbSql)) |
| | | // { |
| | | // return data; |
| | | // } |
| | | // return BaseDal.QueryObjectDataBySql(dbSql, null); |
| | | //} |
| | | //List<VueDictionaryDTO> vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO |
| | | //{ |
| | | // DicNo = item.dicNo, |
| | | // Config = item.config, |
| | | // Data = GetSourceData(item.dicNo, item.dbSql, item.list) |
| | | //}).ToList(); |
| | | |
| | | try |
| | | { |
| | | List<string> dicList = dicNos.ToList(); |
| | |
| | | { |
| | | List<object> data = new List<object>(); |
| | | |
| | | //{ |
| | | // Type type = typeof(TaskTypeEnum); |
| | | // List<int> enums = Enum.GetValues(typeof(TaskTypeEnum)).Cast<int>().ToList(); |
| | | // int index = 0; |
| | | // foreach (var item in enums) |
| | | // { |
| | | // FieldInfo? fieldInfo = typeof(TaskTypeEnum).GetField(((TaskTypeEnum)item).ToString()); |
| | | // DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); |
| | | // if (description != null) |
| | | // { |
| | | // data.Add(new { key = item.ToString(), value = description.Description }); |
| | | // } |
| | | // else |
| | | // { |
| | | // data.Add(new { key = item.ToString(), value = item.ToString() }); |
| | | // } |
| | | // index++; |
| | | // } |
| | | //} |
| | | |
| | | result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; |
| | | } |
| | | break; |
| | |
| | | } |
| | | } |
| | | |
| | | //{ |
| | | // Type type = typeof(TaskStatusEnum); |
| | | // List<int> enums = Enum.GetValues(typeof(TaskStatusEnum)).Cast<int>().ToList(); |
| | | // int index = 0; |
| | | // foreach (var item in enums) |
| | | // { |
| | | // FieldInfo? fieldInfo = typeof(TaskStatusEnum).GetField(((TaskStatusEnum)item).ToString()); |
| | | // DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); |
| | | // if (description != null) |
| | | // { |
| | | // data.Add(new { key = item.ToString(), value = description.Description }); |
| | | // } |
| | | // else |
| | | // { |
| | | // data.Add(new { key = item.ToString(), value = item.ToString() }); |
| | | // } |
| | | // index++; |
| | | // } |
| | | //} |
| | | result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; |
| | | } |
| | | break; |
| | |
| | | result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; |
| | | } |
| | | break; |
| | | case "materielUnitEnum": |
| | | { |
| | | List<object> data = new List<object>(); |
| | | |
| | | { |
| | | Type type = typeof(MaterielUnitEnum); |
| | | List<string> enumNames = Enum.GetNames(typeof(MaterielUnitEnum)).ToList(); |
| | | int index = 0; |
| | | foreach (var item in enumNames) |
| | | { |
| | | FieldInfo? fieldInfo = typeof(MaterielUnitEnum).GetField((item).ToString()); |
| | | DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); |
| | | if (description != null) |
| | | { |
| | | data.Add(new { key = item.ToString(), value = description.Description }); |
| | | } |
| | | else |
| | | { |
| | | data.Add(new { key = item.ToString(), value = item.ToString() }); |
| | | } |
| | | index++; |
| | | } |
| | | } |
| | | |
| | | result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; |
| | | } |
| | | break; |
| | | case "agvStationAreaEnum": |
| | | { |
| | | List<object> data = new List<object>(); |
| | |
| | | using WIDESEA_External.Model; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_InboundRepository; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_IStockRepository; |
| | | using WIDESEA_IStockService; |
| | |
| | | private readonly IInvokeERPService _invokeERPService; |
| | | private readonly IPalletTypeInfoRepository _palletTypeInfoRepository; |
| | | private readonly IAGVStationInfoRepository _agvStationInfoRepository; |
| | | private readonly IPurchaseBSTOrderRepository _purchaseBSTOrderRepository; |
| | | private readonly IPurchaseBSTOrderDetailRepository _purchaseBSTOrderDetailRepository; |
| | | private readonly IOutBSTOrderDetailRepository _outBSTOrderDetailRepository; |
| | | private readonly IOutBSTOrderRepository _outBSTOrderRepository; |
| | | private readonly IOutBSTOrderDetailService _outBSTOrderDetailService; |
| | | public ITaskRepository Repository => BaseDal; |
| | | |
| | | private Dictionary<string, OrderByType> _taskOrderBy = new() |
| | |
| | | |
| | | public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 100 && x < 500).ToList(); |
| | | |
| | | public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IPalletTypeInfoRepository palletTypeInfoRepository, IAGVStationInfoRepository agvStationInfoRepository) : base(BaseDal) |
| | | public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IPalletTypeInfoRepository palletTypeInfoRepository, IAGVStationInfoRepository agvStationInfoRepository, IPurchaseBSTOrderRepository purchaseBSTOrderRepository, IPurchaseBSTOrderDetailRepository purchaseBSTOrderDetailRepository, IOutBSTOrderDetailRepository outBSTOrderDetailRepository, IOutBSTOrderRepository outBSTOrderRepository,IOutBSTOrderDetailService outBSTOrderDetailService) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | |
| | | _invokeERPService = invokeERPService; |
| | | _palletTypeInfoRepository = palletTypeInfoRepository; |
| | | _agvStationInfoRepository = agvStationInfoRepository; |
| | | _purchaseBSTOrderRepository = purchaseBSTOrderRepository; |
| | | _purchaseBSTOrderDetailRepository = purchaseBSTOrderDetailRepository; |
| | | _outBSTOrderRepository= outBSTOrderRepository; |
| | | _outBSTOrderDetailRepository= outBSTOrderDetailRepository; |
| | | _outBSTOrderDetailService= outBSTOrderDetailService; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_DTO.Task; |
| | | using WIDESEA_External.Model; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | |
| | | { |
| | | return content.Error($"æªæ¾å°ç»çä¿¡æ¯"); |
| | | } |
| | | if (stockInfo.StockStatus != StockStatusEmun.æå¨ç»çæå.ObjToInt()) |
| | | if (stockInfo.StockStatus != StockStatusEmun.æå¨ç»çæå.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.ç»çæå.ObjToInt()) |
| | | { |
| | | return content.Error($"该æçç¶æä¸æ£ç¡®,ä¸å¯ç³è¯·å
¥åº"); |
| | | } |
| | |
| | | { |
| | | stockInfo.StockStatus = StockStatusEmun.æå¨ç»çå
¥åºç¡®è®¤.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | stockInfo.StockStatus = StockStatusEmun.å
¥åºç¡®è®¤.ObjToInt(); |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | int taskId = BaseDal.AddData(newTask); |
| | | newTask.TaskId = taskId; |
| | |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | /// <summary> |
| | | /// åæè¯·æ±ç»ç |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent YLPurchaseBoxing(string palletCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StockInfo stockInfoOld = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode); |
| | | if (stockInfoOld != null && stockInfoOld.MaterielInvOrgId==MaterielInvOrgEnum.æ°å.ObjToInt()) |
| | | { |
| | | return content.OK($"æ°å临æ¶å
¥åº{stockInfoOld.PalletCode}"); |
| | | } |
| | | else if (stockInfoOld != null) |
| | | { |
| | | return content.Error($"æ¡ç {stockInfoOld.PalletCode}ä¿¡æ¯å·²åå¨"); |
| | | } |
| | | //è·åéè´ä¿¡æ¯ |
| | | Dt_PurchaseBSTOrderDetail purchaseBSTOrderDetail = _purchaseBSTOrderDetailRepository.QueryFirst(x=>x.Barcode== palletCode); |
| | | if (purchaseBSTOrderDetail == null) |
| | | { |
| | | return content.Error($"æªæ¾å°æ¡ç {palletCode}éè´ä¿¡æ¯"); |
| | | } |
| | | if (purchaseBSTOrderDetail.PurchaseBSTOrderDetailStatus!=InOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | return content.Error($"éè´{purchaseBSTOrderDetail.Barcode}ä¿¡æ¯å·²å
¥åºæå
¥åºä¸"); |
| | | } |
| | | else |
| | | { |
| | | purchaseBSTOrderDetail.PurchaseBSTOrderDetailStatus = InOrderStatusEnum.å
¥åºä¸.ObjToInt(); |
| | | } |
| | | //è·åéè´ä¸»å |
| | | Dt_PurchaseBSTOrder purchaseBSTOrder = _purchaseBSTOrderRepository.QueryFirst(x=>x.Id==purchaseBSTOrderDetail.PurchaseBSTOrderId); |
| | | //è·åç©æ |
| | | Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterialSourceId == purchaseBSTOrderDetail.MaterialId); |
| | | //çæåºåç»çä¿¡æ¯ |
| | | Dt_StockInfo stockInfo = new Dt_StockInfo() |
| | | { |
| | | MaterielInvOrgId = materielInfo.MaterielInvOrgId, |
| | | PalletCode = purchaseBSTOrderDetail.Barcode, |
| | | LocationCode = "", |
| | | PalletType = 1, |
| | | WarehouseId = materielInfo.WarehouseId, |
| | | StockAttribute = materielInfo.MaterielSourceType, |
| | | StockStatus = StockStatusEmun.ç»çæå.ObjToInt(), |
| | | MaterielSpec = materielInfo.MaterielSpec, |
| | | Unit = materielInfo.MaterielUnit, |
| | | MaterielThickness = purchaseBSTOrderDetail.MaterialThick, |
| | | MaterielWide = purchaseBSTOrderDetail.MaterialWide, |
| | | MaterielWeight = purchaseBSTOrderDetail.DeliveryQty, |
| | | MaterielCode = materielInfo.MaterielCode, |
| | | MaterielName = materielInfo.MaterielName, |
| | | StockLength= purchaseBSTOrderDetail.ProcurementLength, |
| | | MaterielId= purchaseBSTOrderDetail.MaterialId |
| | | }; |
| | | if (purchaseBSTOrderDetail.MaterialWide > 1200) |
| | | { |
| | | stockInfo.PalletType = 2; |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | //æ°å¢ç»çä¿¡æ¯ |
| | | _stockRepository.StockInfoRepository.AddData(stockInfo); |
| | | if (purchaseBSTOrder.PurchaseOrderStatus==InOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | purchaseBSTOrder.PurchaseOrderStatus = InOrderStatusEnum.å
¥åºä¸.ObjToInt(); |
| | | _purchaseBSTOrderRepository.UpdateData(purchaseBSTOrder); |
| | | } |
| | | _purchaseBSTOrderDetailRepository.UpdateData(purchaseBSTOrderDetail); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("è¯·æ±æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | |
| | | } |
| | | public string AssignYLRoadwayNo(string palletCode) |
| | | { |
| | |
| | | } |
| | | |
| | | string roadwayNo = ""; |
| | | //éå¶ç´å¾ |
| | | if (stockInfo.MaterielThickness > 800) |
| | | { |
| | | //è·ååé
|
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | if (stockInfo.MaterielWide > 2200) |
| | | { |
| | | locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo=="SC02_YL").GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | } |
| | | List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && locationCounts.Select(j => j.RoadwayNo).Contains(x.Roadway) |
| | | && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | foreach (var item in locationCounts) |
| | | { |
| | | LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo); |
| | | if (count != null) |
| | | { |
| | | item.Count -= count.Count; |
| | | } |
| | | } |
| | | roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | } |
| | | return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("æªæ¾å°å¯åé
å··é"); |
| | | } |
| | |
| | | /// </summary> |
| | | public WebResponseContent InboundTaskCompleted(Dt_Task task) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); |
| | |
| | | Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); |
| | | if (locationInfoEnd == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºçç»ç¹è´§ä½ä¿¡æ¯"); |
| | | return content.Error($"æªæ¾å°å¯¹åºçç»ç¹è´§ä½ä¿¡æ¯"); |
| | | } |
| | | Dt_AGVStationInfo agvstation = _agvStationInfoRepository.QueryFirst(x => x.AGVStationCode == task.SourceAddress && ( x.StationArea == AGVStationAreaEnum.AreaA.ObjToInt() || x.StationArea == AGVStationAreaEnum.AreaC.ObjToInt())); |
| | | if (agvstation != null) |
| | |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºåºåä¿¡æ¯"); |
| | | return content.Error($"æªæ¾å°å¯¹åºåºåä¿¡æ¯"); |
| | | } |
| | | } |
| | | else//åæåºå®æ |
| | | { |
| | | //è·ååºå |
| | | Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | if (stockInfo == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºåºåä¿¡æ¯"); |
| | | return content.Error($"æªæ¾å°å¯¹åºåºåä¿¡æ¯"); |
| | | } |
| | | //è·åè´§ä½ä¿¡æ¯ |
| | | Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); |
| | | if (locationInfoEnd == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºçç»ç¹è´§ä½ä¿¡æ¯"); |
| | | return content.Error($"æªæ¾å°å¯¹åºçç»ç¹è´§ä½ä¿¡æ¯"); |
| | | } |
| | | |
| | | //æ´æ°ç¶æ |
| | | task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); |
| | | _unitOfWorkManage.BeginTran(); |
| | | if (task.TaskType == TaskTypeEnum.InPick.ObjToInt()) |
| | |
| | | _stockService.StockInfoService.Repository.UpdateData(stockInfo); |
| | | _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.äººå·¥å®æ : WIDESEA_Core.Enums.OperateTypeEnum.èªå¨å®æ); |
| | | //if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.èå.ObjToInt()) |
| | | //{ |
| | | // int Qty = Convert.ToInt32(stockInfo.MaterielWeight); |
| | | // BSTPurchaseUpModel bSTPurchaseUpModel = new BSTPurchaseUpModel() |
| | | // { |
| | | // Barcode = stockInfo.PalletCode, |
| | | // BarcodeQty = Qty, |
| | | // Rfid = stockInfo.PalletCode |
| | | // }; |
| | | // BSTResponse bSTResponse = _invokeERPService.BSTPurchaseUp(bSTPurchaseUpModel).DeserializeObject<BSTResponse>(); |
| | | // if (bSTResponse.Code==500) |
| | | // { |
| | | // throw new Exception($"BST䏿ERP忥å
¥åºä¿¡æ¯å¤±è´¥,é误信æ¯{bSTResponse.Msg}"); |
| | | // } |
| | | //} |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | return content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | /// <summary> |
| | | /// åé
æåå··é |
| | |
| | | } |
| | | return content; |
| | | } |
| | | private readonly static object _lockerFL = new object(); |
| | | private readonly static object _lockerFLorCP = new object(); |
| | | /// <summary> |
| | | /// è¾
æå
¥åº |
| | | /// è¾
ææåå
¥åº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent InboundFLTask(string barCode, string startPoint,string matCode,int matCount) |
| | | public WebResponseContent InboundFLOrCPTask(string barCode, string startPoint,string matCode,int matCount) |
| | | { |
| | | lock (_lockerFL) |
| | | lock (_lockerFLorCP) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | |
| | | //{ |
| | | // return content.Error($"æ¡ç æ ¼å¼é误{barCode}"); |
| | | //} |
| | | Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == matCode && x.MaterielInvOrgId == MaterielInvOrgEnum.æ°å.ObjToInt() && x.MaterielSourceType == MaterielTypeEnum.è¾
æå¤ä»¶.ObjToInt()); |
| | | Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == matCode && x.MaterielInvOrgId == MaterielInvOrgEnum.æ°å.ObjToInt() && x.WarehouseId==WarehouseEnum.LLDCP.ObjToInt()); |
| | | if (materielInfo == null) |
| | | { |
| | | return content.Error($"æªæ¾å°ç©æä¿¡æ¯{matCode}"); |
| | |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.LLDCP.ToString()); |
| | | Dt_ProStockInfoDetail proStockInfoDetail = new Dt_ProStockInfoDetail() |
| | | { |
| | | ProductCode = matCode, |
| | | ProductCode = materielInfo.MaterielCode, |
| | | ProductName= materielInfo.MaterielName, |
| | | ProductSpec=materielInfo.MaterielSpec, |
| | | ProductUnit=materielInfo.MaterielUnit, |
| | | StockQty = matCount, |
| | | ProStockDetailStatus = StockStatusEmun.æå¨ç»çå
¥åºç¡®è®¤.ObjToInt() |
| | | }; |
| | | Dt_ProStockInfo proStockInfo = new Dt_ProStockInfo() |
| | | { |
| | | PalletCode = barCode, |
| | | ProStockAttribute = ProStockAttributeEnum.è¾
æå¤ä»¶.ObjToInt(), |
| | | ProStockAttribute = materielInfo.MaterielSourceType, |
| | | PalletType = 1, |
| | | LocationCode = "", |
| | | WarehouseId = warehouse.WarehouseId, |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºçèµ·ç¹è´§ä½ä¿¡æ¯"); |
| | | } |
| | | Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x=>x.proStockInfoDetails).First(); |
| | | if (proStockInfo != null && proStockInfo.StockStatus==StockStatusEmun.åºåºéå®.ObjToInt()) |
| | | { |
| | | task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); |
| | | _unitOfWorkManage.BeginTran(); |
| | | proStockInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | proStockInfo.StockStatus = StockStatusEmun.åºåºå®æ.ObjToInt(); |
| | | _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfo,App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.äººå·¥å®æ : WIDESEA_Core.Enums.OperateTypeEnum.èªå¨å®æ); |
| | | if (proStockInfo.proStockInfoDetails!=null && proStockInfo.proStockInfoDetails.Count>0) |
| | | { |
| | | _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(proStockInfo.proStockInfoDetails, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.äººå·¥å®æ : WIDESEA_Core.Enums.OperateTypeEnum.èªå¨å®æ); |
| | | } |
| | | _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.äººå·¥å®æ : WIDESEA_Core.Enums.OperateTypeEnum.èªå¨å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | |
| | | PalletType = stockInfo.PalletType, |
| | | WarehouseId = stockInfo.WarehouseId, |
| | | MaterielCode = stockInfo.MaterielCode, |
| | | Quantity = 0, |
| | | Quantity = stockInfo.StockLength, |
| | | }; |
| | | if (stockInfo.MaterielWide>0) |
| | | { |
| | |
| | | { |
| | | return content.Error($"å¯ç¨ç¼åæ°ä¸è¶³"); |
| | | } |
| | | List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.空æ.ObjToInt() && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList(); |
| | | List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.æå.ObjToInt() && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList(); |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); |
| | | if (stockInfos.Count < Count) |
| | | { |
| | |
| | | { |
| | | return content.Error($"å¯ç¨ç¼åæ°ä¸è¶³"); |
| | | } |
| | | List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.空æ.ObjToInt() && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList(); |
| | | List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.è¾
æå¤ä»¶.ObjToInt() && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList(); |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); |
| | | if (stockInfos.Count < Count) |
| | | { |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | //è·åè´§ä½ |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()); |
| | | //è·å对åºåºå |
| | | List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.QueryData(x=>x.MaterielCode==materielCode && x.MaterielWide== materielWide && x.StockStatus==StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList(); |
| | | |
| | | List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.QueryData(x=> locationInfos.Select(x=>x.LocationCode).Contains(x.LocationCode) && x.MaterielCode==materielCode && x.MaterielWide== materielWide && x.StockStatus==StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList(); |
| | | if (stockInfos.Count< Count) |
| | | { |
| | | return content.Error($"åºå{materielCode}æ°éä¸è¶³"); |
| | | } |
| | | //è·åè´§ä½ |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); |
| | | List<Dt_LocationInfo> AssignLocations =new List<Dt_LocationInfo>(); |
| | | foreach (var item in stockInfos) |
| | | { |
| | | Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x=>x.LocationCode==item.LocationCode); |
| | | if (locationInfo!=null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | if (locationInfo!=null) |
| | | { |
| | | AssignLocations.Add(locationInfo); |
| | | item.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"è´§ä½ç¶æä¸æ£ç¡®"); |
| | | } |
| | | } |
| | | TaskTypeEnum taskTypeEnum = new(); |
| | |
| | | //æ´æ°åºåç¶æ |
| | | _stockRepository.StockInfoRepository.UpdateData(stockInfos); |
| | | //æ´æ°è´§ä½ç¶æ |
| | | _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock); |
| | | _basicRepository.LocationInfoRepository.UpdateLocationStatus(AssignLocations, LocationStatusEnum.Lock); |
| | | //å å
¥è´§ä½åå¨è®°å½ |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation,taskNums:tasks.Select(x=>x.TaskNum).ToList()); |
| | | |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(AssignLocations, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation,taskNums:tasks.Select(x=>x.TaskNum).ToList()); |
| | | //æ°å»ºä»»å¡ |
| | | BaseDal.AddData(tasks); |
| | | _unitOfWorkManage.CommitTran(); |
| | |
| | | } |
| | | return content; |
| | | } |
| | | /// <summary> |
| | | /// å建å纸ç产æç¨åºåºä»»å¡ |
| | | /// </summary> |
| | | /// <param name="keys"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent CreateBSTOutboundTasks(int[] keys) |
| | | { |
| | | WebResponseContent content=new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>(); |
| | | List<Dt_OutBSTOrderDetail> outBSTOrderDetails = new List<Dt_OutBSTOrderDetail>(); |
| | | List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); |
| | | List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); |
| | | |
| | | (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutBSTOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutboundTaskDataHandle(keys); |
| | | if (result.Item2 != null && result.Item2.Count > 0) |
| | | { |
| | | stockInfos.AddRange(result.Item2); |
| | | } |
| | | if (result.Item3 != null && result.Item3.Count > 0) |
| | | { |
| | | outBSTOrderDetails.AddRange(result.Item3); |
| | | } |
| | | if (result.Item4 != null && result.Item4.Count > 0) |
| | | { |
| | | outStockLockInfos.AddRange(result.Item4); |
| | | } |
| | | if (result.Item5 != null && result.Item5.Count > 0) |
| | | { |
| | | locationInfos.AddRange(result.Item5); |
| | | } |
| | | if (result.Item1 != null && result.Item1.Count > 0) |
| | | { |
| | | tasks.AddRange(result.Item1); |
| | | } |
| | | |
| | | return GenerateOutboundTaskDataUpdate(tasks, stockInfos, outBSTOrderDetails, outStockLockInfos, locationInfos); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºåºä»»å¡æ°æ®å¤ç |
| | | /// </summary> |
| | | /// <param name="orderDetailId"></param> |
| | | /// <param name="stockSelectViews"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="Exception"></exception> |
| | | public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutBSTOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) OutboundTaskDataHandle(int[] keys) |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_OutBSTOrderDetail> outboundOrderDetails = _outBSTOrderDetailRepository.QueryData(x => keys.Contains(x.Id)); |
| | | |
| | | if (outboundOrderDetails == null || outboundOrderDetails.Count == 0) |
| | | { |
| | | throw new Exception("æªæ¾å°åºåºåæç»ä¿¡æ¯"); |
| | | } |
| | | Dt_OutBSTOrderDetail? outBSTOrderDetail = outboundOrderDetails.FirstOrDefault(x => x.OutBSTOrderDetailStatus != OutOrderStatusEnum.æªå¼å§.ObjToInt()); |
| | | if (outBSTOrderDetail!=null) |
| | | { |
| | | throw new Exception($"åºåºæç»ç©æ{outBSTOrderDetail.MaterialNo},åºåºä¸æå·²å®æ"); |
| | | } |
| | | List<Dt_StockInfo>? stockInfos = null; |
| | | List<Dt_OutBSTOrderDetail>? orderDetails = null; |
| | | List<Dt_OutStockLockInfo>? outStockLockInfos = null; |
| | | List<Dt_LocationInfo>? locationInfos = null; |
| | | |
| | | //åé
åºå |
| | | (List<Dt_StockInfo>, List<Dt_OutBSTOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outBSTOrderDetailService.AssignStockOutbound(outboundOrderDetails); |
| | | if (result.Item1 != null && result.Item1.Count > 0) |
| | | { |
| | | Dt_OutBSTOrder outBSTOrder = _outBSTOrderRepository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OutBSTOrderId); |
| | | //è·åä»»å¡ |
| | | tasks = GetTasks(result.Item1, TaskTypeEnum.OldYLOutbound); |
| | | tasks.ForEach(x => |
| | | { |
| | | x.OrderNo = outBSTOrder.BoardMpsNo; |
| | | }); |
| | | result.Item2.ForEach(x => |
| | | { |
| | | x.OutBSTOrderDetailStatus = OutOrderStatusEnum.åºåºä¸.ObjToInt(); |
| | | }); |
| | | result.Item3.ForEach(x => |
| | | { |
| | | x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); |
| | | }); |
| | | |
| | | stockInfos = result.Item1; |
| | | orderDetails = result.Item2; |
| | | outStockLockInfos = result.Item3; |
| | | locationInfos = result.Item4; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("æ åºå"); |
| | | } |
| | | |
| | | return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// çæåºåºä»»å¡åæ°æ®æ´æ°å°æ°æ®åº |
| | | /// </summary> |
| | | public WebResponseContent GenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_OutBSTOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null) |
| | | { |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | BaseDal.AddData(tasks); |
| | | if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) |
| | | { |
| | | stockInfos.ForEach(x => |
| | | { |
| | | x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | }); |
| | | outboundOrderDetails.ForEach(x => |
| | | { |
| | | x.OutBSTOrderDetailStatus = OutOrderStatusEnum.åºåºä¸.ObjToInt(); |
| | | }); |
| | | Dt_OutBSTOrder outBSTOrder = _outBSTOrderRepository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OutBSTOrderId); |
| | | if (outBSTOrder.OutBSTOrderStatus == OutOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | outBSTOrder.OutBSTOrderStatus = OutOrderStatusEnum.åºåºä¸.ObjToInt(); |
| | | _outBSTOrderRepository.UpdateData(outBSTOrder); |
| | | } |
| | | WebResponseContent content = _outBSTOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); |
| | | if (!content.Status) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content; |
| | | } |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | PushTasksToWCS(tasks); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | using static WIDESEA_DTO.ErpResponseContent; |
| | | |
| | |
| | | private readonly IBasicService _basicService; |
| | | private readonly IInvokeERPService _invokeERPService; |
| | | private readonly IPurchaseBSTOrderService _purchaseBSTOrderService; |
| | | private readonly IOutBSTOrderService _outBSTOrderService; |
| | | |
| | | public ErpBSTController(IBasicService basicService, IInvokeERPService invokeERPService,IPurchaseBSTOrderService purchaseBSTOrderService) |
| | | public ErpBSTController(IBasicService basicService, IInvokeERPService invokeERPService,IPurchaseBSTOrderService purchaseBSTOrderService,IOutBSTOrderService outBSTOrderService) |
| | | { |
| | | _basicService = basicService; |
| | | _invokeERPService = invokeERPService; |
| | | _purchaseBSTOrderService = purchaseBSTOrderService; |
| | | _outBSTOrderService = outBSTOrderService; |
| | | } |
| | | /// <summary> |
| | | /// æ·»å èåç©æ |
| | |
| | | { |
| | | return _purchaseBSTOrderService.AddPurchaseBSTOrder(bSTPurchaseOrderDTOs); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å åºåºæç¨ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveOutOrder"), AllowAnonymous] |
| | | public WebResponseContent AddOutBSTOrder([FromBody] List<BSTOutOrderDTO> bSTOutOrderDTOs) |
| | | { |
| | | return _outBSTOrderService.AddOutBSTOrder(bSTOutOrderDTOs); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Outbound |
| | | { |
| | | /// <summary> |
| | | /// BSTç产æç¨å |
| | | /// </summary> |
| | | [Route("api/OutBSTOrder")] |
| | | [ApiController] |
| | | public class OutBSTOrderController : ApiBaseController<IOutBSTOrderService, Dt_OutBSTOrder> |
| | | { |
| | | public OutBSTOrderController(IOutBSTOrderService service) : base(service) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Outbound |
| | | { |
| | | /// <summary> |
| | | /// BSTç产æç¨æç» |
| | | /// </summary> |
| | | [Route("api/OutBSTOrderDetail")] |
| | | [ApiController] |
| | | public class OutBSTOrderDetailController : ApiBaseController<IOutBSTOrderDetailService, Dt_OutBSTOrderDetail> |
| | | { |
| | | public OutBSTOrderDetailController(IOutBSTOrderDetailService service) : base(service) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Outbound |
| | | { |
| | | /// <summary> |
| | | /// åºåºè¯¦æ
|
| | | /// </summary> |
| | | [Route("api/OutStockLockInfo")] |
| | | [ApiController] |
| | | public class OutStockLockInfoController : ApiBaseController<IOutStockLockInfoService, Dt_OutStockLockInfo> |
| | | { |
| | | public OutStockLockInfoController(IOutStockLockInfoService service) : base(service) |
| | | { |
| | | } |
| | | /// <summary> |
| | | /// è·ååºåºè¯¦æ
|
| | | /// </summary> |
| | | [HttpPost, HttpGet, Route("GetByOrderDetailId"), AllowAnonymous] |
| | | public List<Dt_OutStockLockInfo> GetByOrderDetailId(string orderNo,int orderDetailId) |
| | | { |
| | | return Service.GetByOrderDetailId(orderNo,orderDetailId, null); |
| | | } |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("InboundFLTask"), AllowAnonymous] |
| | | public WebResponseContent InboundFLTask(string barCode, string startPoint, string matCode, int matCount) |
| | | public WebResponseContent InboundFLOrCPTask(string barCode, string startPoint, string matCode, int matCount) |
| | | { |
| | | return Service.InboundFLTask(barCode, startPoint, matCode, matCount); |
| | | return Service.InboundFLOrCPTask(barCode, startPoint, matCode, matCount); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return Service.RequestYLWMSTaskSimple(stationCode,palletCode); |
| | | } |
| | | /// <summary> |
| | | /// åæå
¥åºç³è¯· |
| | | /// </summary> |
| | | /// <param name="palletCode">æ¡ç </param> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("YLPurchaseBoxing"), AllowAnonymous] |
| | | public WebResponseContent YLPurchaseBoxing(string palletCode) |
| | | { |
| | | return Service.YLPurchaseBoxing(palletCode); |
| | | } |
| | | /// <summary> |
| | | /// åé
åæå
¥åºå··é |
| | | /// </summary> |
| | | /// <param name="palletCode"></param> |
| | |
| | | /// </summary> |
| | | /// <param name="materielCode">ç©æä»£ç </param> |
| | | /// <param name="materielWide">ç©æå¹
宽</param> |
| | | /// <param name="Count">å·æ°</param> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("RequestYLWMSTaskOut"), AllowAnonymous] |
| | | public WebResponseContent RequestYLWMSTaskOut(string materielCode,int materielWide, int count,string address="") |
| | |
| | | { |
| | | return Service.PrintInbound(saveModel); |
| | | } |
| | | /// <summary> |
| | | /// å建å纸ç产æç¨åºåºä»»å¡ |
| | | /// </summary> |
| | | /// <param name="saveModel"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("CreateBSTOutboundTasks"), AllowAnonymous] |
| | | public WebResponseContent CreateBSTOutboundTasks([FromBody] int[] keys) |
| | | { |
| | | return Service.CreateBSTOutboundTasks(keys); |
| | | } |
| | | } |
| | | } |
| | |
| | | CreateMap<Sys_Menu, MenuDTO>(); |
| | | CreateMap<Dt_Task, WMSTaskDTO>(); |
| | | //ç©æå®ä½BSTè½¬æ¢ |
| | | CreateMap<BSTMaterialDTO, Dt_MaterielInfo>().ForMember(x => x.MaterialSourceId, b => b.MapFrom(b => b.MaterialId)).ForMember(x => x.WarehouseId, b => b.MapFrom(b => WarehouseEnum.LLDYL.ObjToInt())).ForMember(x => x.MaterielCode, b => b.MapFrom(b => b.MaterialNo)).ForMember(x => x.MaterielName, b => b.MapFrom(b => b.Name)).ForMember(x => x.MaterielSourceType, b => b.MapFrom(b => b.MaterielType)).ForMember(x => x.MaterielInvOrgId, b => b.MapFrom(b => b.InvOrgId)).ForMember(x => x.MaterielUnit, b => b.MapFrom(b => b.Unit)).ForMember(x => x.MaterielUnit, b => b.MapFrom(b => b.Unit)).ForMember(x => x.MaterielState, b => b.MapFrom(b => b.State)).ForMember(x => x.IsCheck, b => b.MapFrom(b => WhetherEnum.True.ObjToInt())).ForMember(x => x.MaterielSpec, b => b.MapFrom(b => b.Spec)).ForMember(x => x.MaterielWeight, b => b.MapFrom(b => b.Weight)); |
| | | CreateMap<BSTMaterialDTO, Dt_MaterielInfo>().ForMember(x => x.MaterialSourceId, b => b.MapFrom(b => b.MaterialId)).ForMember(x => x.WarehouseId, b => b.MapFrom(b => WarehouseEnum.LLDYL.ObjToInt())).ForMember(x => x.MaterielCode, b => b.MapFrom(b => b.MaterialNo)).ForMember(x => x.MaterielName, b => b.MapFrom(b => b.Name)).ForMember(x => x.MaterielSourceType, b => b.MapFrom(b => b.MaterielType)).ForMember(x => x.MaterielInvOrgId, b => b.MapFrom(b => b.InvOrgId)).ForMember(x => x.MaterielUnit, b => b.MapFrom(b => b.Unit)).ForMember(x => x.MaterielUnit, b => b.MapFrom(b => b.Unit)).ForMember(x => x.MaterielState, b => b.MapFrom(b => b.Status)).ForMember(x => x.IsCheck, b => b.MapFrom(b => WhetherEnum.False.ObjToInt())).ForMember(x => x.MaterielSpec, b => b.MapFrom(b => b.Spec)).ForMember(x => x.MaterielWeight, b => b.MapFrom(b => b.Weight)); |
| | | //ç©æå®ä½è½¬æ¢ |
| | | CreateMap<BSTSupplierDTO, Dt_SupplierInfo>().ForMember(x => x.SupplierSourceId, b => b.MapFrom(b => b.VendId)).ForMember(x => x.SupplierCode, b => b.MapFrom(b => b.VendNo)).ForMember(x => x.SupplierName, b => b.MapFrom(b => b.ShortName)).ForMember(x => x.SupplierShortName, b => b.MapFrom(b => b.ShortName)).ForMember(x => x.Contacts, b => b.MapFrom(b => b.BusinessContact)).ForMember(x => x.ContactNumber, b => b.MapFrom(b => b.Tel)).ForMember(x => x.ContactAddress, b => b.MapFrom(b => b.Address)).ForMember(x => x.InvOrgId, b => b.MapFrom(b => MaterielInvOrgEnum.èå.ObjToInt())); |
| | | //éè´å®ä½è½¬æ¢ |
| | | CreateMap<BSTPurchaseOrderDTO, Dt_PurchaseBSTOrder>().ForMember(x => x.ReceiptDate, b => b.MapFrom(b => DateTimeOffset.FromUnixTimeMilliseconds(b.ReceiptDate).DateTime)); |
| | | CreateMap<PaperReceiptDetailsItem, Dt_PurchaseBSTOrderDetail>().ForMember(x => x.MaterialWide, b => b.MapFrom(b => b.W)).ForMember(x => x.MaterialThick, b => b.MapFrom(b => b.Thick)).ForMember(x => x.PurchaseBSTOrderDetailStatus, b => b.MapFrom(b => InOrderStatusEnum.æªå¼å§.ObjToInt())); |
| | | //BSTåºåºæç¨å®ä½è½¬æ¢ |
| | | CreateMap<BSTOutOrderDTO, Dt_OutBSTOrder>().ForMember(x => x.OutBSTOrderStatus, b => b.MapFrom(b => OutOrderStatusEnum.æªå¼å§.ObjToInt())).ForMember(x => x.ProductionDate, b => b.MapFrom(b => DateTimeOffset.FromUnixTimeMilliseconds(b.ProductionDate).DateTime)).ForMember(x => x.WarehouseId, b => b.MapFrom(b => WarehouseEnum.LLDYL.ObjToInt())); |
| | | CreateMap<BstBoardMpsDetailItem, Dt_OutBSTOrderDetail>().ForMember(x => x.OutBSTOrderDetailStatus, b => b.MapFrom(b => OutOrderStatusEnum.æªå¼å§.ObjToInt())); |
| | | } |
| | | } |
| | | } |
| | |
| | | builder.Services.AddWebSocketSetup(); |
| | | builder.Services.AddSqlsugarSetup();//SqlSugar å¯å¨æå¡ |
| | | builder.Services.AddDbSetup();//Db å¯å¨æå¡ |
| | | builder.Services.AddInitializationHostServiceSetup();//åºç¨åå§åæå¡æ³¨å
¥ |
| | | //builder.Services.AddInitializationHostServiceSetup();//åºç¨åå§åæå¡æ³¨å
¥ |
| | | builder.Services.AddHostedService<PermissionDataHostService>();//åºç¨åå§åæå¡æ³¨å
¥ |
| | | builder.Services.AddAutoMapperSetup(); |
| | | |
| | |
| | | |
| | | <ItemGroup> |
| | | <Folder Include="Controllers\Check\" /> |
| | | <Folder Include="Controllers\Outbound\" /> |
| | | <Folder Include="Log\" /> |
| | | </ItemGroup> |
| | | </Project> |
| | |
| | | "Microsoft.AspNetCore": "Warning" |
| | | } |
| | | }, |
| | | "dics": "materielInvOrgEnum,agvStationAreaEnum,inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,receiveOrderTypeEnum,authorityScope,authorityScopes,locationChangeType,warehouses,suppliers,taskType,receiveStatus,purchaseType,purchaseOrderStatus,printStatus,returnStatus,returnType,outLockStockStatusEnum,checkOrderStatusEnum,checkUploadEnum,checkAcceptEnum,proStockAttributeEnum,materielSourceTypeEnum,materielTypeEnum", |
| | | "dics": "materielInvOrgEnum,agvStationAreaEnum,inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,receiveOrderTypeEnum,authorityScope,authorityScopes,locationChangeType,warehouses,suppliers,taskType,receiveStatus,purchaseType,purchaseOrderStatus,printStatus,returnStatus,returnType,outLockStockStatusEnum,checkOrderStatusEnum,checkUploadEnum,checkAcceptEnum,proStockAttributeEnum,materielSourceTypeEnum,materielTypeEnum,materielUnitEnum", |
| | | "AllowedHosts": "*", |
| | | "ConnectionStringsEncryption": false, |
| | | "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿
须为true |