BOM/ROUTING/PO/WIP等模塊常用查詢

来源:http://www.cnblogs.com/pompeii2008/archive/2016/03/05/5244926.html
-Advertisement-
Play Games

常用查詢scripts /*bom*/ select p_item.segment1,c_item.segment1,bic.COMPONENT_QUANTITY,bic.COMPONENT_YIELD_FACTOR from bom_bill_of_materials bbom, bom_inve


常用查詢scripts

/*bom*/
select p_item.segment1,c_item.segment1,bic.COMPONENT_QUANTITY,bic.COMPONENT_YIELD_FACTOR
from bom_bill_of_materials bbom,
     bom_inventory_components bic,
     mtl_system_items_b p_item,
     mtl_system_items_b c_item
where bbom.BILL_SEQUENCE_ID = bic.BILL_SEQUENCE_ID
and   bbom.ASSEMBLY_ITEM_ID = p_item.inventory_item_id
and   bic.COMPONENT_ITEM_ID = c_item.inventory_item_id
and   bbom.ORGANIZATION_ID = p_item.organization_id
and   p_item.organization_id = c_item.organization_id
and   nvl(bic.DISABLE_DATE,sysdate)>= sysdate 
and   p_item.segment1 = &p_item_code
and   p_item.organization_id = &p_org_id
and   bbom.ALTERNATE_BOM_DESIGNATOR is null
order by 1,2
/*Intend BOM*/
with t as(
SELECT boms.organization_id,
       boms.organization_id || '>' || connect_by_root assembly_number || sys_connect_by_path(boms.component_number, '>') code_chain,
       boms.organization_id || '>' || connect_by_root bill_sequence_id || sys_connect_by_path(boms.component_sequence_id, '>') id_chain,
       connect_by_root assembly_number assembly_number,
       boms.assembly_description,
       LEVEL bom_level,
       boms.component_number component_number,
       lpad(' ', (LEVEL - 1) * 2, ' ') || boms.component_number ind_component_number,
       boms.component_description,
       boms.primary_uom_code uom,
       boms.component_quantity component_quantity,
       boms.planning_factor,
       boms.component_yield_factor,
       boms.effectivity_date
  FROM (SELECT bom1.organization_id,
               bom1.assembly_item_id,
               mst1.segment1 assembly_number,
               mst1.description assembly_description,
               bom1.bill_sequence_id bill_sequence_id,
               bom1.alternate_bom_designator assembly_alternate,
               bomc.component_sequence_id,
               bomc.component_item_id,
               mstc.segment1 component_number,
               mstc.description component_description,
               mstc.primary_uom_code,
               bomc.component_quantity,
               bomc.effectivity_date,
               bomc.planning_factor,
               bomc.component_yield_factor,
               bomc.supply_subinventory
          FROM apps.bom_bill_of_materials    bom1,
               inv.mtl_system_items_b        mst1,---主件
               apps.bom_inventory_components bomc,
               inv.mtl_system_items_b        mstc ---組件
         WHERE bom1.organization_id = mst1.organization_id
           AND bom1.assembly_item_id = mst1.inventory_item_id
           AND bom1.bill_sequence_id = bomc.bill_sequence_id
           AND bom1.organization_id = mstc.organization_id
           AND bomc.component_item_id = mstc.inventory_item_id
              --Item
           AND mst1.bom_enabled_flag = 'Y'
           AND mst1.bom_item_type IN (1, 2, 3, 4) --Dependent
              --BOM Header
           AND bom1.assembly_type = 1 --1 Manufature,2 ENG
           ---AND nvl(bom1.effectivity_control, 1) <= 3
              --BOM Line
           AND nvl(bomc.disable_date, SYSDATE) >= SYSDATE
           AND bomc.effectivity_date <= SYSDATE
           AND bomc.implementation_date IS NOT NULL
           AND nvl(bomc.eco_for_production, 2) = 2
              --Filters
           AND mst1.organization_id = 89
           AND bom1.alternate_bom_designator IS NULL
           ----and mst1.segment1 =  '17G4-01003-0001'
           ) boms
CONNECT BY PRIOR boms.organization_id = boms.organization_id
       AND PRIOR boms.component_item_id = boms.assembly_item_id
   start with boms.assembly_number = '17G4-01003-0001'
)
SELECT t1.organization_id, 
       t1.code_chain,
        t1.ind_component_number,
       t1.assembly_number,
       t1.assembly_description,
       t1.bom_level,
       t1.component_number,
       t1.component_description,
       t1.uom,
      
       t1.id_chain,
       t1.component_quantity,
       (SELECT power(10,
                     SUM(CASE
                           WHEN t2.component_quantity = 0 THEN
                            0
                           ELSE
                            log(10, abs(t2.component_quantity))
                         END)) * decode(MOD(COUNT(decode(sign(t2.component_quantity), -1, 1)), 2), 1, -1, 1) *
               (CASE
                  WHEN COUNT(decode(t2.component_quantity, 0, 1)) >= 1 THEN
                   0
                  ELSE
                   1
                END)
          FROM t t2
         WHERE t1.id_chain LIKE t2.id_chain || '%') extended_quantity,
       t1.planning_factor,
       t1.component_yield_factor,
       t1.effectivity_date
  FROM t t1
