Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
# Conflicts:
# 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs
# 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
| | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | }, |
| | | 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) |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | // if (Array.isArray(result)) { |
| | | // result.forEach(item => { |
| | | // if (item.hasOwnProperty('isCheck')) { |
| | | // item.isCheck = item.isCheck === 'True' ? 'æ¯' : 'å¦'; |
| | | // } |
| | | // if (item.hasOwnProperty('materielState')) { |
| | | // item.materielState = item.materielState === 'Enable' ? 'å¯ç¨' : 'ç¦ç¨' |
| | | // } |
| | | // }); |
| | | // } |
| | | return result; |
| | | |
| | | }, |
| | | 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) |
| | | let isAdd = this.currentAction == 'Add' |
| | | if (isAdd) { |
| | | this.editFormFields.materielInvOrgId = 'æ·®å®ç¹åäºå' |
| | | } |
| | | } |
| | | }; |
| | | export default extension; |
| | | |
| | | } |
| | | }; |
| | | export default extension; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | |
| | | }, |
| | | 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: '/outStockLockInfo', |
| | | name: 'outStockLockInfo', |
| | | component: () => import('@/views/outbound/outStockLockInfo.vue') |
| | | }, |
| | | { |
| | | path: '/materielnfoStatistics', |
| | | name: 'materielnfoStatistics', |
| | | component: () => import('@/views/stock/materielnfoStatistics.vue') |
| | | },{ |
| | | path: '/stockInfo', |
| | | name: 'stockInfo', |
| | |
| | | [ |
| | | { |
| | | title: "ä»åº", |
| | | required: true, |
| | | field: "warehouseId", |
| | | type: "string", |
| | | type: "select", |
| | | dataKey: "warehouses", |
| | | data: [], |
| | | required: true, |
| | | }, |
| | | { |
| | | title: "ç©æç¼å·", |
| | |
| | | field: "materielCode", |
| | | type: "string", |
| | | }, |
| | | { |
| | | ], |
| | | [ |
| | | { |
| | | title: "ç©æåç§°", |
| | | required: true, |
| | | field: "materielName", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "计éåä½", |
| | | title: "ç©æè§æ ¼", |
| | | required: true, |
| | | field: "unit", |
| | | field: "materielSpec", |
| | | type: "string", |
| | | }, |
| | | ], |
| | | [ |
| | | |
| | | { |
| | | title: "ç©ææè¿°", |
| | | field: "materielDes", |
| | | type: "textarea", |
| | | { |
| | | title: "ç©æåºæ¬åç±»", |
| | | required: true, |
| | | field: "materielType", |
| | | type: "select", |
| | | dataKey:"materielTypeEnum", |
| | | data:[] |
| | | |
| | | }, |
| | | { |
| | | field: "materielSourceType", |
| | | title: "ç©æå±æ§åç±»", |
| | | required: true, |
| | | type: "select", |
| | | dataKey:"materielSourceTypeEnum", |
| | | data:[] |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "åºæ¬åä½", |
| | | required: true, |
| | | field: "materielUnit", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "ç©æç¶æ", |
| | | required: true, |
| | | field: "materielState", |
| | | type: "select", |
| | | dataKey:"enableEnum", |
| | | data:[] |
| | | }, |
| | | |
| | | ], |
| | | [ |
| | | { |
| | | title: "åºåç»ç»", |
| | | required: true, |
| | | field: "materielInvOrgId", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "æ¯å¦éè¦è´¨æ£", |
| | | required: true, |
| | | field: "isCheck", |
| | | type: "select", |
| | | dataKey:"yesno", |
| | | data:[] |
| | | }, |
| | | ] |
| | | |
| | | ]); |
| | | const searchFormFields = ref({ |
| | | materielCode: "", |
| | |
| | | [ |
| | | { title: "ç©æç¼å·", field: "materielCode", type: "like" }, |
| | | { title: "ç©æåç§°", field: "materielName", type: "like" }, |
| | | {title: "æå±ä»åº", field:"warehouseId",type:"select",dataKey:"warehouses",data:[]} |
| | | ], |
| | | ]); |
| | | const columns = ref([ |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielDes", |
| | | title: "ç©ææè¿°", |
| | | type: "decimal", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "cotainerType", |
| | | title: "容å¨ç±»å", |
| | | field: "materielSpec", |
| | | title: "ç©æè§æ ¼", |
| | | type: "string", |
| | | width: 90, |
| | | width: 240, |
| | | align: "left", |
| | | hidden:true |
| | | }, |
| | | { |
| | | field: "packspes", |
| | | title: "å
è£
è§æ ¼", |
| | | type: "int", |
| | | field: "materielSourceType", |
| | | title: "ç©æå±æ§åç±»", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | hidden:true |
| | | bind: { key: "materielSourceTypeEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "attribute", |
| | | title: "ç©æå±æ§", |
| | | field: "materielType", |
| | | title: "ç©æåºæ¬åç±»", |
| | | type: "string", |
| | | width: 200, |
| | | width: 120, |
| | | align: "left", |
| | | hidden:true |
| | | |
| | | }, |
| | | { |
| | | field: "unit", |
| | | title: "计éåä½", |
| | | field: "materielUnit", |
| | | title: "åºæ¬åä½", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielSize", |
| | | title: "ç©æå°ºå¯¸", |
| | | type: "float", |
| | | width: 180, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "validity", |
| | | title: "æææ", |
| | | type: "string", |
| | | field: "materielLength", |
| | | title: "ç©æé¿åº¦", |
| | | type: "float", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "safetyStock", |
| | | title: "å®å
¨åºå", |
| | | type: "string", |
| | | field: "materielThickness", |
| | | title: "ç©æå度", |
| | | type: "float", |
| | | width: 120, |
| | | align: "left", |
| | | hidden:true |
| | | }, |
| | | { |
| | | field: "materielState", |
| | | title: "ç©æç¶æ", |
| | | type: "select", |
| | | width: 100, |
| | | bind:{key:"",data: [{key:'Enable',value:'å¯ç¨'},{key:'Disable',value:'ç¦ç¨'}] }, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielInvOrgId", |
| | | title: "åºåç»ç»", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "isCheck", |
| | | title: "æ¯å¦éè¦è´¨æ£", |
| | | type: "int", |
| | | bind:{key:"",data: [{key:'False',value:'å¦'},{key:'True',value:'æ¯'}] }, |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "creater", |
| | |
| | | align: "left", |
| | | hidden:true |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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/stock/materielnfoStatistics.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: "stockId", |
| | | footer: "Foots", |
| | | cnName: "ç©æåç±»ç»è®¡", |
| | | name: "materielnfoStatistics", |
| | | url: "/materielnfoStatistics/", |
| | | sortName: "stockId", |
| | | }); |
| | | const editFormFields = ref({ |
| | | deviceCode: "", |
| | | deviceName: "", |
| | | deviceType: "", |
| | | deviceStatus: "", |
| | | deviceIp: "", |
| | | devicePort: "", |
| | | devicePlcType: "", |
| | | deviceRemark: "", |
| | | }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { |
| | | title: "ç©æç¼å·", |
| | | required: true, |
| | | field: "materielCode", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "åæ®ç¼å·", |
| | | required: true, |
| | | field: "materielName", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "æ¹æ¬¡å·", |
| | | required: true, |
| | | field: "orderNo", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "åºåå·", |
| | | required: true, |
| | | field: "serialNumber", |
| | | type: "string", |
| | | }, |
| | | ], |
| | | |
| | | ]); |
| | | const searchFormFields = ref({ |
| | | materielCode: "", |
| | | materielName: "", |
| | | orderNo: "", |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "ç©æç¼å·", field: "materielCode", type:"like"}, |
| | | { title: "ç©æåç§°", field: "materielName" ,type:"like"}, |
| | | { title: "æå±ä»åº", field: "warehouseId",type: "select",dataKey: "warehouses",data: []}, |
| | | {title: "åºåç¶æ",field: "stockStatus",type: "select",dataKey:"stockStatusEmun", data: []} |
| | | ], |
| | | ]); |
| | | const columns = ref([ |
| | | { |
| | | field: "stockId", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "warehouseId", |
| | | title: "ä»åº", |
| | | type: "select", |
| | | width: 100, |
| | | align: "left", |
| | | bind: { key: "warehouses", data: [] }, |
| | | }, |
| | | { |
| | | field: "materielCode", |
| | | title: "ç©æç¼å·", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielName", |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "stockQuantity", |
| | | title: "åºåæ°é", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "outboundQuantity", |
| | | title: "åºåºæ°é", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field:"unit", |
| | | title:"åä½", |
| | | type:"string", |
| | | width:60, |
| | | align:"left" |
| | | }, |
| | | { |
| | | field: "stockStatus", |
| | | title: "åºåç¶æ", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | bind: { key: "stockStatusEmun", data: [] }, |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | | table: "", |
| | | columns: [], |
| | | sortName: "", |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | |
| | | /// <summary> |
| | | /// éè´ä»¶ |
| | | /// </summary> |
| | | PurchasePart = 1, |
| | | [Description("éè´ä»¶")] |
| | | éè´ä»¶ = 1, |
| | | |
| | | /// <summary> |
| | | /// èªå¶ä»¶ |
| | | /// </summary> |
| | | SelfMadePart = 2, |
| | | [Description("èªå¶ä»¶")] |
| | | èªå¶ä»¶ = 2, |
| | | |
| | | /// <summary> |
| | | /// éè´&èªå¶ä»¶ |
| | | /// </summary> |
| | | PurchaseAndSelf = 3 |
| | | [Description("éè´åèªå¶ä»¶")] |
| | | éè´åèªå¶ä»¶ = 3 |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | |
| | | /// <summary> |
| | | /// æå |
| | | /// </summary> |
| | | FinishProduct = 1, |
| | | [Description("æå")] |
| | | æå = 1, |
| | | |
| | | /// <summary> |
| | | /// åæå |
| | | /// </summary> |
| | | HalfProduct = 2, |
| | | [Description("åæå")] |
| | | åæå = 2, |
| | | |
| | | /// <summary> |
| | | /// åææ |
| | | /// </summary> |
| | | RawMateriel = 3, |
| | | [Description("åææ")] |
| | | åææ = 3, |
| | | |
| | | /// <summary> |
| | | /// å¤ä»¶ |
| | | /// </summary> |
| | | SpareParts = 4 |
| | | [Description("å¤ä»¶")] |
| | | å¤ä»¶ = 4 |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Magicodes.ExporterAndImporter.Core; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_DTO.Stock |
| | | { |
| | | public class MaterielnfoStatisticsDTO |
| | | { |
| | | /// <summary> |
| | | /// ä»åºID |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "ä»åºID")] |
| | | public int WarehouseId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "ç©æç¼å·")] |
| | | public string MaterielCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "ç©æåç§°")] |
| | | public string MaterielName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåæ°é |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "åºåæ°é")] |
| | | public float StockQuantity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºæ°é |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "åºåºæ°é")] |
| | | public float OutboundQuantity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåç¶æ |
| | | /// </summary> |
| | | [ExporterHeader(IsIgnore = true)] |
| | | public int StockStatus { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "åä½")] |
| | | public string Unit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | [ExporterHeader(DisplayName = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_DTO.Stock; |
| | | |
| | | namespace WIDESEA_IStockService |
| | | { |
| | | public interface IMaterielnfoStatisticsService : IDependency |
| | | { |
| | | PageGridData<MaterielnfoStatisticsDTO> GetPageGridData(PageDataOptions options); |
| | | |
| | | WebResponseContent Export(PageDataOptions options); |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// çæ¬åç§° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "çæ¬åç§°")] |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "çæ¬åç§°")] |
| | | public string MaterielVersion { get; set; } |
| | | |
| | | /// <summary> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.DB.Models; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Core.HostedService; |
| | | using WIDESEA_DTO.Stock; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_Model.Models; |
| | | using System.Linq; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using Magicodes.ExporterAndImporter.Core; |
| | | using Magicodes.ExporterAndImporter.Excel; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Core.Utilities; |
| | | |
| | | namespace WIDESEA_StockService |
| | | { |
| | | public partial class MaterielnfoStatisticsService : IMaterielnfoStatisticsService |
| | | { |
| | | public readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | public readonly SqlSugarClient _dbBase; |
| | | |
| | | public MaterielnfoStatisticsService(IUnitOfWorkManage unitOfWorkManage) { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _dbBase = unitOfWorkManage.GetDbClient(); |
| | | } |
| | | |
| | | public virtual PageGridData<MaterielnfoStatisticsDTO> GetPageGridData(PageDataOptions options) |
| | | { |
| | | try |
| | | { |
| | | |
| | | List<MaterielnfoStatisticsDTO> materielnfoStatistics = new List<MaterielnfoStatisticsDTO>(); |
| | | ISugarQueryable<Dt_StockInfoDetail> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfoDetail>(); |
| | | |
| | | string whereStoDe = GetDataRole(typeof(Dt_StockInfoDetail)); |
| | | sugarQueryable1 = sugarQueryable1.Where(whereStoDe); |
| | | |
| | | |
| | | string whereSto = GetDataRole(typeof(Dt_StockInfo)); |
| | | ISugarQueryable<Dt_StockInfo> sugarQueryable = _dbBase.Queryable<Dt_StockInfo>().Where(whereSto); |
| | | if (!string.IsNullOrEmpty(options.Wheres)) |
| | | { |
| | | try |
| | | { |
| | | List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>(); |
| | | if (searchParametersList.Count > 0) |
| | | { |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielCode.Contains(searchParameters.Value)); |
| | | } |
| | | } |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfo.WarehouseId).FirstLetterToLower()); |
| | | if (searchParameters != null) { |
| | | sugarQueryable = sugarQueryable.Where(x => x.WarehouseId.Equals(searchParameters.Value)); |
| | | } |
| | | } |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfo.StockStatus).FirstLetterToLower()); |
| | | if(searchParameters!= null) |
| | | { |
| | | sugarQueryable = sugarQueryable.Where(x => x.StockStatus.Equals(searchParameters.Value)); |
| | | } |
| | | } |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielName).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielName.Contains(searchParameters.Value)); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | ISugarQueryable<MaterielnfoStatisticsDTO> sugarQueryable2 = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => b.StockId == a.Id).Where((b,a)=>a.LocationCode!="" && a.LocationCode!=null).Select((b, a) |
| | | => new MaterielnfoStatisticsDTO |
| | | { |
| | | WarehouseId = a.WarehouseId, |
| | | MaterielCode = b.MaterielCode, |
| | | MaterielName = b.MaterielName, |
| | | StockQuantity = b.StockQuantity, |
| | | OutboundQuantity = b.OutboundQuantity, |
| | | StockStatus = a.StockStatus, |
| | | Unit = b.Unit, |
| | | Remark = a.Remark, |
| | | |
| | | }); |
| | | // è·åæææ°æ® |
| | | var allData = sugarQueryable2.ToList(); |
| | | |
| | | // 使ç¨åå
¸è¿è¡åç»æ±æ» |
| | | var groupedData = new Dictionary<string, MaterielnfoStatisticsDTO>(); |
| | | foreach (var item in allData) |
| | | { |
| | | if (groupedData.ContainsKey(item.MaterielCode)) |
| | | { |
| | | groupedData[item.MaterielCode].StockQuantity += item.StockQuantity; |
| | | groupedData[item.MaterielCode].OutboundQuantity += item.OutboundQuantity; |
| | | } |
| | | else |
| | | { |
| | | groupedData[item.MaterielCode] = new MaterielnfoStatisticsDTO |
| | | { |
| | | WarehouseId = item.WarehouseId, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielName = item.MaterielName, |
| | | StockQuantity = item.StockQuantity, |
| | | OutboundQuantity = item.OutboundQuantity, |
| | | StockStatus = item.StockStatus, |
| | | Unit = item.Unit, |
| | | Remark = item.Remark |
| | | }; |
| | | } |
| | | } |
| | | |
| | | // 转æ¢ä¸ºå表 |
| | | materielnfoStatistics = groupedData.Values.ToList(); |
| | | |
| | | // å页å¤ç |
| | | int startIndex = (options.Page - 1) * options.Rows; |
| | | int endIndex = Math.Min(startIndex + options.Rows, materielnfoStatistics.Count); |
| | | materielnfoStatistics = materielnfoStatistics.GetRange(startIndex, endIndex - startIndex); |
| | | |
| | | int count = groupedData.Count; |
| | | |
| | | return new PageGridData<MaterielnfoStatisticsDTO>(count, materielnfoStatistics); |
| | | |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | |
| | | } |
| | | return new PageGridData<MaterielnfoStatisticsDTO>(); |
| | | } |
| | | |
| | | public virtual WebResponseContent Export(PageDataOptions options) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Type t = typeof(MaterielnfoStatisticsDTO); |
| | | |
| | | string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelExport"; |
| | | IExporter exporter = new ExcelExporter(); |
| | | options.Page = 1; |
| | | options.Rows = 30; |
| | | options.Order = "desc"; |
| | | options.Sort = "MaterielCode"; |
| | | List<MaterielnfoStatisticsDTO> materielnfoStatistics = new List<MaterielnfoStatisticsDTO>(); |
| | | ISugarQueryable<Dt_StockInfoDetail> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfoDetail>(); |
| | | |
| | | string whereStoDe = GetDataRole(typeof(Dt_StockInfoDetail)); |
| | | sugarQueryable1 = sugarQueryable1.Where(whereStoDe); |
| | | |
| | | |
| | | string whereSto = GetDataRole(typeof(Dt_StockInfo)); |
| | | ISugarQueryable<Dt_StockInfo> sugarQueryable = _dbBase.Queryable<Dt_StockInfo>().Where(whereSto); |
| | | if (!string.IsNullOrEmpty(options.Wheres)) |
| | | { |
| | | try |
| | | { |
| | | List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>(); |
| | | if (searchParametersList.Count > 0) |
| | | { |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielCode.Contains(searchParameters.Value)); |
| | | } |
| | | } |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfo.WarehouseId).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | { |
| | | sugarQueryable = sugarQueryable.Where(x => x.WarehouseId.Equals(searchParameters.Value)); |
| | | } |
| | | } |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfo.StockStatus).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | { |
| | | sugarQueryable = sugarQueryable.Where(x => x.StockStatus.Equals(searchParameters.Value)); |
| | | } |
| | | } |
| | | { |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielName).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielName.Contains(searchParameters.Value)); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | ISugarQueryable<MaterielnfoStatisticsDTO> sugarQueryable2 = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => b.StockId == a.Id).Where((b, a) => a.LocationCode != "" && a.LocationCode != null).Select((b, a) |
| | | => new MaterielnfoStatisticsDTO |
| | | { |
| | | WarehouseId = a.WarehouseId, |
| | | MaterielCode = b.MaterielCode, |
| | | MaterielName = b.MaterielName, |
| | | StockQuantity = b.StockQuantity, |
| | | OutboundQuantity = b.OutboundQuantity, |
| | | StockStatus = a.StockStatus, |
| | | Unit = b.Unit, |
| | | Remark = a.Remark, |
| | | |
| | | }); |
| | | // è·åæææ°æ® |
| | | var allData = sugarQueryable2.ToList(); |
| | | |
| | | // 使ç¨åå
¸è¿è¡åç»æ±æ» |
| | | var groupedData = new Dictionary<string, MaterielnfoStatisticsDTO>(); |
| | | foreach (var item in allData) |
| | | { |
| | | if (groupedData.ContainsKey(item.MaterielCode)) |
| | | { |
| | | groupedData[item.MaterielCode].StockQuantity += item.StockQuantity; |
| | | groupedData[item.MaterielCode].OutboundQuantity += item.OutboundQuantity; |
| | | } |
| | | else |
| | | { |
| | | groupedData[item.MaterielCode] = new MaterielnfoStatisticsDTO |
| | | { |
| | | WarehouseId = item.WarehouseId, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielName = item.MaterielName, |
| | | StockQuantity = item.StockQuantity, |
| | | OutboundQuantity = item.OutboundQuantity, |
| | | StockStatus = item.StockStatus, |
| | | Unit = item.Unit, |
| | | Remark = item.Remark |
| | | }; |
| | | } |
| | | } |
| | | |
| | | // 转æ¢ä¸ºå表 |
| | | materielnfoStatistics = groupedData.Values.ToList(); |
| | | |
| | | byte[] data = exporter.ExportAsByteArray(materielnfoStatistics).Result; |
| | | |
| | | string fileName = "ç©æåç±»ç»è®¡.xlsx"; |
| | | |
| | | FileHelper.WriteFile(savePath, fileName, data); |
| | | |
| | | content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | private string GetDataRole(Type type) |
| | | { |
| | | try |
| | | { |
| | | UserRole? userRole = PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == App.User.UserId); |
| | | if (userRole == null) |
| | | throw new Exception($"æ æé"); |
| | | |
| | | if (type.IsAssignableFrom(typeof(BaseWarehouseEntity)) || type.GetProperty(nameof(BaseWarehouseEntity.WarehouseId)) != null) |
| | | { |
| | | if (userRole.WarehouseIds.Count > 0) |
| | | { |
| | | return $"{nameof(BaseWarehouseEntity.WarehouseId)} in ({userRole.WarehouseIds.Serialize().Replace("[", "").Replace("]", "")})"; |
| | | } |
| | | |
| | | else |
| | | return $"1 != 1"; |
| | | } |
| | | else |
| | | { |
| | | return "1 = 1"; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception($"æ æéï¼{ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Reflection; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_StockService; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Stock |
| | | { |
| | | [Route("api/MaterielnfoStatistics")] |
| | | [Authorize,ApiController] |
| | | public class MaterielnfoStatisticsController : Controller |
| | | { |
| | | private readonly IMaterielnfoStatisticsService _materielnfoStatisticsService; |
| | | |
| | | public MaterielnfoStatisticsController (IMaterielnfoStatisticsService materielnfoStatisticsService) |
| | | { |
| | | _materielnfoStatisticsService = materielnfoStatisticsService; |
| | | } |
| | | [HttpPost,Route("GetPageData")] |
| | | public object GetPageData([FromBody] PageDataOptions options) |
| | | { |
| | | return _materielnfoStatisticsService.GetPageGridData(options); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å¯¼åºæ°æ® |
| | | /// </summary> |
| | | /// <param name="loadData"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("Export")] |
| | | public virtual ActionResult Export([FromBody] PageDataOptions loadData) |
| | | { |
| | | WebResponseContent result = InvokeService("Export", new object[] { loadData }) as WebResponseContent; |
| | | if (result.Status) |
| | | return File( |
| | | System.IO.File.ReadAllBytes(result.Data.ToString()), |
| | | System.Net.Mime.MediaTypeNames.Application.Octet, |
| | | Path.GetFileName(result.Data.ToString()) |
| | | ); |
| | | return Json(result); |
| | | } |
| | | private object InvokeService(string methodName, object[] parameters) |
| | | { |
| | | Type t = _materielnfoStatisticsService.GetType(); |
| | | List<Type> types = new List<Type>(); |
| | | foreach (var param in parameters) |
| | | { |
| | | types.Add(param.GetType()); |
| | | } |
| | | MethodInfo method = t.GetMethod(methodName, types.ToArray()); |
| | | return method.Invoke(_materielnfoStatisticsService, parameters); |
| | | } |
| | | } |
| | | } |