|  |  | 
 |  |  | package com.dy.common.mw.protocol.p206V202404.parse; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson2.JSON; | 
 |  |  | import com.alibaba.fastjson2.JSONObject; | 
 |  |  | import com.dy.common.mw.protocol.*; | 
 |  |  | import com.dy.common.mw.protocol.p206V202404.CodeV202404; | 
 |  |  | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; | 
 |  |  | 
 |  |  |     public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { | 
 |  |  |         byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); | 
 |  |  |         if(para.param != null){ | 
 |  |  |             String json = (String)para.param; | 
 |  |  |             JSONObject obj = (JSONObject)para.param; | 
 |  |  |             String json = obj.toJSONString(); | 
 |  |  |             ComCd16Vo cvo = JSON.parseObject(json, ComCd16Vo.class) ; | 
 |  |  |             if(cvo == null){ | 
 |  |  |                 throw new Exception("json转ComCd16Vo为null") ; | 
 |  |  |             } | 
 |  |  |             if(cvo.moneyAlarm < 0 || cvo.moneyAlarm > 65535){ | 
 |  |  |                 throw new Exception("剩余金额报警值必须是0~65535范围内的整数") ; | 
 |  |  |             if(cvo.moneyAlarm < 0 || cvo.moneyAlarm > 9999){ | 
 |  |  |                 throw new Exception("剩余金额报警值必须是0~9999范围内的整数") ; | 
 |  |  |             } | 
 |  |  |             if(cvo.waterAlarm < 0 || cvo.waterAlarm > 65535){ | 
 |  |  |                 throw new Exception("剩余水量报警值必须是0~65535范围内的整数") ; | 
 |  |  |             if(cvo.waterAlarm < 0 || cvo.waterAlarm > 9999){ | 
 |  |  |                 throw new Exception("剩余水量报警值必须是0~9999范围内的整数") ; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             byte[] bs = new byte[13] ; | 
 |  |  |             int index = 0 ; | 
 |  |  | 
 |  |  |             index ++ ; | 
 |  |  |             bs[index] = cvo.projectNo.byteValue() ; | 
 |  |  |  | 
 |  |  |             index ++ ; | 
 |  |  |             ByteUtilUnsigned.short2Bytes_BE(bs, cvo.waterAlarm, index); | 
 |  |  |  | 
 |  |  |             index ++ ; | 
 |  |  |             ByteUtilUnsigned.short2Bytes_BE(bs, cvo.moneyAlarm, index); | 
 |  |  |             String strTemp = "" + cvo.waterAlarm ; | 
 |  |  |             byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ; | 
 |  |  |             int bTempLen = bTemp.length ; | 
 |  |  |             int count = 0 ; | 
 |  |  |             for(int i = 0 ; i < bTempLen; i++){ | 
 |  |  |                 bs[index++] = bTemp[i] ; | 
 |  |  |                 count ++ ; | 
 |  |  |                 if(count >= 2){ | 
 |  |  |                     break ; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             for(; count < 2; count++){ | 
 |  |  |                 bs[index++] = 0 ; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             index += 4 ; | 
 |  |  |             strTemp = "" + cvo.moneyAlarm ; | 
 |  |  |             bTemp = ByteUtil.string2BCD_LE(strTemp) ; | 
 |  |  |             bTempLen = bTemp.length ; | 
 |  |  |             count = 0 ; | 
 |  |  |             for(int i = 0 ; i < bTempLen; i++){ | 
 |  |  |                 bs[index++] = bTemp[i] ; | 
 |  |  |                 count ++ ; | 
 |  |  |                 if(count >= 2){ | 
 |  |  |                     break ; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             for(; count < 2; count++){ | 
 |  |  |                 bs[index++] = 0 ; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             index ++ ; | 
 |  |  |             GlCreate.createPw(bs, index); | 
 |  |  |  | 
 |  |  |             index ++ ; | 
 |  |  |             index += 2 ; | 
 |  |  |             GlCreate.createS2D(bs, index) ; | 
 |  |  |  | 
 |  |  |             index += 4 ; |