这个提交包含在:
徐勤民 2026-04-13 19:34:58 +08:00
父节点 e10e5019b7
当前提交 be057b8325
共有 53 个文件被更改,包括 38 次插入3292 次删除

查看文件

@ -47,10 +47,6 @@ android {
} }
signingConfigs { signingConfigs {
debug { debug {
keyAlias 'xuqm'
keyPassword 'xuqinmin1022'
storeFile file('key')
storePassword 'xuqinmin1022'
} }
releaseConfig {} releaseConfig {}
} }
@ -63,7 +59,7 @@ android {
androidExtensions { androidExtensions {
experimental = true experimental = true
} }
namespace 'com.bjca.hp.acupuncture' namespace 'com.nova.brain.glass'
} }
dependencies { dependencies {

查看文件

@ -3,16 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<!-- 网络权限 --> <!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- <uses-permission android:name="android.permission.READ_LOGS" /> -->
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application <application
android:name=".MyApplication" android:name=".MyApplication"
@ -23,23 +13,7 @@
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:replace="android:label"> tools:replace="android:label">
<activity
android:name=".ui.TestActivity"
android:exported="false" />
<activity
android:name=".ui.SettingActivity"
android:exported="false" />
<receiver
android:name=".receiver.BootCompleteReceiver"
android:enabled="true"
android:exported="true">
<!-- 接收启动完成的广播 -->
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity <activity
android:name=".ui.MainActivity" android:name=".ui.MainActivity"

二进制文件未显示。

查看文件

@ -1,10 +1,10 @@
package com.bjca.hp.acupuncture; package com.nova.brain.glass;
import com.xuqm.base.App; import com.xuqm.base.App;
import com.xuqm.base.di.component.AppComponent; import com.xuqm.base.di.component.AppComponent;
import com.xuqm.base.di.manager.HttpManager; import com.xuqm.base.di.manager.HttpManager;
import com.bjca.hp.acupuncture.common.CrashHandler; import com.nova.brain.glass.common.CrashHandler;
import com.bjca.hp.acupuncture.repository.HeaderInterceptor; import com.nova.brain.glass.repository.HeaderInterceptor;
/** /**
* @author xuqm * @author xuqm
@ -12,15 +12,11 @@ import com.bjca.hp.acupuncture.repository.HeaderInterceptor;
public class MyApplication extends App { public class MyApplication extends App {
public static String baseUrl = "http://10.10.203.120:31734"; public static String baseUrl = "http://10.10.203.120:31734";
public static AppComponent appComponent1;
public static AppComponent appComponent2;
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
appComponent = HttpManager.getAppComponent(baseUrl, new HeaderInterceptor(getApplicationContext())); appComponent = HttpManager.getAppComponent(baseUrl, new HeaderInterceptor(getApplicationContext()));
appComponent1 = HttpManager.getAppComponent("http://10.10.203.120:35662", new HeaderInterceptor(getApplicationContext()));
appComponent2 = HttpManager.getAppComponent("http://10.10.203.120:31669", new HeaderInterceptor(getApplicationContext()));
CrashHandler.getInstance().init(this); CrashHandler.getInstance().init(this);

查看文件

@ -1,4 +1,4 @@
package com.bjca.hp.acupuncture.common; package com.nova.brain.glass.common;
import android.content.Context; import android.content.Context;
import android.os.Environment; import android.os.Environment;
@ -20,7 +20,6 @@ import java.util.Locale;
/************************************************************************************************* /*************************************************************************************************
* <pre> * <pre>
* @包路径 cn.org.bjca.wcert.ywq.utils.crash * @包路径 cn.org.bjca.wcert.ywq.utils.crash
* @版权所有 北京数字认证股份有限公司 (C) 2017
* *
* @类描述: * @类描述:
* @版本: V1.5.1 * @版本: V1.5.1

查看文件

@ -1,248 +0,0 @@
package com.bjca.hp.acupuncture.common;
import android.text.TextUtils;
import android.util.Log;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.AlreadyClosedException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException;
/***************************************************************************
* <pre></pre>
* @文件名称 RabbitMQClient
* @包 com.bjca.hp.acupuncture.common
* @版权所有北京数字医信责任有限公司 (C) 2022
*
* @类描述:
* @版本: V1.0
* @创建人 xuqm
* @创建时间2022/6/15 下午 02:19
* @修改记录
*/
public class RabbitMQClient {
private final String TAG = "RabbitMQ";
private final String FLAG_SEND = "send";
private final String FLAG_RECEIVE = "receive";
private final ConnectionFactory factory;
private Connection connection;
private Map<String, Channel> channelMap = new HashMap<>();
public static final String EXCHANGETYPE_FANOUT = "fanout"; //不用匹配路由发送给所有绑定转换器的队列
public static final String EXCHANGETYPE_DIRECT = "direct"; //匹配路由一致才发送给绑定转换器队列
public static final String EXCHANGETYPE_TOPIC = "topic"; // 通配符* # 匹配路由一致才发送给绑定转换器队列
public RabbitMQClient(String hostIp, int port, String username, String password) {
factory = new ConnectionFactory();
factory.setUsername(username);
factory.setPassword(password);
factory.setHost(hostIp);
factory.setPort(port);
factory.setVirtualHost("/");//类似数据库的意思
factory.setConnectionTimeout(15 * 1000); //连接时间设置为10秒
factory.setAutomaticRecoveryEnabled(true); //恢复连接通道
factory.setTopologyRecoveryEnabled(true); //恢复通道中 转换器队列绑定关系等
factory.setNetworkRecoveryInterval(5 * 1000); //恢复连接间隔默认5秒
}
/**
* @param message 需要发送的消息
* @param queueName 管道名称
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void sendQueueMessage(String message, String queueName) throws IOException, TimeoutException, AlreadyClosedException {
if (connection == null || !connection.isOpen()) {
connection = factory.newConnection();
}
if (!channelMap.containsKey(FLAG_SEND + queueName)) {
Channel channel = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
channelMap.put(FLAG_SEND + queueName, channel);
}
//空名字的交换机需要设置routingKey此时会将routingKey 作为 队列名使用
channelMap.get(FLAG_SEND + queueName).basicPublish("", queueName, null, message.getBytes());
}
/**
* @param exchangeName 交换机名称
* @param message 需要发送的消息
* @param queueName 队列名称
* @param routingKey 路由规则
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion 发送 exchangeType direct 类型的信息
**/
public void sendDirectTypeMessage(String exchangeName, String message, String queueName, String routingKey) throws IOException, TimeoutException, AlreadyClosedException {
if (connection == null || !connection.isOpen()) {
connection = factory.newConnection();
}
if (!channelMap.containsKey(FLAG_SEND + exchangeName + EXCHANGETYPE_DIRECT + queueName)) {
Channel channel = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
channel.exchangeDeclare(exchangeName, EXCHANGETYPE_DIRECT);
channelMap.put(FLAG_SEND + exchangeName + EXCHANGETYPE_DIRECT + queueName, channel);
}
channelMap.get(FLAG_SEND + exchangeName + EXCHANGETYPE_DIRECT + queueName).basicPublish(exchangeName, routingKey, null, message.getBytes());
}
/**
* @param exchangeName 交换机名称
* @param queueName 队列名称
* @param message 发送的消息
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion 发送 exchangeType fanout 类型的信息
**/
public void sendFanoutTypeMessage(String exchangeName, String queueName, String message) throws IOException, TimeoutException, AlreadyClosedException {
if (connection == null || !connection.isOpen()) {
connection = factory.newConnection();
}
if (!channelMap.containsKey(FLAG_SEND + exchangeName + EXCHANGETYPE_FANOUT + queueName)) {
Channel channel = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
channel.exchangeDeclare(exchangeName, EXCHANGETYPE_FANOUT);
channelMap.put(FLAG_SEND + exchangeName + EXCHANGETYPE_FANOUT + queueName, channel);
}
channelMap.get(FLAG_SEND + exchangeName + EXCHANGETYPE_FANOUT + queueName).basicPublish(exchangeName, "", null, message.getBytes());
}
/**
* @param exchangeName 交换机名称
* @param exchangeType 模式
* @param queueName 队列名称
* @param message 需要发送的消息
* @param routingKey 路由规则
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void sendExchangeNameQueueMessage(String exchangeName, String exchangeType, String message, String queueName, String routingKey) throws IOException, TimeoutException, AlreadyClosedException {
if (connection == null || !connection.isOpen()) {
connection = factory.newConnection();
}
if (!channelMap.containsKey(FLAG_SEND + exchangeName + exchangeType + queueName)) {
Channel channel = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
channel.exchangeDeclare(exchangeName, exchangeType);
channelMap.put(FLAG_SEND + exchangeName + exchangeType + queueName, channel);
}
if (exchangeType.equals(EXCHANGETYPE_FANOUT)) {
channelMap.get(FLAG_SEND + exchangeName + exchangeType + queueName).basicPublish(exchangeName, "", null, message.getBytes());
} else if (exchangeType.equals(EXCHANGETYPE_DIRECT)) {
channelMap.get(FLAG_SEND + exchangeName + exchangeType + queueName).basicPublish(exchangeName, routingKey, null, message.getBytes());
} else if (exchangeType.equals(EXCHANGETYPE_TOPIC)) {
channelMap.get(FLAG_SEND + exchangeName + exchangeType + queueName).basicPublish(exchangeName, routingKey, null, message.getBytes());
}
}
/**
* @param queueName 队列名称
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void receiveQueueMessage(final String queueName, final ResponseListener listener)
throws IOException, TimeoutException, AlreadyClosedException {
receiveQueueRoutingKeyMessage(queueName, "", "", "", listener);
}
/**
* @param queueName 队列名称
* @param routingKey 路由规则
* @param exchangeName 交换机名称
* @param exchangeType 交换机类型
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void receiveQueueRoutingKeyMessage(String queueName, final String routingKey, String exchangeName, String exchangeType, final ResponseListener listener)
throws IOException, TimeoutException, AlreadyClosedException {
if (exchangeType.equals(EXCHANGETYPE_DIRECT) || exchangeType.equals(EXCHANGETYPE_TOPIC)) {
if (TextUtils.isEmpty(routingKey)) {
throw new NullPointerException("路由规则不能为空");
}
}
if (!TextUtils.isEmpty(routingKey)) {
if (TextUtils.isEmpty(exchangeName)) {
throw new NullPointerException("交换机名称不能为空");
}
}
if (!channelMap.containsKey(FLAG_RECEIVE + routingKey + queueName)) {
if (connection == null || !connection.isOpen()) {
connection = factory.newConnection();
}
final Channel channel = connection.createChannel();
channel.queueDeclare(queueName, true, false, false, null);
//绑定转换器使用路由筛选消息
if (!TextUtils.isEmpty(routingKey)) {
channel.exchangeDeclare(exchangeName, exchangeType);
channel.queueBind(queueName, exchangeName, routingKey); //设置绑定
}
//监听队列
channel.basicConsume(queueName, false, new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope,
AMQP.BasicProperties properties, byte[] body)
throws IOException {
String message = new String(body, "UTF-8");
if (listener != null) {
listener.receive(message);
}
channel.basicAck(envelope.getDeliveryTag(), false); //消息应答
}
});
channelMap.put(FLAG_RECEIVE + routingKey + queueName, channel);
Log.e(TAG,"已经连接上了,队列名称:" + queueName);
}
}
/**
* 关闭所有资源
*/
public void close() {
for (Channel next : channelMap.values()) {
if (next != null && next.isOpen()) {
try {
next.close();
} catch (IOException | TimeoutException e) {
e.printStackTrace();
}
}
}
channelMap.clear();
if (connection != null && connection.isOpen()) {
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public interface ResponseListener {
void receive(String message);
}
}

查看文件

@ -1,239 +0,0 @@
package com.bjca.hp.acupuncture.common;
import android.os.SystemClock;
import android.text.TextUtils;
import com.rabbitmq.client.AlreadyClosedException;
import java.io.IOException;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
/***************************************************************************
* <pre></pre>
* @文件名称 RabbitMQUtil
* @包 com.bjca.hp.acupuncture.common
* @版权所有北京数字医信责任有限公司 (C) 2022
*
* @类描述:
* @版本: V1.0
* @创建人 xuqm
* @创建时间2022/6/15 下午 02:22
* @修改记录
*/
public class RabbitMQUtil {
private boolean isRunning = true;
private RabbitMQClient rabbitMQ;
private ExecutorService executor;
public RabbitMQUtil(String hostIp, int port, String username, String password) {
rabbitMQ = new RabbitMQClient(hostIp, port, username, password);
executor = Executors.newSingleThreadExecutor(); //根据项目需要设置常用线程个数
}
/**
* @param message 发送的消息
* @param queueName 队列名称
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void sendMessage(final String message, final String queueName, final SendMessageListener sendMessageListener,final ErrorMessageListener errorMessageListener) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
rabbitMQ.sendQueueMessage(message, queueName);
if (sendMessageListener != null) sendMessageListener.sendMessage(true);
} catch (IOException | TimeoutException | AlreadyClosedException e) {
e.printStackTrace();
if (errorMessageListener!=null){
errorMessageListener.errorMessage(e);
}
if (sendMessageListener != null) sendMessageListener.sendMessage(false);
}
}
});
}
/**
* @param message 发送的消息
* @param exchangeName 交换机名称
* @param queueName 队列名称
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void sendMessage(final String message, final String exchangeName, final String exchangeType, final String queueName, final String routingKey, final SendMessageListener sendMessageListener,final ErrorMessageListener errorMessageListener) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
rabbitMQ.sendExchangeNameQueueMessage(exchangeName, exchangeType, message, queueName, routingKey);
if (sendMessageListener != null) sendMessageListener.sendMessage(true);
} catch (IOException | TimeoutException | AlreadyClosedException e) {
e.printStackTrace();
if (errorMessageListener!=null){
errorMessageListener.errorMessage(e);
}
if (sendMessageListener != null) sendMessageListener.sendMessage(false);
}
}
});
}
/**
* @param exchangeName 交换机名称
* @param queueName 队列名称
* @param message 需要发送的消息
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void sendFanoutTypeMessage(final String exchangeName, final String message, final String queueName, final SendMessageListener sendMessageListener,final ErrorMessageListener errorMessageListener) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
rabbitMQ.sendFanoutTypeMessage(exchangeName, queueName, message);
if (sendMessageListener != null) sendMessageListener.sendMessage(true);
} catch (IOException | TimeoutException | AlreadyClosedException e) {
e.printStackTrace();
if (errorMessageListener!=null){
errorMessageListener.errorMessage(e);
}
if (sendMessageListener != null) sendMessageListener.sendMessage(false);
}
}
});
}
/**
* @param exchangeName 交换机名称
* @param message 需要发送的消息
* @param queueName 队列名称
* @param routingKey 路由规则
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion 发送 exchangeType direct 类型的信息
**/
public void sendDirectTypeMessage(final String exchangeName, final String queueName, final String message, final String routingKey, final SendMessageListener sendMessageListener,final ErrorMessageListener errorMessageListener) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
rabbitMQ.sendDirectTypeMessage(exchangeName, queueName, message, routingKey);
if (sendMessageListener != null) sendMessageListener.sendMessage(true);
} catch (IOException | TimeoutException | AlreadyClosedException e) {
e.printStackTrace();
if (errorMessageListener!=null){
errorMessageListener.errorMessage(e);
}
if (sendMessageListener != null) sendMessageListener.sendMessage(false);
}
}
});
}
/**
* @param queueName 队列名称
* @date 创建时间:2020/9/8 0008
* @auther gaoxiaoxiong
* @Descriptiion
**/
public void receiveQueueMessage(String queueName, final ReceiveMessageListener listener,final ErrorMessageListener errorMessageListener) {
String newQueueName = null;
if (TextUtils.isEmpty(queueName)){
newQueueName = createDefaultQueueName(queueName);
}else {
newQueueName = queueName;
}
final String finalNewQueueName = newQueueName;
executor.execute(() -> {
while (isRunning) {
try {
rabbitMQ.receiveQueueMessage(finalNewQueueName, message -> {
if (listener != null) listener.receiveMessage(message);
});
} catch (IOException | TimeoutException | AlreadyClosedException e) {
if (errorMessageListener!=null){
errorMessageListener.errorMessage(e);
}
e.printStackTrace();
SystemClock.sleep(5000);
}
}
});
}
public void receiveQueueRoutingKeyMessage(String queueName, final String routingKey, final String exchangeName, final String exchangeType, final ReceiveMessageListener listener,final ErrorMessageListener errorMessageListener) {
String newQueueName = null;
if (TextUtils.isEmpty(queueName)){
newQueueName = createDefaultQueueName(queueName);
}else {
newQueueName = queueName;
}
final String finalNewQueueName = newQueueName;
executor.execute(new Runnable() {
@Override
public void run() {
while (isRunning) {
try {
rabbitMQ.receiveQueueRoutingKeyMessage(finalNewQueueName, routingKey, exchangeName, exchangeType, new RabbitMQClient.ResponseListener() {
@Override
public void receive(String message) {
if (listener != null) listener.receiveMessage(message);
}
});
} catch (IOException | TimeoutException | AlreadyClosedException e) {
if (errorMessageListener!=null){
errorMessageListener.errorMessage(e);
}
e.printStackTrace();
SystemClock.sleep(5000); //等待五秒
}
}
}
});
}
public String createDefaultQueueName(String routingKey) {
if (TextUtils.isEmpty(routingKey)){
routingKey = "";
}
return routingKey + "@" + UUID.randomUUID();
}
/**
* 建议
* 在application中关闭或者在结束工作时关闭
*/
public void close() {
isRunning = false;
executor.execute(new Runnable() {
@Override
public void run() {
rabbitMQ.close();
executor.shutdownNow();
}
});
}
public interface ReceiveMessageListener {
void receiveMessage(String message);
}
public interface SendMessageListener {
void sendMessage(boolean isSuccess);
}
public interface ErrorMessageListener{
void errorMessage(Exception e);
}
}

