|  |  |  | 
|---|
|  |  |  | if(hasRecord == 1){ | 
|---|
|  |  |  | //有记录 | 
|---|
|  |  |  | List<DataCd55Vo> list = new ArrayList<>() ; | 
|---|
|  |  |  | DataCd55Vo vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; | 
|---|
|  |  |  | index++ ; | 
|---|
|  |  |  | DataCd55Vo vo = this.doParseData(bs, index, bsLen, dataCode, controllerType, projectNo) ; | 
|---|
|  |  |  | while(vo != null){ | 
|---|
|  |  |  | index += 35 ; | 
|---|
|  |  |  | list.add(vo) ; | 
|---|
|  |  |  | vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; | 
|---|
|  |  |  | vo = this.doParseData(bs, index, bsLen, dataCode, controllerType, projectNo) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | dV1.subData = list ; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private DataCd55Vo doParseData(byte[] bs, int index, int bsLen, String controllerType,Integer projectNo) throws Exception{ | 
|---|
|  |  |  | //每条数据占39字节 | 
|---|
|  |  |  | private DataCd55Vo doParseData(byte[] bs, int index, int bsLen, String dataCode, String controllerType,Integer projectNo) throws Exception{ | 
|---|
|  |  |  | //每条数据占35字节 | 
|---|
|  |  |  | if(bsLen - index > 35){ | 
|---|
|  |  |  | DataCd55Vo cdData = new DataCd55Vo() ; | 
|---|
|  |  |  | DataCd55Vo cdData = new DataCd55Vo(CodeV202404.getCodeName(dataCode)) ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cdData.controllerType = controllerType ; | 
|---|
|  |  |  | cdData.projectNo = projectNo ; | 
|---|
|  |  |  | 
|---|
|  |  |  | cdData.icCardNo  = GlParse.parseIcCardNo(bs, index, 6, 2) ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | index += 8 ; | 
|---|
|  |  |  | int chargeMoney = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; | 
|---|
|  |  |  | Long chargeMoney = ByteUtil.BCD2Long_LE(bs, index, index + 4) ; | 
|---|
|  |  |  | cdData.chargeMoney = chargeMoney/100.0D; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | index += 5 ; | 
|---|
|  |  |  | int chargeWater = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; | 
|---|
|  |  |  | Long chargeWater = ByteUtil.BCD2Long_LE(bs, index, index + 4) ; | 
|---|
|  |  |  | cdData.chargeWater = chargeWater/100.0D; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | index += 5 ; | 
|---|
|  |  |  | cdData.flowNo = ByteUtil.BCD2String_BE(bs, index, index + 5) ; | 
|---|
|  |  |  | cdData.flowNo = ByteUtil.BCD2String_LE(bs, index, index + 5) ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | index += 6 ; | 
|---|
|  |  |  | byte flag = bs[index] ; | 
|---|