|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | searchAfter(result) { | 
|---|
|  |  |  | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤ç表格çå¼ | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | // 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çå¼ | 
|---|
|  |  |  | 
|---|
|  |  |  | //(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; | 
|---|
|  |  |  |  | 
|---|
| ¶Ô±ÈÐÂÎļþ | 
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //æ¤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, | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 System.Threading.Tasks; | 
|---|
|  |  |  | using WIDESEA_Common.CommonEnum; | 
|---|
|  |  |  | using WIDESEA_Common.LocationEnum; | 
|---|
|  |  |  | using WIDESEA_Common.MaterielEnum; | 
|---|
|  |  |  | using WIDESEA_Common.OrderEnum; | 
|---|
|  |  |  | using WIDESEA_Common.StockEnum; | 
|---|
|  |  |  | using WIDESEA_Common.TaskEnum; | 
|---|
|  |  |  | 
|---|
|  |  |  | result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "materielSourceTypeEnum": | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<object> data = new List<object>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Type type = typeof(MaterielSourceTypeEnum); | 
|---|
|  |  |  | List<int> enums = Enum.GetValues(typeof(MaterielSourceTypeEnum)).Cast<int>().ToList(); | 
|---|
|  |  |  | int index = 0; | 
|---|
|  |  |  | foreach (var item in enums) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | FieldInfo? fieldInfo = typeof(MaterielSourceTypeEnum).GetField(((MaterielSourceTypeEnum)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 "materielTypeEnum": | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<object> data = new List<object>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Type type = typeof(MaterielTypeEnum); | 
|---|
|  |  |  | List<int> enums = Enum.GetValues(typeof(MaterielTypeEnum)).Cast<int>().ToList(); | 
|---|
|  |  |  | int index = 0; | 
|---|
|  |  |  | foreach (var item in enums) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | FieldInfo? fieldInfo = typeof(MaterielTypeEnum).GetField(((MaterielTypeEnum)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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
| ¶Ô±ÈÐÂÎļþ | 
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | "Microsoft.AspNetCore": "Warning" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "dics": "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", | 
|---|
|  |  |  | "dics": "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,materielSourceTypeEnum,materielTypeEnum", | 
|---|
|  |  |  | "AllowedHosts": "*", | 
|---|
|  |  |  | "ConnectionStringsEncryption": false, | 
|---|
|  |  |  | "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿
须为true | 
|---|