查看文件

@ -1,4 +1,4 @@
package com.bjca.hp.acupuncture.common package com.nova.brain.glass.common
const val SHARE_RISK_LOCATION = "share_risk_location" const val SHARE_RISK_LOCATION = "share_risk_location"
const val SHARE_RISK_PURE = "share_risk_pure" const val SHARE_RISK_PURE = "share_risk_pure"

查看文件

@ -1,72 +0,0 @@
package com.bjca.hp.acupuncture.model
import com.google.gson.annotations.SerializedName
data class DrugUsage(
@field:SerializedName("total")
val total: Int,
@field:SerializedName("size")
val size: Int,
@field:SerializedName("nulls")
val nulls: Any,
@field:SerializedName("index")
val index: Int,
@field:SerializedName("items")
val items: List<ItemsItem5>
)
data class ItemsItem5(
@field:SerializedName("code")
val code: String,
@field:SerializedName("sysCodes")
val sysCodes: Any,
@field:SerializedName("seqNo")
val seqNo: Int,
@field:SerializedName("memo")
val memo: Any,
@field:SerializedName("global")
val global: Boolean,
@field:SerializedName("type")
val type: String,
@field:SerializedName("parentType")
val parentType: Any,
@field:SerializedName("parentCode")
val parentCode: Any,
@field:SerializedName("codeChain")
val codeChain: String,
@field:SerializedName("ifMaster")
val ifMaster: Boolean,
@field:SerializedName("extra")
val extra: Any,
@field:SerializedName("disabled")
val disabled: Boolean,
@field:SerializedName("lockKey")
val lockKey: String,
@field:SerializedName("id")
val id: Int,
@field:SerializedName("text")
val text: String,
@field:SerializedName("shortCode")
val shortCode: String
)

