| | |
| | | import android.view.View; |
| | | |
| | | |
| | | import com.dayu.recharge.card.ConfigurationPowerCard; |
| | | import com.dayu.recharge.card.DomainCard; |
| | | import com.dayu.recharge.card.UserCard; |
| | | import com.dayu.recharge.databinding.ActivityRedCardBinding; |
| | | import com.dayu.recharge.dbBean.RechargeBean; |
| | |
| | | import com.dayu.recharge.tools.NfcReadHelper; |
| | | import com.dayu.recharge.utils.CRC8; |
| | | import com.dayu.recharge.utils.MornyUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | import com.dayu.recharge.utils.SocketUtil; |
| | | import com.dayu.recharge.utils.ToastUtil; |
| | | import com.dayu.recharge.utils.WSHelper; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Calendar; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | private static final int USER_CRAD = 1; |
| | | private static final int MANAGE_CRAD = 2; |
| | | private static final int CLEAN_CARD = 3; |
| | | private static final int REGISTERED_CARD = 4; |
| | | private static final int CLEAN_ALL_USER = 5; |
| | | private static final int DOMAIN_CARD = 6; |
| | | private static final int TEST_CARD = 7; |
| | | |
| | | private static final int CONFIGURATION_CARD = 8; |
| | | |
| | | private static final int CONFIGURATION_POWER_CARD = 9; |
| | | private static final int PASS_WORD_CRAD = 10; |
| | | |
| | | |
| | | private static final int ERROR = -1; |
| | | UserCard userCard; |
| | | UserCardBean waterCard; |
| | | RechargeBean rechargeBean; |
| | | // 农户注册编号 |
| | | volatile UserCard userCard; |
| | | ActivityRedCardBinding redCardBinding; |
| | | |
| | | @Override |
| | |
| | | setContentView(redCardBinding.getRoot()); |
| | | } |
| | | |
| | | private void setData(String statu) { |
| | | String initCode = WSHelper.getInstance(this).get("initCode", ""); |
| | | if (TextUtils.isEmpty(initCode)) { |
| | | ToastUtil.show(this, "设备注册号为空,请先设置IP和管理员地址"); |
| | | return; |
| | | } |
| | | // redCardBinding.redVillageNum.setText("设备序列号:" + initS.getANo() + ""); |
| | | redCardBinding.redName.setText("用 户 名:" + rechargeBean.getUserName()); |
| | | redCardBinding.redRemainderMorny.setText("剩余金额:" + rechargeBean.getBalance() + "" + "元"); |
| | | redCardBinding.redStatu.setText("状 态:" + statu); |
| | | |
| | | private void setUserData(String userName, int blance, String statu) { |
| | | viweGone(true); |
| | | redCardBinding.redName.setText("用户姓名:" + userName); |
| | | redCardBinding.redRemainderBlance.setText("剩余金额:" + MornyUtil.changeF2Y(blance) + "元"); |
| | | redCardBinding.redStatu.setText("卡状态:" + statu); |
| | | if (userCard != null) { |
| | | redCardBinding.redInitCode.setText("用户注册编号:" + userCard.getInitPeasantCode()); |
| | | Calendar calendar = userCard.getRechargeDate(); |
| | | if (calendar != null) { |
| | | int year = calendar.get(Calendar.YEAR); |
| | | int month = calendar.get(Calendar.MONTH); // 月份从0开始,所以需要加1 |
| | | int day = calendar.get(Calendar.DAY_OF_MONTH); |
| | | int hour = calendar.get(Calendar.HOUR_OF_DAY); |
| | | int minute = calendar.get(Calendar.MINUTE); |
| | | int second = calendar.get(Calendar.SECOND); |
| | | redCardBinding.redRechargeDate.setText("本卡最后购水日期:" + year + month + day + " " + hour + ":" + minute + ":" + second); |
| | | } else { |
| | | redCardBinding.redRechargeDate.setText("本卡最后购水日期:无"); |
| | | } |
| | | |
| | | redCardBinding.redRechargeNumber.setText("本卡充值次数:" + userCard.getRechargeTimes() + ""); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | if (oneSector != null && oneSector.size() > 0) { |
| | | byte cardType = oneSector.get(0)[0]; |
| | | String cardTypeStr = HexUtil.byteToHex(cardType); |
| | | // switch (cardTypeStr){ |
| | | // case |
| | | // } |
| | | switch (cardTypeStr) { |
| | | case MyCommon.USER_CARD_TYPE_1: |
| | | case MyCommon.USER_CARD_TYPE_2: |
| | | case MyCommon.USER_CARD_TYPE_3: |
| | | userCard = UserCard.getBean(oneSector); |
| | | message.what = USER_CRAD; |
| | | message.what = USER_CRAD; |
| | | break; |
| | | case MyCommon.MANAGE_CRAD: |
| | | message.what = MANAGE_CRAD; |
| | | break; |
| | | case MyCommon.CLEAN_CARD_TYPE: |
| | | message.what = CLEAN_CARD; |
| | | break; |
| | | case MyCommon.REGISTERED_CARD_TYPE: |
| | | message.what = REGISTERED_CARD; |
| | | break; |
| | | case MyCommon.CLEAN_ALL_USER_CARD_TYPE: |
| | | message.what = CLEAN_ALL_USER; |
| | | break; |
| | | case MyCommon.DOMAIN_CARD_TYPE: |
| | | message.what = DOMAIN_CARD; |
| | | message.obj = oneSector; |
| | | break; |
| | | case MyCommon.TEST_CARD_TYPE: |
| | | message.what = TEST_CARD; |
| | | break; |
| | | case MyCommon.CONFIGURATION_CARD_TYPE: |
| | | message.what = CONFIGURATION_CARD; |
| | | break; |
| | | case MyCommon.CONFIGURATION_POWER_CARD_TYPE: |
| | | message.what = CONFIGURATION_POWER_CARD; |
| | | message.obj = oneSector.get(0); |
| | | break; |
| | | } |
| | | |
| | | } else { |
| | | message.what = ERROR; |
| | | message.what = MyCommon.ERROR; |
| | | } |
| | | handler.sendMessage(message); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void error() { |
| | | public void error(int code) { |
| | | Message message = new Message(); |
| | | message.what = ERROR; |
| | | message.what = code; |
| | | handler.sendMessage(message); |
| | | } |
| | | }); |
| | |
| | | public boolean handleMessage(Message msg) { |
| | | switch (msg.what) { |
| | | case USER_CRAD: |
| | | redCardBinding.readImgLL.setVisibility(View.GONE); |
| | | redCardBinding.readUserLL.setVisibility(View.VISIBLE); |
| | | redCardBinding.readSysLL.setVisibility(View.GONE); |
| | | redCardBinding.readCleanLL.setVisibility(View.GONE); |
| | | redCardBinding.readInitLL.setVisibility(View.GONE); |
| | | // selectBalance(newUserCard.getPeasantCode()); |
| | | selectBalance(userCard.getInitPeasantCode()); |
| | | break; |
| | | case MANAGE_CRAD: |
| | | redCardBinding.readImgLL.setVisibility(View.GONE); |
| | | redCardBinding.readUserLL.setVisibility(View.GONE); |
| | | redCardBinding.readSysLL.setVisibility(View.VISIBLE); |
| | | redCardBinding.readCleanLL.setVisibility(View.GONE); |
| | | redCardBinding.readInitLL.setVisibility(View.GONE); |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为管理卡"); |
| | | stopAnim(); |
| | | break; |
| | | case 3: |
| | | redCardBinding.readImgLL.setVisibility(View.GONE); |
| | | redCardBinding.readUserLL.setVisibility(View.GONE); |
| | | redCardBinding.readSysLL.setVisibility(View.GONE); |
| | | redCardBinding.readCleanLL.setVisibility(View.VISIBLE); |
| | | redCardBinding.readInitLL.setVisibility(View.GONE); |
| | | case CLEAN_CARD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为清零卡"); |
| | | stopAnim(); |
| | | break; |
| | | case 4: |
| | | redCardBinding.readImgLL.setVisibility(View.GONE); |
| | | redCardBinding.readUserLL.setVisibility(View.GONE); |
| | | redCardBinding.readSysLL.setVisibility(View.GONE); |
| | | redCardBinding.readCleanLL.setVisibility(View.GONE); |
| | | redCardBinding.readInitLL.setVisibility(View.VISIBLE); |
| | | case REGISTERED_CARD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为重新注册设备卡"); |
| | | stopAnim(); |
| | | break; |
| | | case 5: |
| | | redCardBinding.readImgLL.setVisibility(View.GONE); |
| | | redCardBinding.readUserLL.setVisibility(View.GONE); |
| | | redCardBinding.readSysLL.setVisibility(View.GONE); |
| | | redCardBinding.readCleanLL.setVisibility(View.GONE); |
| | | redCardBinding.readInitLL.setVisibility(View.VISIBLE); |
| | | redCardBinding.readInitLL.setText("当前为行政区域卡"); |
| | | case CLEAN_ALL_USER: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为删除全部用户卡"); |
| | | stopAnim(); |
| | | break; |
| | | case 6: |
| | | redCardBinding.readImgLL.setVisibility(View.GONE); |
| | | redCardBinding.readUserLL.setVisibility(View.GONE); |
| | | redCardBinding.readSysLL.setVisibility(View.GONE); |
| | | redCardBinding.readCleanLL.setVisibility(View.GONE); |
| | | redCardBinding.readInitLL.setVisibility(View.VISIBLE); |
| | | redCardBinding.readInitLL.setText("当前为设备序号卡"); |
| | | case DOMAIN_CARD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为设置域名卡"); |
| | | List<byte[]> data = (List<byte[]>) msg.obj; |
| | | DomainCard domainCard = DomainCard.toBean(data); |
| | | redCardBinding.readCardDataTV.setText("序号:" + domainCard.getDomainNumber() + "\n" + "域名:" + domainCard.getDomainName() + "\n" + "端口号:" + domainCard.getPort()); |
| | | stopAnim(); |
| | | break; |
| | | case TEST_CARD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为测试卡"); |
| | | stopAnim(); |
| | | break; |
| | | case CONFIGURATION_CARD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为配置设备注册信息卡"); |
| | | stopAnim(); |
| | | break; |
| | | case CONFIGURATION_POWER_CARD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前配置水泵功率卡"); |
| | | byte[] powerData = (byte[]) msg.obj; |
| | | ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(powerData); |
| | | redCardBinding.readCardDataTV.setText(powerCard.getPower()); |
| | | stopAnim(); |
| | | break; |
| | | case PASS_WORD_CRAD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为密码卡"); |
| | | stopAnim(); |
| | | break; |
| | | case MyCommon.ERROR_MOVE: |
| | | stopAnim(); |
| | | ToastUtil.show("连接中断,请重新贴合卡片"); |
| | | break; |
| | | default: |
| | | ToastUtil.show(ReadCardAcitivy.this, "卡片未注册"); |
| | | ToastUtil.show(ReadCardAcitivy.this, "卡片无法识别"); |
| | | stopAnim(); |
| | | break; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | }); |
| | | |
| | | private void viweGone(boolean isUSerCard) { |
| | | redCardBinding.readImgLL.setVisibility(View.GONE); |
| | | if (isUSerCard) { |
| | | redCardBinding.readCardTypeLL.setVisibility(View.GONE); |
| | | redCardBinding.readUserLL.setVisibility(View.VISIBLE); |
| | | } else { |
| | | redCardBinding.readCardTypeLL.setVisibility(View.VISIBLE); |
| | | redCardBinding.readUserLL.setVisibility(View.GONE); |
| | | } |
| | | |
| | | } |
| | | |
| | | void startAnim() { |
| | | redCardBinding.avi.setVisibility(View.VISIBLE); |
| | |
| | | * @param initPeasantCode 农户注册编号 |
| | | */ |
| | | private void selectBalance(String initPeasantCode) { |
| | | |
| | | BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean(); |
| | | requestBean.setAFN("94"); |
| | | requestBean.setControl("01"); |
| | |
| | | String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); |
| | | |
| | | |
| | | rechargeBean = new RechargeBean(); |
| | | rechargeBean.setDate(System.currentTimeMillis()); |
| | | rechargeBean.setUserName(name); |
| | | rechargeBean.setBalance(MornyUtil.changeF2Y(balance) + ""); |
| | | // rechargeBean.setTotal_morn(ArithUtil.changeF2Y(userCard.getValue() + "")); |
| | | setData(stateText.toString()); |
| | | setUserData(name, balance, stateText.toString()); |
| | | stopAnim(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |