| ¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | import { el } from 'element-plus/es/locales.mjs'; |
| | | import gridBody from './extend/proOutboundOrderDetail.vue' |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: gridBody, |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | let outSysc = this.buttons.find(x => x.value == 'ExecuteOutboundSync'); |
| | | if (outSysc) { |
| | | outSysc.onClick = function () { |
| | | let rows = this.$refs.table.getSelected(); |
| | | if (rows.length == 0) return this.$error("è¯·éæ©æ°æ®!"); |
| | | if (rows.length > 1) return this.$error("è¯·éæ©åæ¡æ°æ®!"); |
| | | // this.$confirm("确认å建æ¶è´§å" + rows[0].receiveOrderNo + "çå
¥åºå?", "è¦å", { |
| | | // confirmButtonText: "ç¡®å®", |
| | | // cancelButtonText: "åæ¶", |
| | | // type: "warning", |
| | | // center: true, |
| | | // }).then(() => { |
| | | |
| | | var keys = rows.map(x => { return x.proOutOrderNo }); |
| | | this.http |
| | | .post("api/ProOutOrder/OutProErpSync?outProOrderNo=" + keys[0], null, "æ°æ®å¤çä¸") |
| | | .then((x) => { |
| | | if (!x.status) return this.$message.error(x.message); |
| | | this.$message.success("æä½æå"); |
| | | this.refresh(); |
| | | }); |
| | | // }); |
| | | } |
| | | |
| | | } |
| | | //æ©å±é¡µé¢åå§åæä½ |
| | | this.columns.push({ |
| | | field: 'æä½', |
| | | title: 'æä½', |
| | | width: 90, |
| | | fixed: 'right', |
| | | align: 'center', |
| | | formatter: (row) => { |
| | | return ( |
| | | '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">æ¥çæç»</i>' |
| | | ); |
| | | }, |
| | | click: (row) => { |
| | | this.$refs.gridBody.open(row); |
| | | } |
| | | }); |
| | | }, |
| | | 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); //åå»è¡æ¶éä¸å½åè¡; |
| | | let outSysc = this.buttons.find(x => x.value == 'ExecuteOutboundSync'); |
| | | console.log(outSysc); |
| | | if (row.proOrderStatus==2) { |
| | | if (!outSysc.hidden){ |
| | | this.$message.warning(row.proOutOrderNo+"订åå·²å®æï¼æ é忥"); |
| | | outSysc.hidden=true; |
| | | } |
| | | }else{ |
| | | outSysc.hidden=false; |
| | | } |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | } |
| | | } |
| | | }; |
| | | export default extension; |
| | | |
| | |
| | | path: '/inspectOrder', |
| | | name: 'inspectOrder', |
| | | component: () => import('@/views/check/inspectOrder.vue') |
| | | }, { |
| | | path: '/proCollectOutOrder', |
| | | name: 'proCollectOutOrder', |
| | | component: () => import('@/views/outbound/proCollectOutOrder.vue') |
| | | } |
| | | ] |
| | | export default viewgird |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/outbound/proCollectOutOrder.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: "id", |
| | | footer: "Foots", |
| | | cnName: "æå颿åºåºå", |
| | | name: "proCollectOutOrder", |
| | | url: "/proCollectOutOrder/", |
| | | sortName: "id", |
| | | }); |
| | | const editFormFields = ref({ |
| | | proOrderType: "", |
| | | proCollectOutOrderNo: "", |
| | | proOrderStatus: "", |
| | | warehouseId: "", |
| | | }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { |
| | | title: "åæ®ç±»å", |
| | | required: true, |
| | | field: "proOrderType", |
| | | type: "select", |
| | | dataKey: "ProOrderType", |
| | | data: [{key:2,value:"æå颿åºåºå"}] |
| | | }, |
| | | { |
| | | field: "proCollectOutOrderNo", |
| | | title: "åæ®ç¼å·", |
| | | type: "string", |
| | | readonly: true, |
| | | }, |
| | | { |
| | | title: "åæ®ç¶æ", |
| | | field: "proOrderStatus", |
| | | type: "select", |
| | | dataKey: "outboundStatusEnum", |
| | | data: [], |
| | | readonly: true, |
| | | }, |
| | | { |
| | | title: "ä»åº", |
| | | field: "warehouseId", |
| | | type: "select", |
| | | dataKey: "warehouses", |
| | | data: [], |
| | | required: true, |
| | | }, |
| | | ], |
| | | ]); |
| | | const searchFormFields = ref({ |
| | | proOutOrderNo: "", |
| | | proOrderStatus: "", |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "åºåºåå·", field: "proOutOrderNo", type: "like" }, |
| | | { |
| | | title: "åæ®ç¶æ", |
| | | field: "proOrderStatus", |
| | | type: "select", |
| | | dataKey: "outboundStatusEnum", |
| | | data: [], |
| | | }, |
| | | ] |
| | | ]); |
| | | const columns = ref([ |
| | | { |
| | | field: "id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "warehouseId", |
| | | title: "ä»åº", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | bind: { key: "warehouses", data: [] }, |
| | | }, |
| | | { |
| | | field: "proCollectOutOrderNo", |
| | | title: "åºåºåå·", |
| | | type: "string", |
| | | width: 160, |
| | | align: "left", |
| | | link: true, |
| | | }, |
| | | { |
| | | field: "proOrderType", |
| | | title: "åæ®ç±»å", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | bind: { key: "ProOrderType", data: [{key:2,value:"æå颿åºåºå"}] }, |
| | | }, |
| | | { |
| | | field: "proOrderStatus", |
| | | title: "åæ®ç¶æ", |
| | | type: "decimal", |
| | | width: 90, |
| | | align: "left", |
| | | bind: { key: "outboundStatusEnum", data: [] }, |
| | | }, |
| | | // { |
| | | // field: "createType", |
| | | // title: "å建æ¹å¼", |
| | | // type: "string", |
| | | // width: 120, |
| | | // align: "left", |
| | | // bind: { key: "createType", data: [] }, |
| | | // }, |
| | | // { |
| | | // field: "departmentCode", |
| | | // title: "ä¿®æ¹æ¶é´", |
| | | // type: "string", |
| | | // width: 120, |
| | | // align: "left", |
| | | // hidden: true, |
| | | // }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | // { |
| | | // field: "modifier", |
| | | // title: "ä¿®æ¹äºº", |
| | | // type: "string", |
| | | // width: 100, |
| | | // align: "left", |
| | | // }, |
| | | // { |
| | | // field: "modifyDate", |
| | | // title: "ä¿®æ¹æ¶é´", |
| | | // type: "datetime", |
| | | // width: 160, |
| | | // align: "left", |
| | | // }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "åºåºæç»å", |
| | | table: "proCollectOutOrderDetail", |
| | | columns: [ |
| | | { |
| | | field: "id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "proCollectOrderId", |
| | | title: "åºåºå主é®", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "rowId", |
| | | title: "è¡å·", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "pCode", |
| | | title: "产åç¼ç ", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | { |
| | | field: "pVer", |
| | | title: "产åçæ¬", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "lLot", |
| | | title: "äº§åæ¹æ¬¡", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "dateCode", |
| | | title: "产å卿", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "qtyPcs", |
| | | title: "åºåºåæ ¼PCSæ°", |
| | | type: "string", |
| | | width: 130, |
| | | align: "left", |
| | | required: true, |
| | | }, |
| | | |
| | | { |
| | | field: "overQtyPcs", |
| | | title: "å·²åºæ°é", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "lockQtyPcs", |
| | | title: "é宿°é", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "setQty", |
| | | title: "Setæ°", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "proOrderDetailStatus", |
| | | title: "订åæç»ç¶æ", |
| | | type: "string", |
| | | width: 180, |
| | | align: "left", |
| | | bind: { key: "orderDetailStatusEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "unit", |
| | | title: "åä½", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "orderDate", |
| | | title: "å®¡æ ¸æ¥æ", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | ], |
| | | sortName: "id", |
| | | key: "id", |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | |
| | | |
| | | if(heightType == 1) |
| | | { |
| | | undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x=>x.Layer <= 3).ToList(); |
| | | definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 3).ToList(); |
| | | undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x=>x.Layer <= 4).ToList(); |
| | | definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList(); |
| | | } |
| | | else if(heightType == 2) |
| | | { |
| | | undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer == 4).ToList(); |
| | | definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer == 4).ToList(); |
| | | } |
| | | else if (heightType == 3) |
| | | //else if(heightType == 2) |
| | | //{ |
| | | // undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer == 4).ToList(); |
| | | // definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer == 4).ToList(); |
| | | //} |
| | | else if (heightType == 2) |
| | | { |
| | | undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer == 5).ToList(); |
| | | definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer == 5).ToList(); |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.CommonEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_External.Model; |
| | | using WIDESEA_IApprovalRepository; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_ICheckRepository; |
| | | using WIDESEA_ICheckService; |
| | | using WIDESEA_IInboundRepository; |
| | |
| | | private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository; |
| | | private readonly IOutboundRepository _outboundRepository; |
| | | private readonly IStockRepository _stockRepository; |
| | | public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository) : base(BaseDal) |
| | | private readonly IWarehouseRepository _warehouseRepository; |
| | | private readonly IReceiveOrderDetailRepository _receiveOrderDetailRepository; |
| | | |
| | | public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository,IWarehouseRepository warehouseRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository) : base(BaseDal) |
| | | { |
| | | _checkOrderRepository = checkOrderRepository; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | |
| | | _purchaseOrderDetailRepository = purchaseOrderDetailRepository; |
| | | _outboundRepository = outboundRepository; |
| | | _stockRepository = stockRepository; |
| | | _warehouseRepository=warehouseRepository; |
| | | _receiveOrderDetailRepository = receiveOrderDetailRepository; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | return content.Error($"æªæ¾å°è¯¥è´¨æ£å"); |
| | | } |
| | | Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId); |
| | | Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First(); |
| | | if (receiveOrder.ReceiveOrderStatus!=ReceiveOrderStatusEnum.Completed.ObjToInt()) |
| | | { |
| | |
| | | { |
| | | return content.Error($"æªæ¾å°è¯¥è´¨æ£å"); |
| | | } |
| | | Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId); |
| | | //è·åæ¶è´§å |
| | | Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First(); |
| | | if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt()) |
| | | { |
| | |
| | | { |
| | | return content.Error($"æªæ¾å°ç¼ºé·ç±»å"); |
| | | } |
| | | //æ£éªç»æ |
| | | checkOrderResult = new Dt_CheckOrderResult() |
| | | { |
| | | Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity), |
| | |
| | | Note = eRPCheckResult.Note, |
| | | SampleCount = 0, |
| | | }; |
| | | //è·å对åºéè´å |
| | | //è·å对åºéè´åæ£é¤æ¶è´§æ°é |
| | | Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo); |
| | | purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First(); |
| | | if (purchaseOrder == null) |
| | |
| | | } |
| | | purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity); |
| | | } |
| | | //夿æ£éªåæ ¼ç»æ |
| | | if (checkModel.Result == CheckAcceptEnum.Accept.ToString()) |
| | | { |
| | | checkOrder.Result = CheckAcceptEnum.Accept.ToString(); |
| | |
| | | return content.Error("æªæ¾å°æ£éªç±»å"); |
| | | } |
| | | checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt(); |
| | | List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>(); |
| | | //æ ¹æ®æ£éªæ°éæ£é¤åæ ¼æ°é |
| | | if (checkOrderResult != null) |
| | | { |
| | | checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity; |
| | | //æ´æ°æ¶è´§æ£éªåæ ¼æ è¯ |
| | | if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString()) |
| | | { |
| | | receiveOrderDetails = receiveOrder.Details.Where(x=>x.RowNo==checkOrder.ReceiveDetailRowNo).OrderByDescending(x => x.RowNo).Take((int)checkOrderResult.Quantity).ToList(); |
| | | receiveOrderDetails.ForEach(x => |
| | | { |
| | | x.IsCheckOk = WhetherEnum.True.ObjToInt(); |
| | | }); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity; |
| | | } |
| | | checkOrder.CheckUserName = App.User.UserName; |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | if (receiveOrderDetails.Count > 0) |
| | | { |
| | | _receiveOrderDetailRepository.UpdateData(receiveOrderDetails); |
| | | } |
| | | //æ´æ°éè´å |
| | | if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null) |
| | | { |
| | | BaseDal.AddData(checkOrderResult); |
| | |
| | | try |
| | | { |
| | | Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId); |
| | | //è·åè´¨æ£å对åºçæ¶è´§å |
| | | //è·åè´¨æ£å |
| | | if (checkOrder == null) |
| | | { |
| | | return content.Error($"æªæ¾å°è¯¥è´¨æ£å"); |
| | |
| | | EmptyDisk = 125, |
| | | |
| | | /// <summary> |
| | | /// å
¶ä»å
¥åºå |
| | | /// ç»´ä¿®éæå |
| | | /// </summary> |
| | | [Description("å
¶ä»å
¥åºå")] |
| | | Other = 130, |
| | | [Description("ç»´ä¿®éæå")] |
| | | RMStock = 130, |
| | | |
| | | /// <summary> |
| | | /// 客ä¾åæ¶ |
| | | /// </summary> |
| | | [Description("客ä¾åæ¶")] |
| | | CustomerRecovery=135, |
| | | |
| | | /// <summary> |
| | | /// 鿣å
¥åºå |
| | | /// </summary> |
| | | [Description("鿣å
¥åºå")] |
| | | Inspect = 140, |
| | | |
| | | /// <summary> |
| | | /// Boméæå |
| | | /// </summary> |
| | | [Description("Boméæå")] |
| | | BomReturn = 145, |
| | | } |
| | | /// <summary> |
| | | /// æåå
¥åºåæ®ç±»å |
| | |
| | | /// </summary> |
| | | [Description("æåè°æ¨åºåºå")] |
| | | ProOutAllocat = 1, |
| | | /// <summary> |
| | | /// æå颿åºåºå |
| | | /// </summary> |
| | | [Description("æå颿åºåºå")] |
| | | ProCollect = 2, |
| | | } |
| | | } |
| | |
| | | OutAllocate = 150, |
| | | |
| | | /// <summary> |
| | | /// ç»´ä¿®åæåºåº |
| | | /// </summary> |
| | | [Description("ç»´ä¿®åæåºåº")] |
| | | OutMaintenance = 160, |
| | | |
| | | /// <summary> |
| | | /// MESåºåº |
| | | /// </summary> |
| | | [Description("MESåºåº")] |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundRepository |
| | | { |
| | | public interface IProCollectOutOrderDetailRepository : IRepository<Dt_ProCollectOutOrderDetail> |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundRepository |
| | | { |
| | | public interface IProCollectOutOrderRepository : IRepository<Dt_ProCollectOutOrder> |
| | | { |
| | | } |
| | | } |
| | |
| | | IErpProTransferOrderService ErpProTransferOrderService { get; } |
| | | IErpProScrapSheetService ErpProScrapSheetService { get; } |
| | | IErpProScrapSheetDetailService ErpProScrapSheetDetailService { get;} |
| | | IProCollectOutOrderService ProCollectOutOrderService { get; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundService |
| | | { |
| | | public interface IProCollectOutOrderDetailService : IService<Dt_ProCollectOutOrderDetail> |
| | | { |
| | | IProCollectOutOrderDetailRepository Repository { get; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IOutboundService |
| | | { |
| | | public interface IProCollectOutOrderService : IService<Dt_ProCollectOutOrder> |
| | | { |
| | | IProCollectOutOrderRepository Repository { get; } |
| | | |
| | | /// <summary> |
| | | /// æ¥æ¶æå颿åºåºåæ® |
| | | /// </summary> |
| | | /// <param name="erpProOutLingOrder"></param> |
| | | /// <returns></returns> |
| | | |
| | | WebResponseContent ProductOutOrder(ErpProOutLingOrder erpProOutLingOrder); |
| | | } |
| | | } |
| | |
| | | #region å
¥åºå®æä¸æ¥ERP |
| | | if (inboundOrder != null && inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºå®æ.ObjToInt() && inboundOrder.OrderType != InOrderTypeEnum.Allocat.ObjToInt()) |
| | | { |
| | | if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt()) |
| | | if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt() || inboundOrder.OrderType == InOrderTypeEnum.BomReturn.ObjToInt()) |
| | | { |
| | | FeedbackReturnOrder(inboundOrder, returnOrder); |
| | | } |
| | |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.CommonEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | { |
| | | try |
| | | { |
| | | //è·åæ¶è´§å |
| | | Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == orderNo).Includes(x => x.Details).First(); |
| | | if (receiveOrder == null) |
| | | { |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"åºå{stockInfo.PalletCode}䏿¹æ¬¡{model.LotNo}å·²åå¨"); |
| | | } |
| | | //æ¥ææ ¼å¼éªè¯ |
| | | if (model!=null) |
| | | { |
| | | string format = "yyyy-MM-dd"; // ç®æ æ ¼å¼ |
| | |
| | | ReceivedQuantity = model.Quantity, |
| | | MaterielCode = model.MaterielCode, |
| | | LotNo = model.LotNo, |
| | | MaterielName=materielInfo.MaterielName, |
| | | MaterielSpec=materielInfo.MaterielSpec, |
| | | MaterielName = materielInfo.MaterielName, |
| | | MaterielSpec = materielInfo.MaterielSpec, |
| | | ReceiveOrderId = receiveOrder.ReceiveOrderId, |
| | | PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo, |
| | | IfInspection = materielInfo.IsCheck.ObjToInt(), |
| | |
| | | PriceInTax = 0, |
| | | TaxRate = "", |
| | | RowNo = rowNo + 1, |
| | | Unit = purchaseOrderDetail.Unit |
| | | Unit = purchaseOrderDetail.Unit, |
| | | IsCheckOk = WhetherEnum.False.ObjToInt() |
| | | }; |
| | | if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) |
| | | { |
| | |
| | | } |
| | | _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); |
| | | _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); |
| | | if (materielInfo.IsCheck == WhetherEnum.True) |
| | | //ç©ææ£éªä¸ä¼ |
| | | if (materielInfo.IsCheck == WhetherEnum.True && (warehouse.WarehouseCode != WarehouseEnum.HA152.ToString() && warehouse.WarehouseCode != WarehouseEnum.HA58.ToString())) |
| | | { |
| | | //æ¶è´§ç»æä¸æ¥ |
| | | Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); |
| | | checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt(); |
| | | checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; |
| | |
| | | { |
| | | throw new Exception(mesResponseContent.StrMsg); |
| | | } |
| | | //QMSåä¼ ç»æ |
| | | ReceiveResultDTO? receiveResult = JsonConvert.DeserializeObject<ReceiveResultDTO>(mesResponseContent.Content.ToString()); |
| | | if (receiveResult == null) |
| | | { |
| | | throw new Exception("æ¥æ¶QMSç»æå¤±è´¥"); |
| | | } |
| | | //æ´æ°æ£éªåå· |
| | | Dt_CheckOrder _CheckOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == id); |
| | | _CheckOrder.CheckOrderNo = receiveResult.InspectionNumber; |
| | | _checkOrderRepository.UpdateData(_CheckOrder); |
| | |
| | | using AutoMapper; |
| | | using MailKit.Search; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_BasicRepository; |
| | | using WIDESEA_Common.CommonEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_DTO.QMS; |
| | | using WIDESEA_DTO.Stock; |
| | | using WIDESEA_External.ERPService; |
| | | using WIDESEA_External.Model; |
| | | using WIDESEA_External.QMSService; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_ICheckRepository; |
| | | using WIDESEA_IInboundRepository; |
| | |
| | | private readonly IInboundRepository _inboundRepository; |
| | | private readonly IBasicRepository _basicRepository; |
| | | private readonly IInvokeERPService _invokeERPService; |
| | | private readonly ISupplierInfoRepository _supplierInfoRepository; |
| | | private readonly IInvokeQMSService _invokeQMSService; |
| | | |
| | | public ReceiveOrderService(IReceiveOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService) : base(BaseDal) |
| | | public ReceiveOrderService(IReceiveOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService, ISupplierInfoRepository supplierInfoRepository, IInvokeQMSService invokeQMSService) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | |
| | | _inboundRepository = inboundRepository; |
| | | _basicRepository = basicRepository; |
| | | _invokeERPService = invokeERPService; |
| | | _supplierInfoRepository = supplierInfoRepository; |
| | | _invokeQMSService = invokeQMSService; |
| | | } |
| | | public override PageGridData<Dt_ReceiveOrder> GetPageData(PageDataOptions options) |
| | | { |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°ä»åºä¿¡æ¯"); |
| | | } |
| | | |
| | | Dt_SupplierInfo supplierInfo = _supplierInfoRepository.QueryFirst(x => x.SupplierCode == receiveOrder.SuppliersId); |
| | | List<Dt_CheckOrder> checkOrders = new List<Dt_CheckOrder>(); |
| | | //çæERPæ¨éä¿¡æ¯ |
| | | List<RecevieOrderDetailModel> recevieOrderDetails = new List<RecevieOrderDetailModel>(); |
| | | foreach (var item in receiveOrder.Details) |
| | | { |
| | | //æ·»å æ¶è´§æç» |
| | | RecevieOrderDetailModel recevieOrderDetail = new RecevieOrderDetailModel() |
| | | { |
| | | Currcode = "", |
| | |
| | | QtyRecieved = item.ReceivedQuantity, |
| | | Serno = item.RowNo, |
| | | Supplotno = item.LotNo, |
| | | Taxrate = "", |
| | | |
| | | Taxrate = "" |
| | | }; |
| | | if (receiveOrder.ReceiveOrderType!=ReceiveOrderTypeEnum.PO.ObjToInt()) |
| | | { |
| | |
| | | recevieOrderDetail.Currcode = "RMB"; |
| | | } |
| | | recevieOrderDetails.Add(recevieOrderDetail); |
| | | if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString()) |
| | | { |
| | | string lotNo = item.LotNo.Substring(0, item.LotNo.IndexOf("-")); |
| | | Dt_CheckOrder? ExistcheckOrder = checkOrders.FirstOrDefault(x => x.LotNo == lotNo && x.MaterielCode == item.MaterielCode && x.PurchaseOrderNo == item.PurchaseOrderNo); |
| | | if (ExistcheckOrder == null) |
| | | { |
| | | //æ£éªç»æç»æä¸æ¥ |
| | | Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(item); |
| | | checkOrder.LotNo = lotNo; |
| | | checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt(); |
| | | checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; |
| | | checkOrder.Result = CheckAcceptEnum.NotCheckAccept.ToString(); |
| | | checkOrder.QualifiedQuantity = 0; |
| | | checkOrder.ReceiveDetailRowNo = item.RowNo; |
| | | checkOrder.WarehouseId = receiveOrder.WarehouseId; |
| | | checkOrder.ScrappedQuantity = 0; |
| | | checkOrder.MaterielSpec = item.MaterielSpec; |
| | | checkOrder.ReturnQuantity = 0; |
| | | checkOrder.DefectedQuantity = 0; |
| | | checkOrder.MaterielName = item.MaterielName; |
| | | checkOrders.Add(checkOrder); |
| | | } |
| | | else |
| | | { |
| | | //æ·»å æ£éªæ¶è´§æ°é |
| | | ExistcheckOrder.ReceivedQuantity += item.ReceivedQuantity; |
| | | } |
| | | |
| | | } |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | //å¹²è/PP䏿¥QMSç»æ |
| | | if (checkOrders.Count > 0) |
| | | { |
| | | foreach (var checkOrder in checkOrders) |
| | | { |
| | | int id = _checkOrderRepository.AddData(checkOrder); |
| | | QMSReceiveCheckModel qMSReceiveCheck = new QMSReceiveCheckModel() |
| | | { |
| | | UniqueTag = id.ToString(), |
| | | EntryNumber = receiveOrder.ReceiveOrderNo, |
| | | MaterialCode = checkOrder.MaterielCode, |
| | | MaterialName = checkOrder.MaterielName, |
| | | Quantity = (decimal)checkOrder.ReceivedQuantity, |
| | | SupplierCode = receiveOrder.SuppliersId, |
| | | SupplierName = supplierInfo.SupplierName, |
| | | BatchNumber = checkOrder.LotNo, |
| | | DeliveryNumber = receiveOrder.DeliveryCode, |
| | | PurchaseNumber = checkOrder.PurchaseOrderNo, |
| | | RowNumber = checkOrder.ReceiveDetailRowNo, |
| | | WarehouseCode = warehouse.WarehouseCode, |
| | | ReceiptDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | Remark = " " |
| | | }; |
| | | //è°ç¨QMSæ¥ææ£éªæ¥å£ |
| | | string response = _invokeQMSService.InvokeReceiveCheckApi(qMSReceiveCheck); |
| | | MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>(); |
| | | if (!mesResponseContent.BSucc) |
| | | { |
| | | throw new Exception(mesResponseContent.StrMsg); |
| | | } |
| | | //QMSåä¼ ç»æ |
| | | ReceiveResultDTO? receiveResult = JsonConvert.DeserializeObject<ReceiveResultDTO>(mesResponseContent.Content.ToString()); |
| | | if (receiveResult == null) |
| | | { |
| | | throw new Exception("æ¥æ¶QMSç»æå¤±è´¥"); |
| | | } |
| | | //æ´æ°æ£éªåå· |
| | | Dt_CheckOrder _CheckOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == id); |
| | | _CheckOrder.CheckOrderNo = receiveResult.InspectionNumber; |
| | | _checkOrderRepository.UpdateData(_CheckOrder); |
| | | } |
| | | } |
| | | |
| | | ERPReceiveModel receiveModel = new ERPReceiveModel() |
| | |
| | | Way = 1, |
| | | Details = recevieOrderDetails |
| | | }; |
| | | |
| | | //æ´æ°æ¶è´§åä¿¡æ¯ |
| | | receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Completed.ObjToInt(); |
| | | //æ¶è´§æ¨éè³ER |
| | | string response = _invokeERPService.InvokeMatReceiveApi(receiveModel); |
| | | ErpRequestContent requestContent = response.DeserializeObject<ErpRequestContent>(); |
| | | //æ¶è´§æ¨éè³ERP |
| | | string responseReceive = _invokeERPService.InvokeMatReceiveApi(receiveModel); |
| | | ErpRequestContent requestContent = responseReceive.DeserializeObject<ErpRequestContent>(); |
| | | if (requestContent.res != 1) |
| | | { |
| | | return WebResponseContent.Instance.Error($"{requestContent.Data}"); |
| | | throw new Exception($"{requestContent.Data}"); |
| | | } |
| | | receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt(); |
| | | BaseDal.UpdateData(receiveOrder); |
| | | _unitOfWorkManage.CommitTran(); |
| | | if (receiveOrder.Details.FirstOrDefault(x=>x.IfInspection==WhetherEnum.True.ObjToInt())==null) |
| | | { |
| | | //å建å
¥åºå todo:æç»é½æ¯ä¸æ£éªèªå¨å建å
¥åºå |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | |
| | | try |
| | | { |
| | | Dt_ReceiveOrder receiveOrder = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderId == receiveOrderId).Includes(x => x.Details).First(); |
| | | if (receiveOrder.UploadStatus!= WhetherEnum.True.ObjToInt()) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æ¶è´§åæ¥æä¸ä¼ ERPå¤±è´¥æ æ³å建å
¥åºåæ®"); |
| | | } |
| | | if (receiveOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥æ¶è´§åä¿¡æ¯"); |
| | | } |
| | | //ERP夿æ¯å¦ä¸ä¼ |
| | | if (receiveOrder.UploadStatus!= WhetherEnum.True.ObjToInt()) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æ¶è´§åæ¥æä¸ä¼ ERPå¤±è´¥æ æ³å建å
¥åºåæ®"); |
| | | } |
| | | if (receiveOrder.Details == null || receiveOrder.Details.Count() <= 0) |
| | | { |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æ¶è´§åæªå®æ"); |
| | | } |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseId==receiveOrder.WarehouseId); |
| | | //éªè¯å
¥åºåæ¯å¦éå¤çæ |
| | | Dt_InboundOrder OldCreateOrder = _inboundRepository.InboundOrderRepository.QueryFirst(x => x.UpperOrderNo == receiveOrder.ReceiveOrderNo); |
| | | if (receiveOrder.CreateInOrderStatus==WhetherEnum.True.ObjToInt() || OldCreateOrder!=null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æ¶è´§å对åºçå
¥åºåå·²åå¨"); |
| | | } |
| | | #region 注é |
| | | |
| | | #region 夿æ¶è´§åæ£éªæ¯å¦å®æ |
| | | List<Dt_CheckOrder> checkOrders = _checkOrderRepository.QueryData(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo); |
| | | if (checkOrders.FirstOrDefault(x => x.CheckOrderStatus == CheckOrderStatusEnum.NotCheck.ObjToInt()) != null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æ¶è´§åæªè´¨æ£å®æ"); |
| | | } |
| | | |
| | | //if (checkOrders.FirstOrDefault(x => x.AuditStatus != AuditStatusEnum.Agree.ObjToInt()) != null) |
| | | //{ |
| | | // return WebResponseContent.Instance.Error($"该æ¶è´§åè´¨æ£ç»æå®¡æ¹æªå®æ"); |
| | | //} |
| | | if (checkOrders.FirstOrDefault(x => x.Result != CheckAcceptEnum.Accept.ToString()) != null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æ¶è´§æç»ä¸åæè´¨æ£æªéè¿"); |
| | |
| | | Details = new List<Dt_InboundOrderDetail>() |
| | | }; |
| | | List<Dt_MaterielInfo> materielCodeInfos = _basicRepository.MaterielInfoRepository.QueryData(x => receiveOrder.Details.Select(x => x.MaterielCode).ToList().Contains(x.MaterielCode)); |
| | | foreach (var item in receiveOrder.Details) |
| | | foreach (var item in receiveOrder.Details.Where(x=> x.IsCheckOk!=WhetherEnum.True.ObjToInt())) |
| | | { |
| | | float quantity = item.ReceivedQuantity; |
| | | #region 注é |
| | | if (item.IfInspection == WhetherEnum.True.ObjToInt()) |
| | | { |
| | | Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo); |
| | | if (checkOrder == null) |
| | | if (warehouse.WarehouseCode != WarehouseEnum.HA152.ToString() && warehouse.WarehouseCode != WarehouseEnum.HA58.ToString()) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è´¨æ£åæ°æ®é误"); |
| | | Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo); |
| | | if (checkOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è´¨æ£åæ°æ®é误"); |
| | | } |
| | | quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault(); |
| | | } |
| | | quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault(); |
| | | |
| | | } |
| | | #endregion |
| | | Dt_InboundOrderDetail detail = new Dt_InboundOrderDetail() |
| | |
| | | Remark=returnOrder.Remark, |
| | | Details= inboundOrderDetails |
| | | }; |
| | | if (returnOrder.ReturnOrderType==ReturnOrderTypeEnum.BomReturn.ObjToInt()) |
| | | { |
| | | inboundOrder.OrderType = InOrderTypeEnum.BomReturn.ObjToInt(); |
| | | } |
| | | returnOrder.ReturnOrderStatus=ReturnOrderStatusEnum.Returning.ObjToInt(); |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.UpdateData(returnOrder); |
| | |
| | | public string MaterielSpec { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "ç©æåç§°")] |
| | | public string MaterielName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éè´åå· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "éè´åå·")] |
| | | public string PurchaseOrderNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ ¼æ°é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "åæ ¼æ°é")] |
| | |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "ç©æè§æ ¼")] |
| | | public string MaterielSpec { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ£éªä¸åæ ¼æ è¯ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "æ£éªä¸åæ ¼æ è¯")] |
| | | public int IsCheckOk { get; set; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// æå颿åºåºå |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_ProCollectOutOrder), "æå颿åºåºå")] |
| | | public class Dt_ProCollectOutOrder : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ä»åºä¸»é®")] |
| | | public int WarehouseId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå颿åºåºåå· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "æå颿åºåºåå·")] |
| | | public string ProCollectOutOrderNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 订åç±»å |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "订åç±»å")] |
| | | public int ProOrderType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 订åç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "订åç¶æ")] |
| | | public int ProOrderStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå颿åºåºå详æ
|
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToMany, nameof(Dt_ProCollectOutOrderDetail.ProCollectOrderId), nameof(Id))] |
| | | public List<Dt_ProCollectOutOrderDetail> Details { get; set; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// æå颿åºåºæç»å |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_ProCollectOutOrderDetail), "æå颿åºåºæç»å")] |
| | | public class Dt_ProCollectOutOrderDetail : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æååºåºåä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "颿åºåºä¸»é®")] |
| | | public int ProCollectOrderId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºåè¡å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåºåè¡å·")] |
| | | public int RowId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºåºåæç»ç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåºåæç»ç¶æ")] |
| | | public int ProOrderDetailStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 产åç¼ç |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "产åç¼ç ")] |
| | | public string PCode { get; set; } |
| | | /// <summary> |
| | | /// 产åçæ¬ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "产åçæ¬")] |
| | | public string PVer { get; set; } |
| | | |
| | | /// <summary> |
| | | /// äº§åæ¹æ¬¡ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "äº§åæ¹æ¬¡")] |
| | | public string PLot { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 产å卿 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "产å卿")] |
| | | public string DateCode { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åºåºåæ ¼PCSæ° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåºåæ ¼PCSæ°")] |
| | | public float QtyPcs { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·²åºæ°é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "å·²åºæ°é")] |
| | | public float OverQtyPcs { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é宿°é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "é宿°é")] |
| | | public float LockQtyPcs { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Setæ° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "Setæ°")] |
| | | public float SetQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Xæ¿æ° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "Xæ¿æ°")] |
| | | public float XQty { get; set; } |
| | | /// <summary> |
| | | /// Xæ¿ä½ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "Xæ¿ä½")] |
| | | public string XSite { get; set; } |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "åä½")] |
| | | public string Unit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®¡æ ¸æ¥æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "å®¡æ ¸æ¥æ")] |
| | | public DateTime OrderDate { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "夿³¨")] |
| | | public string Note { get; set; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_OutboundRepository |
| | | { |
| | | public class ProCollectOutOrderDetailRepository : RepositoryBase<Dt_ProCollectOutOrderDetail>, IProCollectOutOrderDetailRepository |
| | | { |
| | | public ProCollectOutOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_OutboundRepository |
| | | { |
| | | public class ProCollectOutOrderRepository : RepositoryBase<Dt_ProCollectOutOrder>, IProCollectOutOrderRepository |
| | | { |
| | | public ProCollectOutOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | public IErpProScrapSheetService ErpProScrapSheetService { get; } |
| | | public IErpProScrapSheetDetailService ErpProScrapSheetDetailService { get; } |
| | | public IProCollectOutOrderService ProCollectOutOrderService { get; } |
| | | public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IMesRworkOutboundOrderService rworkOutboundOrderService,IMesPPOutboundOrderDetailService mesPPOutboundOrderDetailService, IMesPPCutOutboundOrderDetailService mesPPCutOutboundOrderDetailService, IMesPPCutOutboundOrderService mesPPCutOutboundOrderService, IMesPPOutboundOrderService mesPPOutboundOrderService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, IMesOutboundOrderService mesOutboundOrderService,IProOutOrderService proOutOrderService, IProOutOrderDetailService proOutOrderDetailService,IErpProTransferOrderService erpProTransferOrderService, |
| | | IErpProScrapSheetService erpProScrapSheetService, IErpProScrapSheetDetailService erpProScrapSheetDetailService) |
| | | IErpProScrapSheetService erpProScrapSheetService, IErpProScrapSheetDetailService erpProScrapSheetDetailService,IProCollectOutOrderService proCollectOutOrderService) |
| | | { |
| | | OutboundOrderDetailService = outboundOrderDetailService; |
| | | OutboundOrderService = outboundOrderService; |
| | |
| | | ErpProTransferOrderService = erpProTransferOrderService; |
| | | ErpProScrapSheetService = erpProScrapSheetService; |
| | | ErpProScrapSheetDetailService = erpProScrapSheetDetailService; |
| | | ProCollectOutOrderService= proCollectOutOrderService; |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using AutoMapper; |
| | | using Castle.Core.Resource; |
| | | using Org.BouncyCastle.Asn1.Cmp; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_DTO.Outbound; |
| | | using WIDESEA_External.ERPService; |
| | | using WIDESEA_External.Model; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_IStockRepository; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_OutboundService |
| | | { |
| | | public partial class ProCollectOutOrderDetailService : ServiceBase<Dt_ProCollectOutOrderDetail, IProCollectOutOrderDetailRepository>, IProCollectOutOrderDetailService |
| | | { |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IBasicRepository _basicRepository; |
| | | private readonly IMapper _mapper; |
| | | private readonly IInvokeERPService _invokeERPService; |
| | | |
| | | public IProCollectOutOrderDetailRepository Repository => BaseDal; |
| | | |
| | | public ProCollectOutOrderDetailService(IProCollectOutOrderDetailRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, IMapper mapper, IInvokeERPService invokeERPService) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _basicRepository = basicRepository; |
| | | _mapper = mapper; |
| | | _invokeERPService = invokeERPService; |
| | | } |
| | | |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using AutoMapper; |
| | | using Castle.Core.Resource; |
| | | using Org.BouncyCastle.Asn1.Cmp; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_DTO.Outbound; |
| | | using WIDESEA_External.ERPService; |
| | | using WIDESEA_External.Model; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_IStockRepository; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_OutboundService |
| | | { |
| | | public partial class ProCollectOutOrderService : ServiceBase<Dt_ProCollectOutOrder, IProCollectOutOrderRepository>, IProCollectOutOrderService |
| | | { |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IBasicRepository _basicRepository; |
| | | private readonly IMapper _mapper; |
| | | private readonly IInvokeERPService _invokeERPService; |
| | | private readonly IProCollectOutOrderDetailRepository _proCollectOutOrderDetailRepository; |
| | | |
| | | public IProCollectOutOrderRepository Repository => BaseDal; |
| | | |
| | | public ProCollectOutOrderService(IProCollectOutOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, IMapper mapper, IInvokeERPService invokeERPService,IProCollectOutOrderDetailRepository proCollectOutOrderDetailRepository) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _basicRepository = basicRepository; |
| | | _mapper = mapper; |
| | | _invokeERPService = invokeERPService; |
| | | _proCollectOutOrderDetailRepository = proCollectOutOrderDetailRepository; |
| | | } |
| | | |
| | | public WebResponseContent ProductOutOrder(ErpProOutLingOrder erpProOutLingOrder) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == erpProOutLingOrder.WaType); |
| | | if (warehouse == null) |
| | | { |
| | | return content.Error($"æªæ¾å°è¯¥ä»åºä¿¡æ¯"); |
| | | } |
| | | Dt_ProCollectOutOrder proCollectOutOrder = BaseDal.Db.Queryable<Dt_ProCollectOutOrder>().Where(x=>x.ProCollectOutOrderNo==erpProOutLingOrder.OrderNo).Includes(x=>x.Details).First(); |
| | | if (_proCollectOutOrderDetailRepository.QueryFirst(x=>x.RowId==erpProOutLingOrder.RowId)!=null) |
| | | { |
| | | return content.Error($"æå颿å,è¡å·{erpProOutLingOrder.RowId}å·²åå¨"); |
| | | } |
| | | if (proCollectOutOrder!=null) |
| | | { |
| | | if (proCollectOutOrder.ProOrderStatus!= OutOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | return content.Error($"å½å忮已å¼å§æ§è¡"); |
| | | } |
| | | else |
| | | { |
| | | Dt_ProCollectOutOrderDetail proCollectOutOrderDetail = _mapper.Map<Dt_ProCollectOutOrderDetail>(erpProOutLingOrder); |
| | | proCollectOutOrderDetail.ProCollectOrderId = proCollectOutOrder.Id; |
| | | _proCollectOutOrderDetailRepository.AddData(proCollectOutOrderDetail); |
| | | return content.OK("æ¥æ¶æå"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Dt_ProCollectOutOrderDetail proCollectOutOrderDetail = _mapper.Map<Dt_ProCollectOutOrderDetail>(erpProOutLingOrder); |
| | | |
| | | Dt_ProCollectOutOrder collectOutOrder = new Dt_ProCollectOutOrder() |
| | | { |
| | | WarehouseId = warehouse.WarehouseId, |
| | | ProCollectOutOrderNo = erpProOutLingOrder.OrderNo, |
| | | ProOrderType = ErpProOutTypeEnum.ProCollect.ObjToInt(), |
| | | ProOrderStatus = OutOrderStatusEnum.æªå¼å§.ObjToInt(), |
| | | Details=new List<Dt_ProCollectOutOrderDetail> { proCollectOutOrderDetail } |
| | | }; |
| | | BaseDal.Db.InsertNav(collectOutOrder).Include(x=>x.Details).ExecuteCommand(); |
| | | return content.OK("æ¥æ¶æå"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | return content.Error($"客æ·{item.Customer}ä¸åå¨!"); |
| | | } |
| | | //å¯å®åæ® |
| | | if (outOrderDTO.OType == 2) |
| | | { |
| | | Dt_ProOutOrderDetail? ExistProDetail = proOutOrderDetails.FirstOrDefault(x => x.PCode == item.PCode && x.SaleOrder == item.SaleOrder && x.PVer == item.PVer && x.DateCode == item.DateCode); |
| | | if (ExistProDetail!=null) |
| | | { |
| | | Dt_ProOutOrderDetail OutOrderDetail = _mapper.Map<Dt_ProOutOrderDetail>(item); |
| | | ExistProDetail.QtyPcs += (OutOrderDetail.QtyPcs + OutOrderDetail.SpareQty); |
| | | ExistProDetail.SpareQty += OutOrderDetail.SpareQty; |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | Dt_ProOutOrderDetail proOutOrderDetail = _mapper.Map<Dt_ProOutOrderDetail>(item); |
| | | if (!string.IsNullOrEmpty(item.SaleOrder)) |
| | | { |
| | | if (keyValuePairs!=null && keyValuePairs.ContainsKey(item.SaleOrder)) |
| | | if (keyValuePairs != null && keyValuePairs.ContainsKey(item.SaleOrder)) |
| | | { |
| | | proOutOrderDetail.EndCustomer = keyValuePairs[item.SaleOrder]; |
| | | } |
| | | else |
| | | { |
| | | string request = _invokeERPService.InvokeProSaleCustomer(item.SaleOrder); |
| | | ErpSaleCustomResponseContent responseContent=request.DeserializeObject<ErpSaleCustomResponseContent>(); |
| | | if (responseContent.Code!=200) |
| | | ErpSaleCustomResponseContent responseContent = request.DeserializeObject<ErpSaleCustomResponseContent>(); |
| | | if (responseContent.Code != 200) |
| | | { |
| | | return content.Error($"订å{item.SaleOrder}ç»ç«¯å®¢æ·è·å失败!"); |
| | | } |
| | |
| | | string roadwayNo = ""; |
| | | if (heightType == 1) |
| | | { |
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer <= 3).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer <= 4).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | } |
| | | //else if (heightType == 2) |
| | | //{ |
| | | // List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer == 4).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | // roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | //} |
| | | else if (heightType == 2) |
| | | { |
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer == 4).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | } |
| | | else if (heightType == 3) |
| | | { |
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer == 5).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | |
| | | List<LocationCount> locationCounts = new List<LocationCount>(); |
| | | if (heightType == 1) |
| | | { |
| | | locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer <= 3 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer <= 4 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | } |
| | | //else if(heightType == 2) |
| | | //{ |
| | | // locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer == 4 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | //} |
| | | else if(heightType == 2) |
| | | { |
| | | locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer == 4 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | } |
| | | else if(heightType == 3) |
| | | { |
| | | locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer == 5 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | } |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// æ¾è´§å®æ |
| | | /// </summary> |
| | | /// <param name="code"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent PutFinish(string code, string barCode = "", string taskNum = "") |
| | | { |
| | | try |
| | | { |
| | | string url = AppSettings.Get("WCS"); |
| | | if (string.IsNullOrEmpty(url)) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°WCSAApiå°å,è¯·æ£æ¥é
ç½®æä»¶"); |
| | | } |
| | | string response = HttpHelper.Post($"{url}/api/CTU_AGV/PutFinish?code={code}&barCode={barCode}&taskNum={taskNum}" ); |
| | | |
| | | return JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("è¿åé误"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent AGVTasks(SaveModel saveModel) |
| | | { |
| | |
| | | int heightType = 0; |
| | | if(needRelocationItem.Layer == 5) |
| | | { |
| | | heightType = 3; |
| | | } |
| | | else if(needRelocationItem.Layer == 4) |
| | | { |
| | | heightType = 2; |
| | | } |
| | | else if(needRelocationItem.Layer <= 3 && needRelocationItem.Layer >= 1) |
| | | //else if(needRelocationItem.Layer == 4) |
| | | //{ |
| | | // heightType = 2; |
| | | //} |
| | | else if(needRelocationItem.Layer <= 4 && needRelocationItem.Layer >= 1) |
| | | { |
| | | heightType = 1; |
| | | } |
| | |
| | | [HttpPost, Route("ProductOutOrder"), AllowAnonymous, MethodParamsValidate] |
| | | public ErpResponseContent ProductOutOrder([FromBody] Root<ErpProOutLingOrder> root) |
| | | { |
| | | return Instance.OK(); |
| | | WebResponseContent content = _outboundService.ProCollectOutOrderService.ProductOutOrder(root.Content); |
| | | if (content.Status) return Instance.OK(); |
| | | else return Instance.Error(content.Message); |
| | | } |
| | | /// <summary> |
| | | /// éå®ææ´¾åæ¥æ¶ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_OutboundService; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Outbound |
| | | { |
| | | /// <summary> |
| | | /// æå颿åºåºå |
| | | /// </summary> |
| | | [Route("api/ProCollectOutOrder")] |
| | | [ApiController] |
| | | public class ProCollectOutOrderController : ApiBaseController<IProCollectOutOrderService, Dt_ProCollectOutOrder> |
| | | { |
| | | public ProCollectOutOrderController(IProCollectOutOrderService service) : base(service) |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | CreateMap<Dt_MesProInOrderDetail, Dt_ProStockInfoDetail>().ForMember(x => x.ProOutDetailStatus, b => b.MapFrom(b => StockStatusEmun.ç»çæå.ObjToInt())).ForMember(x => x.OutboundQuantity, b => b.MapFrom(b => 0)).ForMember(x => x.StockPcsQty, b => b.MapFrom(b => b.OKPCSQTY)); |
| | | CreateMap<ErpProductWarehousingOrderDTO, Dt_ErpProInOrder>().ForMember(x => x.ProSaleOrderNo, b => b.MapFrom(b => b.SaleOrder)).ForMember(x => x.Remark, b => b.MapFrom(b => b.Note)).ForMember(x => x.UpperOrderNo, b => b.MapFrom(b => b.TransferNo)).ForMember(x => x.ProStockAttribute, b => b.MapFrom(b => ProStockAttributeEnum.æå.ObjToInt())).ForMember(x => x.ProInStatus, b => b.MapFrom(b => InOrderStatusEnum.æªå¼å§.ObjToInt())); |
| | | CreateMap<ErpProductTransferOrderDTO, Dt_ErpProTransferOrder>().ForMember(x => x.ProSaleOrderNo, b => b.MapFrom(b => b.SaleOrder)).ForMember(x => x.Remark, b => b.MapFrom(b => b.Note)).ForMember(x => x.UpperOrderNo, b => b.MapFrom(b => b.TransferNo)).ForMember(x => x.OrderType, b => b.MapFrom(b => ErpProOutTypeEnum.ProOutAllocat.ObjToInt())).ForMember(x => x.ProStockAttribute, b => b.MapFrom(b => ProStockAttributeEnum.ç å.ObjToInt())); |
| | | CreateMap<ErpProOutLingOrder, Dt_ProCollectOutOrderDetail>().ForMember(x => x.ProOrderDetailStatus, b => b.MapFrom(b => 0)).ForMember(x => x.OverQtyPcs, b => b.MapFrom(b => 0)).ForMember(x => x.LockQtyPcs, b => b.MapFrom(b => 0)); |
| | | } |
| | | } |
| | | } |