ORDER BY t1.id_chain;
/*routing*/
select p_item.segment1,
       bos.operation_seq_num,
       bos.standard_operation_code,
       bso.operation_description
  from bom_operational_routings  bor,
       bom_operation_sequences_v bos,
       mtl_system_items_b        p_item,
       bom_standard_operations   bso
 where bor.routing_sequence_id = bos.routing_sequence_id
   and bor.assembly_item_id = p_item.inventory_item_id
   and bor.organization_id = p_item.organization_id
   and bor.alternate_routing_designator is null
   and nvl(bos.disable_date, sysdate) >= sysdate
   and bso.organization_id = bor.organization_id
   and bso.standard_operation_id = bos.standard_operation_id
   and p_item.segment1 = &p_item_code
   and p_item.organization_id = &p_org_id
 order by 1, 2

 

/*job status type*/
select flv.LOOKUP_CODE,flv.MEANING
from fnd_lookup_values_vl flv
where lookup_type = 'WIP_JOB_STATUS'
order by 1
/*eco info*/
select  
  eec.change_notice ECO號,
 /*er.revised_item_id ,*/
 msi1.segment1 裝配件編碼,
 msi1.description 裝配件描述,
 er.alternate_bom_designator 替代項,
 eec.creation_date ECO創建時間,
 (select  FLV.MEANING
  from FND_LOOKUP_VALUES FLV
 where FLV.LOOKUP_TYPE = 'ECG_ACTION'
   AND FLV.LANGUAGE = 'ZHS'
   AND FLV.LOOKUP_CODE = ERC.acd_type) ACTION,
 msi2.segment1 組件編碼,
 msi2.description 組件件描述,
 erc.primary_uom_code 單位,
 ---erc.old_component_sequence_id,
 bic.COMPONENT_QUANTITY 舊組件用量,
 bic.COMPONENT_YIELD_FACTOR 舊產出率,
 -----erc.component_sequence_id,
 erc.component_quantity 新組件用量,
 erc.component_yield_factor 新產出率,
  erc.disable_date 失效日期
  from ENG_ENGINEERING_CHANGES_V eec,
       ENG_REVISED_ITEMS_V       er,
       ENG_REVISED_COMPONENTS_V  erc,
       mtl_system_items_b msi1,
       mtl_system_items_b msi2,
       bom_inventory_components bic
 where eec.change_notice = er.change_notice
   and eec.change_id = er.change_id
   and eec.organization_id = er.organization_id
   and erc.change_notice = er.change_notice
   and erc.revised_item_sequence_id = er.revised_item_sequence_id
   and er.organization_id = msi1.organization_id
   and er.revised_item_id = msi1.inventory_item_id
   and erc.component_item_id = msi2.inventory_item_id
   and msi2.organization_id = msi1.organization_id
   and eec.organization_id = 89
   and erc.old_component_sequence_id = bic.COMPONENT_SEQUENCE_ID
   and bic.BILL_SEQUENCE_ID =er.bill_sequence_id
   -----and erc.acd_type = 1  ----1:添加 2:更改 3:禁用
   ---and msi1.segment1 = 'E678-01001-0001'
   ----and msi2.segment1 = 'E678-01016-0002'
---and eec.change_notice = 'PAO4180'
   and eec.status_type = 6 ---已實施
   and to_char(eec.creation_date, 'yyyy/mm/dd') >= '2014/12/01'
   and to_char(eec.creation_date, 'yyyy/mm/dd') <= '2015/01/21'
   