查看文件

@ -1,71 +0,0 @@
package com.bjca.hp.acupuncture.model
data class ItemsItems(
val assessorName: String,
val storehouseCode: String,
val sysCode: String,
val ifStateExpense: Boolean,
val patientId: Int,
val usage: String,
val medicalAdvice: String,
val dosagePerTime: String,
val frequency: String,
val approveUserId: Int,
val itemName: String,
val price: Double,
val paymentId: Int,
val patientAge: String,
val cashierId: String,
val lockKey: String,
val id: Int,
val ifInjury: Boolean,
val paymentState: String,
val invoiceNo: String,
val barcode: String,
val originalPaymentId: String,
val diagnosis: String,
val drugRpType: String,
val originalInvoiceNo: String,
val examineReason: String,
val opNo: String,
val name: String,
val executorDeptCode: String,
val assessorCode: String,
val refundDate: String,
val deptCode: String,
val makeMethod: String,
val distributeState: String,
val rpFeeType: String,
val no: String,
val settleId: String,
val approveDate: String,
val originalNo: String,
val patientGender: String,
val appNo: String,
val settleDate: String,
val adviceNo: String,
val doctorName: String,
val rpSettleType: String,
val doctorId: Int,
val offsetState: String,
val disabled: Boolean,
val drugRestrict: String,
val rpClass: String,
val groupNo: String,
val cashierName: String,
val ifInsurance: Boolean,
val examineResult: String,
val patientName: String,
val dosageUnit: String,
val cost: Int,
val quantity: String,
val ifDivide: String,
val excessDrugExplain: String,
val approveUserName: String,
val rpStatisticType: String,
val days: String,
val cashierCode: String,
val paymentDate: String,
val quantityPerDay: String
)

查看文件

@ -1,15 +0,0 @@
package com.bjca.hp.acupuncture.model
/***************************************************************************
* <pre></pre>
* @文件名称 MqMessage
* @包 com.bjca.hp.acupuncture.model
* @版权所有北京数字医信责任有限公司 (C) 2022
*
* @类描述:
* @版本: V1.0
* @创建人 xuqm
* @创建时间2022/6/20 下午 05:06
* @修改记录
*/
data class MqMessage(val no:String)

查看文件

@ -1,168 +0,0 @@
package com.bjca.hp.acupuncture.model
import com.google.gson.annotations.SerializedName
data class RegModel(
@field:SerializedName("total")
val total: Int,
@field:SerializedName("size")
val size: Int,
@field:SerializedName("nulls")
val nulls: String,
@field:SerializedName("index")
val index: Int,
@field:SerializedName("items")
val items: List<ItemsItem3>
)
data class ItemsItem3(
@field:SerializedName("date")
val date: String,
@field:SerializedName("additionUserId")
val additionUserId: String,
@field:SerializedName("deptName")
val deptName: String,
@field:SerializedName("seqNo")
val seqNo: Int,
@field:SerializedName("patientId")
val patientId: Int,
@field:SerializedName("signInDate")
val signInDate: String,
@field:SerializedName("patientGender")
val patientGender: String,
@field:SerializedName("opType")
val opType: String,
@field:SerializedName("ifSubsequent")
val ifSubsequent: Boolean,
@field:SerializedName("registrarName")
val registrarName: String,
@field:SerializedName("ifDoctorAdd")
val ifDoctorAdd: Boolean,
@field:SerializedName("cardNo")
val cardNo: String,
@field:SerializedName("additionUserName")
val additionUserName: String,
@field:SerializedName("treatDate")
val treatDate: String,
@field:SerializedName("takingDate")
val takingDate: String,
@field:SerializedName("ifDeleted")
val ifDeleted: Boolean,
@field:SerializedName("doctorName")
val doctorName: String,
@field:SerializedName("appointmentChannelCode")
val appointmentChannelCode: String,
@field:SerializedName("lineNo")
val lineNo: Double,
@field:SerializedName("doctorId")
val doctorId: Int,
@field:SerializedName("price")
val price: Double,
@field:SerializedName("ifAddition")
val ifAddition: Boolean,
@field:SerializedName("patientAge")
val patientAge: String,
@field:SerializedName("lockKey")
val lockKey: String,
@field:SerializedName("id")
val id: Int,
@field:SerializedName("state")
val state: String,
@field:SerializedName("paymentState")
val paymentState: String,
@field:SerializedName("regType")
val regType: String,
@field:SerializedName("periodEnd")
val periodEnd: String,
@field:SerializedName("registrarId")
val registrarId: Int,
@field:SerializedName("patientName")
val patientName: String,
@field:SerializedName("targetId")
val targetId: String,
@field:SerializedName("cardType")
val cardType: String,
@field:SerializedName("pay")
val pay: Double,
@field:SerializedName("lineId")
val lineId: Int,
@field:SerializedName("occupationalInjury")
val occupationalInjury: String,
@field:SerializedName("version")
val version: Int,
@field:SerializedName("patientPhone")
val patientPhone: String,
@field:SerializedName("ifEmergency")
val ifEmergency: Boolean,
@field:SerializedName("patientLevel")
val patientLevel: String,
@field:SerializedName("periodType")
val periodType: String,
@field:SerializedName("opNo")
val opNo: String,
@field:SerializedName("ifMaternityInsurance")
val ifMaternityInsurance: Boolean,
@field:SerializedName("periodStart")
val periodStart: String,
@field:SerializedName("appointmentDate")
val appointmentDate: String,
@field:SerializedName("appCardType")
val appCardType: String,
@field:SerializedName("deptCode")
val deptCode: String,
@field:SerializedName("appCardNo")
val appCardNo: String
)

查看文件

@ -1,153 +0,0 @@
package com.bjca.hp.acupuncture.model
import com.google.gson.annotations.SerializedName
data class RpDetailModel(
@field:SerializedName("total")
val total: Int,
@field:SerializedName("size")
val size: Int,
@field:SerializedName("nulls")
val nulls: String,
@field:SerializedName("index")
val index: Int,
@field:SerializedName("items")
val items: List<ItemsItem2>
)
data class ItemsItem2(
@field:SerializedName("shelfIndex")
val shelfIndex: String,
@field:SerializedName("shelfCommand")
val shelfCommand: String,
@field:SerializedName("standard")
val standard: String,
@field:SerializedName("no")
val no: String,
@field:SerializedName("storehouseCode")
val storehouseCode: String,
@field:SerializedName("code")
val code: String,
@field:SerializedName("usage")
val usage: String,
@field:SerializedName("appNo")
val appNo: String,
@field:SerializedName("memo")
val memo: String,
@field:SerializedName("herbalSpecialUsage")
val herbalSpecialUsage: String,
@field:SerializedName("restrict")
val restrict: String,
@field:SerializedName("type")
val type: String,
@field:SerializedName("dosagePerTime")
val dosagePerTime: String,
@field:SerializedName("frequency")
val frequency: String,
@field:SerializedName("insuranceCode")
val insuranceCode: String,
@field:SerializedName("totalDose")
val totalDose: String,
@field:SerializedName("times")
val times: String,
@field:SerializedName("price")
val price: Double,
@field:SerializedName("mnemonic")
val mnemonic: String,
@field:SerializedName("offsetState")
val offsetState: String,
@field:SerializedName("warning")
val warning: String,
@field:SerializedName("lockKey")
val lockKey: String,
@field:SerializedName("id")
val id: Int,
@field:SerializedName("rpClass")
val rpClass: String,
@field:SerializedName("groupNo")
val groupNo: String,
@field:SerializedName("key")
val key: String,
@field:SerializedName("dosageUnit")
val dosageUnit: String,
@field:SerializedName("quantity")
val quantity: Int,
@field:SerializedName("cost")
val cost: Double,
@field:SerializedName("rpNo")
val rpNo: String,
@field:SerializedName("lotNumber")
val lotNumber: String,
@field:SerializedName("manufacturerCode")
val manufacturerCode: String,
@field:SerializedName("approvalNumber")
val approvalNumber: String,
@field:SerializedName("feeType")
val feeType: String,
@field:SerializedName("unit")
val unit: String,
@field:SerializedName("symptom")
val symptom: String,
@field:SerializedName("form")
val form: String,
@field:SerializedName("opNo")
val opNo: String,
@field:SerializedName("name")
val name: String,
@field:SerializedName("parts")
val parts: String,
@field:SerializedName("days")
val days: Int,
@field:SerializedName("executorDeptCode")
val executorDeptCode: String,
@field:SerializedName("offsetId")
val offsetId: Any
)

