|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.common.mw.protocol.*; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.p206V202404.*; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd5CVo; | 
|---|
|  |  |  | import com.dy.common.util.ByteUtil; | 
|---|
|  |  |  | import org.apache.logging.log4j.LogManager; | 
|---|
|  |  |  | 
|---|
|  |  |  | if(hasRecord == 1){ | 
|---|
|  |  |  | //有记录 | 
|---|
|  |  |  | List<DataCd5CVo> list = new ArrayList<>() ; | 
|---|
|  |  |  | DataCd5CVo vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; | 
|---|
|  |  |  | index++ ; | 
|---|
|  |  |  | DataCd5CVo vo = this.doParseData(bs, index, bsLen, dataCode, controllerType, projectNo) ; | 
|---|
|  |  |  | while(vo != null){ | 
|---|
|  |  |  | index += 16 ; | 
|---|
|  |  |  | 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 DataCd5CVo doParseData(byte[] bs, int index, int bsLen, String controllerType,Integer projectNo) throws Exception{ | 
|---|
|  |  |  | //每条数据占39字节 | 
|---|
|  |  |  | private DataCd5CVo doParseData(byte[] bs, int index, int bsLen, String dataCode, String controllerType,Integer projectNo) throws Exception{ | 
|---|
|  |  |  | //每条数据占16字节 | 
|---|
|  |  |  | if(bsLen - index > 16){ | 
|---|
|  |  |  | DataCd5CVo cdData = new DataCd5CVo() ; | 
|---|
|  |  |  | DataCd5CVo cdData = new DataCd5CVo(CodeV202404.getCodeName(dataCode)) ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cdData.controllerType = controllerType ; | 
|---|
|  |  |  | cdData.projectNo = projectNo ; | 
|---|
|  |  |  | 
|---|
|  |  |  | String yy = ByteUtil.BCD2String_BE(bs, index, index) ; | 
|---|
|  |  |  | cdData.dt = "20" + yy + "-" + MM + "-" + dd + " " + HH  ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int meterAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; | 
|---|
|  |  |  | Long meterAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3) ; | 
|---|
|  |  |  | cdData.meterAmountDay = meterAmountDay/100.0D; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | index += 4 ; | 
|---|
|  |  |  | int farmerAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; | 
|---|
|  |  |  | Long farmerAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3) ; | 
|---|
|  |  |  | cdData.farmerAmountDay = farmerAmountDay/100.0D; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | index += 4 ; | 
|---|
|  |  |  | int lossAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; | 
|---|
|  |  |  | Long lossAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3) ; | 
|---|
|  |  |  | cdData.lossAmountDay = lossAmountDay/100.0D; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return cdData ; | 
|---|