【调度系统】广东民航医疗快线调度系统源代码
wanglizhong
2025-05-05 14553e97825d8c112ce2c40275e0c71b79fe3121
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
<?php include "../inc/odbc.php"; ?>
<?php
//大象慧云-开发平台
//https://sandbox.ele-cloud.com/
$method = !empty($_REQUEST["method"])?$_REQUEST["method"]:"";
 
$appKey = 'Mlfs7n9kofqPMaNVJSFoDcwS';
$appSecret = 'awSW7gts8AS4StGV84HCKVCf';
$NSRSBH    = "1403016L1NN5336"; //纳税人识别号 (测试)
$NSRMC    = "测试36"; //纳税人名称 (测试)
$EleCloudURL="https://api.966120.com.cn/EleCloud/";
 
function postAccessToken() {
    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
    global $appKey;
    global $appSecret;
    global $conn;
    $sql = "select vtext,vMono=CONVERT(nvarchar(20),vMono,120) from dictionary where vtitle='EleCloud_access_token'";
    $data = sqlsrv_query($conn,$sql);
    if($data == true){
        while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
            $access_token    = $rs['vtext'];
            $expire_time    = $rs['vMono'];
        }
    }
 
    if (strtotime($expire_time) < time()) {
        $url = "https://sandbox.ele-cloud.com/api/authen/token";
        $send = array(
            "appKey"=>$appKey,
            "appSecret"=>$appSecret
        );
        // var_dump($send);exit;
        $send  = json_encode($send);  
 
        //echo $send;exit;
        $headerArray =array("Content-Type: application/json");
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $data_json = curl_exec($curl);
        curl_close($curl);
        //var_dump($data_json);exit;
 
        $res = json_decode($data_json);
        $access_token = $res->access_token;
        $expire_time = date('Y-m-d H:i:s',time() + $res->expires_in);
        $update_sql="update dictionary set vtext='".$access_token."',vMono='".$expire_time."' where vtitle='EleCloud_access_token'";
        $res = sqlsrv_query($conn,$update_sql);
    }
    return $access_token;
}
 
$access_token=postAccessToken();
//echo $access_token;exit;
 