查看文件

@ -1,21 +0,0 @@
package com.bjca.hp.acupuncture.model
import com.google.gson.annotations.SerializedName
data class RpModel(
@field:SerializedName("total")
val total: Int,
@field:SerializedName("size")
val size: Int,
@field:SerializedName("nulls")
val nulls: Any,
@field:SerializedName("index")
val index: Int,
@field:SerializedName("items")
val items: List<ItemsItems>
)

查看文件

@ -1,113 +0,0 @@
package com.bjca.hp.acupuncture.model
import com.google.gson.annotations.SerializedName
import com.xuqm.base.adapter.BaseItem
import java.util.ArrayList
data class WelcomeLIstModel(
@field:SerializedName("total")
val total: Int? = null,
@field:SerializedName("size")
val size: Int? = null,
@field:SerializedName("nulls")
val nulls: Any? = null,
@field:SerializedName("index")
val index: Int? = null,
@field:SerializedName("items")
val items: ArrayList<ItemsItem> = arrayListOf()
)
data class ItemsItem(
@field:SerializedName("standard")
val standard: String? = null,
@field:SerializedName("storehouseCode")
val storehouseCode: String? = null,
@field:SerializedName("shelfIndex")
val shelfIndex: Any? = null,
@field:SerializedName("code")
val code: String? = null,
@field:SerializedName("purpose")
val purpose: String? = null,
@field:SerializedName("supplierCode")
val supplierCode: String? = null,
@field:SerializedName("herbalSku")
val herbalSku: String? = null,
@field:SerializedName("type")
val type: String? = null,
@field:SerializedName("restrict")
val restrict: String? = null,
@field:SerializedName("rate")
val rate: Double? = null,
@field:SerializedName("price")
val price: Double? = null,
@field:SerializedName("srcId")
val srcId: Any? = null,
@field:SerializedName("disabled")
val disabled: Boolean? = null,
@field:SerializedName("lockKey")
val lockKey: Any? = null,
@field:SerializedName("id")
val id: Int? = null,
@field:SerializedName("applyQuantity")
val applyQuantity: Double? = null,
@field:SerializedName("shortCode")
val shortCode: String? = null,
@field:SerializedName("expirationDate")
val expirationDate: String? = null,
@field:SerializedName("brandName")
val brandName: String? = null,
@field:SerializedName("cost")
val cost: Double? = null,
@field:SerializedName("quantity")
val quantity: Double? = null,
@field:SerializedName("lotNumber")
val lotNumber: String? = null,
@field:SerializedName("manufacturerCode")
val manufacturerCode: String? = null,
@field:SerializedName("feeType")
val feeType: Any? = null,
@field:SerializedName("approvalNumber")
val approvalNumber: Any? = null,
@field:SerializedName("ceilType")
val ceilType: String? = null,
@field:SerializedName("unit")
val unit: String? = null,
@field:SerializedName("form")
val form: String? = null,
@field:SerializedName("name")
val name: String? = null
) : BaseItem()

查看文件

@ -1,30 +0,0 @@
package com.bjca.hp.acupuncture.receiver
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.bjca.hp.acupuncture.ui.MainActivity
/***************************************************************************
* <pre></pre>
* @文件名称 BootCompleteReceiver
* @包 com.bjca.hp.acupuncture.receiver
* @版权所有北京数字医信责任有限公司 (C) 2022
*
* @类描述:
* @版本: V1.0
* @创建人 xuqm
* @创建时间2022/6/24 下午 06:34
* @修改记录
*/
class BootCompleteReceiver : BroadcastReceiver(){
override fun onReceive(context: Context, intent: Intent) {
if(Intent.ACTION_BOOT_COMPLETED == intent.action){
val thisIntent = Intent(context, MainActivity::class.java)
thisIntent.action = "android.intent.action.MAIN";
thisIntent.addCategory("android.intent.category.LAUNCHER");
thisIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
context.startActivity(thisIntent);
}
}
}

查看文件