order by msi1.segment1,er.alternate_bom_designator,msi2.segment1
/*ERP 採購接收\檢驗\入庫*/
select pha.segment1 PO號,
       pla.line_num PO行,
       rsh.receipt_num,
       DECODE(rt.transaction_type,'RECEIVE',1,'ACCEPT',2,'DELIVER',3,'RETURN TO RECEIVING',4,'RETURN TO VENDOR',5) TRX_TYPE,
       rt.transaction_type,
       (case 
         when rt.transaction_type = 'RECEIVE'
         then sum(rt.quantity)
        end ) QTY_REC,
         (case 
         when rt.transaction_type = 'ACCEPT'
         then sum(rt.quantity)
        end ) QTY_ACC,
         (case 
         when rt.transaction_type = 'DELIVER'
         then sum(rt.quantity)
        end ) QTY_DELIVER,
         (case 
         when rt.transaction_type = 'RETURN TO RECEIVING'
         then sum(rt.quantity)
        end )  QTY_R_REC,
         (case 
         when rt.transaction_type = 'RETURN TO VENDOR'
         then sum(rt.quantity)
        end )  QTY_R_VEN,
        (case 
         when rt.transaction_type = 'REJECT'
         then sum(rt.quantity)
        end )  QTY_Reject
  from po_headers_all       pha,
       po_lines_all         pla,
       rcv_transactions     rt,
       rcv_shipment_headers rsh,
       rcv_shipment_lines   rsl
 where pha.po_header_id = pla.po_header_id
   and pla.org_id = pha.org_id
   and rt.po_header_id = pha.po_header_id
   and rt.po_line_id = pla.po_line_id
   and rt.shipment_header_id = rsh.shipment_header_id
   and rt.shipment_line_id = rsl.shipment_line_id
   and rsl.po_header_id = pha.po_header_id
   and rsl.po_line_id = pla.po_line_id
   and rsh.shipment_header_id = rsl.shipment_header_id
   ---and rsh.receipt_num = 10131029
   and pha.segment1 = '73098472'
   GROUP BY pha.segment1,pla.line_num,rsh.receipt_num,rt.transaction_type
 order by  3,4