switch ($method)
{
    case "AllocateInvoices":    //发票开具冲红
        $InvoiceID    = !empty($_REQUEST["InvoiceID"]) ? $_REQUEST["InvoiceID"] : "";                //发票申请ID
        $InvoiceType    = !empty($_REQUEST["InvoiceType"]) ? $_REQUEST["InvoiceType"] : "2";    //发票类型
        $EleCloudArray = array(
            "DDPCXX"=>array(
                "DDQQPCH"=>date('YmdHis')."_".rand(10000000,99999999),    //订单请求批次号
                "NSRSBH"=>$NSRSBH,    //纳税人识别号(测试)
                //"KPZD"    => "",    // "开票终端", 
                "FPLXDM"=>"026",
                //"CPYBS"    => "",    // "成品油标识", 
                //"CPYBS"    => "",    // "扩展字段", 
                "KPFS"=>"0"
            ),
            "DDZXX"=>array()
        );
        //echo json_encode($EleCloudArray);exit;
 
        //$InvoiceID = "225";
        $ServiceOrdID="";
        $sql = "select InvoiceID,InvoiceType,InvoiceName,InvoiceMakeout,InvoiceCompanyPhone,InvoiceCompanyID,InvoiceCompanyAdd,InvoiceCompanyBank,InvoiceCompanyBankNo,InvoiceZipCode,Invoice_strAdd,Invoice_strName,Invoice_strPhone,Invoice_strEmail,ApplicationTime=CONVERT(nvarchar(20),ApplicationTime,111),AuditTime=CONVERT(nvarchar(20),AuditTime,111),AuditStatus,AuditOAID,AuditMakeout,InvoiceMoney,InvoiceNo,InvoiceURL,ServiceOrdID,ServiceOrdType,ServiceOrdNo=ServiceOrdClass+convert(nvarchar(10),year(ServiceOrd_CC_Time))+right('0'+convert(nvarchar(10),month(ServiceOrd_CC_Time)),2)+right('0'+convert(nvarchar(10),day(ServiceOrd_CC_Time)),2)+'-'+right('00'+convert(nvarchar(10),ServiceOrdNo),3),OrdTraPrice=ServiceOrdTraTxnPrice from InvoiceData,ServiceOrder where ServiceOrderIDPK=ServiceOrdID and AuditStatus<>4 and InvoiceType=".$InvoiceType." and InvoiceID in (".$InvoiceID.") and EleCloud_ZTDM<>'010000'";
        $data = sqlsrv_query($conn,$sql);
        if($data == true){
            while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
                $InvoiceID            = $rs['InvoiceID'];        //发票ID
                $ServiceOrdID        = $rs['ServiceOrdID'];        //服务单ID
                $ServiceOrdNo        = $rs['ServiceOrdNo'];        //服务单号
 
                $InvoiceID            = $rs['InvoiceID'];            //开票信息ID
                $InvoiceType        = $rs['InvoiceType'];        //开票类型
                $InvoiceName        = $rs['InvoiceName'];        //发票抬头
                $InvoiceMakeout        = $rs['InvoiceMakeout'];    //发票备注
                $InvoiceCompanyPhone= $rs['InvoiceCompanyPhone'];//企业电话
                $InvoiceCompanyID    = str_replace(array("\r\n", "\r", "\n"),'',$rs['InvoiceCompanyID']);    //纳税识别号
                $InvoiceCompanyAdd    = $rs['InvoiceCompanyAdd'];    //企业注册地址
                $InvoiceCompanyBank    = $rs['InvoiceCompanyBank'];//企业开户银行
                $InvoiceCompanyBankNo=$rs['InvoiceCompanyBankNo'];//企业银行账号
                $InvoiceZipCode        = $rs['InvoiceZipCode'];    //邮编
                $Invoice_strAdd        = $rs['Invoice_strAdd'];    //邮寄地址
                $Invoice_strName    = $rs['Invoice_strName'];    //联系人
                $Invoice_strPhone    = $rs['Invoice_strPhone'];    //联系电话
                $Invoice_strEmail    = $rs['Invoice_strEmail'];    //电子邮箱
                $ApplicationTime    = $rs['ApplicationTime'];    //申请时间
                $AuditTime            = $rs['AuditTime'];            //处理时间
                $AuditStatus        = $rs['AuditStatus'];        //处理状态
                $AuditOAID            = $rs['AuditOAID'];            //处理人
                $AuditMakeout        = $rs['AuditMakeout'];        //处理备注
                $InvoiceMoney        = $rs['InvoiceMoney'];        //发票金额
                $InvoiceNo            = $rs['InvoiceNo'];            //发票编号
                $InvoiceURL            = $rs['InvoiceURL'];        //发票链接
                if ($InvoiceMoney==0) {$InvoiceMoney=$rs['OrdTraPrice'];}
                if (empty($Invoice_strEmail)) {$Invoice_strEmail="vicgame@163.com";}    //测试邮箱
                if (!empty($InvoiceCompanyID)) {$GMFLX="01";}else{$GMFLX="03";}    //购买方类型(01 企业,02 机关事业单位,03 个人,04 其他)
                
                array_push($EleCloudArray["DDZXX"],array(
                    "DDTXX"=>array(
                            "DDQQLSH"=>$InvoiceID,    //"订单请求流水号"
                            "NSRSBH"=> $NSRSBH,    //"纳税人识别号",     销货方纳税人识别号 
                            "NSRMC"    => $NSRMC,    //"纳税人名称",      销货方纳税人名称
                            "KPLX"    => "0",    //"开票类型",      0 蓝字发票 1 红字发票
                            //"BMBBBH"=> "",    //"编码表版本号",     
                            "XHFSBH"=> $NSRSBH,    //"销货方纳税人识别号",     企业纳税人识别号,如果未在销项系统 中维护企业信息节点 8,节点 9,节点 10, 节点 11 需要必填 
                            "XHFMC"    => $NSRMC,    //"销货方名称",     销货方对应的名称,如果未在销项系统 中维护企业信息节点 8,节点 9,节点 10, 节点 11 需要必填 
                            "XHFDZ"    => "北京市海淀区",    //"销货方地址",     销货方对应的地址
                            "XHFDH"    => "1234567890",    //"销货方电话",     销货方对应的电话 
                            "XHFYH"    => "交通银行海淀支行",    //"销货方银行名称",     
                            "XHFZH"    => "140301615336",    //"销货方银行账号",     
                            "GMFLX"    => $GMFLX,    //"购买方类型",      01 企业,02 机关事业单位,03 个人, 04 其他 当开票方式为自动开票时必填 
                            //"GMFBM"    => "",    //"购买方编码",     专票时必填
                            "GMFSBH"=> $InvoiceCompanyID,    //"购买方纳税人识别号",     专票时必填
                            "GMFMC"    => $InvoiceName,        //"购买方名称",     专票时必填
                            "GMFDZ"    => $InvoiceCompanyAdd,    //"购买方地址",     专票时必填
                            "GMFDH"    => $InvoiceCompanyPhone,//"购买方电话",     专票时必填
                            "GMFYH"    => $InvoiceCompanyBank,    //"购买方银行名称",     专票时必填
                            "GMFZH"    => $InvoiceCompanyBankNo,//"购买方银行账号",     专票时必填
                            //"GMFSF"    => "",    //"购买方省份",    
                            //"GMFSJH"=> "",    //"购买方手机",     
                            "GMFDZYX"=>$Invoice_strEmail,    //"购买方邮箱",    如果填写,发票类别为电子发票时会自 动发送邮件
                            "KPR"    => "萧洁纯",    //"开票人",     企业传递开票人信息,发票上会进行展 示 当开票方式为自动开票时必填 
                            "SKR"    => "萧洁纯",    //"收款人",     
                            "FHR"    => "张利华",    //"复核人",     
                            //"YFPDM"    => "",    //"原发票代码",     
                            //"YFPHM"    => "",    //"原发票号码",     
                            "QDBZ"    => "0",    //"清单标志",     普通发票, 1-普通发票(清单), 2-收购发票, 3-收购发票(清单), 4-成品油发票 0 或 2 时系统根据项目名称字数,自动产 生清单 1 或 3 时,系统取清单对应票面内容字段 打印到发票票面上,将项目信息 XMXX 打 印到清单上。 默认为 0
                            //"QDXMMC"=> "",    //"清单项目名称",     需要打印清单时对应发票票面项目名称 清单标识(QDBZ)为 1 或 3 时必填 
                            "JSHJ"    => number_format($InvoiceMoney,2,".",""),    //"价税合计",     小数点后 2 位,以元为单位精确到分; 不能为 0
                            "HJJE"    => "0",    //"合计金额",     小数点后 2 位,以元为单位精确到分。 可填写 0,由发票系统做价税分离,重 新赋值。 
                            "HJSE"    => "0",    //"合计税额",     小数点后 2 位,以元为单位精确到分。 可填写 0,由发票系统做价税分离,重 新赋值。 
                            //"BZ    "    => "",    //"备注",     
                            //"CHYY"    => "",    //"冲红原因",     
                            //"TSCHBZ"    => "",    //"特殊冲红标志",    
                            "DDH"    => $ServiceOrdID    //"订单号",     
                            //"THDH"    => "",    //"退货单号",     
                            //"DDSJ"    => "",    //"订单时间",     
                            //"YWLX"    => "",    //"业务类型",    
                            //"BYZD1"    => "",    //"备用字段1",     
                            //"BYZD2"    => "",    //"备用字段2",     
                            //"BYZD3"    => "",    //"备用字段3",     
                            //"BYZD4"    => "",    //"备用字段4",     
                            //"BYZD5"    => "",    //"备用字段5"    
                        )
                    ,
                    "DDMXXX"=>array(array(
                            //"XH"    => "",    //"项目序号", 
                            "FPHXZ"    => "0",    //"发票行性质", 0 正常行,1 折扣行,2 被折扣行,6 清 单红字发票 
                            "SPBM"    => "3040301020000000000",    //"商品税收分类编码",  税收分类编码。发票票面上“货物或应 税劳务、服务名称中**之间的内容,通 过税收分类编码取对应的简称
                            //"ZXBM"    => "",    //"自行编码", 
                            "YHZCBS"=> "1",    //"优惠政策标识", 0:不使用,1:使用 
                            "LSLBS"    => "1",    //"零税率标识", 空:非零税率,0:出口零税,1:免税,2: 不征税 3:普通零税率 若填写了 3(普通零税率), 则: YHZCBS 填 0,ZZSTSGL 填空
                            "ZZSTSGL"=>"免税",    //"增值税特殊管理", 
                            "XMMC"    => "医疗服务",    //"项目名称", 折扣行项目名称与上一行被折扣行项目 名称一致 
                            //"GGXH"    => "",    //"规格型号", 
                            "DW"    => "次",    //"单位", 
                            "SPSL"    => "1",    //"商品数量", 小数点后 8 位, 小数点后都是 0 时,只 显示整数;不能为 0,对于折扣行或运 费等没有“数量概念的数据项,商品数 量默认为 1
                            "DJ"    => number_format($InvoiceMoney,2,".",""),    //"单价", 小数点后 8 位小数点后都是 0 时,只显 示 2 位小数;否则只显示至最后一位不 为 0 的数字;不能为 0, 清单红字可以为空 
                            "JE"    => number_format($InvoiceMoney,2,".",""),    //"金额", 小数点后 2 位,以元为单位精确到分。 等于=单价*数量,根据含税标志,确定 此金额是否为含税金额;不能为 0
                            "HSBZ"    => "1",    //"含税标志", 表示单价和金额是否含税。0 表示都不 含税,1 表示都含
                            "SL"    => "0",    //"税率", 如果税率为 0,表示免税,小数点后 3 位, 清单红字若对应的蓝字发票为多种税 率,税率填充为空,单一税率填写此税 率 
                            "SE"    => "0"    //"税额", 小数点后 2 位,以元为单位精确到分, 含税标志为 0,税额必填,清单红字税 额必填 
                            //"KCE"    => "",    //"扣除额", 
                            //"BYZD1"    => "",    //"备用字段1", 
                            //"BYZD2"    => "",    //"备用字段2", 
                            //"BYZD3"    => "",    //"备用字段3"
                        ))
                    )
                );
                //echo json_encode($EleCloudArray);exit;
                
            }
        }
        
        if (!empty($ServiceOrdID)) {
            $url = "https://sandbox.ele-cloud.com/api/order-api/order-api/v4/AllocateInvoices?access_token=".$access_token;
            //echo json_encode($EleCloudArray);exit;
            $send = array(
                "zipCode"=>"0",
                "encryptCode"=>"0",
                "dataExchangeId"=>date('YmdHis').rand(1000000000,9999999999)."00000000",
                "encryptentCodeCode"=>"1234",
                "content"=>base64_encode(json_encode($EleCloudArray))
            );
            $send  = json_encode($send);  
 
            //echo $send."<br><br>";//exit;
            $headerArray =array("Content-Type: application/json");
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $data_json = curl_exec($curl);
            curl_close($curl);
            //echo $data_json."<br>";//exit;
 
            $res = json_decode($data_json);
            $res_content = $res->content;
            if (!empty($res_content)){
                $res_content=json_decode(base64_decode($res_content));
                $ZTDM = $res_content->ZTDM;
                $ZTXX = $res_content->ZTXX;
                $update_sql="update InvoiceData set EleCloud_ZTDM='".$ZTDM."',EleCloud_ZTXX='".$ZTXX."',EleCloud_Time=getdate() where InvoiceID=".$InvoiceID;
                $res = sqlsrv_query($conn,$update_sql);
                $api_json = array(
                    "ZTDM"=>$ZTDM,
                    "ZTXX"=>$ZTXX
                );
                echo json_encode($api_json);exit;
            }else{
                $returnStateInfo = $res->returnStateInfo;
                echo base64_decode($returnStateInfo->returnMessage);exit;
            }
            
            //$update_sql="update dictionary set vtext='".$access_token."',vMono='".$expire_time."' where vtitle='EleCloud_access_token'";
            //$res = sqlsrv_query($conn,$update_sql);
 
        }
 
        break;
 
    case "GetOrderInfoAndInvoiceInfo":    //订单和发票数据查询接口
        $InvoiceID    = !empty($_REQUEST["InvoiceID"]) ? $_REQUEST["InvoiceID"] : "";                //发票申请ID
        $EleCloud_ZTDM="";
        $EleCloud_ZTXX="";
        $EleCloud_Time="";
        $sql = "select InvoiceID,EleCloud_ZTDM,EleCloud_ZTXX,EleCloud_Time=CONVERT(nvarchar(20),EleCloud_Time,111),ServiceOrderIDPK from InvoiceData where EleCloud_ZTDM<>'' and InvoiceID in (".$InvoiceID.")";
        $data = sqlsrv_query($conn,$sql);
        if($data == true){
            while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
                $EleCloud_ZTDM    = $rs['EleCloud_ZTDM'];    //申请结果代码
                $EleCloud_ZTXX    = $rs['EleCloud_ZTXX'];    //申请结果说明
                $EleCloud_Time    = $rs['EleCloud_Time'];    //申请返回时间
                $ServiceOrderID    = $rs['ServiceOrderIDPK'];    //服务单ID
            }
        }
        if ($EleCloud_ZTDM=="010000") {
            $EleCloudArray=array(
                "NSRSBH"=> $NSRSBH,    //"纳税人识别号",     销货方纳税人识别号 
                "DDQQLSH"=>$InvoiceID    //"订单请求流水号"
            );
            $url = "https://sandbox.ele-cloud.com/api/order-api/order-api/v4/GetOrderInfoAndInvoiceInfo?access_token=".$access_token;
            //echo json_encode($EleCloudArray);exit;
            $send = array(
                "zipCode"=>"0",
                "encryptCode"=>"0",
                "dataExchangeId"=>date('YmdHis').rand(1000000000,9999999999)."00000000",
                "encryptentCodeCode"=>"1234",
                "content"=>base64_encode(json_encode($EleCloudArray))
            );
            $send  = json_encode($send);  
 
            //echo $send."<br><br>";//exit;
            $headerArray =array("Content-Type: application/json");
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $data_json = curl_exec($curl);
            curl_close($curl);
            //echo $data_json."<br>";exit;
 
            $res = json_decode($data_json);
            $res_content = $res->content;
            if (!empty($res_content)){
                $res_content=json_decode(base64_decode($res_content));
                $ZTDM = $res_content->ZTDM;
                $ZTXX = $res_content->ZTXX;
                $PDFURL="";
                if ($ZTDM=="000000") {
                    $res_content=$res_content->DDFPZXX[0]->DDFPXX;
                    $FPDM=$res_content->FPDM;    //发票代码
                    $FPHM=$res_content->FPHM;    //发票号码
                    $KPRQ=$res_content->KPRQ;    //开票日期
                    $PDFZJL=$res_content->PDFZJL;    //PDF字节流
                    //echo FPDM."<br>";exit;
                    
                    //PDF文件生成
                    $stream_data=$PDFZJL;
                    $receive_file_name="PDF/".$ServiceOrderID."_".$FPHM.".pdf";
                    $PDFURL=$EleCloudURL.$receive_file_name;
                    $result = false;
                    if ($stream_data != '') {
                        $result = file_put_contents($receive_file_name, base64_decode($stream_data), true);        //  保存文件
                    }
                    //echo $receive_file_name;exit;
                    $update_sql="update InvoiceData set InvoiceNo='".$FPHM."',InvoiceURL='".$PDFURL."',EleCloud_ZTDM='".$ZTDM."',EleCloud_ZTXX='".$ZTXX."',EleCloud_Time='".$KPRQ."' where InvoiceID=".$InvoiceID;
                    $res = sqlsrv_query($conn,$update_sql);
                }else{
                    $update_sql="update InvoiceData set EleCloud_ZTDM='".$ZTDM."',EleCloud_ZTXX='".$ZTXX."',EleCloud_Time=getdate() where InvoiceID=".$InvoiceID;
                    $res = sqlsrv_query($conn,$update_sql);
                }
                
                $api_json = array(
                    "InvoiceID"=>$InvoiceID,
                    "ZTDM"=>$ZTDM,
                    "ZTXX"=>$ZTXX,
                    "PDFURL"=>$PDFURL
                );
                echo json_encode($api_json);exit;
            }else{
                $returnStateInfo = $res->returnStateInfo;
                echo base64_decode($returnStateInfo->returnMessage);exit;
            }
            
            //$update_sql="update dictionary set vtext='".$access_token."',vMono='".$expire_time."' where vtitle='EleCloud_access_token'";
            //$res = sqlsrv_query($conn,$update_sql);
 
        }else{
            $api_json = array(
                    "InvoiceID"=>$InvoiceID,
                    "EleCloud_ZTDM"=>$EleCloud_ZTDM,
                    "EleCloud_ZTXX"=>$EleCloud_ZTXX,
                    "EleCloud_Time"=>$EleCloud_Time
                );
                echo json_encode($api_json);exit;
        }
        break;
}
 
 
 
 
 
?>