@ -1,4 +1,4 @@
package com.bjca.hp.acupuncture.repository package com.nova.brain.glass.repository
import android.content.Context import android.content.Context
import com.xuqm.base.common.SHARE_UESR_TOKEN import com.xuqm.base.common.SHARE_UESR_TOKEN
@ -35,20 +35,6 @@ class HeaderInterceptor(val context: Context) : Interceptor {
val headers = request.headers() val headers = request.headers()
// request.body()?.also {
//
// if (!bodyHasUnknownEncoding(headers)) {
// val buffer = Buffer()
// it.writeTo(buffer)
//
// var charset = Charset.forName("UTF-8")
// it.contentType()?.also { its -> charset = its.charset(Charset.forName("UTF-8"))!! }
//
//// if (isPlaintext(buffer)) {
//// buffer.readString(charset).loge()
//// }
// }
// }
val response = chain.proceed(request) val response = chain.proceed(request)
response.body()?.also { response.body()?.also {

查看文件

@ -1,30 +1,8 @@
package com.bjca.hp.acupuncture.repository package com.nova.brain.glass.repository
import com.bjca.hp.acupuncture.model.*
import com.xuqm.sdhbwfu.core.model.HttpResult
import io.reactivex.Observable
import retrofit2.http.GET
import retrofit2.http.Path
import retrofit2.http.Query
interface Service { interface Service {
@GET("drug/stock/standard?storehouseCode=2&type=&form=&purpose=&restrict=&danger=&antibiotic=&keyword=&manufacturerCode=&supplierCode=&expirationDateMin=&expirationDateMax=&sort=id&asc=false&papeIndexOnView=2&pageSize=20&tenantId=101") // @GET("drug/stock/standard?storehouseCode=2&type=&form=&purpose=&restrict=&danger=&antibiotic=&keyword=&manufacturerCode=&supplierCode=&expirationDateMin=&expirationDateMax=&sort=id&asc=false&papeIndexOnView=2&pageSize=20&tenantId=101")
fun standard(@Query("pageIndex") pageIndex: Int): Observable<WelcomeLIstModel> // fun standard(@Query("pageIndex") pageIndex: Int): Observable<WelcomeLIstModel>
// op/rp?no=CF220609004247&rpClass=药品&tenantId=101
@GET("op/rp?rpClass=药品&tenantId=101")
fun rp(@Query("no") no: String): Observable<RpModel>
// op/rpDetail?opNo=MZ220321036030&rpNo=CF220323001947&tenantId=101
@GET("op/rpDetail?tenantId=101")
fun rpDetail(@Query("opNo") opNo: String, @Query("rpNo") rpNo: String): Observable<RpDetailModel>
// op/reg?opNo=MZ220321036030&tenantId=101
@GET("op/reg?tenantId=101")
fun reg(@Query("opNo") opNo: String): Observable<RegModel>
// dict/DrugUsage?sort=id&asc=false&pageIndexOnView=1&pageSize=100&dictType=DrugType&pageIndex=0
@GET("dict/DrugUsage?sort=id&asc=false&pageIndexOnView=1&pageSize=100&dictType=DrugType&pageIndex=0")
fun drugUsage(): Observable<DrugUsage>
} }

查看文件

@ -1,26 +1,11 @@
package com.bjca.hp.acupuncture.ui package com.nova.brain.glass.ui
import android.graphics.Typeface
import android.os.Bundle import android.os.Bundle
import androidx.activity.viewModels import androidx.activity.viewModels
import com.bigkoo.alertview.AlertView import com.nova.brain.glass.R
import com.bjca.hp.acupuncture.MyApplication import com.nova.brain.glass.databinding.ActivityMainBinding
import com.bjca.hp.acupuncture.R import com.nova.brain.glass.viewmodel.MainVM
import com.bjca.hp.acupuncture.databinding.ActivityMainBinding
import com.bjca.hp.acupuncture.model.ItemsItem2
import com.bjca.hp.acupuncture.model.ItemsItem3
import com.bjca.hp.acupuncture.model.ItemsItem5
import com.bjca.hp.acupuncture.model.ItemsItems
import com.bjca.hp.acupuncture.viewmodel.MainVM
import com.xuqm.base.adapter.CommonAdapter
import com.xuqm.base.adapter.ViewHolder
import com.xuqm.base.dialog.loading.LoadingDialog
import com.xuqm.base.extensions.loge
import com.xuqm.base.ui.BaseActivity import com.xuqm.base.ui.BaseActivity
import com.xuqm.sdhbwfu.core.extensions.linearLayoutManager
import com.xuqm.sdhbwfu.core.extensions.showMessage
import tp.xmaihh.serialport.SerialHelper
import tp.xmaihh.serialport.bean.ComBean
class MainActivity : BaseActivity<ActivityMainBinding>() { class MainActivity : BaseActivity<ActivityMainBinding>() {
override fun fullscreen(): Boolean = true override fun fullscreen(): Boolean = true
@ -32,212 +17,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
super.initView(savedInstanceState) super.initView(savedInstanceState)
sourceHanSansCNBold =
Typeface.createFromAsset(mContext?.assets, "fonts/SourceHanSansCN-Bold.ttf")
sourceHanSansCNMedium =
Typeface.createFromAsset(mContext?.assets, "fonts/SourceHanSansCN-Medium.ttf")
sourceHanSansCNNormal =
Typeface.createFromAsset(mContext?.assets, "fonts/SourceHanSansCN-Normal.ttf")
sourceHanSansCNRegular =
Typeface.createFromAsset(mContext?.assets, "fonts/SourceHanSansCN-Regular.ttf")
din =
Typeface.createFromAsset(mContext?.assets, "fonts/DIN-Alternate-Bold.ttf")
binding.title.typeface = sourceHanSansCNBold
binding.name.typeface = sourceHanSansCNBold
binding.tags.typeface = sourceHanSansCNMedium
binding.btn.typeface = sourceHanSansCNBold
binding.title1.typeface = sourceHanSansCNMedium
binding.title2.typeface = sourceHanSansCNMedium
binding.title3.typeface = sourceHanSansCNMedium
binding.title5.typeface = sourceHanSansCNMedium
binding.n1.typeface = sourceHanSansCNRegular
binding.v1.typeface = sourceHanSansCNRegular
binding.n2.typeface = sourceHanSansCNRegular
binding.v2.typeface = sourceHanSansCNRegular
binding.n3.typeface = sourceHanSansCNRegular
binding.v3.typeface = sourceHanSansCNRegular
binding.n4.typeface = sourceHanSansCNRegular
binding.v4.typeface = sourceHanSansCNRegular
binding.n5.typeface = sourceHanSansCNRegular
binding.v5.typeface = sourceHanSansCNRegular
binding.n6.typeface = sourceHanSansCNRegular
binding.v6.typeface = sourceHanSansCNRegular
binding.n7.typeface = sourceHanSansCNRegular
binding.v7.typeface = sourceHanSansCNRegular
binding.n8.typeface = sourceHanSansCNRegular
binding.v8.typeface = sourceHanSansCNRegular
binding.n9.typeface = sourceHanSansCNRegular
binding.v9.typeface = sourceHanSansCNRegular
binding.n10.typeface = sourceHanSansCNRegular
binding.v10.typeface = sourceHanSansCNRegular
binding.n11.typeface = sourceHanSansCNRegular
binding.v11.typeface = sourceHanSansCNRegular
binding.n12.typeface = sourceHanSansCNRegular
binding.v12.typeface = sourceHanSansCNRegular
binding.n13.typeface = sourceHanSansCNRegular
binding.v13.typeface = sourceHanSansCNRegular
binding.n14.typeface = sourceHanSansCNRegular
binding.v14.typeface = sourceHanSansCNRegular
binding.n15.typeface = sourceHanSansCNRegular
binding.v15.typeface = sourceHanSansCNRegular
binding.n16.typeface = sourceHanSansCNRegular
binding.v16.typeface = sourceHanSansCNRegular
binding.n17.typeface = sourceHanSansCNRegular
binding.v17.typeface = sourceHanSansCNRegular
binding.list.linearLayoutManager(mContext, 15)
binding.list.adapter = adapter
binding.btn.setOnClickListener {
LoadingDialog.showDialog("")
if (adapter.datas.size > 0)
sndMessage(0)
else {
// s.sendHex("0105002cff004DF3"); // 发送Hex
MyApplication.getInstance().runOnUiThreadDelay({
try {
s.sendHex("02050001ff00DDC9"); // 发送Hex
} catch (e: Exception) {
e.showMessage()
}
LoadingDialog.dismissDialog()
}, 500)
}
}
} }
private fun sndMessage(i: Int) {
if (i >= adapter.datas.size) {
LoadingDialog.dismissDialog()
AlertView(
"取药完成", adapter.datas.map { it.shelfIndex}.joinToString(), null, arrayOf("确定"), null, mContext,
AlertView.Style.Alert
) { _, _ ->
mContext.finish()
}.show()
return
}
try {
s.sendHex(adapter.datas[i].shelfCommand); // 发送Hex
} catch (e: Exception) {
e.showMessage()
}
MyApplication.getInstance().runOnUiThreadDelay({
sndMessage(i + 1)
}, 2300)
}
lateinit var sourceHanSansCNBold: Typeface
lateinit var sourceHanSansCNMedium: Typeface
lateinit var sourceHanSansCNNormal: Typeface
lateinit var sourceHanSansCNRegular: Typeface
lateinit var din: Typeface
var rp: ItemsItems? = null
var regM: ItemsItem3? = null
var usages: List<ItemsItem5> = listOf()
lateinit var s: SerialHelper
override fun initData() {
super.initData()
s = object : SerialHelper("/dev/ttyS0", 38400) {
override fun onDataReceived(paramComBean: ComBean?) {
paramComBean?.bRec?.loge()
}
}
try {
s.open()
} catch (e: Exception) {
e.showMessage()
}
vm.status.observe(this) {
rp = it
rerresh()
}
vm.regM.observe(this) {
regM = it
rerresh()
}
vm.usages.observe(this) {
usages = it ?: listOf()
intent.getStringExtra("opNo")?.let { it1 -> vm.getRp(it1) }
}
vm.rpDetail.observe(this) {
adapter.setmDatas(it)
}
vm.drugUsage()
}
fun getUsage(code: String): String {
var text = "--"
usages.forEach {
if (it.code == code) {
text = it.text
}
}
return text
}
private fun rerresh() {
rp?.let {
binding.v8.text = it.diagnosis
binding.v14.text = it.doctorName
binding.v16.text = "${it.price}"
binding.v13.text = it.approveUserName
binding.v11.text = it.no
}
regM?.let {
binding.v1.text = it.patientName
binding.v2.text = it.patientGender
binding.v3.text = "${it.patientAge}"
binding.v4.text = it.patientPhone
binding.v5.text = ""
binding.v6.text = it.appCardNo
binding.v7.text = it.deptName
binding.v9.text = it.date
binding.v10.text = it.opType
}
}
private val adapter = object : CommonAdapter<ItemsItem2>(R.layout.item_main) {
override fun convert(holder: ViewHolder, item: ItemsItem2, position: Int) {
holder.setTypeface(R.id.index, sourceHanSansCNMedium)
.setText(R.id.index, "${position + 1}")
.setTypeface(R.id.n1, sourceHanSansCNRegular)
.setTypeface(R.id.v1, sourceHanSansCNRegular)
.setText(R.id.v1, item.name)//名称
.setTypeface(R.id.n2, sourceHanSansCNRegular)
.setTypeface(R.id.v1, sourceHanSansCNRegular)
.setText(R.id.v2, item.standard)//规格
.setTypeface(R.id.n3, sourceHanSansCNRegular)
.setTypeface(R.id.v3, sourceHanSansCNRegular)
.setText(R.id.v3, "${item.quantity}${item.unit}")//数量
.setTypeface(R.id.n4, sourceHanSansCNRegular)
.setTypeface(R.id.v4, sourceHanSansCNRegular)
.setText(R.id.v4, getUsage(item.usage))//使用方法---码表
.setTypeface(R.id.n5, sourceHanSansCNRegular)
.setTypeface(R.id.v5, sourceHanSansCNRegular)
.setText(R.id.v5, "${item.dosagePerTime}${item.dosageUnit}")//用量
.setTypeface(R.id.n6, sourceHanSansCNRegular)
.setTypeface(R.id.v6, sourceHanSansCNRegular)
.setText(R.id.v6, item.frequency)//频次---码表
.setTypeface(R.id.n7, sourceHanSansCNRegular)
.setTypeface(R.id.v7, sourceHanSansCNRegular)
.setText(R.id.v7, "${item.days}")//使用周期
}
}
} }

查看文件

@ -1,209 +0,0 @@
package com.bjca.hp.acupuncture.ui
import android.os.Bundle
import com.bjca.hp.acupuncture.MyApplication
import com.bjca.hp.acupuncture.R
import com.bjca.hp.acupuncture.databinding.ActivitySettingBinding
import com.xuqm.base.extensions.loge
import com.xuqm.base.ui.BaseActivity
import com.xuqm.sdhbwfu.core.extensions.showMessage
import kotlinx.android.synthetic.main.activity_setting.*
import tp.xmaihh.serialport.SerialHelper
import tp.xmaihh.serialport.bean.ComBean
import java.util.*
class SettingActivity : BaseActivity<ActivitySettingBinding>() {
override fun getLayoutId(): Int = R.layout.activity_setting
override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState)
binding.a13.setOnClickListener {
val a11 = binding.a11.text.toString().toInt()
if (a11 <= 0 || a11 > 9) {
"请输入正确的柜号,从1开始".showMessage()
return@setOnClickListener
}
val a12 = binding.a12.text.toString().toInt()
if (a12 <= 0) {
"请输入正确的柜门号,从1开始".showMessage()
return@setOnClickListener
}
val b1 = "0${a11}05${intToHex(a12, 4)}ff00"
val b2 = getCRC(b1)
try {
s.sendHex("${b1}${b2}"); // 发送Hex
} catch (e: Exception) {
e.showMessage()
}
}
binding.a24.setOnClickListener {
val a21 = binding.a21.text.toString().toInt()
if (a21 <= 0 || a21 > 9) {
"请输入正确的柜号,从1开始".showMessage()
return@setOnClickListener
}
val a22 = binding.a22.text.toString().toInt()
if (a22 <= 0) {
"请输入正确的柜门号,从1开始".showMessage()
return@setOnClickListener
}
val a23 = binding.a23.text.toString().toInt()
if (a23 <= 0) {
"请输入正确的柜门号,从1开始".showMessage()
return@setOnClickListener
}
sndMessage(a21, a22, a23)
}
binding.a31.setOnClickListener {
sndMessage(1, 1, 84)
}
binding.a32.setOnClickListener {
sndMessage(2, 1, 84)
}
binding.a33.setOnClickListener {
sndMessage(3, 1, 84)
}
}
private fun sndMessage(i: Int, ii: Int, iii: Int) {
if (ii > iii) return
val b1 = "0${i}05${intToHex(ii, 4)}ff00"
val b2 = getCRC(b1)
try {
s.sendHex("${b1}${b2}"); // 发送Hex
} catch (e: Exception) {
e.showMessage()
}
MyApplication.getInstance().runOnUiThreadDelay({
sndMessage(i, ii + 1, iii)
}, 2300)
}
lateinit var s: SerialHelper
override fun initData() {
super.initData()
s = object : SerialHelper("/dev/ttyS0", 38400) {
override fun onDataReceived(paramComBean: ComBean?) {
paramComBean?.bRec?.loge()
}
}
try {
s.open()
} catch (e: Exception) {
e.showMessage()
}
}
/**
* 10进制转16进制.
*
* @param n 10进制数
* @param size 转换后的16进制位数
* @return 转换结果
*/
private fun intToHex(n: Int, size: Int): String {
var n = n
var s = StringBuffer()
var a: String
val b = charArrayOf(
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C',
'D',
'E',
'F'
)
while (n != 0) {
s = s.append(b[n % 16])
n = n / 16
}
a = s.reverse().toString()
a = add_zero(a, size)
return a
}
fun add_zero(str: String, size: Int): String {
var str = str
if (str.length < size) {
str = "0$str"
str = add_zero(str, size)
}
return str
}
fun getCRC(data: String): String {
var data = data
data = data.replace(" ", "")
val len = data.length
if (len % 2 != 0) {
return "0000"
}
val num = len / 2
val para = ByteArray(num)
for (i in 0 until num) {
val value = Integer.valueOf(data.substring(i * 2, 2 * (i + 1)), 16)
para[i] = value.toByte()
}
return getCRC(para)
}
/**
* 计算CRC16校验码
*
* @param bytes
* 字节数组
* @return [String] 校验码
* @since 1.0
*/
fun getCRC(bytes: ByteArray): String {
// CRC寄存器全为1
var CRC = 0x0000ffff
// 多项式校验值
val POLYNOMIAL = 0x0000a001
var i: Int
var j: Int
i = 0
while (i < bytes.size) {
CRC = CRC xor (bytes[i].toInt() and 0x000000ff)
j = 0
while (j < 8) {
if (CRC and 0x00000001 != 0) {
CRC = CRC shr 1
CRC = CRC xor POLYNOMIAL
} else {
CRC = CRC shr 1
}
j++
}
i++
}
// 结果转换为16进制
var result = Integer.toHexString(CRC).uppercase(Locale.getDefault())
if (result.length != 4) {
val sb = StringBuffer("0000")
result = sb.replace(4 - result.length, 4, result).toString()
}
//高位在前地位在后
//return result.substring(2, 4) + " " + result.substring(0, 2);
// 交换高低位,低位在前高位在后
return result.substring(2, 4) + result.substring(0, 2)
}
}

