liuyn
2024-03-11 a87f1c3df03078814ee97ad0c8ac200a232419e9
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
/**********************************************************************
 * 
 *
 * @url: /services/apexrest/rest
 * @data:
 *  {
        
    }
    *************************************************************************/
    @RestResource(urlMapping='/NFM208/*')
    global with sharing class NFM208Rest {
      //CHAN-BGYE7C 新增NFM208接口 精琢技术 2019/11/22 Start
      global class ProductsDeliveryRest{
        public ProductsDelivery ProductsDelivery;
      }
 
      global class ProductsDelivery {
        public NFMUtil.Monitoring Monitoring;
        public ReturnProductCode[] ReturnProductCode;
 
      }
      //报文是两层[]的
      global class ReturnProductCode {
      public String ProductCode; //产品代码
      public ReturnProductModel[] ReturnProductModel;
    }
    global class ReturnProductModel {
 
        public String SerialNumber; // 机身编码
        public String ManagementNumber; // 管理代码
        public String CreateDate; //生产日期
        public String EndDate; //有效期
        // 20240201 zyh DB202401662714 Start
        public String CurrencyIsoCode; //币种
        public Decimal ShippedAmount; //金额
        // 20240201 zyh DB202401662714 End
      }
      @HttpGet
      global static  void getProduct() {
 
      RestRequest request = RestContext.request;
      //接收传过来的 合同编号
      String caseId = request.params.get('ContractNumber'); //订单编号
      // 20240201 zyh DB202401662714 Start
      if (String.isNotBlank(caseId)) {
        caseId = '%' + caseId + '%';
      }
      // 20240201 zyh DB202401662714 End
      system.debug('caseId:'+caseId);
 
      String rowDataStr = null;
 
      //添加日志 精琢技术 2019/12/12 Start
      String MessageGroupNumber = '';
      String logstr = '';
      BatchIF_Log__c iflog = new BatchIF_Log__c();
        iflog.Type__c = 'NFM208';
        iflog.MessageGroupNumber__c = MessageGroupNumber;
        iflog.Log__c = logstr;
        iflog.ErrorLog__c = '';
      insert iflog;
      //添加日志 精琢技术 2019/12/12 End
 
      try{
        List<Asset> assList2 = [ Select Id,SerialNumber,OT_CODE__c ,Product_Serial_No__c,TracingCode__c,ProductionDate__c,  Guaranteen_end__c,ShippedAmount__c,CurrencyIsoCode from Asset where Order_No__c LIKE:caseId];
        ProductsDelivery  pd = new ProductsDelivery();
        ReturnProductCode pc = new ReturnProductCode();
          pd.ReturnProductCode   = new List<ReturnProductCode>();
          pc.ReturnProductModel = new List<ReturnProductModel>();
        List<ReturnProductModel> rpmList = new List<ReturnProductModel>();
 
        // 20240201 zyh DB202401662714 Start
        // AggregateResult[] assList1 = [ Select Count(Id),product2.productCode from Asset where Order_No__c =:caseId group by product2.productCode ];
        AggregateResult[] assList1 = [ Select Count(Id),product2.productCode from Asset where Order_No__c LIKE :caseId group by product2.productCode ];
        // 20240201 zyh DB202401662714 End
        for(AggregateResult ass1 : assList1){
          ReturnProductCode rpc  = new ReturnProductCode();
            rpc.ProductCode = String.valueOf(ass1.get('productCode'));
            rpc.ReturnProductModel = new List<ReturnProductModel>();
          for(Asset ass2 : assList2){
            if(String.valueOf(ass1.get('productCode'))== ass2.OT_CODE__c){
 
              ReturnProductModel rpm = new ReturnProductModel();
                rpm.SerialNumber = ass2.SerialNumber;
                rpm.ManagementNumber =ass2.TracingCode__c;
                //添加日志 精琢技术 2019/12/12 Start  2021/07/16 wql 修改日志信息显示 start
                logstr +=ass2.SerialNumber+',';
                //添加日志 精琢技术 2019/12/12 End 2021/07/16 wql 修改日志信息显示 end
                rpm.CreateDate = NFMUtil.formatDate2Str(ass2.ProductionDate__c);
                rpm.EndDate = NFMUtil.formatDate2Str(ass2.Guaranteen_end__c);
                                // 20240201 zyh DB202401662714 Start
                if (ass2.ShippedAmount__c!=null) {
                  rpm.CurrencyIsoCode = ass2.CurrencyIsoCode;
                  rpm.ShippedAmount = ass2.ShippedAmount__c;
                }
                                // 20240201 zyh DB202401662714 End
                rpc.ReturnProductModel.add(rpm);
            }
          }
          pd.ReturnProductCode.add(rpc);
        }
 
 
 
        NFMUtil.Monitoring me = new NFMUtil.Monitoring();
        Datetime nowDT = Datetime.now();
        String nowStr = nowDT.format('yyyyMMddHHmm');
        String timeStr = nowStr.substring(8);
 
        me.Tag                  = 'MSGH';
        me.Sender               = 'SFDC';
        me.Receiver             = 'SPO';
        me.MessageType          = 'NFM208';
        me.MessageGroupNumber   = timeStr+assList2.size();
        me.NumberOfRecord       = '' + assList2.size();
        me.TransmissionDateTime = nowStr;
        me.Text = '';
        pd.Monitoring = me;
 
        BatchIF_Log__c rowData  = NFMUtil.makeRowData(me, 'NFM208', pd);
        rowData.retry_cnt__c=0;
        upsert  rowData;
 
        //添加日志 精琢技术 2019/12/12 Start
        MessageGroupNumber = rowData.MessageGroupNumber__c;
        logstr += '\nend';
        //添加日志 精琢技术 2019/12/12 End
 
        rowDataStr = NFMUtil.getRowDataStr(rowData);
 
 
      }catch(Exception ex){
        //添加日志 精琢技术 2019/12/12 Start
        logstr += '\n' + ex.getMessage();
        iflog.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + iflog.ErrorLog__c;
      }
 
      iflog.MessageGroupNumber__c = MessageGroupNumber;
      iflog.Log__c =MessageGroupNumber + ' start\n' +'合同编号 : '+caseId +'\n'+'机身编码:'+ logstr;
      if (iflog.Log__c.length() > 131072) {
        iflog.Log__c = iflog.Log__c.subString(0, 131065) + ' ...';
      }
      if (iflog.ErrorLog__c.length() > 32768) {
        iflog.ErrorLog__c = iflog.ErrorLog__c.subString(0, 32760) + ' ...';
      }
      update iflog;
      //添加日志 精琢技术 2019/12/12 End
 
      // JSONを戻す  返回的数据
      RestResponse res = RestContext.response;
      res.addHeader('Content-Type', 'application/json');
      res.statusCode = 200;
      String jsonResponse = rowDataStr;
      res.responseBody = blob.valueOf(jsonResponse);
      return; 
      
    }
    //CHAN-BGYE7C 新增NFM208接口 精琢技术 2019/11/22 End
  }