已添加16个文件
已复制1个文件
已重命名1个文件
已修改15个文件
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /***************************************************************************************** |
| | | ** Author:jxx 2022 |
| | | ** QQ:283591387 |
| | | **宿´ææ¡£è§ï¼http://v2.volcore.xyz/document/api ã代ç çæé¡µé¢ViewGridã |
| | | **常ç¨ç¤ºä¾è§ï¼http://v2.volcore.xyz/document/vueDev |
| | | **åå°æä½è§ï¼http://v2.volcore.xyz/document/netCoreDev |
| | | *****************************************************************************************/ |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { //æ¡æ¶åå§åé
ç½®åï¼ |
| | | //示ä¾ï¼å¨æé®çæå颿·»å ä¸ä¸ªæé® |
| | | // this.buttons.unshift({ //ä¹å¯ä»¥ç¨pushæè
spliceæ¹æ³æ¥ä¿®æ¹buttonsæ°ç» |
| | | // name: 'æé®', //æé®åç§° |
| | | // icon: 'el-icon-document', //æé®å¾æ vue2çæ¬è§iviewææ¡£iconï¼vue3çæ¬è§element uiææ¡£icon(注æä¸æ¯element pulsææ¡£) |
| | | // type: 'primary', //æé®æ ·å¼vue2çæ¬è§iviewææ¡£buttonï¼vue3çæ¬è§element uiææ¡£button |
| | | // onClick: function () { |
| | | // this.$Message.success('ç¹å»äºæé®'); |
| | | // } |
| | | // }); |
| | | |
| | | //示ä¾ï¼è®¾ç½®ä¿®æ¹æ°å»ºãç¼è¾å¼¹åºæ¡å段æ ç¾çé¿åº¦ |
| | | this.boxOptions.labelWidth = 150; |
| | | }, |
| | | 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; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /***************************************************************************************** |
| | | ** Author:jxx 2022 |
| | | ** QQ:283591387 |
| | | **宿´ææ¡£è§ï¼http://v2.volcore.xyz/document/api ã代ç çæé¡µé¢ViewGridã |
| | | **常ç¨ç¤ºä¾è§ï¼http://v2.volcore.xyz/document/vueDev |
| | | **åå°æä½è§ï¼http://v2.volcore.xyz/document/netCoreDev |
| | | *****************************************************************************************/ |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { //æ¡æ¶åå§åé
ç½®åï¼ |
| | | //示ä¾ï¼å¨æé®çæå颿·»å ä¸ä¸ªæé® |
| | | // this.buttons.unshift({ //ä¹å¯ä»¥ç¨pushæè
spliceæ¹æ³æ¥ä¿®æ¹buttonsæ°ç» |
| | | // name: 'æé®', //æé®åç§° |
| | | // icon: 'el-icon-document', //æé®å¾æ vue2çæ¬è§iviewææ¡£iconï¼vue3çæ¬è§element uiææ¡£icon(注æä¸æ¯element pulsææ¡£) |
| | | // type: 'primary', //æé®æ ·å¼vue2çæ¬è§iviewææ¡£buttonï¼vue3çæ¬è§element uiææ¡£button |
| | | // onClick: function () { |
| | | // this.$Message.success('ç¹å»äºæé®'); |
| | | // } |
| | | // }); |
| | | |
| | | //示ä¾ï¼è®¾ç½®ä¿®æ¹æ°å»ºãç¼è¾å¼¹åºæ¡å段æ ç¾çé¿åº¦ |
| | | this.boxOptions.labelWidth = 150; |
| | | }, |
| | | 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: '/VV_PalletStockInfo', |
| | | name: 'VV_PalletStockInfo', |
| | | component: () => import('@/views/widesea_wms/stock/VV_PalletStockInfo.vue'), |
| | | // meta: { |
| | | // keepAlive: true |
| | | // } |
| | | }, |
| | | |
| | | { |
| | | path: '/locationInfoRow', |
| | | name: 'locationInfoRow', |
| | | component: () => import('@/views/widesea_wms/stock/locationInfoRow.vue'), |
| | | meta: { |
| | | keepAlive: false |
| | | } |
| | | }, |
| | | { |
| | | path: '/Dt_PaintingOrderInfo', |
| | | name: 'Dt_PaintingOrderInfo', |
| | | component: () => import('@/views/widesea_wms/OrderInfo/Dt_PaintingOrderInfo.vue'), |
| | | // meta: { |
| | | // keepAlive: true |
| | | // } |
| | | }, |
| | | { |
| | | path: '/Dt_AssemblyOrderInfo', |
| | | name: 'Dt_AssemblyOrderInfo', |
| | | component: () => import('@/views/widesea_wms/OrderInfo/Dt_AssemblyOrderInfo.vue'), |
| | | // meta: { |
| | | // keepAlive: true |
| | | // } |
| | | } |
| | | ] |
| | | export default tables |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | *Authorï¼jxx |
| | | *Contactï¼283591387@qq.com |
| | | *代ç ç±æ¡æ¶çæ,任使´æ¹é½å¯è½å¯¼è´è¢«ä»£ç çæå¨è¦ç |
| | | *ä¸å¡è¯·å¨@/extension/widesea_wms/invoices/Dt_OutOrder.jsæ¤å¤ç¼å |
| | | --> |
| | | <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/widesea_wms/OrderInfo/Dt_AssemblyOrderInfo.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'id', |
| | | footer: "Foots", |
| | | cnName: 'æ¶è£
å·¥å', |
| | | name: 'Orderinfo/Dt_AssemblyOrderInfo', |
| | | url: "/Dt_AssemblyOrderInfo/", |
| | | sortName: "Id" |
| | | }); |
| | | const editFormFields = ref({ |
| | | "orderNumber": "", |
| | | "status": "", |
| | | "orderDate": "", |
| | | "warehouseId": "", |
| | | "upperOutOrderId": "", |
| | | "remarks": "", |
| | | |
| | | }); |
| | | const editFormOptions = ref([ |
| | | ]); |
| | | const searchFormFields = ref({}); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { "title": "å·¥åå·", "field": "workOrderNo", "type": "text" }, |
| | | { "title": "订åå·", "field": "vehicleOrderNo", "type": "text" }, |
| | | { "title": "pvi", "field": "pvi", "type": "text" }, |
| | | ], |
| | | ]); |
| | | const columns = ref([{ field: 'Id', title: '主é®', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | | { field: 'plantCode', title: 'å·¥å', type: 'string', width: 220, require: true, align: 'left', sort: true }, |
| | | { field: 'splitStrategy', title: 'ç产模å¼', type: 'string', width: 110, require: true, align: 'left' }, |
| | | { field: 'vehicleOrderNo', title: '订åå·', type: 'string', width: 220, require: true, align: 'left' }, |
| | | { field: 'orderType', title: '订åç±»å', type: 'string', width: 110, require: true, align: 'left', bind: { key: "OutOrderType", data: [] } }, |
| | | { field: 'workOrderNo', title: 'å·¥åå·', type: 'string', width: 220, require: true, align: 'left' }, |
| | | { field: 'pvi', title: 'pvi', type: 'string', width: 220, require: true, align: 'left' }, |
| | | { field: 'sequenceNo', title: 'å·¥å顺åºå·', type: 'string', width: 220, require: true, align: 'left' }, |
| | | { field: 'vehicleCharacteristic', title: '车åç¹å¾å¼', type: 'string', width: 150, require: true, align: 'left', sort: true }, |
| | | { field: 'vehicleCode', title: 'æ´è½¦ç©æå·', type: 'string', width: 110, require: true, align: 'left' }, |
| | | { field: 'biwMaterial', title: 'ç½è½¦èº«ç©æå·', type: 'string', width: 220, require: true, align: 'left', sort: true }, |
| | | { field: 'pbMaterial', title: 'å½©è½¦èº«ç©æå·', type: 'string', width: 220, require: true, align: 'left' }, |
| | | { field: 'workOrderSendStatus', title: 'å·¥åä¸åç¶æ', type: 'string', width: 220, require: true, align: 'left' }, |
| | | { field: 'spare1', title: 'å¤ç¨1', type: 'string', width: 110, require: true, align: 'left' }, |
| | | { field: 'spare2', title: 'å¤ç¨2', type: 'string', width: 110, require: true, align: 'left' }, |
| | | { field: 'spare3', title: 'å¤ç¨3', type: 'string', width: 110, require: true, align: 'left' }, |
| | | |
| | | { field: 'creater', title: 'å建人', type: 'string', sort: true, width: 110, align: 'left' }, |
| | | { field: 'createDate', title: 'å建æ¶é´', type: 'datetime', sort: true, width: 150, align: 'left', sort: true }, |
| | | { field: 'modifier', title: 'ä¿®æ¹äºº', type: 'string', sort: true, width: 100, align: 'left' }, |
| | | { field: 'modifyDate', title: 'ä¿®æ¹æ¶é´', type: 'datetime', sort: true, width: 150, align: 'left', sort: true }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "åºåºæç»è®¢å", |
| | | table: "#detailTable", |
| | | columns: [ |
| | | ], |
| | | sortName: "id", |
| | | key: "iD" |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | *Authorï¼jxx |
| | | *Contactï¼283591387@qq.com |
| | | *代ç ç±æ¡æ¶çæ,任使´æ¹é½å¯è½å¯¼è´è¢«ä»£ç çæå¨è¦ç |
| | | *ä¸å¡è¯·å¨@/extension/widesea_wms/invoices/Dt_OutOrder.jsæ¤å¤ç¼å |
| | | --> |
| | | <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/widesea_wms/OrderInfo/Dt_PaintingOrderInfo.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'id', |
| | | footer: "Foots", |
| | | cnName: 'æ¶è£
å·¥å', |
| | | name: 'Orderinfo/Dt_PaintingOrderInfo', |
| | | url: "/Dt_PaintingOrderInfo/", |
| | | sortName: "Id" |
| | | }); |
| | | const editFormFields = ref({ |
| | | "orderNumber":"", |
| | | "status":"", |
| | | "orderDate":"", |
| | | "warehouseId":"", |
| | | "upperOutOrderId":"", |
| | | "remarks":"", |
| | | |
| | | }); |
| | | const editFormOptions = ref([ |
| | | ]); |
| | | const searchFormFields = ref({}); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { "title": "å·¥åå·", "field": "workOrderNo", "type": "text" }, |
| | | { "title": "pvi", "field": "pvi", "type": "text" }, |
| | | { "title": "åºåºæ¥æ", "field": "orderDate", "type": "datetime" }, |
| | | ], |
| | | ]); |
| | | const columns = ref([{field:'Id',title:'主é®',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'}, |
| | | {field:'plantCode',title:'å·¥å',type:'string',width:220,require:true,align:'left',sort:true}, |
| | | {field:'workshopCode',title:'车é´',type:'string',width:150,require:true,align:'left',sort:true}, |
| | | {field:'splitStrategy',title:'ç产模å¼',type:'string',width:110,require:true,align:'left'}, |
| | | {field:'workOrderNo',title:'å·¥åå·',type:'string',width:220,require:true,align:'left'}, |
| | | {field:'workOrderType',title:'å·¥åç±»å',type:'string',width:110,require:true,align:'left',bind: { key: "OutOrderType", data: []}}, |
| | | {field:'pvi',title:'pvi',type:'string',width:220,require:true,align:'left'}, |
| | | {field:'biwMaterial',title:'ç½è½¦èº«ç©æå·',type:'string',width:220,require:true,align:'left',sort:true}, |
| | | {field:'vehicleCharacteristic',title:'车åç¹å¾å¼',type:'string',width:150,require:true,align:'left',sort:true}, |
| | | {field:'skylightCharacteristic',title:'天çªç¹å¾å¼',type:'string',width:110,require:true,align:'left'}, |
| | | {field:'carBodyCharacteristic',title:'车身é¢è²',type:'string',width:220,require:true,align:'left'}, |
| | | {field:'twoToneCharacteristic',title:'åè²è½¦èº«',type:'string',width:110,require:true,align:'left'}, |
| | | {field:'sequenceNo',title:'å·¥å顺åºå·',type:'string',width:220,require:true,align:'left'}, |
| | | {field:'config1',title:'CTCé
ç½®',type:'string',width:110,require:true,align:'left'}, |
| | | {field:'pbMaterial',title:'å½©è½¦èº«ç©æå·',type:'string',width:220,require:true,align:'left'}, |
| | | {field:'config3',title:'å¤ç¨3',type:'string',width:110,require:true,align:'left'}, |
| | | {field:'workOrderSendStatus',title:'å·¥åä¸åç¶æ',type:'string',width:220,require:true,align:'left'}, |
| | | {field:'creater',title:'å建人',type:'string',sort:true,width:110,align:'left'}, |
| | | {field:'createDate',title:'å建æ¶é´',type:'datetime',sort:true,width:150,align:'left',sort:true}, |
| | | {field:'modifier',title:'ä¿®æ¹äºº',type:'string',sort:true,width:100,align:'left'}, |
| | | {field:'modifyDate',title:'ä¿®æ¹æ¶é´',type:'datetime',sort:true,width:150,align:'left',sort:true}, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "åºåºæç»è®¢å", |
| | | table: "#detailTable", |
| | | columns: [ |
| | | ], |
| | | sortName: "id", |
| | | key: "iD" |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { "title": "ä»»å¡å·", "field": "taskNum", "type": "text" }, |
| | | { "title": "æç/æç®±å·", "field": "palletCode", "type": "text" }, |
| | | { "title": "æ»æ©å·", "field": "palletCode", "type": "text" }, |
| | | { "title": "ä»»å¡ç±»å", "field": "taskType", "type": "select", dataKey: "TaskType", data: [] }, |
| | | { "title": "ä»»å¡ç¶æ", "field": "taskState", "type": "select", dataKey: "TaskStatus", data: [] }, |
| | | |
| | |
| | | const columns = ref([{ field: 'TaskId', title: '主é®', type: 'string', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | | { field: 'taskNum', title: 'ä»»å¡å·', type: 'int', width: 110, align: 'left', sort: true }, |
| | | { field: 'pvi', title: 'pvi', type: 'int', width: 110, align: 'left',}, |
| | | { field: 'palletCode', title: 'æç/æç®±å·', type: 'string', width: 180, align: 'left' }, |
| | | { field: 'palletCode', title: 'æ»æ©å·', type: 'string', width: 180, align: 'left' }, |
| | | { field: 'pnboundNo', title: 'åæ®å·', type: 'string', width: 110, align: 'left',hidden:true }, |
| | | { field: 'groupID', title: 'åºåID', type: 'int', width: 110, hidden: true, align: 'left' }, |
| | | { field: 'groupDetailId', title: 'ç»çæç»ID', type: 'int', width: 110, hidden: true, align: 'left' }, |
| | |
| | | /// è·ååºåå表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpGet, Route("GetArea"), AllowAnonymous] |
| | | public object GetArea() |
| | | { |
| | | var data = BaseDal.QueryData(); |
| | |
| | | { |
| | | public enum BodyType |
| | | { |
| | | WhiteBody = 1, |
| | | /// <summary> |
| | | /// ç½è½¦èº« |
| | | /// </summary> |
| | | WhiteBody = 1, |
| | | |
| | | /// <summary> |
| | | /// 彩车身 |
| | | /// </summary> |
| | | PaintedBody, |
| | | |
| | | } |
| | | |
| | | public enum BodyStatus |
| | | { |
| | | /// <summary> |
| | | /// çè£
|
| | | /// </summary> |
| | | InWeldingShop = 1, |
| | | |
| | | /// <summary> |
| | | /// BDC |
| | | /// </summary> |
| | | InBDC, |
| | | |
| | | /// <summary> |
| | | /// æ¶è£
|
| | | /// </summary> |
| | | InPaintingShop, |
| | | |
| | | /// <summary> |
| | | /// æ»è£
|
| | | /// </summary> |
| | | InAssemblyShop, |
| | | |
| | | /// <summary> |
| | | /// 宿 |
| | | /// </summary> |
| | | Completed |
| | | } |
| | | } |
| | |
| | | /// æ´æ°ç¼åé
ç½® |
| | | /// </summary> |
| | | Task<Dt_BDCConfiguration> UpdateConfiguration(int maxWhiteBody, int maxPaintedBody, |
| | | int maxBatteryCase, int maxEmptySled, string updatedBy); |
| | | int maxBatteryCase, int maxEmptySled); |
| | | |
| | | /// <summary> |
| | | /// æ£æ¥ç½è½¦èº«æ¯å¦å¯ä»¥å
¥åºï¼æªè¶
è¿æå¤§ç¼åæ°ï¼ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using WIDESEA_Core; |
| | | |
| | | namespace WIDESEA_IStorageOutOrderRepository; |
| | | |
| | | public interface IDt_AssemblyOrderInfoRepository : IRepository<Dt_AssemblyOrderInfo> |
| | | { |
| | | /// <summary> |
| | | /// ä¿®æ¹åºåºè®¢åï¼å¯¼èªä¿®æ¹ï¼ |
| | | /// </summary> |
| | | /// <param name="outOrder"></param> |
| | | /// <returns>æ¯å¦æå</returns> |
| | | //Task<bool> OutOrderUpdatedAsync(Dt_OutOrder outOrder); |
| | | |
| | | //Task<Dt_OutOrder> GetOutOrderByNumberAsync(string orderNumber); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using WIDESEA_Core; |
| | | |
| | | namespace WIDESEA_IStorageOutOrderRepository; |
| | | |
| | | public interface IDt_PaintingOrderInfoRepository : IRepository<Dt_PaintingOrderInfo> |
| | | { |
| | | /// <summary> |
| | | /// ä¿®æ¹åºåºè®¢åï¼å¯¼èªä¿®æ¹ï¼ |
| | | /// </summary> |
| | | /// <param name="outOrder"></param> |
| | | /// <returns>æ¯å¦æå</returns> |
| | | //Task<bool> OutOrderUpdatedAsync(Dt_OutOrder outOrder); |
| | | |
| | | //Task<Dt_OutOrder> GetOutOrderByNumberAsync(string orderNumber); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_IStorageOutOrderServices; |
| | | |
| | | public interface IDt_AssemblyOrderInfoService : IService<Dt_AssemblyOrderInfo> |
| | | { |
| | | ///// <summary> |
| | | ///// æ·»å ç产åºåºå |
| | | ///// </summary> |
| | | ///// <param name="model">åºåºæ°æ®</param> |
| | | ///// <returns>æåæå¤±è´¥</returns> |
| | | //WebResponseContent AddOutOrderProduction(SaveModel model); |
| | | |
| | | ///// <summary> |
| | | ///// æ·»å è°æ¨åºåºå |
| | | ///// </summary> |
| | | ///// <param name="model">åºåºæ°æ®</param> |
| | | ///// <returns>æåæå¤±è´¥</returns> |
| | | //WebResponseContent AddOutOrderTransfer(SaveModel model); |
| | | |
| | | ///// <summary> |
| | | ///// æ ¹æ®åºåºåå·æ¥è¯¢åºåºè®¢å |
| | | ///// </summary> |
| | | ///// <param name="orderNumber">åºåºåå·</param> |
| | | ///// <returns>åºåºè®¢å</returns> |
| | | //WebResponseContent GetOutOrderByNumber(string orderNumber); |
| | | |
| | | ///// <summary> |
| | | ///// ä¿®æ¹åºåºè®¢åï¼å¯¼èªä¿®æ¹ï¼ |
| | | ///// </summary> |
| | | ///// <param name="outOrder"></param> |
| | | ///// <returns>æ¯å¦æå</returns> |
| | | //Task<bool> OutOrderUpdatedAsync(Dt_OutOrder outOrder); |
| | | |
| | | ///// <summary> |
| | | ///// æ ¹æ®è®¢ååé
åºåºåºå |
| | | ///// </summary> |
| | | ///// <param name="orderNo">订åç¼å·</param> |
| | | ///// <returns></returns> |
| | | //Task<WebResponseContent> GetOutboundStockAsync(string orderNo); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_IStorageOutOrderServices; |
| | | |
| | | public interface IDt_PaintingOrderInfoService : IService<Dt_PaintingOrderInfo> |
| | | { |
| | | |
| | | } |
| | |
| | | { |
| | | public interface IBDCManager |
| | | { |
| | | int TotalCapacity { get; } |
| | | List<DtLocationInfo> TotalCapacity { get; } |
| | | |
| | | int CurrentOccupancy { get; } |
| | | |
| | | List<Dt_CarBody> GetInventory(); |
| | | bool AddToBDC(Dt_CarBody body); |
| | | |
| | | Task<bool> AddToBDC(Dt_CarBody body); |
| | | |
| | | Dt_CarBody RetrieveFromBDC(string bodyId); |
| | | |
| | | List<Dt_CarBody> RetrieveByModel(string model); |
| | | |
| | | List<Dt_CarBody> RetrieveByColor(int color); |
| | | |
| | | void GenerateReport(); |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// æ¯å¦å¯ç¨ |
| | | /// </summary> |
| | | public int IsActive { get; set; } |
| | | public int IsActive { get; set; } = 1; |
| | | } |
| | | } |
| ÎļþÃû´Ó ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_Model/Models/Inbound/dt_OrderInfo.cs ÐÞ¸Ä |
| | |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | [SugarTable(nameof(dt_OrderInfo), "æ»è£
å·¥åä¿¡æ¯")] |
| | | public class dt_OrderInfo: BaseEntity |
| | | [SugarTable(nameof(Dt_AssemblyOrderInfo), "æ»è£
å·¥åä¿¡æ¯")] |
| | | public class Dt_AssemblyOrderInfo : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ç产模å¼")] |
| | | public string splitStrategy { get; set; } |
| | | |
| | | public string data { get; set; } |
| | | //public string data { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 订åå· |
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/Inbound/dt_OrderInfo.cs"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/Inbound/Dt_PaintingOrderInfo.cs"
| Îļþ´Ó ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_Model/Models/Inbound/dt_OrderInfo.cs ¸´ÖÆ |
| | |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | [SugarTable(nameof(dt_OrderInfo), "æ»è£
å·¥åä¿¡æ¯")] |
| | | public class dt_OrderInfo: BaseEntity |
| | | [SugarTable(nameof(Dt_PaintingOrderInfo), "æ¶è£
å·¥åä¿¡æ¯")] |
| | | public class Dt_PaintingOrderInfo : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | |
| | | public string plantCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è½¦é´ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车é´")] |
| | | [ExporterHeader(DisplayName = "车é´")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "车é´")] |
| | | public string workshopCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çäº§æ¨¡å¼ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "ç产模å¼")] |
| | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ç产模å¼")] |
| | | public string splitStrategy { get; set; } |
| | | |
| | | public string data { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 订åå· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "订åå·")] |
| | | [ExporterHeader(DisplayName = "订åå·")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "订åå·")] |
| | | public string vehicleOrderNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 订åç±»å |
| | | /// </summary> |
| | | [ImporterHeader(Name = "订åç±»å")] |
| | | [ExporterHeader(DisplayName = "订åç±»å")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "订åç±»å")] |
| | | public string orderType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥åå· æ»è£
ï¼ä¸åå°åºæ¯ç产工åå·ä¸è½¦é´å
±ç¨ï¼ |
| | | /// å·¥åå· æ¶è£
|
| | | /// </summary> |
| | | [ImporterHeader(Name = "å·¥åå·")] |
| | | [ExporterHeader(DisplayName = "å·¥åå·")] |
| | |
| | | public string workOrderNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// pviå· ï¼æäº§é¡ºåºå·2ï¼ |
| | | /// å·¥åç±»å |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å·¥åç±»å")] |
| | | [ExporterHeader(DisplayName = "å·¥åç±»å")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å·¥åç±»å")] |
| | | public string workOrderType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// pviå· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "pviå·")] |
| | | [ExporterHeader(DisplayName = "pviå·")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "pviå·")] |
| | | public string pvi { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥å顺åºå· æäº§é¡ºåºå·1ï¼åºåå·ï¼ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å·¥å顺åºå·")] |
| | | [ExporterHeader(DisplayName = "å·¥å顺åºå·")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å·¥å顺åºå·")] |
| | | public string sequenceNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车åç¹å¾å¼ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车åç¹å¾å¼")] |
| | | [ExporterHeader(DisplayName = "车åç¹å¾å¼")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "车åç¹å¾å¼")] |
| | | public string vehicleCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´è½¦ç©æå· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "æ´è½¦ç©æå·")] |
| | | [ExporterHeader(DisplayName = "æ´è½¦ç©æå·")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "æ´è½¦ç©æå·")] |
| | | public string vehicleCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç½è½¦èº«ç©æå· |
| | |
| | | public string biwMaterial { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车åç¹å¾å¼ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车åç¹å¾å¼")] |
| | | [ExporterHeader(DisplayName = "车åç¹å¾å¼")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "车åç¹å¾å¼")] |
| | | public string vehicleCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 天çªç¹å¾å¼ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "天çªç¹å¾å¼")] |
| | | [ExporterHeader(DisplayName = "天çªç¹å¾å¼")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "天çªç¹å¾å¼")] |
| | | public string skylightCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车身é¢è² |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车身é¢è²")] |
| | | [ExporterHeader(DisplayName = "车身é¢è²")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "车身é¢è²")] |
| | | public string carBodyCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åè²è½¦èº« |
| | | /// </summary> |
| | | [ImporterHeader(Name = "åè²è½¦èº«")] |
| | | [ExporterHeader(DisplayName = "åè²è½¦èº«")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "åè²è½¦èº«")] |
| | | public string twoToneCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥å顺åºå· æäº§é¡ºåºå·1ï¼åºåå·ï¼ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å·¥å顺åºå·")] |
| | | [ExporterHeader(DisplayName = "å·¥å顺åºå·")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å·¥å顺åºå·")] |
| | | public string sequenceNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// CTCé
ç½® |
| | | /// </summary> |
| | | [ImporterHeader(Name = "CTCé
ç½®")] |
| | | [ExporterHeader(DisplayName = "CTCé
ç½®")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "CTCé
ç½®")] |
| | | public string config1 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å½©è½¦èº«ç©æå· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å½©è½¦èº«ç©æå·")] |
| | | [ExporterHeader(DisplayName = "å½©è½¦èº«ç©æå·")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å½©è½¦èº«ç©æå·")] |
| | | public string pbMaterial { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤ç¨3 |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å¤ç¨3")] |
| | | [ExporterHeader(DisplayName = "å¤ç¨3")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨3")] |
| | | public string config3 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥åä¸åç¶æ 1-æäº§ä¸åï¼2-æ¤å |
| | |
| | | public string workOrderSendStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤ç¨1 |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å¤ç¨1")] |
| | | [ExporterHeader(DisplayName = "å¤ç¨1")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨1")] |
| | | public string spare1 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤ç¨2 |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å¤ç¨2")] |
| | | [ExporterHeader(DisplayName = "å¤ç¨2")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨2")] |
| | | public string spare2 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤ç¨3 |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å¤ç¨3")] |
| | | [ExporterHeader(DisplayName = "å¤ç¨3")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨3")] |
| | | public string spare3 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åéæ¶é´ |
| | | /// </summary> |
| | | //public string sendTime { get; set; } |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | private readonly LogFactory LogFactory = new LogFactory(); |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IDt_CarBodyRepository _carBodyRepository; |
| | | private readonly IDt_AssemblyOrderInfoRepository _assemblyOrderInfoRepository; |
| | | |
| | | public MESService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_AreaInfoRepository dt_AreaInfoRepository, IDt_PalletInfoRepository palletInfoRepository, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_OutOrderRepository OutOrderRepository, IUnitOfWorkManage unitOfWorkManage, IDt_CarBodyRepository carBodyRepository) |
| | | public MESService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_AreaInfoRepository dt_AreaInfoRepository, IDt_PalletInfoRepository palletInfoRepository, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_OutOrderRepository OutOrderRepository, IUnitOfWorkManage unitOfWorkManage, IDt_CarBodyRepository carBodyRepository, IDt_AssemblyOrderInfoRepository assemblyOrderInfoRepository) |
| | | { |
| | | _locationRepository = locationRepository; |
| | | _taskRepository = taskRepository; |
| | |
| | | _OutOrderRepository = OutOrderRepository; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _carBodyRepository = carBodyRepository; |
| | | _assemblyOrderInfoRepository = assemblyOrderInfoRepository; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | var ListTaskDto = new List<WMSTaskDTO>(); |
| | | var ListTask = new List<Dt_Task>(); |
| | | var ListAssemblyOrderInfo = new List<Dt_AssemblyOrderInfo>(); |
| | | foreach (var item in result.data) |
| | | { |
| | | var palletStockInfos = _palletStockInfoRepository.QueryData(x => x.OrderID == item.workOrderNo); |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | Dt_AssemblyOrderInfo assemblyOrderInfo = new Dt_AssemblyOrderInfo |
| | | { |
| | | biwMaterial = item.biwMaterial, |
| | | CreateDate = DateTime.Now, |
| | | Creater = "System", |
| | | orderType = item.orderType, |
| | | pbMaterial = item.pbMaterial, |
| | | plantCode = result.plantCode, |
| | | pvi = item.pvi, |
| | | sequenceNo = item.sequenceNo, |
| | | spare1 = item.spare1, |
| | | spare2 = item.spare2, |
| | | spare3 = item.spare3, |
| | | splitStrategy = result.splitStrategy, |
| | | vehicleCharacteristic = item.vehicleCharacteristic, |
| | | vehicleCode = item.vehicleCode, |
| | | vehicleOrderNo = item.vehicleOrderNo, |
| | | workOrderNo = item.workOrderNo, |
| | | workOrderSendStatus = item.workOrderSendStatus, //1-æäº§ 2-æ¤å |
| | | }; |
| | | ListAssemblyOrderInfo.Add(assemblyOrderInfo); |
| | | } |
| | | |
| | | pushOrderInfo orderInfo = new pushOrderInfo |
| | | { |
| | | |
| | | }; |
| | | |
| | | Dt_OutOrder outOrder = new() |
| | | { |
| | | CreateDate = DateTime.Now, |
| | | Creater = "System", |
| | | Status = 1, |
| | | //UpperOutOrderId = result.workOrderNo, |
| | | OrderNumber = result.data[0].workOrderNo, |
| | | WarehouseId = 1, |
| | | OrderDate = DateTime.Now, |
| | | UpperOutOrderId = 1, |
| | | Remarks = "æµè¯è®¢å" |
| | | |
| | | }; |
| | | |
| | | |
| | | var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue; |
| | | var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue; |
| | | if (wmsBase == null || ipAddress == null) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddress = wmsBase + ipAddress; |
| | | |
| | | var WCSresult = HttpHelper.PostAsync(wmsIpAddress, ListTaskDto.ToJsonString()).Result; |
| | | var content = JsonConvert.DeserializeObject<WebResponseContent>(WCSresult); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _OutOrderRepository.AddData(outOrder); |
| | | _taskRepository.AddData(ListTask); |
| | | if (ListTaskDto.Count > 0) |
| | | { |
| | | var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue; |
| | | var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue; |
| | | if (wmsBase == null || ipAddress == null) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddress = wmsBase + ipAddress; |
| | | |
| | | var WCSresult = HttpHelper.PostAsync(wmsIpAddress, ListTaskDto.ToJsonString()).Result; |
| | | var content = JsonConvert.DeserializeObject<WebResponseContent>(WCSresult); |
| | | |
| | | _taskRepository.AddData(ListTask); |
| | | } |
| | | _assemblyOrderInfoRepository.AddData(ListAssemblyOrderInfo); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | responseContent.OK(); |
| | |
| | | return currentConfig; |
| | | } |
| | | |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | |
| | | return base.UpdateData(saveModel); |
| | | } |
| | | |
| | | public async Task<Dt_BDCConfiguration> UpdateConfiguration(int maxWhiteBody, int maxPaintedBody, |
| | | int maxBatteryCase, int maxEmptySled, string updatedBy) |
| | | int maxBatteryCase, int maxEmptySled) |
| | | { |
| | | // ç¦ç¨å½åé
ç½® |
| | | var currentConfigs = await BaseDal.QueryDataAsync(c => c.IsActive == 1); |
| | | |
| | | currentConfigs.ForEach(c => c.IsActive = 2); |
| | | |
| | | // å建æ°é
ç½® |
| | |
| | | MaxBatteryCaseCache = maxBatteryCase, |
| | | MaxEmptySledCache = maxEmptySled, |
| | | LastUpdatedTime = DateTime.Now, |
| | | UpdatedBy = updatedBy, |
| | | UpdatedBy = App.User.UserName, |
| | | IsActive = 1 |
| | | }; |
| | | |
| | |
| | | return newConfig; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç½è½¦èº«æ¯å¦å¯å
¥åº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task<bool> CanAddWhiteBody() |
| | | { |
| | | var config = await GetCurrentConfiguration(); |
| | | var currentCount = GetWhiteBodyCount(); |
| | | var currentCount = GetWhiteBodyCount(); |
| | | |
| | | // é¢ç5%çç¼å²ç©ºé´ |
| | | var threshold = (int)(config.MaxWhiteBodyCache * 0.95); |
| | |
| | | public async Task<bool> CanAddPaintedBody() |
| | | { |
| | | var config = await GetCurrentConfiguration(); |
| | | var currentCount = GetPaintedBodyCount(); |
| | | var currentCount = GetPaintedBodyCount(); |
| | | |
| | | // é¢ç5%çç¼å²ç©ºé´ |
| | | var threshold = (int)(config.MaxPaintedBodyCache * 0.95); |
| | | return currentCount < threshold; |
| | | } |
| | | |
| | | |
| | | public async Task<bool> CanAddEmptySled() |
| | | { |
| | | var config = await GetCurrentConfiguration(); |
| | | var currentCount = GetEmptySledCount(); |
| | | var currentCount = GetEmptySledCount(); |
| | | |
| | | // é¢ç5%çç¼å²ç©ºé´ |
| | | var threshold = (int)(config.MaxEmptySledCache * 0.95); |
| | | return currentCount < threshold; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç½è½¦èº«åºåæ°é |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public int GetWhiteBodyCount() |
| | | { |
| | | return _palletStockInfoRepository.QueryData(b => b.CarType == (int)BodyType.WhiteBody && b.StockStatus == (int)BodyStatus.InBDC).Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 彩车身åºåæ°é |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public int GetPaintedBodyCount() |
| | | { |
| | | return _palletStockInfoRepository.QueryData(b => b.CarType == (int)BodyType.PaintedBody && b.StockStatus == (int)BodyStatus.InBDC).Count; |
| | | return _palletStockInfoRepository.QueryData(b => b.CarType == (int)BodyType.PaintedBody && b.StockStatus == (int)BodyStatus.InBDC).Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// çµæ± 壳åºåæ°é |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public int GetBatteryCaseCount() |
| | | { |
| | | return _palletStockInfoRepository.QueryData(b => b.StockStatus == (int)BodyStatus.InBDC).Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç©ºæ»æ©åºåæ°é |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public int GetEmptySledCount() |
| | | { |
| | | return _palletStockInfoRepository.QueryData(s => s.StockStatus == (int)BodyStatus.InBDC).Count; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using WIDESEA_Core; |
| | | |
| | | namespace WIDESEA_StorageOutOrderRepository; |
| | | |
| | | public class Dt_AssemblyOrderInfoRepository : RepositoryBase<Dt_AssemblyOrderInfo>, IDt_AssemblyOrderInfoRepository |
| | | { |
| | | public Dt_AssemblyOrderInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using WIDESEA_Core; |
| | | |
| | | namespace WIDESEA_StorageOutOrderRepository; |
| | | |
| | | public class Dt_PaintingOrderInfoRepository : RepositoryBase<Dt_PaintingOrderInfo>, IDt_PaintingOrderInfoRepository |
| | | { |
| | | public Dt_PaintingOrderInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_StorageOutOrderServices; |
| | | |
| | | public class Dt_AssemblyOrderInfoService : ServiceBase<Dt_AssemblyOrderInfo, IDt_AssemblyOrderInfoRepository>, IDt_AssemblyOrderInfoService |
| | | { |
| | | private readonly LogFactory LogFactory = new LogFactory(); |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IDt_OutOrderProductionService _outOrderProductionService; |
| | | private readonly IDt_OutOrderProductionDetailService _outOrderProductionDetailService; |
| | | private readonly IDt_OutOrderDtailService _outOrderDtailService; |
| | | private readonly IDt_OutOrderTransferRepository _OutOrderTransferRepository; |
| | | private readonly IDt_OutOrderTransferDetailRepository _OutOrderTransferDetailRepository; |
| | | private readonly IDt_MaterielInfoRepository _materielInfoRepository; |
| | | private readonly IStockInfoRepository _stockInfoRepository; |
| | | private readonly IDt_OutOrderAndStockRepository _outOrderAndStockRepository; |
| | | private readonly IDt_TaskRepository _taskRepository; |
| | | |
| | | public Dt_AssemblyOrderInfoService(IDt_AssemblyOrderInfoRepository BaseDal, |
| | | IUnitOfWorkManage unitOfWorkManage, |
| | | IDt_OutOrderProductionService outOrderProductionService, |
| | | IDt_OutOrderProductionDetailService outOrderProductionDetailService, |
| | | IDt_OutOrderDtailService outOrderDtailService, |
| | | IDt_OutOrderTransferDetailRepository outOrderTransferDetailRepository, |
| | | IDt_OutOrderTransferRepository outOrderTransferRepository, |
| | | IDt_MaterielInfoRepository materielInfoRepository, |
| | | IStockInfoRepository stockInfoRepository, |
| | | IDt_OutOrderAndStockRepository outOrderAndStockRepository, |
| | | IDt_TaskRepository taskRepository) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _outOrderProductionService = outOrderProductionService; |
| | | _outOrderProductionDetailService = outOrderProductionDetailService; |
| | | _outOrderDtailService = outOrderDtailService; |
| | | _OutOrderTransferDetailRepository = outOrderTransferDetailRepository; |
| | | _OutOrderTransferRepository = outOrderTransferRepository; |
| | | _materielInfoRepository = materielInfoRepository; |
| | | _stockInfoRepository = stockInfoRepository; |
| | | _outOrderAndStockRepository = outOrderAndStockRepository; |
| | | _taskRepository = taskRepository; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¢ååé
åºåºåºå |
| | | /// </summary> |
| | | /// <param name="orderNo">订åç¼å·</param> |
| | | /// <returns></returns> |
| | | public async Task<WebResponseContent> GetOutboundStockAsync(string orderNo) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | // è·å订å |
| | | //var order = await BaseDal.GetOutOrderByNumberAsync(orderNo); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ ¹æ®è®¢åç¼å·è·åè®¢åæ°æ®", JsonConvert.SerializeObject(order)); |
| | | |
| | | //// æ£æ¥è®¢åæ¯å¦è·åæå |
| | | //if (order == null) |
| | | //{ |
| | | // return content.Error("è·å订å失败"); |
| | | //} |
| | | |
| | | //// è·å订åä¸ç第ä¸ä¸ªç©æç¼å· |
| | | //var materielInfo = await _materielInfoRepository.QueryFirstAsync(x => x.MaterielID == order.OrderDetailList.MaterialId); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "è·å订åç©æç¼å·", JsonConvert.SerializeObject(materielInfo)); |
| | | |
| | | //#region å
å
¥å
åº |
| | | |
| | | //// è·åè¯¥ç©æææå¯åºåºåºå |
| | | //var filteredStocks = await _stockInfoRepository.QueryDataAsync(x => true); |
| | | //filteredStocks.OrderBy(x => x.CreateDate).ToList(); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "è·åè¯¥ç©æææå¯åºåºåºå", JsonConvert.SerializeObject(filteredStocks)); |
| | | |
| | | //#endregion å
å
¥å
åº |
| | | |
| | | //#region æ¥æ¾é è¿åºåºå£åºå |
| | | |
| | | //// é»è®¤åè¶å¤§è¶é è¿åºåºå£ |
| | | //filteredStocks = filteredStocks.OrderByDescending(x => x.LocationInfo.Column).OrderBy(x => x.CreateDate).ToList(); |
| | | |
| | | //#endregion æ¥æ¾é è¿åºåºå£åºå |
| | | |
| | | //#region 䏿·±ä½ä¼å
æ¥æ¾ï¼åæ¥æ¾ååäºæ·±ä½ |
| | | |
| | | //filteredStocks = PickStocks(filteredStocks); |
| | | |
| | | //#endregion 䏿·±ä½ä¼å
æ¥æ¾ï¼åæ¥æ¾ååäºæ·±ä½ |
| | | |
| | | //// å建任å¡å表 |
| | | //var (tasks, updateOrder, stock) = CreateTasks(order, filteredStocks); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "å建任å¡å表ï¼ä¿®æ¹è®¢ååé
æ°éï¼è·ååºåºåé
åºå", |
| | | // $"ä»»å¡å表:{JsonConvert.SerializeObject(tasks)},订åå表ï¼{JsonConvert.SerializeObject(updateOrder)},å·²åé
åºåï¼{JsonConvert.SerializeObject(stock)}"); |
| | | |
| | | //// æ´æ°åºåç¶æ |
| | | //var stockList = UpdateStocks(stock); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ´æ°åºåç¶æ", JsonConvert.SerializeObject(stockList)); |
| | | |
| | | //// å建订ååºåå表 |
| | | //List<Dt_OutOrderAndStock>? orderStocks = CreateOrderStock(stock, updateOrder); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "å建订ååºåå表", JsonConvert.SerializeObject(orderStocks)); |
| | | |
| | | //// å¼å§äºå¡ |
| | | //_unitOfWorkManage.BeginTran(); |
| | | |
| | | //// æ´æ°åºå |
| | | //var isStockUpdated = _stockInfoRepository.UpdateData(stockList); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡æ´æ°åºå", isStockUpdated); |
| | | |
| | | //// æ´æ°è®¢å |
| | | //var isOrderUpdated = await BaseDal.OutOrderUpdatedAsync(updateOrder); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡æ´æ°è®¢å", isOrderUpdated); |
| | | |
| | | ////æ·»å 订ååºå |
| | | //var isOrderStockCread = await _outOrderAndStockRepository.AddDataAsync(orderStocks) > 0; |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡æ·»å 订ååºå", isOrderStockCread); |
| | | |
| | | //// åå»ºä»»å¡ |
| | | //var isTaskCreated = await _taskRepository.Create(tasks); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡å建任å¡", isTaskCreated); |
| | | |
| | | //// æäº¤æåæ»äºå¡ |
| | | //if (isStockUpdated && isTaskCreated && isOrderUpdated && isOrderStockCread) |
| | | //{ |
| | | // LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ°æ®å¤çå®æï¼æäº¤äºå¡", "æ åæ°"); |
| | | // _unitOfWorkManage.CommitTran(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ·»å æ°æ®åºå¤±è´¥,è¯·æ£æ¥æ°æ®æ¯å¦æ£ç¡®,æ°æ®åæ»", $"æ´æ°åºå:{isStockUpdated},æ´æ°è®¢å:{isOrderUpdated},æ·»å 订ååºå:{isOrderStockCread},å建任å¡:{isTaskCreated}"); |
| | | // _unitOfWorkManage.RollbackTran(); |
| | | // throw new Exception("æ·»å æ°æ®åºå¤±è´¥,è¯·æ£æ¥æ°æ®æ¯å¦æ£ç¡®,æ°æ®åæ»"); |
| | | //} |
| | | |
| | | return content.OK(); //data: orderStocks |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, $"ç³»ç»å¼å¸¸ï¼å¼å¸¸ä¿¡æ¯ï¼{ex.Message}", "æ åæ°"); |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | #region å
é¨è°ç¨ |
| | | |
| | | /// <summary> |
| | | /// 䏿·±ä½ä¼å
æ¥æ¾ |
| | | /// </summary> |
| | | /// <param name="filteredStocks">å¯åºåºåºå</param> |
| | | /// <returns>æåºå¥½çåºåºåºå</returns> |
| | | public List<DtStockInfo> PickStocks(List<DtStockInfo> filteredStocks) |
| | | { |
| | | var oneDepthList = filteredStocks.Where(x => x.LocationInfo.Depth == 1).ToList(); |
| | | var twoDepthList = filteredStocks.Where(x => x.LocationInfo.Depth == 2).ToList(); |
| | | |
| | | var results = new List<DtStockInfo>(); |
| | | foreach (var oneDepth in oneDepthList) |
| | | { |
| | | // å° Line å符串转æ¢ä¸ºæ´æ° |
| | | int oneDepthLine = oneDepth.LocationInfo.Row; |
| | | |
| | | // 计ç®ç¸å¯¹è¡ |
| | | int relativeLine = oneDepthLine % 2 == 1 ? oneDepthLine + 1 : oneDepthLine - 1; |
| | | |
| | | // æ¥æ¾ææ¥è¿çäºæ·±ä½è®°å½ |
| | | var closestTwoDepth = twoDepthList |
| | | .Where(t => t.LocationInfo.Row == relativeLine) |
| | | .Where(x => x.LocationInfo.Column == oneDepth.LocationInfo.Column) |
| | | .Where(x => x.LocationInfo.Layer == oneDepth.LocationInfo.Layer) |
| | | .FirstOrDefault(); |
| | | |
| | | // 妿æ¾å°äºææ¥è¿çäºæ·±ä½è®°å½ï¼å°å
¶ä¸ä¸æ·±ä½ä¸èµ·æ·»å å°ç»æå表 |
| | | if (closestTwoDepth != null) |
| | | { |
| | | results.Add(oneDepth); |
| | | results.Add(closestTwoDepth); |
| | | } |
| | | else |
| | | { |
| | | // å¦ææ²¡ææ¾å°ææ¥è¿çäºæ·±ä½è®°å½ï¼å°ä¸æ·±ä½æ·»å å°ç»æå表 |
| | | results.Add(oneDepth); |
| | | } |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | #endregion å
é¨è°ç¨ |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | #region ç产åºåºå |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ä¸»æ°æ®æå»ºç产åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrderProduction CreateProductionOrder(Dictionary<string, object> mainData) |
| | | { |
| | | return new Dt_OutOrderProduction |
| | | { |
| | | OrderNumber = mainData.GetValueOrDefault("OrderNumber")?.ToString(), |
| | | WarehouseId = mainData.GetValueOrDefault("WarehouseId")?.ObjToInt() ?? 0, |
| | | Status = (int)OutOrderTypeEnum.Issue, |
| | | Remarks = mainData.GetValueOrDefault("Remarks")?.ToString(), |
| | | Creater = mainData.GetValueOrDefault("Creater")?.ToString(), |
| | | CreateDate = mainData.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | OrderDate = mainData.GetValueOrDefault("OrderDate")?.ObjToDate() ?? DateTime.Now, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æç»æ°æ®åç产åºåºåIDæå»ºç产åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderProductionDetail> CreateProductionDetails(List<Dictionary<string, object>> detailData) |
| | | { |
| | | var details = new List<Dt_OutOrderProductionDetail>(); |
| | | foreach (var item in detailData) |
| | | { |
| | | var detail = new Dt_OutOrderProductionDetail |
| | | { |
| | | MaterialId = item.GetValueOrDefault("MaterialId")?.ObjToInt() ?? 0, |
| | | Quantity = item.GetValueOrDefault("Quantity")?.ObjToInt() ?? 0, |
| | | Remarks = item.GetValueOrDefault("Remarks")?.ToString(), |
| | | CreateDate = item.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | Creater = item.GetValueOrDefault("Creater")?.ToString(), |
| | | BatchNumber = item.GetValueOrDefault("BatchNumber")?.ToString(), |
| | | }; |
| | | details.Add(detail); |
| | | } |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºå对象åç产åºåºåIDæå»ºç³»ç»åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrder CreateSystemOrder(Dt_OutOrderProduction production) |
| | | { |
| | | return new Dt_OutOrder |
| | | { |
| | | Status = production.Status, |
| | | CreateDate = DateTime.Now, |
| | | Creater = production.Creater, |
| | | OrderDate = DateTime.Now, |
| | | OrderNumber = production.OrderNumber, |
| | | Remarks = production.Remarks, |
| | | WarehouseId = production.WarehouseId, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºåæç»å表åç³»ç»åºåºåIDæå»ºç³»ç»åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderDetail> CreateSystemOrderDetails(List<Dt_OutOrderProductionDetail> productionDetails) |
| | | { |
| | | var orderDetails = new List<Dt_OutOrderDetail>(); |
| | | foreach (var item in productionDetails) |
| | | { |
| | | var detail = new Dt_OutOrderDetail |
| | | { |
| | | AllocatedQuantity = 0, |
| | | BatchNumber = item.BatchNumber, |
| | | CompletedQuantity = 0, |
| | | CreateDate = item.CreateDate, |
| | | Creater = item.Creater, |
| | | MaterialId = item.MaterialId, |
| | | OutboundQuantity = item.Quantity, |
| | | Remarks = item.Remarks, |
| | | MaterialName = item.Remarks // ç©æåç§° |
| | | }; |
| | | orderDetails.Add(detail); |
| | | } |
| | | return orderDetails; |
| | | } |
| | | |
| | | #endregion ç产åºåºå |
| | | |
| | | #region è°æ¨åºåºå |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ä¸»æ°æ®æå»ºè°æ¨åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrderTransfer CreateTransferOrder(Dictionary<string, object> mainData) |
| | | { |
| | | return new Dt_OutOrderTransfer |
| | | { |
| | | OrderNumber = mainData.GetValueOrDefault("OrderNumber")?.ToString(), |
| | | SourceWarehouseId = mainData.GetValueOrDefault("SourceWarehouseId")?.ObjToInt() ?? 0, |
| | | DestinationWarehouseId = mainData.GetValueOrDefault("WarehouseId")?.ObjToInt() ?? 0, |
| | | Status = (int)OutOrderTypeEnum.Allocate, |
| | | Remarks = mainData.GetValueOrDefault("Remarks")?.ToString(), |
| | | Creater = mainData.GetValueOrDefault("Creater")?.ToString(), |
| | | CreateDate = mainData.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | OrderDate = mainData.GetValueOrDefault("OrderDate")?.ObjToDate() ?? DateTime.Now, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æç»æ°æ®åè°æ¨åºåºåIDæå»ºè°æ¨åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderTransferDetail> CreateTransferDetails(List<Dictionary<string, object>> detailData) |
| | | { |
| | | var details = new List<Dt_OutOrderTransferDetail>(); |
| | | foreach (var item in detailData) |
| | | { |
| | | var detail = new Dt_OutOrderTransferDetail |
| | | { |
| | | MaterialId = item.GetValueOrDefault("MaterialId")?.ObjToInt() ?? 0, |
| | | Quantity = item.GetValueOrDefault("Quantity")?.ObjToInt() ?? 0, |
| | | Remarks = item.GetValueOrDefault("Remarks")?.ToString(), |
| | | CreateDate = item.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | Creater = item.GetValueOrDefault("Creater")?.ToString(), |
| | | BatchNumber = item.GetValueOrDefault("BatchNumber")?.ToString(), |
| | | }; |
| | | details.Add(detail); |
| | | } |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºå对象åç产åºåºåIDæå»ºç³»ç»åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrder CreateSystemOrder(Dt_OutOrderTransfer transfer) |
| | | { |
| | | return new Dt_OutOrder |
| | | { |
| | | Status = transfer.Status, |
| | | CreateDate = DateTime.Now, |
| | | Creater = transfer.Creater, |
| | | OrderDate = DateTime.Now, |
| | | OrderNumber = transfer.OrderNumber, |
| | | Remarks = transfer.Remarks, |
| | | WarehouseId = transfer.SourceWarehouseId, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºåæç»å表åç³»ç»åºåºåIDæå»ºç³»ç»åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderDetail> CreateSystemOrderDetails(List<Dt_OutOrderTransferDetail> transferDetails) |
| | | { |
| | | var orderDetails = new List<Dt_OutOrderDetail>(); |
| | | foreach (var item in transferDetails) |
| | | { |
| | | var detail = new Dt_OutOrderDetail |
| | | { |
| | | AllocatedQuantity = 0, |
| | | BatchNumber = item.BatchNumber, |
| | | CompletedQuantity = 0, |
| | | CreateDate = item.CreateDate, |
| | | Creater = item.Creater, |
| | | MaterialId = item.MaterialId, |
| | | OutboundQuantity = item.Quantity, |
| | | Remarks = item.Remarks, |
| | | MaterialName = item.Remarks // ç©æåç§° |
| | | }; |
| | | orderDetails.Add(detail); |
| | | } |
| | | return orderDetails; |
| | | } |
| | | |
| | | #endregion è°æ¨åºåºå |
| | | |
| | | #region åºåºåé
|
| | | |
| | | /// <summary> |
| | | /// å建任å¡å表 |
| | | /// </summary> |
| | | /// <param name="order">订å对象</param> |
| | | /// <param name="filteredStocks">çéåçåºåå表</param> |
| | | /// <returns>ãä»»å¡å表,æ´æ°åé
æ°é订å,å建任å¡çåºåã</returns> |
| | | private (List<Dt_Task>, Dt_OutOrder, List<DtStockInfo>) CreateTasks(Dt_OutOrder order, List<DtStockInfo> filteredStocks) |
| | | { |
| | | var tasks = new List<Dt_Task>(); |
| | | var stocks = new List<DtStockInfo>(); |
| | | |
| | | foreach (var stock in filteredStocks) |
| | | { |
| | | // 妿已åé
æ°éè¾¾å°åºåºæ°éï¼åæ¢åé
|
| | | if (order.OrderDetailList.AllocatedQuantity >= order.OrderDetailList.OutboundQuantity) |
| | | break; |
| | | |
| | | // 妿æçä»»å¡å·²åå¨ï¼è·³è¿ |
| | | if (_taskRepository.QueryFirst(x => x.PalletCode == stock.PalletCode) != null) |
| | | continue; |
| | | |
| | | // åå»ºä»»å¡ |
| | | tasks.Add(new Dt_Task |
| | | { |
| | | CreateDate = DateTime.Now, // å建æ¶é´ |
| | | Creater = App.User.UserName, // å建人 |
| | | CurrentAddress = stock.LocationCode, //å½åä½ç½® |
| | | Dispatchertime = DateTime.Now, //è°åº¦æ¶é´ï¼ä»»å¡ä¸åæ¶é´ï¼ |
| | | Grade = 1, // ç级 |
| | | //PVI = stock.StockInfoDetails[0].MaterielCode, // ç©æå· |
| | | NextAddress = stock.LocationCode, // ä¸ä¸ä½ç½® |
| | | PalletCode = stock.PalletCode, //æçå· |
| | | Remark = stock.Remark, //夿³¨ |
| | | Roadway = stock.LocationInfo.RoadwayNo, //å··é |
| | | SourceAddress = stock.LocationCode, //æ¥æºä½ç½® |
| | | TargetAddress = order.OrderDetailList.Remarks, //ç®æ å°å |
| | | TaskNum = _taskRepository.GetTaskNo().Result, //ä»»å¡å· |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, //ä»»å¡ç¶æ |
| | | TaskType = (int)TaskTypeEnum.Outbound, //ä»»å¡ç±»å |
| | | }); |
| | | |
| | | // æ´æ°å·²åé
æ°é |
| | | order.OrderDetailList.AllocatedQuantity += stock.StockInfoDetails.Sum(x => x.StockQuantity); |
| | | stocks.Add(stock); |
| | | } |
| | | |
| | | return (tasks, order, stocks); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°åºåç¶æ |
| | | /// </summary> |
| | | /// <param name="filteredStocks">çéåçåºåå表</param> |
| | | /// <returns>æ´æ°åçåºåå表</returns> |
| | | private List<DtStockInfo> UpdateStocks(List<DtStockInfo> filteredStocks) |
| | | { |
| | | var updatedStocks = new List<DtStockInfo>(); |
| | | |
| | | foreach (var stock in filteredStocks) |
| | | { |
| | | // æ´æ°åºåç¶æ |
| | | stock.LocationInfo.LocationStatus = (int)LocationEnum.Lock; |
| | | stock.StockInfoDetails.ForEach(x => |
| | | { |
| | | x.Status = (int)StockStateEmun.åºåºéå®; |
| | | }); |
| | | updatedStocks.Add(stock); |
| | | } |
| | | |
| | | return updatedStocks; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å建订ååºåå表 |
| | | /// </summary> |
| | | /// <param name="stock">çéåçåºåå表</param> |
| | | /// <param name="order">订å对象</param> |
| | | /// <returns>订ååºåå表</returns> |
| | | private List<Dt_OutOrderAndStock> CreateOrderStock(List<DtStockInfo> stock, Dt_OutOrder order) |
| | | { |
| | | var orderStocks = new List<Dt_OutOrderAndStock>(); |
| | | foreach (var item in stock) |
| | | { |
| | | orderStocks.Add(new Dt_OutOrderAndStock() |
| | | { |
| | | AllocatedQuantity = order.OrderDetailList.AllocatedQuantity, |
| | | MaterialNo = item.StockInfoDetails[0].MaterielCode, |
| | | MaterialName = order.OrderDetailList.MaterialName, |
| | | OrderNumber = order.OrderNumber, |
| | | OutboundQuantity = order.OrderDetailList.OutboundQuantity, |
| | | PalletCode = item.PalletCode, |
| | | PalletQuantity = item.StockInfoDetails.Sum(x => x.StockQuantity), |
| | | State = item.StockInfoDetails[0].Status, |
| | | BatchNumber = order.OrderDetailList.BatchNumber, |
| | | CompletedQuantity = order.OrderDetailList.CompletedQuantity, |
| | | Creater = App.User.UserName, |
| | | CreateDate = DateTime.Now, |
| | | GroupId = item.Id, |
| | | LocationCode = item.LocationInfo.LocationCode, |
| | | OutOrderId = order.Id, |
| | | }); |
| | | } |
| | | |
| | | return orderStocks; |
| | | } |
| | | |
| | | #endregion åºåºåé
|
| | | |
| | | #endregion ç§ææ¹æ³ |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_StorageOutOrderServices; |
| | | |
| | | public class Dt_PaintingOrderInfoService : ServiceBase<Dt_PaintingOrderInfo, IDt_PaintingOrderInfoRepository>, IDt_PaintingOrderInfoService |
| | | { |
| | | private readonly LogFactory LogFactory = new LogFactory(); |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IDt_OutOrderProductionService _outOrderProductionService; |
| | | private readonly IDt_OutOrderProductionDetailService _outOrderProductionDetailService; |
| | | private readonly IDt_OutOrderDtailService _outOrderDtailService; |
| | | private readonly IDt_OutOrderTransferRepository _OutOrderTransferRepository; |
| | | private readonly IDt_OutOrderTransferDetailRepository _OutOrderTransferDetailRepository; |
| | | private readonly IDt_MaterielInfoRepository _materielInfoRepository; |
| | | private readonly IStockInfoRepository _stockInfoRepository; |
| | | private readonly IDt_OutOrderAndStockRepository _outOrderAndStockRepository; |
| | | private readonly IDt_TaskRepository _taskRepository; |
| | | |
| | | public Dt_PaintingOrderInfoService(IDt_PaintingOrderInfoRepository BaseDal, |
| | | IUnitOfWorkManage unitOfWorkManage, |
| | | IDt_OutOrderProductionService outOrderProductionService, |
| | | IDt_OutOrderProductionDetailService outOrderProductionDetailService, |
| | | IDt_OutOrderDtailService outOrderDtailService, |
| | | IDt_OutOrderTransferDetailRepository outOrderTransferDetailRepository, |
| | | IDt_OutOrderTransferRepository outOrderTransferRepository, |
| | | IDt_MaterielInfoRepository materielInfoRepository, |
| | | IStockInfoRepository stockInfoRepository, |
| | | IDt_OutOrderAndStockRepository outOrderAndStockRepository, |
| | | IDt_TaskRepository taskRepository) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _outOrderProductionService = outOrderProductionService; |
| | | _outOrderProductionDetailService = outOrderProductionDetailService; |
| | | _outOrderDtailService = outOrderDtailService; |
| | | _OutOrderTransferDetailRepository = outOrderTransferDetailRepository; |
| | | _OutOrderTransferRepository = outOrderTransferRepository; |
| | | _materielInfoRepository = materielInfoRepository; |
| | | _stockInfoRepository = stockInfoRepository; |
| | | _outOrderAndStockRepository = outOrderAndStockRepository; |
| | | _taskRepository = taskRepository; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¢ååé
åºåºåºå |
| | | /// </summary> |
| | | /// <param name="orderNo">订åç¼å·</param> |
| | | /// <returns></returns> |
| | | public async Task<WebResponseContent> GetOutboundStockAsync(string orderNo) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | // è·å订å |
| | | //var order = await BaseDal.GetOutOrderByNumberAsync(orderNo); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ ¹æ®è®¢åç¼å·è·åè®¢åæ°æ®", JsonConvert.SerializeObject(order)); |
| | | |
| | | //// æ£æ¥è®¢åæ¯å¦è·åæå |
| | | //if (order == null) |
| | | //{ |
| | | // return content.Error("è·å订å失败"); |
| | | //} |
| | | |
| | | //// è·å订åä¸ç第ä¸ä¸ªç©æç¼å· |
| | | //var materielInfo = await _materielInfoRepository.QueryFirstAsync(x => x.MaterielID == order.OrderDetailList.MaterialId); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "è·å订åç©æç¼å·", JsonConvert.SerializeObject(materielInfo)); |
| | | |
| | | //#region å
å
¥å
åº |
| | | |
| | | //// è·åè¯¥ç©æææå¯åºåºåºå |
| | | //var filteredStocks = await _stockInfoRepository.QueryDataAsync(x => true); |
| | | //filteredStocks.OrderBy(x => x.CreateDate).ToList(); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "è·åè¯¥ç©æææå¯åºåºåºå", JsonConvert.SerializeObject(filteredStocks)); |
| | | |
| | | //#endregion å
å
¥å
åº |
| | | |
| | | //#region æ¥æ¾é è¿åºåºå£åºå |
| | | |
| | | //// é»è®¤åè¶å¤§è¶é è¿åºåºå£ |
| | | //filteredStocks = filteredStocks.OrderByDescending(x => x.LocationInfo.Column).OrderBy(x => x.CreateDate).ToList(); |
| | | |
| | | //#endregion æ¥æ¾é è¿åºåºå£åºå |
| | | |
| | | //#region 䏿·±ä½ä¼å
æ¥æ¾ï¼åæ¥æ¾ååäºæ·±ä½ |
| | | |
| | | //filteredStocks = PickStocks(filteredStocks); |
| | | |
| | | //#endregion 䏿·±ä½ä¼å
æ¥æ¾ï¼åæ¥æ¾ååäºæ·±ä½ |
| | | |
| | | //// å建任å¡å表 |
| | | //var (tasks, updateOrder, stock) = CreateTasks(order, filteredStocks); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "å建任å¡å表ï¼ä¿®æ¹è®¢ååé
æ°éï¼è·ååºåºåé
åºå", |
| | | // $"ä»»å¡å表:{JsonConvert.SerializeObject(tasks)},订åå表ï¼{JsonConvert.SerializeObject(updateOrder)},å·²åé
åºåï¼{JsonConvert.SerializeObject(stock)}"); |
| | | |
| | | //// æ´æ°åºåç¶æ |
| | | //var stockList = UpdateStocks(stock); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ´æ°åºåç¶æ", JsonConvert.SerializeObject(stockList)); |
| | | |
| | | //// å建订ååºåå表 |
| | | //List<Dt_OutOrderAndStock>? orderStocks = CreateOrderStock(stock, updateOrder); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "å建订ååºåå表", JsonConvert.SerializeObject(orderStocks)); |
| | | |
| | | //// å¼å§äºå¡ |
| | | //_unitOfWorkManage.BeginTran(); |
| | | |
| | | //// æ´æ°åºå |
| | | //var isStockUpdated = _stockInfoRepository.UpdateData(stockList); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡æ´æ°åºå", isStockUpdated); |
| | | |
| | | //// æ´æ°è®¢å |
| | | //var isOrderUpdated = await BaseDal.OutOrderUpdatedAsync(updateOrder); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡æ´æ°è®¢å", isOrderUpdated); |
| | | |
| | | ////æ·»å 订ååºå |
| | | //var isOrderStockCread = await _outOrderAndStockRepository.AddDataAsync(orderStocks) > 0; |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡æ·»å 订ååºå", isOrderStockCread); |
| | | |
| | | //// åå»ºä»»å¡ |
| | | //var isTaskCreated = await _taskRepository.Create(tasks); |
| | | //LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "äºå¡å建任å¡", isTaskCreated); |
| | | |
| | | //// æäº¤æåæ»äºå¡ |
| | | //if (isStockUpdated && isTaskCreated && isOrderUpdated && isOrderStockCread) |
| | | //{ |
| | | // LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ°æ®å¤çå®æï¼æäº¤äºå¡", "æ åæ°"); |
| | | // _unitOfWorkManage.CommitTran(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, "æ·»å æ°æ®åºå¤±è´¥,è¯·æ£æ¥æ°æ®æ¯å¦æ£ç¡®,æ°æ®åæ»", $"æ´æ°åºå:{isStockUpdated},æ´æ°è®¢å:{isOrderUpdated},æ·»å 订ååºå:{isOrderStockCread},å建任å¡:{isTaskCreated}"); |
| | | // _unitOfWorkManage.RollbackTran(); |
| | | // throw new Exception("æ·»å æ°æ®åºå¤±è´¥,è¯·æ£æ¥æ°æ®æ¯å¦æ£ç¡®,æ°æ®åæ»"); |
| | | //} |
| | | |
| | | return content.OK(); //data: orderStocks |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | LogFactory.GetLog("åºåºåé
å¹¶å建任å¡").InfoFormat(true, $"ç³»ç»å¼å¸¸ï¼å¼å¸¸ä¿¡æ¯ï¼{ex.Message}", "æ åæ°"); |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | #region å
é¨è°ç¨ |
| | | |
| | | /// <summary> |
| | | /// 䏿·±ä½ä¼å
æ¥æ¾ |
| | | /// </summary> |
| | | /// <param name="filteredStocks">å¯åºåºåºå</param> |
| | | /// <returns>æåºå¥½çåºåºåºå</returns> |
| | | public List<DtStockInfo> PickStocks(List<DtStockInfo> filteredStocks) |
| | | { |
| | | var oneDepthList = filteredStocks.Where(x => x.LocationInfo.Depth == 1).ToList(); |
| | | var twoDepthList = filteredStocks.Where(x => x.LocationInfo.Depth == 2).ToList(); |
| | | |
| | | var results = new List<DtStockInfo>(); |
| | | foreach (var oneDepth in oneDepthList) |
| | | { |
| | | // å° Line å符串转æ¢ä¸ºæ´æ° |
| | | int oneDepthLine = oneDepth.LocationInfo.Row; |
| | | |
| | | // 计ç®ç¸å¯¹è¡ |
| | | int relativeLine = oneDepthLine % 2 == 1 ? oneDepthLine + 1 : oneDepthLine - 1; |
| | | |
| | | // æ¥æ¾ææ¥è¿çäºæ·±ä½è®°å½ |
| | | var closestTwoDepth = twoDepthList |
| | | .Where(t => t.LocationInfo.Row == relativeLine) |
| | | .Where(x => x.LocationInfo.Column == oneDepth.LocationInfo.Column) |
| | | .Where(x => x.LocationInfo.Layer == oneDepth.LocationInfo.Layer) |
| | | .FirstOrDefault(); |
| | | |
| | | // 妿æ¾å°äºææ¥è¿çäºæ·±ä½è®°å½ï¼å°å
¶ä¸ä¸æ·±ä½ä¸èµ·æ·»å å°ç»æå表 |
| | | if (closestTwoDepth != null) |
| | | { |
| | | results.Add(oneDepth); |
| | | results.Add(closestTwoDepth); |
| | | } |
| | | else |
| | | { |
| | | // å¦ææ²¡ææ¾å°ææ¥è¿çäºæ·±ä½è®°å½ï¼å°ä¸æ·±ä½æ·»å å°ç»æå表 |
| | | results.Add(oneDepth); |
| | | } |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | #endregion å
é¨è°ç¨ |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | #region ç产åºåºå |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ä¸»æ°æ®æå»ºç产åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrderProduction CreateProductionOrder(Dictionary<string, object> mainData) |
| | | { |
| | | return new Dt_OutOrderProduction |
| | | { |
| | | OrderNumber = mainData.GetValueOrDefault("OrderNumber")?.ToString(), |
| | | WarehouseId = mainData.GetValueOrDefault("WarehouseId")?.ObjToInt() ?? 0, |
| | | Status = (int)OutOrderTypeEnum.Issue, |
| | | Remarks = mainData.GetValueOrDefault("Remarks")?.ToString(), |
| | | Creater = mainData.GetValueOrDefault("Creater")?.ToString(), |
| | | CreateDate = mainData.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | OrderDate = mainData.GetValueOrDefault("OrderDate")?.ObjToDate() ?? DateTime.Now, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æç»æ°æ®åç产åºåºåIDæå»ºç产åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderProductionDetail> CreateProductionDetails(List<Dictionary<string, object>> detailData) |
| | | { |
| | | var details = new List<Dt_OutOrderProductionDetail>(); |
| | | foreach (var item in detailData) |
| | | { |
| | | var detail = new Dt_OutOrderProductionDetail |
| | | { |
| | | MaterialId = item.GetValueOrDefault("MaterialId")?.ObjToInt() ?? 0, |
| | | Quantity = item.GetValueOrDefault("Quantity")?.ObjToInt() ?? 0, |
| | | Remarks = item.GetValueOrDefault("Remarks")?.ToString(), |
| | | CreateDate = item.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | Creater = item.GetValueOrDefault("Creater")?.ToString(), |
| | | BatchNumber = item.GetValueOrDefault("BatchNumber")?.ToString(), |
| | | }; |
| | | details.Add(detail); |
| | | } |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºå对象åç产åºåºåIDæå»ºç³»ç»åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrder CreateSystemOrder(Dt_OutOrderProduction production) |
| | | { |
| | | return new Dt_OutOrder |
| | | { |
| | | Status = production.Status, |
| | | CreateDate = DateTime.Now, |
| | | Creater = production.Creater, |
| | | OrderDate = DateTime.Now, |
| | | OrderNumber = production.OrderNumber, |
| | | Remarks = production.Remarks, |
| | | WarehouseId = production.WarehouseId, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºåæç»å表åç³»ç»åºåºåIDæå»ºç³»ç»åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderDetail> CreateSystemOrderDetails(List<Dt_OutOrderProductionDetail> productionDetails) |
| | | { |
| | | var orderDetails = new List<Dt_OutOrderDetail>(); |
| | | foreach (var item in productionDetails) |
| | | { |
| | | var detail = new Dt_OutOrderDetail |
| | | { |
| | | AllocatedQuantity = 0, |
| | | BatchNumber = item.BatchNumber, |
| | | CompletedQuantity = 0, |
| | | CreateDate = item.CreateDate, |
| | | Creater = item.Creater, |
| | | MaterialId = item.MaterialId, |
| | | OutboundQuantity = item.Quantity, |
| | | Remarks = item.Remarks, |
| | | MaterialName = item.Remarks // ç©æåç§° |
| | | }; |
| | | orderDetails.Add(detail); |
| | | } |
| | | return orderDetails; |
| | | } |
| | | |
| | | #endregion ç产åºåºå |
| | | |
| | | #region è°æ¨åºåºå |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ä¸»æ°æ®æå»ºè°æ¨åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrderTransfer CreateTransferOrder(Dictionary<string, object> mainData) |
| | | { |
| | | return new Dt_OutOrderTransfer |
| | | { |
| | | OrderNumber = mainData.GetValueOrDefault("OrderNumber")?.ToString(), |
| | | SourceWarehouseId = mainData.GetValueOrDefault("SourceWarehouseId")?.ObjToInt() ?? 0, |
| | | DestinationWarehouseId = mainData.GetValueOrDefault("WarehouseId")?.ObjToInt() ?? 0, |
| | | Status = (int)OutOrderTypeEnum.Allocate, |
| | | Remarks = mainData.GetValueOrDefault("Remarks")?.ToString(), |
| | | Creater = mainData.GetValueOrDefault("Creater")?.ToString(), |
| | | CreateDate = mainData.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | OrderDate = mainData.GetValueOrDefault("OrderDate")?.ObjToDate() ?? DateTime.Now, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æç»æ°æ®åè°æ¨åºåºåIDæå»ºè°æ¨åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderTransferDetail> CreateTransferDetails(List<Dictionary<string, object>> detailData) |
| | | { |
| | | var details = new List<Dt_OutOrderTransferDetail>(); |
| | | foreach (var item in detailData) |
| | | { |
| | | var detail = new Dt_OutOrderTransferDetail |
| | | { |
| | | MaterialId = item.GetValueOrDefault("MaterialId")?.ObjToInt() ?? 0, |
| | | Quantity = item.GetValueOrDefault("Quantity")?.ObjToInt() ?? 0, |
| | | Remarks = item.GetValueOrDefault("Remarks")?.ToString(), |
| | | CreateDate = item.GetValueOrDefault("CreateDate")?.ObjToDate() ?? DateTime.Now, |
| | | Creater = item.GetValueOrDefault("Creater")?.ToString(), |
| | | BatchNumber = item.GetValueOrDefault("BatchNumber")?.ToString(), |
| | | }; |
| | | details.Add(detail); |
| | | } |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºå对象åç产åºåºåIDæå»ºç³»ç»åºåºå对象ã |
| | | /// </summary> |
| | | private Dt_OutOrder CreateSystemOrder(Dt_OutOrderTransfer transfer) |
| | | { |
| | | return new Dt_OutOrder |
| | | { |
| | | Status = transfer.Status, |
| | | CreateDate = DateTime.Now, |
| | | Creater = transfer.Creater, |
| | | OrderDate = DateTime.Now, |
| | | OrderNumber = transfer.OrderNumber, |
| | | Remarks = transfer.Remarks, |
| | | WarehouseId = transfer.SourceWarehouseId, |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ç产åºåºåæç»å表åç³»ç»åºåºåIDæå»ºç³»ç»åºåºåæç»å表ã |
| | | /// </summary> |
| | | private List<Dt_OutOrderDetail> CreateSystemOrderDetails(List<Dt_OutOrderTransferDetail> transferDetails) |
| | | { |
| | | var orderDetails = new List<Dt_OutOrderDetail>(); |
| | | foreach (var item in transferDetails) |
| | | { |
| | | var detail = new Dt_OutOrderDetail |
| | | { |
| | | AllocatedQuantity = 0, |
| | | BatchNumber = item.BatchNumber, |
| | | CompletedQuantity = 0, |
| | | CreateDate = item.CreateDate, |
| | | Creater = item.Creater, |
| | | MaterialId = item.MaterialId, |
| | | OutboundQuantity = item.Quantity, |
| | | Remarks = item.Remarks, |
| | | MaterialName = item.Remarks // ç©æåç§° |
| | | }; |
| | | orderDetails.Add(detail); |
| | | } |
| | | return orderDetails; |
| | | } |
| | | |
| | | #endregion è°æ¨åºåºå |
| | | |
| | | #region åºåºåé
|
| | | |
| | | /// <summary> |
| | | /// å建任å¡å表 |
| | | /// </summary> |
| | | /// <param name="order">订å对象</param> |
| | | /// <param name="filteredStocks">çéåçåºåå表</param> |
| | | /// <returns>ãä»»å¡å表,æ´æ°åé
æ°é订å,å建任å¡çåºåã</returns> |
| | | private (List<Dt_Task>, Dt_OutOrder, List<DtStockInfo>) CreateTasks(Dt_OutOrder order, List<DtStockInfo> filteredStocks) |
| | | { |
| | | var tasks = new List<Dt_Task>(); |
| | | var stocks = new List<DtStockInfo>(); |
| | | |
| | | foreach (var stock in filteredStocks) |
| | | { |
| | | // 妿已åé
æ°éè¾¾å°åºåºæ°éï¼åæ¢åé
|
| | | if (order.OrderDetailList.AllocatedQuantity >= order.OrderDetailList.OutboundQuantity) |
| | | break; |
| | | |
| | | // 妿æçä»»å¡å·²åå¨ï¼è·³è¿ |
| | | if (_taskRepository.QueryFirst(x => x.PalletCode == stock.PalletCode) != null) |
| | | continue; |
| | | |
| | | // åå»ºä»»å¡ |
| | | tasks.Add(new Dt_Task |
| | | { |
| | | CreateDate = DateTime.Now, // å建æ¶é´ |
| | | Creater = App.User.UserName, // å建人 |
| | | CurrentAddress = stock.LocationCode, //å½åä½ç½® |
| | | Dispatchertime = DateTime.Now, //è°åº¦æ¶é´ï¼ä»»å¡ä¸åæ¶é´ï¼ |
| | | Grade = 1, // ç级 |
| | | //PVI = stock.StockInfoDetails[0].MaterielCode, // ç©æå· |
| | | NextAddress = stock.LocationCode, // ä¸ä¸ä½ç½® |
| | | PalletCode = stock.PalletCode, //æçå· |
| | | Remark = stock.Remark, //夿³¨ |
| | | Roadway = stock.LocationInfo.RoadwayNo, //å··é |
| | | SourceAddress = stock.LocationCode, //æ¥æºä½ç½® |
| | | TargetAddress = order.OrderDetailList.Remarks, //ç®æ å°å |
| | | TaskNum = _taskRepository.GetTaskNo().Result, //ä»»å¡å· |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, //ä»»å¡ç¶æ |
| | | TaskType = (int)TaskTypeEnum.Outbound, //ä»»å¡ç±»å |
| | | }); |
| | | |
| | | // æ´æ°å·²åé
æ°é |
| | | order.OrderDetailList.AllocatedQuantity += stock.StockInfoDetails.Sum(x => x.StockQuantity); |
| | | stocks.Add(stock); |
| | | } |
| | | |
| | | return (tasks, order, stocks); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°åºåç¶æ |
| | | /// </summary> |
| | | /// <param name="filteredStocks">çéåçåºåå表</param> |
| | | /// <returns>æ´æ°åçåºåå表</returns> |
| | | private List<DtStockInfo> UpdateStocks(List<DtStockInfo> filteredStocks) |
| | | { |
| | | var updatedStocks = new List<DtStockInfo>(); |
| | | |
| | | foreach (var stock in filteredStocks) |
| | | { |
| | | // æ´æ°åºåç¶æ |
| | | stock.LocationInfo.LocationStatus = (int)LocationEnum.Lock; |
| | | stock.StockInfoDetails.ForEach(x => |
| | | { |
| | | x.Status = (int)StockStateEmun.åºåºéå®; |
| | | }); |
| | | updatedStocks.Add(stock); |
| | | } |
| | | |
| | | return updatedStocks; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å建订ååºåå表 |
| | | /// </summary> |
| | | /// <param name="stock">çéåçåºåå表</param> |
| | | /// <param name="order">订å对象</param> |
| | | /// <returns>订ååºåå表</returns> |
| | | private List<Dt_OutOrderAndStock> CreateOrderStock(List<DtStockInfo> stock, Dt_OutOrder order) |
| | | { |
| | | var orderStocks = new List<Dt_OutOrderAndStock>(); |
| | | foreach (var item in stock) |
| | | { |
| | | orderStocks.Add(new Dt_OutOrderAndStock() |
| | | { |
| | | AllocatedQuantity = order.OrderDetailList.AllocatedQuantity, |
| | | MaterialNo = item.StockInfoDetails[0].MaterielCode, |
| | | MaterialName = order.OrderDetailList.MaterialName, |
| | | OrderNumber = order.OrderNumber, |
| | | OutboundQuantity = order.OrderDetailList.OutboundQuantity, |
| | | PalletCode = item.PalletCode, |
| | | PalletQuantity = item.StockInfoDetails.Sum(x => x.StockQuantity), |
| | | State = item.StockInfoDetails[0].Status, |
| | | BatchNumber = order.OrderDetailList.BatchNumber, |
| | | CompletedQuantity = order.OrderDetailList.CompletedQuantity, |
| | | Creater = App.User.UserName, |
| | | CreateDate = DateTime.Now, |
| | | GroupId = item.Id, |
| | | LocationCode = item.LocationInfo.LocationCode, |
| | | OutOrderId = order.Id, |
| | | }); |
| | | } |
| | | |
| | | return orderStocks; |
| | | } |
| | | |
| | | #endregion åºåºåé
|
| | | |
| | | #endregion ç§ææ¹æ³ |
| | | } |
| | |
| | | using System.Security.Cryptography.X509Certificates; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_BasicInfoRepository; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | |
| | | namespace WIDESEA_StorageTaskServices |
| | | { |
| | | public class BDCManager : IBDCManager |
| | | public partial class BDCManager : IBDCManager |
| | | { |
| | | private readonly List<Dt_PalletStockInfo> _storageLocations; |
| | | private readonly List<DtLocationInfo> _locationInfos; |
| | | private readonly object _lock = new object(); |
| | | private readonly IDt_BDCConfigurationService _BDCConfigurationService; |
| | | private readonly ILocationInfoRepository _locationRepository; |
| | | private readonly IDt_RoadWayInfoRepository _roadWayInfoRepository; |
| | | private readonly IDt_RoadWayRepository _roadWayRepository; |
| | | |
| | | |
| | | public int TotalCapacity => _locationInfos.Count; |
| | | // æ´æ°æé 彿° |
| | | public BDCManager(IDt_BDCConfigurationService BDCConfigurationService, ILocationInfoRepository locationInfoRepository, IDt_RoadWayInfoRepository roadWayInfoRepository ) |
| | | { |
| | | _BDCConfigurationService = BDCConfigurationService; |
| | | _locationRepository = locationInfoRepository; |
| | | _roadWayInfoRepository = roadWayInfoRepository; |
| | | } |
| | | |
| | | |
| | | public List<DtLocationInfo> TotalCapacity => _locationRepository.QueryData(); |
| | | |
| | | public int CurrentOccupancy => _storageLocations.Count; |
| | | |
| | | public bool AddToBDC(Dt_CarBody body) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public void GenerateReport() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public List<Dt_CarBody> GetInventory() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public List<Dt_CarBody> RetrieveByColor(int color) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public List<Dt_CarBody> RetrieveByModel(string model) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public Dt_CarBody RetrieveFromBDC(string bodyId) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_StorageTaskServices |
| | | { |
| | | public partial class BDCManager |
| | | { |
| | | |
| | | public async Task<bool> AddToBDC(Dt_CarBody body) |
| | | { |
| | | // æ ¹æ®è½¦èº«ç±»åæ£æ¥æ¯å¦å¯ä»¥å
¥åº |
| | | if (body.CarType == (int)BodyType.WhiteBody) |
| | | { |
| | | if (!await _BDCConfigurationService.CanAddWhiteBody()) |
| | | { |
| | | Console.WriteLine($"æ æ³å
¥åºï¼ç½è½¦èº«å·²è¾¾å°æå¤§ç¼åéå¶"); |
| | | return false; |
| | | } |
| | | } |
| | | else // 彩车身 |
| | | { |
| | | if (!await _BDCConfigurationService.CanAddPaintedBody()) |
| | | { |
| | | Console.WriteLine($"æ æ³å
¥åºï¼å½©è½¦èº«å·²è¾¾å°æå¤§ç¼åéå¶"); |
| | | return false; |
| | | } |
| | | } |
| | | //TotalCapacity.Where(x=>x.EnalbeStatus == (int)EnableEnum.Enable && x.LocationStatus == (int)LocationEnum.Free).OrderByDescending.FirstOrDefault(); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | public void GenerateReport() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public List<Dt_CarBody> GetInventory() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public List<Dt_CarBody> RetrieveByColor(int color) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public List<Dt_CarBody> RetrieveByModel(string model) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | |
| | | public Dt_CarBody RetrieveFromBDC(string bodyId) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | } |
| | | } |
| | |
| | | using WIDESEA_IStoragIntegrationServices; |
| | | using WIDESEA_StoragIntegrationServices; |
| | | using WIDESEAWCS_BasicInfoRepository; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | |
| | |
| | | public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService |
| | | { |
| | | private readonly LogFactory LogFactory = new LogFactory(); |
| | | //private readonly BDCManager bDCManager = new BDCManager(); |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IDt_Task_HtyRepository _task_HtyRepository; |
| | | private readonly IMapper _mapper; |
| | |
| | | private readonly IDt_StationManagerRepository _stationManagerRepository; |
| | | private readonly ISys_ConfigService _configService; |
| | | private readonly IDt_PalletStockInfoRepository _palletStockInfoRepository; |
| | | private readonly IDt_PalletStockInfoDetailRepository _palletStockInfoDetailRepository; |
| | | private readonly IDt_PalletStockInfo_htyRepository _palletStockInfo_HtyRepository; |
| | | private readonly IBoxingInfoRepository _boxingInfoRepository; |
| | | private readonly IDt_CarBodyRepository _carBodyRepository; |
| | | private readonly IDt_BDCConfigurationRepository _bdcConfigurationRepository; |
| | | private readonly IDt_BDCConfigurationService _bdcConfigurationService; |
| | | private readonly IDt_RoadWayRepository _roadWayRepository; |
| | | private readonly IDt_RoadWayInfoRepository _roadWayInfoRepository; |
| | | |
| | | public Dt_TaskService(IDt_TaskRepository BaseDal, |
| | | IUnitOfWorkManage unitOfWorkManage, |
| | |
| | | ITaskExecuteDetailRepository taskExecuteDetailRepository, |
| | | ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository, |
| | | IDt_StationManagerRepository stationManagerRepository, |
| | | ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IBoxingInfoRepository boxingInfoRepository, IDt_PalletStockInfoDetailRepository palletStockInfoDetailRepository) : base(BaseDal) |
| | | ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IDt_CarBodyRepository carBodyRepository, IDt_BDCConfigurationRepository bdcConfigurationRepository, IDt_BDCConfigurationService bDCConfigurationService, IDt_RoadWayRepository roadWayRepository, IDt_RoadWayInfoRepository roadWayInfoRepository) : base(BaseDal) |
| | | |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | |
| | | _configService = configService; |
| | | _palletStockInfoRepository = palletStockInfoRepository; |
| | | _palletStockInfo_HtyRepository = palletStockInfo_HtyRepository; |
| | | _boxingInfoRepository = boxingInfoRepository; |
| | | _palletStockInfoDetailRepository = palletStockInfoDetailRepository; |
| | | _carBodyRepository = carBodyRepository; |
| | | _bdcConfigurationRepository = bdcConfigurationRepository; |
| | | _bdcConfigurationService = bDCConfigurationService; |
| | | _roadWayRepository = roadWayRepository; |
| | | _roadWayInfoRepository = roadWayInfoRepository; |
| | | } |
| | | |
| | | #region å¤é¨æ¥å£æ¹æ³ |
| | |
| | | var taskHty = CreateHistoricalTask(task); |
| | | |
| | | //è·åç»çä¿¡æ¯ |
| | | var boxinginfo = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode); |
| | | var carBody = await _carBodyRepository.QueryFirstAsync(x => x.PalletCode == task.PalletCode); |
| | | |
| | | // æ ¹æ®å建åºåå®ä¾æ¨¡å |
| | | //var boxDetail = boxinginfo.BoxingInfoDetails.Adapt<List<Dt_PalletStockInfoDetail>>(); |
| | | Dt_PalletStockInfo palletStockInfo = new Dt_PalletStockInfo |
| | | { |
| | | CreateDate = DateTime.Now, |
| | | |
| | | |
| | | Creater = task.Creater, |
| | | LocationCode = task.TargetAddress, |
| | | StockStatus = 2, |
| | |
| | | }; |
| | | |
| | | // æ§è¡æ°æ®åºäºå¡ |
| | | bool isResult = await ExecuteTransaction(palletStockInfo, taskHty, locationInf, task.TaskId, boxinginfo); |
| | | bool isResult = await ExecuteTransaction(palletStockInfo, taskHty, locationInf, task.TaskId, carBody); |
| | | if (isResult) |
| | | { |
| | | _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum); |
| | |
| | | stockInfo_Hty.FinishTime = DateTime.Now; |
| | | stockInfo_Hty.OperateType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | |
| | | var boxinfo = _boxingInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | var boxinfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | |
| | | // äºå¡å¤ç |
| | | await _unitOfWorkManage.UseTranAsync(async () => |
| | |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | |
| | | |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | #endregion å
é¨è°ç¨æ¹æ³ |
| | | |
| | | #region private å
鍿¹æ³ |
| | | |
| | | |
| | | private async Task DeleteStockInfoDetailsAsync(IEnumerable<Dt_PalletStockInfoDetail> details) |
| | | { |
| | | if (details != null) |
| | | { |
| | | var ids = details.Select(x => (object)x.Id).ToArray(); |
| | | var isStockDetailUpdated = await _palletStockInfoDetailRepository.DeleteDataByIdsAsync(ids); |
| | | if (!isStockDetailUpdated) |
| | | { |
| | | throw new Exception("åºå详æ
ä¿¡æ¯æ´æ°å¤±è´¥"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å建åå²ä»»å¡è®°å½ |
| | | /// </summary> |
| | |
| | | /// <param name="taskHty">åå²ä»»å¡å¯¹è±¡</param> |
| | | /// <param name="taskId">ä»»å¡ID</param> |
| | | /// <returns></returns> |
| | | private async Task<bool> ExecuteTransaction(Dt_PalletStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo locationInfo, int taskId, DtBoxingInfo boxingInfo) |
| | | private async Task<bool> ExecuteTransaction(Dt_PalletStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo locationInfo, int taskId, Dt_CarBody boxingInfo) |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | try |
| | |
| | | //å é¤ç»çæ°æ® |
| | | if (boxingInfo != null) |
| | | { |
| | | var box = _boxingInfoRepository.DeleteData(boxingInfo); |
| | | var box = _carBodyRepository.DeleteData(boxingInfo); |
| | | //boxingInfo.CurrentStatue = 5; |
| | | //isDeleteBoxing = await _boxingInfoRepository.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxingInfo.Id) |
| | | // .Include(x => x.BoxingInfoDetails) |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //string palletCode = saveModel.MainData["palletCode"].ToString(); |
| | | //string station = saveModel.MainData["station"].ToString(); |
| | | |
| | | // è°ç¨BaseDal.QueryFirstAsyncæ¹æ³ï¼æ¥è¯¢ä»»å¡ |
| | | var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode); |
| | | if (task != null) |
| | | { |
| | |
| | | { |
| | | throw new Exception($"ç«å°{input.Position}ä¸åå¨"); |
| | | } |
| | | |
| | | |
| | | var carBody = _carBodyRepository.QueryFirst(x => x.PalletCode == input.PalletCode); |
| | | |
| | | BDCManager bDCManager = new BDCManager(_bdcConfigurationService, _locationRepository, _roadWayInfoRepository); |
| | | |
| | | await bDCManager.AddToBDC(carBody); |
| | | |
| | | // è·ååºä½ |
| | | var location = RequestLocation(stationInfo.Roadway); |
| | | if (location == null) |
| | | { |
| | | return content.Error("æ æ³è·åè´§ä½ä¿¡æ¯æåºä½å·²æ»¡"); |
| | | } |
| | | |
| | | |
| | | var newtask = new Dt_Task |
| | | { |
| | | CurrentAddress = input.Position, |
| | |
| | | Roadway = stationInfo.Roadway, |
| | | TargetAddress = location.LocationCode, |
| | | Dispatchertime = DateTime.Now, |
| | | |
| | | NextAddress = stationInfo.Roadway, |
| | | OrderNo = null, |
| | | PalletCode = input.PalletCode, |
| | |
| | | TaskType = (int)TaskInboundTypeEnum.Inbound, |
| | | TaskNum = await BaseDal.GetTaskNo(), |
| | | Creater = "Systeam", |
| | | |
| | | }; |
| | | |
| | | |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | BaseDal.AddData(newtask); |
| | |
| | | _locationRepository.UpdateData(location); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | content.OK("ç³è¯·å
¥åºæå",data: newtask); |
| | | content.OK("ç³è¯·å
¥åºæå", data: newtask); |
| | | } |
| | | catch (Exception er) |
| | | { |
| | |
| | | return location; |
| | | } |
| | | catch (Exception err) |
| | | { |
| | | { |
| | | Console.WriteLine(err.Message.ToString()); |
| | | return null; |
| | | } |
| | |
| | | private DtLocationInfo GetEmptyLocation(List<DtLocationInfo> dtLocationInfos) |
| | | { |
| | | var locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Column).ThenBy(x => x.Row).ThenBy(x => x.Layer).FirstOrDefault(); //.ThenByDescending(x => x.Depth) |
| | | |
| | | return locationinfo; |
| | | } |
| | | |
| | | |
| | | #endregion è·åè´§ä½ |
| | | #endregion åºä½åé
|
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_BusinessServices; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IBusinessServices; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers |
| | | { |
| | | [Route("api/Dt_BDCConfiguration")] |
| | | [ApiController] |
| | | public class Dt_BDCConfigurationController : ApiBaseController<IDt_BDCConfigurationService, Dt_BDCConfiguration> |
| | | { |
| | | private readonly IHttpContextAccessor _httpContextAccessor; |
| | | public Dt_BDCConfigurationController(IDt_BDCConfigurationService service, IHttpContextAccessor httpContextAccessor) : base(service) |
| | | { |
| | | _httpContextAccessor = httpContextAccessor; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | return _MESService.prebind(json); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ»è£
å·¥å |
| | | /// </summary> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_WMSServer.Controllers; |
| | | |
| | | /// <summary> |
| | | /// ç³»ç»è®¢åæ¥å£ |
| | | /// </summary> |
| | | [Route("api/[controller]")] |
| | | [ApiController] |
| | | public class Dt_AssemblyOrderInfoController : ApiBaseController<IDt_AssemblyOrderInfoService, Dt_AssemblyOrderInfo> |
| | | { |
| | | private readonly IHttpContextAccessor _httpContextAccessor; |
| | | |
| | | public Dt_AssemblyOrderInfoController(IDt_AssemblyOrderInfoService service, IHttpContextAccessor httpContextAccessor) : base(service) |
| | | { |
| | | _httpContextAccessor = httpContextAccessor; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_WMSServer.Controllers; |
| | | |
| | | /// <summary> |
| | | /// ç³»ç»è®¢åæ¥å£ |
| | | /// </summary> |
| | | [Route("api/[controller]")] |
| | | [ApiController] |
| | | public class Dt_PaintingOrderInfoController : ApiBaseController<IDt_PaintingOrderInfoService, Dt_PaintingOrderInfo> |
| | | { |
| | | private readonly IHttpContextAccessor _httpContextAccessor; |
| | | |
| | | public Dt_PaintingOrderInfoController(IDt_PaintingOrderInfoService service, IHttpContextAccessor httpContextAccessor) : base(service) |
| | | { |
| | | _httpContextAccessor = httpContextAccessor; |
| | | } |
| | | } |