查看文件

@ -1,35 +0,0 @@
package com.bjca.hp.acupuncture.ui
import android.os.Bundle
import com.bjca.hp.acupuncture.R
import com.bjca.hp.acupuncture.databinding.ActivityTestBinding
import com.xuqm.base.common.ToolsHelper
import com.xuqm.base.extensions.getStringForPreferences
import com.xuqm.base.extensions.putString
import com.xuqm.base.ui.BaseActivity
import com.xuqm.base.web.XWebViewHelper
class TestActivity : BaseActivity<ActivityTestBinding>() {
override fun getLayoutId(): Int = R.layout.activity_test
override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState)
val str = getStringForPreferences("wurl")
if (!ToolsHelper.isNull(str))
binding.editUrl.setText(str)
binding.btn.setOnClickListener {
val url =
if (ToolsHelper.isNull(binding.editUrl.text)) "https://web.sdk.qcloud.com/trtc/webrtc/demo/quick-demo-vue3-ts/index.html#/"
else binding.editUrl.text.toString()
putString("wurl", url)
XWebViewHelper.startWebNoTopBar(
mContext,
url
)
}
}
}

查看文件

@ -1,166 +1,19 @@
package com.bjca.hp.acupuncture.ui package com.nova.brain.glass.ui
import android.content.Intent
import android.graphics.Typeface
import android.os.Bundle import android.os.Bundle
import com.bjca.hp.acupuncture.R import com.nova.brain.glass.R
import com.bjca.hp.acupuncture.common.RabbitMQUtil import com.nova.brain.glass.databinding.ActivityWelcomeBinding
import com.bjca.hp.acupuncture.databinding.ActivityWelcomeBinding import com.xuqm.base.ui.BaseActivity
import com.bjca.hp.acupuncture.model.ItemsItem
import com.bjca.hp.acupuncture.viewmodel.WelcomeVM
import com.xuqm.base.adapter.BasePagedAdapter
import com.xuqm.base.adapter.CommonPagedAdapter
import com.xuqm.base.adapter.ViewHolder
import com.xuqm.base.ui.BaseListFormLayoutActivity
import com.xuqm.sdhbwfu.core.extensions.gridLayoutManager
import com.xuqm.sdhbwfu.core.extensions.runWithPermission
import com.xuqm.sdhbwfu.core.extensions.toStrings
class WelcomeActivity : BaseListFormLayoutActivity<ItemsItem, WelcomeVM, ActivityWelcomeBinding>() { class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
override fun getLayoutId(): Int = R.layout.activity_welcome override fun getLayoutId(): Int = R.layout.activity_welcome
override fun fullscreen(): Boolean = true override fun fullscreen(): Boolean = true
// lateinit var s: SerialHelper
lateinit var sourceHanSansCNBold: Typeface
lateinit var sourceHanSansCNMedium: Typeface
lateinit var sourceHanSansCNNormal: Typeface
lateinit var din: Typeface
lateinit var mq: RabbitMQUtil
private var oldTime = 0L
private var index = 0
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState) super.initView(savedInstanceState)
sourceHanSansCNBold =
Typeface.createFromAsset(mContext?.assets, "fonts/SourceHanSansCN-Bold.ttf")
sourceHanSansCNMedium =
Typeface.createFromAsset(mContext?.assets, "fonts/SourceHanSansCN-Medium.ttf")
sourceHanSansCNNormal =
Typeface.createFromAsset(mContext?.assets, "fonts/SourceHanSansCN-Normal.ttf")
din =
Typeface.createFromAsset(mContext?.assets, "fonts/DIN-Alternate-Bold.ttf")
binding.title.typeface = sourceHanSansCNBold
binding.title.setOnClickListener {
val newTime = System.currentTimeMillis()
if (newTime - oldTime < 2500 && oldTime != 0L) {
if (index > 5) {
startActivity(Intent(mContext, SettingActivity::class.java))
index = 0
}
index++
} else {
oldTime = newTime
index = 0
}
}
// binding.list.gridLayoutManager(mContext, 6, 2)
// binding.list.adapter = adapter
// adapter.setmDatas(arrayListOf("空调", "水泵", "空气净化器", "阳台", "灯"))
recyclerView.gridLayoutManager(mContext, 21, 3)
adapter.setItemLongClickListener { _, _, _ ->
startActivity(Intent(mContext, MainActivity::class.java))
return@setItemLongClickListener true
}
} }
override fun onDestroy() {
super.onDestroy()
mq.close()
}
override fun initData() {
super.initData()
runWithPermission(
"android.permission.MODIFY_AUDIO_SETTINGS",
"android.permission.RECORD_AUDIO",
"android.permission.CAMERA"
) {
startActivity(Intent(mContext, TestActivity::class.java))
}
// XWebViewHelper.startWebNoTopBar(mContext,"https://mdtdemo.51trust.com/")
// mq = RabbitMQUtil("10.10.202.11", 5672, "guest", "guest")
//
// mq.receiveQueueMessage("RpNoByMedicineCabinet",
// {
//
// startActivity(Intent(mContext, MainActivity::class.java)
// .apply {
// putExtra(
// "opNo",
// GsonImplHelp.get().toObject(it, MqMessage::class.java).no
// )
// })
// }
// ) {
// it.loge()
// }
// s = object : SerialHelper("/dev/ttyS0", 38400) {
// override fun onDataReceived(paramComBean: ComBean?) {
// paramComBean?.bRec?.loge()
// }
//
// }
// s.setStickPackageHelper {
// try {
// val available = it.available()
// if (available > 0) {
// val buffer = ByteArray(available)
// val size = it.read(buffer)
// if (size > 0) {
// return@setStickPackageHelper buffer;
// }
// } else {
// SystemClock.sleep(50);
// }
//
// } catch (e: IOException) {
// e.printStackTrace();
// }
// return@setStickPackageHelper null
// }
// s.sendHex("02050001ff00DDC9"); // 发送Hex
}
private val adapter = object : CommonPagedAdapter<ItemsItem>(R.layout.item_welcome) {
override fun convert(holder: ViewHolder, item: ItemsItem, position: Int) {
holder
.setTypeface(R.id.index, sourceHanSansCNMedium)
.setTypeface(R.id.name, sourceHanSansCNBold)
.setTypeface(R.id.hint, sourceHanSansCNNormal)
.setTypeface(R.id.number, din)
.setTypeface(R.id.unit, sourceHanSansCNNormal)
.setTypeface(R.id.balance, sourceHanSansCNNormal)
.setText(R.id.index, "${position + 1}")
.setText(R.id.name, item.name)
.setText(R.id.hint, item.supplierCode)
.setText(R.id.number, item.price?.toStrings())
.setText(R.id.unit, "元/${item.unit}")
.setText(R.id.balance, "剩余:${item.quantity}${item.unit}")
}
}
override fun adapter(): BasePagedAdapter<ItemsItem> = adapter
} }