/*PO與PR關聯 SCRIPTS*/
/*
思路: po_requisition_headers_all po_requisition_lines_all po_req_distributions_all 3表 分別與以下4表關聯 po_headers_all po_lines_all po_line_locations_all po_distributions_all */ ---1、未創建PO的PR select prh.requisition_header_id, prl.requisition_line_id, prd.distribution_id, prl.destination_organization_id dest_org, (select haout.name from HR_ALL_ORGANIZATION_UNITS_TL haout where haout.organization_id = prl.org_id and haout.language = 'ZHS') REQUESTING_ORG, prl.cancel_flag , prh.segment1 pr, prl.line_num , prl.creation_date, msi.segment1 item_code, prl.item_description, prl.quantity, prl.unit_meas_lookup_code, ---prl.created_by, ---prl.to_person_id, ppf.FULL_NAME, prl.need_by_date from po_requisition_headers_all prh, po_requisition_lines_all prl, po_req_distributions_all prd, per_people_f ppf, mtl_system_items_b msi where prh.requisition_header_id = prl.requisition_header_id and prd.requisition_line_id = prl.requisition_line_id and prd.org_id = prl.org_id and prh.org_id = prl.org_id and prl.to_person_id = ppf.PERSON_ID and (nvl(ppf.EFFECTIVE_END_DATE,sysdate) >=sysdate) and msi.inventory_item_id = prl.item_id and msi.organization_id = prl.destination_organization_id and prh.authorization_status = 'APPROVED' and prh.type_lookup_code = 'PURCHASE' and (prl.cancel_flag ='N' OR prl.cancel_flag is null) and (prh.cancel_flag = 'N' OR prh.cancel_flag is null) AND prh.segment1 = &pr /*未創建PO*/ and not exists ( select 1 from po_distributions_all pda where pda.req_distribution_id = prd.distribution_id ) order by prh.segment1,prl.line_num; ----2、PR 信息 SELECT porl.destination_organization_id dest_org, (select haout.name from HR_ALL_ORGANIZATION_UNITS_TL haout where haout.organization_id = porl.org_id and haout.language ='ZHS' ) REQUESTING_ORG, porh.segment1 pr, poh.segment1 po, p.full_name Buyer, pov.vendor_name, hrl1.location_code, pol.line_num, msi.segment1, pol.item_description, pol.unit_meas_lookup_code, pol.quantity, pll.need_by_date need_by, pll.promised_date promised_by FROM po_requisition_headers_all porh, po_requisition_lines_all porl, po_req_distributions_all pord, po_headers_all poh, po_lines_all pol, po_line_locations_all pll, po_distributions_all pod, po_vendors pov, po_vendor_sites_all povs, per_people_f p, hr_locations hrl1, mtl_system_items_b msi --po_releases_all por WHERE pod.po_header_id = poh.po_header_id AND pod.po_line_id = pol.po_line_id AND poh.po_header_id = pol.po_header_id AND pod.line_location_id = pll.line_location_id --AND pod.po_release_id = por.po_release_id(+) AND pod.req_distribution_id = pord.distribution_id(+) AND pord.requisition_line_id = porl.requisition_line_id(+) AND porl.requisition_header_id = porh.requisition_header_id(+) AND pov.vendor_id(+) = poh.vendor_id AND povs.vendor_site_id(+) = poh.vendor_site_id AND poh.agent_id = p.person_id AND hrl1.location_id(+) = poh.ship_to_location_id and porl.item_id = msi.inventory_item_id and porl.destination_organization_id = msi.organization_id --- and porh.authorization_status = 'APPROVED' --- and porh.type_lookup_code = 'PURCHASE'
/*外協工單關聯PR*/
select prha.segment1 申請號,
       prha.authorization_status,
       prla.line_num 申請行,
       prla.cancel_flag,
       prla.quantity 申請數量,
        prla.quantity_received 接收數量,
       prla.quantity_cancelled 取消數量,
       prla.quantity_delivered 交貨數量,
       we.organization_id org_id,
       we.wip_entity_name,
       (select f.meaning
          from fnd_lookup_values f
         where f.lookup_type = 'WIP_JOB_STATUS'
           and f.lookup_code = wdj.status_type
           and f.language = 'ZHS') status,
       wdj.class_code,
       msi1.segment1 assm_item_cd,
       msi1.description assm_item_dsp,
       wdj.start_quantity,
       wdj.quantity_completed,
       wdj.quantity_scrapped,
       wdj.date_released,
       wdj.date_completed,
       wdj.date_closed,
       wo.operation_seq_num,
       wo.operation_code,
       wo.description,
       wor.resource_seq_num,
       br.resource_code,
       br.description
  from wip_entities               we,
       wip_discrete_jobs          wdj,
       mtl_system_items_b         msi1, ----裝配件
       wip_operations_v           wo,
       wip_operation_resources    wor,
       bom_resources              br,
       po_requisition_lines_all   prla,
       po_requisition_headers_all prha
 where we.wip_entity_id = wdj.wip_entity_id
   and we.organization_id = wdj.organization_id
   and wdj.primary_item_id = msi1.inventory_item_id
   and we.organization_id = msi1.organization_id
   and wdj.wip_entity_id = wo.wip_entity_id
   and wdj.organization_id = wo.organization_id
   and wor.organization_id = wo.organization_id
   and wor.wip_entity_id = wo.wip_entity_id
   and wor.operation_seq_num = wo.operation_seq_num
   and br.organization_id = wor.organization_id
   and br.resource_id = wor.resource_id
   and prla.wip_entity_id = wdj.wip_entity_id
   and prla.Wip_Operation_Seq_Num = wo.operation_seq_num
   and prla.wip_resource_seq_num = wor.resource_seq_num
   and prla.requisition_header_id = prha.requisition_header_id
   and prla.org_id = prha.org_id
   and we.organization_id = &org_id
   and we.wip_entity_name = &job;

/*外協工單關聯PO*/