查看文件

@ -1,104 +1,7 @@
package com.bjca.hp.acupuncture.viewmodel package com.nova.brain.glass.viewmodel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.bjca.hp.acupuncture.MyApplication
import com.bjca.hp.acupuncture.model.ItemsItem2
import com.bjca.hp.acupuncture.model.ItemsItem3
import com.bjca.hp.acupuncture.model.ItemsItem5
import com.bjca.hp.acupuncture.model.ItemsItems
import com.bjca.hp.acupuncture.repository.Service
import com.xuqm.base.di.manager.HttpManager
import com.xuqm.base.extensions.showMessage
import com.xuqm.sdhbwfu.core.viewModel.BaseViewModel import com.xuqm.sdhbwfu.core.viewModel.BaseViewModel
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
/***************************************************************************
* <pre></pre>
* @文件名称 WelcomeVM
* @包 com.bjca.hp.acupuncture.viewmodel
* @版权所有北京数字医信责任有限公司 (C) 2022
*
* @类描述:
* @版本: V1.0
* @创建人 xuqm
* @创建时间2022/6/17 下午 02:33
* @修改记录
*/
class MainVM : BaseViewModel() { class MainVM : BaseViewModel() {
private val _status = MutableLiveData<ItemsItems>()
val status: LiveData<ItemsItems> = _status
fun getRp(opNo:String = "CF220609004247" ) {
HttpManager.getApi(MyApplication.appComponent1, Service::class.java)
.rp(opNo)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
_status.postValue(it.items[0])
rpDetail(it.items[0].opNo, it.items[0].no)
reg(it.items[0].opNo)
}, {
_status.postValue(null)
showMessage(it.toString())
}
).adds()
}
private val _rpDetail = MutableLiveData<List<ItemsItem2>>()
val rpDetail: LiveData<List<ItemsItem2>> = _rpDetail
fun rpDetail(opNo: String, rpNo: String) {
HttpManager.getApi(MyApplication.appComponent1, Service::class.java)
.rpDetail(opNo, rpNo)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
_rpDetail.postValue(it.items)
}, {
_rpDetail.postValue(null)
showMessage(it.toString())
}
).adds()
}
private val _regM = MutableLiveData<ItemsItem3>()
val regM: LiveData<ItemsItem3> = _regM
fun reg(opNo: String) {
HttpManager.getApi(MyApplication.appComponent1, Service::class.java)
.reg(opNo)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
_regM.postValue(it?.items?.get(0))
}, {
_regM.postValue(null)
showMessage(it.toString())
}
).adds()
}
private val _usages = MutableLiveData<List<ItemsItem5>>()
val usages: LiveData<List<ItemsItem5>> = _usages
fun drugUsage() {
HttpManager.getApi(MyApplication.appComponent2, Service::class.java)
.drugUsage()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
_usages.postValue(it.items)
}, {
_usages.postValue(null)
showMessage(it.toString())
}
).adds()
}
} }

查看文件

@ -1,40 +1,6 @@
package com.bjca.hp.acupuncture.viewmodel package com.nova.brain.glass.viewmodel
import com.bjca.hp.acupuncture.model.ItemsItem import com.xuqm.sdhbwfu.core.viewModel.BaseViewModel
import com.bjca.hp.acupuncture.repository.Service
import com.xuqm.base.di.manager.HttpManager
import com.xuqm.base.extensions.showMessage
import com.xuqm.base.viewmodel.BaseListViewModel
import com.xuqm.base.viewmodel.callback.Response
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
/*************************************************************************** class WelcomeVM : BaseViewModel() {
* <pre></pre>
* @文件名称 WelcomeVM
* @包 com.bjca.hp.acupuncture.viewmodel
* @版权所有北京数字医信责任有限公司 (C) 2022
*
* @类描述:
* @版本: V1.0
* @创建人 xuqm
* @创建时间2022/6/17 下午 02:33
* @修改记录
*/
class WelcomeVM : BaseListViewModel<ItemsItem>() {
override fun loadData(page: Int, onResponse: Response<ItemsItem>) {
add(
HttpManager.getApi(Service::class.java)
.standard(page)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
onResponse.onResponse(it.items)
}, {
onResponse.onResponse(null)
// showMessage(it)
}
))
}
} }

查看文件

@ -1,22 +0,0 @@
package com.bjca.hp.acupuncture.widget;
import androidx.annotation.ColorInt;
/***************************************************************************
* <pre></pre>
* @文件名称 ColorUser
* @包 com.bjca.hp.acupuncture.widget
* @版权所有北京数字医信责任有限公司 (C) 2022
*
* @类描述:
* @版本: V1.0
* @创建人 xuqm
* @创建时间2022/1/19 上午 10:58
* @修改记录
*/
public class ColorUser {
@ColorInt
public static final int ce = 0xFF04E8EE;
@ColorInt
public static final int cs = 0x003A6FF2;
}

查看文件

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke android:width="0.5dp" android:color="#00000014" />
<corners android:radius="5dp" />
<solid android:color="@color/white"/>
</shape>
</item>
</selector>

查看文件

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="1dp" />
<solid android:color="#F1F9F5"/>
</shape>
</item>
</selector>

查看文件

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="#BA7D45" />
</shape>
</item>
</selector>

查看文件

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:bottomRightRadius="1dp" android:topRightRadius="1dp" />
<solid android:color="#FFFFFF" />
</shape>
</item>
</selector>

查看文件

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:bottomLeftRadius="1dp" android:topLeftRadius="1dp" />
<solid android:color="#BA7D45" />
</shape>
</item>
</selector>

查看文件

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="1dp" />
<stroke android:width="1dp" android:color="#5EA564" />
</shape>
</item>
</selector>

查看文件

@ -5,694 +5,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#BA7D45"
tools:context=".ui.MainActivity"> tools:context=".ui.MainActivity">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="联创明医医院智慧药柜"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="76dp"
android:background="@drawable/bg_main"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:background="@drawable/bg_main"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="广州黄埔区明医医院处方笺"
android:textColor="#202020"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tags"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17.5dp"
android:background="@drawable/bg_main_tag"
android:paddingHorizontal="7.5dp"
android:paddingVertical="4.5dp"
android:text="普通"
android:textColor="#5EA564" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal"
android:paddingHorizontal="15dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="4dp"
android:background="#BA7D45"
app:layout_constraintBottom_toBottomOf="@+id/title1"
app:layout_constraintEnd_toEndOf="@+id/title1"
app:layout_constraintStart_toStartOf="@+id/title1" />
<TextView
android:id="@+id/title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="患者信息"
android:textColor="#ff202020"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="地址:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="4dp"
android:background="#BA7D45"
app:layout_constraintBottom_toBottomOf="@+id/title2"
app:layout_constraintEnd_toEndOf="@+id/title2"
app:layout_constraintStart_toStartOf="@+id/title2" />
<TextView
android:id="@+id/title2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="就诊信息"
android:textColor="#ff202020"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="就诊卡号:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="就诊科别:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="诊断结果:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="就诊日期:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="4dp"
android:background="#BA7D45"
app:layout_constraintBottom_toBottomOf="@+id/title3"
app:layout_constraintEnd_toEndOf="@+id/title3"
app:layout_constraintStart_toStartOf="@+id/title3" />
<TextView
android:id="@+id/title3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="医疗信息"
android:textColor="#ff202020"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="医疗类别:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="医疗/医保卡:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<ImageView
android:layout_width="129dp"
android:layout_height="50dp"
android:layout_marginTop="12dp"
android:scaleType="centerCrop"
android:src="@color/ic_launcher_background" />
</LinearLayout>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="20dp">
<View
android:layout_width="0dp"
android:layout_height="4dp"
android:background="#BA7D45"
app:layout_constraintBottom_toBottomOf="@+id/title4"
app:layout_constraintEnd_toEndOf="@+id/title4"
app:layout_constraintStart_toStartOf="@+id/title4" />
<TextView
android:id="@+id/title4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="药品及使用说明"
android:textColor="#ff202020"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.xuqm.base.view.MaxLimitRecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:maxLength="6"
android:paddingHorizontal="15dp"
app:limit_maxHeight="350dp" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="20dp">
<View
android:layout_width="0dp"
android:layout_height="4dp"
android:background="#BA7D45"
app:layout_constraintBottom_toBottomOf="@+id/title5"
app:layout_constraintEnd_toEndOf="@+id/title5"
app:layout_constraintStart_toStartOf="@+id/title5" />
<TextView
android:id="@+id/title5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="药品及使用说明"
android:textColor="#ff202020"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:paddingHorizontal="15dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="药师:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="审方:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="医师:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="调配:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="智慧药柜"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="药品金额:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/n17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="核对发药:"
android:textColor="#ff848484"
android:textSize="11sp" />
<TextView
android:id="@+id/v17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textColor="#ff202020"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/btn"
android:layout_width="170dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="45dp"
android:layout_marginBottom="45dp"
android:background="@drawable/bg_main_btn"
android:gravity="center"
android:text="确认发药"
android:textColor="@color/white"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