select pha.segment1 PO號, 
         pha.authorization_status 狀態,
         pha.cancel_flag 頭取消狀態,
         pla.line_num PO行,
         pla.cancel_flag 行取消狀態,
         plla.shipment_num,
         plla.ship_to_organization_id 發運組織,
         plla.ship_to_location_id 收貨方,
         we.organization_id org_Id,
         we.wip_entity_name,
         (select f.meaning
            from fnd_lookup_values f
           where f.lookup_type = 'WIP_JOB_STATUS'
             and f.lookup_code = wdj.status_type
             and f.language = 'ZHS') status,
         wdj.class_code,
         msi1.segment1 assm_item_cd,
         msi1.description assm_item_dsp,
         wdj.start_quantity,
         wdj.quantity_completed,
         wdj.quantity_scrapped,
         wdj.date_released,
         wdj.date_completed,
         wdj.date_closed,
         wo.operation_seq_num,
         wo.OPERATION_CODE,
         wo.DEPARTMENT_CODE,
         wo.description,
         wor.resource_seq_num,
         wor.resource_id,
         br.resource_code,
         br.description,
         br.disable_date 失效日期,
         /*br.resource_type,*/
         decode(br.resource_type,1,'設備',2,'人員',3,'幣種',4,'雜項',5,'金額')  資源類型, ---1:設備 2:人員 3:幣種 4:雜項  5;金額
       decode(br.autocharge_type,1,'WIP移動',2,'人工',3,'PO接收',4,'PO移動') 計費類型,---1:WIP移動 2:人工  3:PO接收 4:PO移動
       br.unit_of_measure 單位,
       decode(br.default_basis_type,1,'物料',2,'批次') 基準,
       decode(br.cost_code_type,3,'N',4,'Y')   外協加工, ---3:否 4:是
       (select msi.segment1
        from mtl_system_items_b msi
        where msi.organization_id = br.organization_id
        and   msi.inventory_item_id = br.purchase_item_id) 外協加工物料,
        decode(br.allow_costs_flag,1,'Y',2,'N') 是否計算成本, ---1:是 2:否
       ---brv.default_activity 活動,
       decode(br.standard_rate_flag,1,'Y',2,'N') 是否標準費率 ---1:是 2:非
  from wip_entities       we,
       wip_discrete_jobs  wdj,
       mtl_system_items_b msi1,
       wip_operations_v     wo,
       wip_operation_resources wor,
       bom_resources br,
       po_distributions_all pda,
       po_line_locations_all plla,
       po_lines_all pla,
       po_headers_all pha
  where we.wip_entity_id = wdj.wip_entity_id
  and   we.organization_id = wdj.organization_id
  and   wdj.primary_item_id = msi1.inventory_item_id
  and   we.organization_id = msi1.organization_id
  and   wdj.wip_entity_id =wo.wip_entity_id
  and   wdj.organization_id =wo.organization_id
  and   wor.organization_id = wo.organization_id
  and   wor.wip_entity_id = wo.wip_entity_id
  and   wor.operation_seq_num = wo.operation_seq_num
  and   br.organization_id = wor.organization_id
  and   br.resource_id = wor.resource_id
  and   pda.wip_entity_id = wdj.wip_entity_id
  and   pda.wip_operation_seq_num = wo.operation_seq_num
  and   pda.wip_resource_seq_num = wor.resource_seq_num
  and   pda.destination_organization_id = wdj.organization_id
  and   pda.line_location_id =plla.line_location_id
  and   pda.org_id =plla.org_id
  and   plla.po_line_id = pla.po_line_id
  and   plla.org_id = pla.org_id
  and   pla.org_id =pha.org_id
  and   pla.po_header_id = pha.po_header_id
  and   plla.po_header_id = pha.po_header_id
  and   pda.po_header_id = pha.po_header_id
  and   we.organization_id = &org_id
  and   we.wip_entity_name = &job
order by pha.segment1,pla.line_num

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上次說了同一個對象裡面不同觸發器的執行順序。今天我也想分享一些我在同一個表裡面,建上不同的唯一約束,不同的唯一索引,看下結果會怎樣 首先簡單建個測試表,不多,就4列 CREATE TABLE AAA3 (ID INT IDENTITY(1,1),Col1 VARCHAR(50),Col2 VARCH
  • 簡易型: C# DBHelper Code using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.
  • 修改表名 格式:sp_rename tablename,newtablename sp_rename tablename,newtablename 修改欄位名 格式:sp_rename 'tablename.colname',newcolname,'column' sp_rename 'tablen
  • 資料庫:DB(Database) 資料庫系統:DBS(Database System):是一種虛擬的系統,將多種內容關聯起來的稱呼 DBS = DBMS +DB DBMS:Database Management System,資料庫管理系統,專門管理資料庫 DBA:Database Administ...
  • 在最近的一次優化過程中發現了ORACLE 10g中一個作業EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS執行相當頻繁,其實以前也看到過,只是沒有做過多的瞭解和關註。這個任務在某些版本或某些情況會引起一些性能問題。其實EMD_MAINTENANCE.EXECUTE_...
  • 最近在centos7中通過rpm方式安裝了最新版本的mysql-server 5.7 (mysql57-community-release-el7-7.noarch.rpm) ,發現安裝成功後無法使用root登錄。百度google一番無果,最後在官方文檔中找到了答案。現記錄完整安裝及問題解決過程,希
  • Incorrect syntax near the keyword 'user'
  • -- GI Report SELECT A.PLPKLNBR, D.DNDNHNBR, F.DNSAPCPO, C.PPPRODTE, A.GNUPDDTE GI_DATE, B.INHLDCDE, B.PLCSQNBR, PRSTYCDE, PRCOLCDE, INEXTSIZ, E.CODIVC
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...