查看文件

@ -1,167 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.SettingActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:gravity="center"
android:text="开指定柜门"
android:textColor="@color/black"
android:textSize="18sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginTop="10dp"
android:background="@drawable/bg_button"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<EditText
android:id="@+id/a11"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="柜号(1.2.3)"
android:inputType="number" />
<EditText
android:id="@+id/a12"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="窗口号"
android:inputType="number" />
<TextView
android:id="@+id/a13"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_button_red"
android:gravity="center"
android:text="开门"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:gravity="center"
android:text="开指定指定范围内柜门"
android:textColor="@color/black"
android:textSize="18sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginTop="10dp"
android:background="@drawable/bg_button"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<EditText
android:id="@+id/a21"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="柜号(1.2.3)"
android:inputType="number" />
<EditText
android:id="@+id/a22"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="开始窗口号"
android:inputType="number" />
<EditText
android:id="@+id/a23"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="结束窗口号"
android:inputType="number" />
<TextView
android:id="@+id/a24"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_button_red"
android:gravity="center"
android:text="开门"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:gravity="center"
android:text="一键开门"
android:textColor="@color/black"
android:textSize="18sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginTop="10dp"
android:background="@drawable/bg_button"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/a31"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_button_red"
android:gravity="center"
android:text="一号柜"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/a32"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginHorizontal="10dp"
android:background="@drawable/bg_button_red"
android:gravity="center"
android:text="二号柜"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/a33"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_button_red"
android:gravity="center"
android:text="三号柜"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
</layout>

查看文件

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.TestActivity">
<EditText
android:id="@+id/edit_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:text="https://web.sdk.qcloud.com/trtc/webrtc/demo/quick-demo-vue3-ts/index.html#/"
android:textSize="21sp"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="进入页面"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edit_url" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

查看文件

@ -1,50 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout> <layout xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:background="#BA7D45" <TextView
tools:context=".ui.WelcomeActivity"> app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
<TextView app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/title" app:layout_constraintBottom_toBottomOf="parent"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:text="welcome"/>
android:gravity="center"
android:text="联创明医医院智慧药柜"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/baseRefreshLayout"
android:layout_width="match_parent"
android:layout_marginTop="20dp"
android:layout_marginBottom="34dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title">
<com.xuqm.base.view.EmptyView
android:id="@+id/baseEmptyView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/baseRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never" />
</com.xuqm.base.view.EmptyView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

查看文件

@ -1,224 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:id="@+id/index"
android:layout_width="25dp"
android:layout_height="match_parent"
android:background="@drawable/bg_main_item_index"
android:gravity="center"
android:text="1"
android:textColor="@color/white"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/bg_main_item_content"
android:orientation="horizontal"
android:paddingHorizontal="6dp"
android:gravity="center_vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/index">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="25"
android:orientation="vertical">
<TextView
android:id="@+id/n1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="药品名称"
android:textColor="#ffacabab"
android:textSize="10sp" />
<TextView
android:id="@+id/v1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="6dp"
android:lines="1"
android:text="药品名称药品名称药品名称药品名称药品名称药品名称药品名称"
android:textColor="#ff202020"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="18"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/n2"
android:text="规格"
android:textColor="#ffacabab"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="6dp"
android:lines="1"
android:text="0.5g*10粒"
android:id="@+id/v2"
android:textColor="#ff202020"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="9"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:id="@+id/n3"
android:layout_height="wrap_content"
android:text="数量"
android:textColor="#ffacabab"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="6dp"
android:lines="1"
android:id="@+id/v3"
android:text="1盒"
android:textColor="#ff202020"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="12"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/n4"
android:text="使用方法"
android:textColor="#ffacabab"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="6dp"
android:lines="1"
android:text="口服"
android:id="@+id/v4"
android:textColor="#ff202020"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="12"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:id="@+id/n5"
android:layout_height="wrap_content"
android:text="用量"
android:textColor="#ffacabab"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="6dp"
android:lines="1"
android:id="@+id/v5"
android:text="6g"
android:textColor="#ff202020"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="13"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="频次"
android:id="@+id/n6"
android:textColor="#ffacabab"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="6dp"
android:lines="1"
android:id="@+id/v6"
android:text="每日1次"
android:textColor="#ff202020"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="10"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/n7"
android:text="使用周期"
android:textColor="#ffacabab"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="6dp"
android:lines="1"
android:id="@+id/v7"
android:text="2天"
android:textColor="#ff202020"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

查看文件

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="130dp"
android:background="@drawable/bg_item_welcome">
<TextView
android:id="@+id/index"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="#BA7D45"
android:paddingHorizontal="7.5dp"
android:paddingVertical="3.5dp"
android:text="01"
android:textColor="@color/white"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="活血止痛胶囊(10mg/盒)"
android:textColor="@color/black"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/index"
app:layout_constraintTop_toBottomOf="@+id/index" />
<TextView
android:id="@+id/hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="广东联合制药"
android:textColor="#A4ADBA"
android:textSize="10sp"
app:layout_constraintStart_toStartOf="@+id/index"
app:layout_constraintTop_toBottomOf="@+id/name" />
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:text="12.5"
android:textColor="#FF4600"
android:textStyle="bold"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/index" />
<TextView
android:id="@+id/unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="元/盒"
android:textColor="#FF4600"
android:layout_marginBottom="3dp"
app:layout_constraintBottom_toBottomOf="@+id/number"
android:textSize="10sp"
app:layout_constraintStart_toEndOf="@+id/number" />
<TextView
android:id="@+id/balance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="剩余100盒"
android:textColor="#333333"
android:layout_marginBottom="3dp"
android:layout_marginEnd="10dp"
app:layout_constraintBottom_toBottomOf="@+id/number"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

二进制文件未显示。

之前

宽度:  |  高度:  |  大小: 7.3 KiB

二进制文件未显示。

之前

宽度:  |  高度:  |  大小: 4.4 KiB

二进制文件未显示。

之前

宽度:  |  高度:  |  大小: 79 KiB

二进制文件未显示。

之前

宽度:  |  高度:  |  大小: 1.5 KiB

二进制文件未显示。

之前

宽度:  |  高度:  |  大小: 136 KiB

二进制文件未显示。

之前

宽度:  |  高度:  |  大小: 28 KiB

查看文件

@ -11,7 +11,7 @@ import java.io.IOException;
* <pre></pre> * <pre></pre>
* @文件名称 ImageHelp * @文件名称 ImageHelp
* @包 com.xuqm.base.common * @包 com.xuqm.base.common
* @版权所有北京数字医信责任有限公司 (C) 2021 *
* *
* @类描述: * @类描述:
* @版本: V1.0 * @版本: V1.0

查看文件

@ -4,7 +4,6 @@ package com.xuqm.base.webSocket;
* <pre></pre> * <pre></pre>
* @文件名称 ConnectStatus * @文件名称 ConnectStatus
* @包 com.xuqm.base.webSocket * @包 com.xuqm.base.webSocket
* @版权所有北京数字医信责任有限公司 (C) 2022
* *
* @类描述: * @类描述:
* @版本: V1.0 * @版本: V1.0

查看文件

@ -4,7 +4,7 @@ package com.xuqm.base.webSocket;
* <pre></pre> * <pre></pre>
* @文件名称 WebSocketCallBack * @文件名称 WebSocketCallBack
* @包 com.xuqm.base.webSocket * @包 com.xuqm.base.webSocket
* @版权所有北京数字医信责任有限公司 (C) 2022 *
* *
* @类描述: * @类描述:
* @版本: V1.0 * @版本: V1.0

查看文件

@ -15,7 +15,7 @@ import okio.ByteString;
* <pre></pre> * <pre></pre>
* @文件名称 WebSocketHandler * @文件名称 WebSocketHandler
* @包 com.xuqm.base.webSocket * @包 com.xuqm.base.webSocket
* @版权所有北京数字医信责任有限公司 (C) 2022 *
* *
* @类描述: * @类描述:
* @版本: V1.0 * @版本: V1.0

查看文件

@ -1,6 +1,6 @@
ext { ext {
apps = [ apps = [
applicationName: '摆药机', applicationName: 'C大脑',
applicationId : 'com.xuqm.hp.vending' applicationId : 'com.xuqm.hp.vending'
] ]
versions = [ versions = [