Commit 888e7960 by youguoqing

调整:适配UHF_U8设备

parent c77517a7
......@@ -13,7 +13,7 @@ android {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.1"
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
......@@ -38,14 +38,16 @@ dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation "androidx.room:room-runtime:2.2.3"
annotationProcessor "androidx.room:room-compiler:2.2.3"
implementation 'cn.hutool:hutool-all:5.7.19'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'org.bouncycastle:bcprov-jdk15on:1.68'
implementation 'com.squareup.okhttp3:okhttp:3.14.2'
implementation 'com.squareup.okio:okio:1.17.4'
implementation 'com.tencent.bugly:crashreport:3.4.4'
implementation 'me.jessyan:autosize:1.1.2'
implementation (name: 'fn_U8', ext: 'aar')
annotationProcessor "androidx.room:room-compiler:2.2.3"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
......
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
......@@ -35,9 +35,10 @@
</intent-filter>
</activity>
<activity android:name=".page.MainActivity" android:screenOrientation="portrait" />
<activity android:name=".page.TaskListActivity" android:screenOrientation="portrait" />
<activity android:name=".page.CheckTaskActivity" android:screenOrientation="portrait" />
<activity android:name=".page.TaskInfoActivity" android:screenOrientation="portrait" />
<activity android:name=".page.SetAndSaveActivity" android:screenOrientation="portrait" />
<!-- <activity android:name=".page.SetAndSaveActivity" android:screenOrientation="portrait" />-->
<activity android:name=".page.InventoryActivity" android:screenOrientation="portrait" />
<activity android:name=".page.LoginActivity" android:screenOrientation="portrait" />
<activity android:name=".page.DeviceSetActivity" android:screenOrientation="portrait" />
......
......@@ -44,4 +44,9 @@ public interface IUSeries {
*/
boolean setParams(String paraName, String paraValue);
/**
* 获取盘点效率
*/
int getReadRate();
}
......@@ -98,12 +98,12 @@ public class M11U8Service implements IUSeries{
if (paraName.equals(PARA_POWER)) {
ReturnBean returnBean = readerSeries.getPower();
if (returnBean.isSuccess()) {
returnBean.getMsg();
return returnBean.getMsg();
}
} else if (paraName.equals(TEMPERATURE)) {
ReturnBean returnBean = readerSeries.getReaderTemperature();
if (returnBean.isSuccess()) {
returnBean.getMsg();
return returnBean.getMsg();
}
} else if (paraName.equals(SESSIONSTATE)) {
return U8Property.getSessionState() + "";
......@@ -128,4 +128,8 @@ public class M11U8Service implements IUSeries{
return false;
}
@Override
public int getReadRate() {
return readerSeries.getM_curInventoryBuffer().nReadRate;
}
}
......@@ -19,7 +19,6 @@ import com.fn.useries.reader.HEAD;
import com.fn.useries.reader.MessageTran;
import com.fn.useries.utils.StringTool;
import com.fn.useries.utils.Tools;
import com.fntech.Loger;
import java.io.IOException;
import java.io.InputStream;
......@@ -94,14 +93,11 @@ public abstract class ReaderBase {
while (mShouldRunning) {
try {
Log.i("yourTag", "start Read");
Loger.disk_log("Read", "start Read", "U8");
int nLenRead = mInStream.read(buff);
Loger.disk_log("Read Count", "nLenRead == "+nLenRead, "U8");
if (nLenRead <= 0) {
continue;
}
Log.i("yourTag", "串口原始返回 ===>" + Tools.Bytes2HexString(buff, nLenRead));
Loger.disk_log("Read", "串口原始返回 ===>" + Tools.Bytes2HexString(buff, nLenRead), "U8");
if (nLenRead > 0) {
System.arraycopy(buff, 0, btAryBuffer, len_have, nLenRead);
len_have += nLenRead;
......@@ -129,7 +125,6 @@ public abstract class ReaderBase {
}
} else {
Log.e("toolsdebug", "异常情况!协议头错误");
Loger.disk_log("Read", "异常情况!协议头错误", "M10_U8");
/*btAryBuffer = new byte[4096];
buff = new byte[512];*/
len_have = 0;
......@@ -142,7 +137,6 @@ public abstract class ReaderBase {
}
} catch (Exception e) {
Log.e("toolsdebug", "读错误");
Loger.disk_log("读错误", "e=" + e.toString() + "\r\n" + e.getStackTrace(), "M10_U8");
onLostConnect();
return;
}
......@@ -278,17 +272,11 @@ public abstract class ReaderBase {
synchronized (mOutStream) { // 防止并发
mOutStream.write(btArySenderData);
Log.e("yourTag", " 串口发送 ===> " + Tools.Bytes2HexString(btArySenderData, btArySenderData.length));
Loger.disk_log("Write",
StringTool.byteArrayToString(btArySenderData, 0,
btArySenderData.length), "U8");
}
} catch (IOException e) {
Loger.disk_log("写错误", "e=" + e.getMessage() + "\r\n" + e.getStackTrace(), "M10_U8");
onLostConnect();
return -1;
} catch (Exception e) {
Loger.disk_log("写错误", "e=" + e.getMessage() + "\r\n" + e.getStackTrace(), "M10_U8");
return -1;
}
......@@ -683,7 +671,7 @@ public abstract class ReaderBase {
* 读写器地址(0xFF公用地址)
* @param btAryPassWord
* 标签访问密码,4字节
* @param btMembank
* @param btMemBank
* 操作的数据区域(0x01:User Memory, 0x02:TID Memory, 0x03:EPC Memory,
* 0x04:Access Password, 0x05:Kill Password)
* @param btLockType
......@@ -953,7 +941,7 @@ public abstract class ReaderBase {
/**
* 发送裸数据。
*
* @param btReadId
* @param btAryBuf
* 读写器地址(0xFF公用地址)
* @return 成功 :0, 失败:-1
*/
......
package com.stm.asset.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.utils.Tools;
import com.reader.helper.InventoryBuffer;
import com.stm.asset.R;
import com.stm.asset.utils.StringUtils;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
......@@ -29,6 +28,7 @@ public class InventoryAdapter extends BaseAdapter {
public InventoryAdapter(Context context) {
inflater = LayoutInflater.from(context);
dataList = new ArrayList<>();
}
@Override
......@@ -65,10 +65,12 @@ public class InventoryAdapter extends BaseAdapter {
InventoryBuffer.InventoryTagMap inventoryTagMap = dataList.get(position);
// viewHolder.idTxt.setText(String.valueOf(position+1));
try {
String epcStr = inventoryTagMap.strEPC;
byte[] bytes = Tools.stringToByteArray(epcStr);
String str = new String(bytes, StandardCharsets.UTF_8);
viewHolder.epcTxt.setText(str);
// TODO 暂时特殊处理
// String epcStr = inventoryTagMap.strEPC;
// byte[] bytes = Tools.stringToByteArray(epcStr);
// String str = new String(bytes, StandardCharsets.UTF_8);
// viewHolder.epcTxt.setText(str);
viewHolder.epcTxt.setText(inventoryTagMap.strEPC.replaceAll(" ", ""));
} catch (Exception e) {
e.printStackTrace();
}
......@@ -97,11 +99,14 @@ public class InventoryAdapter extends BaseAdapter {
if (!StringUtils.isEmptyOrNull(epcStr)) {
if (!hasItem(epcStr)) {
try {
byte[] bytes = Tools.stringToByteArray(epcStr);
String str = new String(bytes, StandardCharsets.UTF_8).trim();
if (StringUtils.isNumber(str)) {
// TODO 暂时特殊处理
Log.i("InventoryAdapter", "epcStr:" + epcStr.replaceAll(" ", ""));
dataList.add(item);
}
// byte[] bytes = Tools.stringToByteArray(epcStr);
// String str = new String(bytes, StandardCharsets.UTF_8).replaceAll(" ", "");
// if (StringUtils.isNumber(str)) {
// dataList.add(item);
// }
} catch (Exception e) {
e.printStackTrace();
}
......
package com.stm.asset.adapter;
import android.annotation.SuppressLint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.stm.asset.R;
import com.stm.asset.model.TaskInfo;
import com.stm.asset.page.TaskListActivity;
import com.stm.asset.utils.ViewUtil;
import java.util.ArrayList;
import java.util.List;
public class TaskListAdapter extends BaseAdapter {
private final LayoutInflater inflater;
private LinearLayout.LayoutParams lp1,lp2;
private TaskListActivity taskListActivity;
private List<TaskInfo> dataList;
public TaskListAdapter(TaskListActivity activity, int rightWidth) {
inflater = LayoutInflater.from(activity);
this.taskListActivity = activity;
this.lp1 = new LinearLayout.LayoutParams(ViewUtil.getScreenWidth(activity), LinearLayout.LayoutParams.MATCH_PARENT);
this.lp2 = new LinearLayout.LayoutParams(rightWidth, LinearLayout.LayoutParams.MATCH_PARENT);
}
@Override
public int getCount() {
return dataList == null ? 0 : dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView =inflater.inflate(R.layout.view_task_list_item, null);
viewHolder.leftLayout = convertView.findViewById(R.id.task_left_layout);
viewHolder.rightLayout = convertView.findViewById(R.id.task_right_layout);
viewHolder.inventoryLayout = convertView.findViewById(R.id.task_right_inventory_layout);
viewHolder.nameTxt = convertView.findViewById(R.id.task_list_name_txt);
viewHolder.userTxt = convertView.findViewById(R.id.task_list_creator_txt);
viewHolder.deptTxt = convertView.findViewById(R.id.task_list_dept_txt);
viewHolder.leftLayout.setLayoutParams(lp1);
viewHolder.rightLayout.setLayoutParams(lp2);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
TaskInfo taskInfo = dataList.get(position);
viewHolder.nameTxt.setText(taskInfo.getInventoryName());
viewHolder.userTxt.setText(taskInfo.getInventoryEmpName());
viewHolder.deptTxt.setText(taskInfo.getInventoryDeptName());
viewHolder.inventoryLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
taskListActivity.gotoCheckPage(taskInfo.getId());
}
});
return convertView;
}
public void setData(List<TaskInfo> data, boolean reset) {
if (dataList == null) {
dataList = new ArrayList<>();
}
if (reset) {
dataList.clear();
}
if (data != null && data.size() > 0) {
dataList.addAll(data);
}
notifyDataSetChanged();
}
private static class ViewHolder {
private TextView nameTxt, userTxt, deptTxt;
private LinearLayout leftLayout, rightLayout, inventoryLayout;
}
}
......@@ -2,10 +2,9 @@ package com.stm.asset.base;
public class ConfigKey {
public final static String GATEWAYIP = "mfms.citictrust.com.cn";
public final static String GATWAYPORT = "";
// http://10.50.251.101 18081 测试地址
// https://fms.citictrust.com.cn 生产地址
public final static String GATEWAYIP = "stream.hulianmofang.cn";
public final static String GATWAYPORT = "18885";
// http://stream.hulianmofang.cn 18885 演示地址
public final static String PLAYFORM = "FMPAPP";
// CJFKAPP 长江养老
......@@ -14,6 +13,6 @@ public class ConfigKey {
public final static String SIGNATUREPASSWORD = "stream123"; // 测试环境请配置成stream123(生产环境具体再通知)
public final static String HTTPS_CERTIFICATION_NAME = "feiyongmofang.cer";
public final static boolean DEBUG = true; // 是否打印测试数据
public final static boolean ISOPENHTTPS = true; // 是否开启https请求方式
public final static boolean ISOPENHTTPS = false; // 是否开启https请求方式
}
......@@ -4,10 +4,11 @@ public class InterfaceKey {
private final static String GETWAY = "GATEWAY/";
public final static String UNIONLOGINAPP = GETWAY + "app/login"; // 登录
public final static String QURYPAGEHOMEUSERINFO = GETWAY + "app/quryPageHomeUserInfo"; // 获取用户信息
public final static String QUERYVERSIONAPP = GETWAY + "queryAppVersionApp"; // 查询版本号
public final static String SCANINVENTORY = GETWAY + "app/ams/scanInventory"; // 上传资产编号
public final static String UNIONLOGINAPP = "FMP/" + "login"; // 登录
public final static String QURYPAGEHOMEUSERINFO = "FMP/" + "quryPageHomeUserInfo"; // 获取用户信息
public final static String QUERYVERSIONAPP = "FMP/" + "queryAppVersionApp"; // 查询版本号
public final static String QUERYINVENTORYMAINPAGE = "FMP/" + "ams/inventory/queryInventoryMainPage"; // 查询盘点任务
public final static String SCANINVENTORY = "FMP/" + "ams/inventory/mergeInventoryDetailByAssetNum"; // 上传资产编号
......
......@@ -4,6 +4,8 @@ import com.stm.asset.base.InterfaceKey;
import com.stm.asset.json.CommonMapJson;
import com.stm.asset.json.CommonStringJson;
import com.stm.asset.json.ListUserInfo;
import com.stm.asset.json.TaskListJson;
import com.stm.asset.utils.SM2Util;
/**
* 类名称:HttpService
......@@ -26,13 +28,14 @@ public class HttpService {
public void unionLoginApp(String accout, String password, RequestCallback<CommonStringJson> requestCallback) {
RequestParams params = new RequestParams();
params.addBodyParameter("username", accout);
params.addBodyParameter("password", password);
params.addBodyParameter("username", SM2Util.encrypt(accout));
params.addBodyParameter("password", SM2Util.encrypt(password));
HttpUtil.getInstance().sendJson(InterfaceKey.UNIONLOGINAPP, params, requestCallback);
}
public void quryPageHomeUserInfo(String accessToken, RequestCallback<ListUserInfo> requestCallback) {
RequestParams params = new RequestParams();
params.addHeader("Acess-Token", accessToken);
params.addBodyParameter("accessToken", accessToken);
HttpUtil.getInstance().sendJson(InterfaceKey.QURYPAGEHOMEUSERINFO, params, requestCallback);
}
......@@ -42,9 +45,19 @@ public class HttpService {
HttpUtil.getInstance().sendJson(InterfaceKey.QUERYVERSIONAPP, params, requestCallback);
}
public void scanInventory(String numberList, RequestCallback<CommonStringJson> requestCallback) {
public void queryInventoryMainPage(int pageNum, int pageSize, RequestCallback<TaskListJson> requestCallback) {
RequestParams params = new RequestParams();
params.addBodyParameter("numList", numberList);
params.addBodyParameter("pageNum", String.valueOf(pageNum));
params.addBodyParameter("pageSize", String.valueOf(pageSize));
params.addBodyParameter("pageStatus", "amsInventoryExecution");
params.addBodyParameter("inventoryType", "0");
HttpUtil.getInstance().sendJson(InterfaceKey.QUERYINVENTORYMAINPAGE, params, requestCallback);
}
public void scanInventory(String mainId, String numberList, RequestCallback<CommonStringJson> requestCallback) {
RequestParams params = new RequestParams();
params.addBodyParameter("mainId", mainId);
params.addBodyParameter("assetNumListStr", numberList);
HttpUtil.getInstance().sendJson(InterfaceKey.SCANINVENTORY, params, requestCallback);
}
......
......@@ -42,10 +42,10 @@ public class HttpUtil {
e.printStackTrace();
}
}
builder.callTimeout(6000, TimeUnit.MILLISECONDS);
builder.connectTimeout(6000, TimeUnit.MILLISECONDS);
builder.readTimeout(30000, TimeUnit.MILLISECONDS);
builder.writeTimeout(30000, TimeUnit.MILLISECONDS);
builder.callTimeout(20000, TimeUnit.MILLISECONDS);
builder.connectTimeout(20000, TimeUnit.MILLISECONDS);
builder.readTimeout(60000, TimeUnit.MILLISECONDS);
builder.writeTimeout(60000, TimeUnit.MILLISECONDS);
okHttpClient = builder.build();
}
......@@ -70,12 +70,13 @@ public class HttpUtil {
Log.i("HttpUtil", String.format("请求方法: %s", url));
builder.url(url);
if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) {
Log.i("HttpUtil", String.format("请求参数 head:%s", new Gson().toJson(requestParams.getHeaders())));
for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) {
builder.header(headerEntry.getKey(), headerEntry.getValue());
}
}
if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) {
Log.i("HttpUtil", String.format("请求参数:%s", new Gson().toJson(requestParams.getBodyParams())));
Log.i("HttpUtil", String.format("请求参数 body:%s", new Gson().toJson(requestParams.getBodyParams())));
// RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams()));
// builder.post(requestBody);
FormBody.Builder bodyBuilder = new FormBody.Builder();
......@@ -123,12 +124,13 @@ public class HttpUtil {
Log.i("HttpUtil", String.format("请求方法: %s", url));
builder.url(url);
if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) {
Log.i("HttpUtil", String.format("请求参数 head:%s", new Gson().toJson(requestParams.getHeaders())));
for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) {
builder.header(headerEntry.getKey(), headerEntry.getValue());
}
}
if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) {
Log.i("HttpUtil", String.format("请求参数:%s", new Gson().toJson(requestParams.getBodyParams())));
Log.i("HttpUtil", String.format("请求参数 body:%s", new Gson().toJson(requestParams.getBodyParams())));
// RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams()));
// builder.post(requestBody);
FormBody.Builder bodyBuilder = new FormBody.Builder();
......
......@@ -19,6 +19,7 @@ public class RequestParams {
private Map<String, String> bodyParams;
public RequestParams() {
addCommonHead();
addCommonParams();
}
......@@ -50,21 +51,27 @@ public class RequestParams {
bodyParams.put(name, value);
}
private void addCommonHead() {
if (this.headers == null) {
this.headers = new HashMap<>();
}
long currentTime = System.currentTimeMillis();
headers.put("Current-Time", String.valueOf(currentTime));
headers.put("Authenticator-Data", MD5Util.getAuthenticator(currentTime));
if (StmApplication.getInstance().getUserInfo() != null) {
headers.put("Acess-Token", PropertyUtil.getAccessToken(StmApplication.getInstance().getApplicationContext()));
}
}
private void addCommonParams(){
if (bodyParams == null) {
bodyParams = new HashMap<>();
}
bodyParams.put("machinecode", "h5");
bodyParams.put("machinetype", "h5");
bodyParams.put("channelcode", "APP");
bodyParams.put("machinecode", "phone");
bodyParams.put("machinetype", "phone");
bodyParams.put("channelcode", "VUE");
bodyParams.put("terminalcode", "fee");
bodyParams.put("platform", PropertyUtil.getHttpPlatform(StmApplication.getInstance().getApplicationContext()));
long currentTime = System.currentTimeMillis();
bodyParams.put("currenttime", String.valueOf(currentTime));
bodyParams.put("authenticator", MD5Util.getAuthenticator(currentTime));
if (StmApplication.getInstance().getUserInfo() != null) {
bodyParams.put("accessToken", PropertyUtil.getAccessToken(StmApplication.getInstance().getApplicationContext()));
}
}
}
\ No newline at end of file
package com.stm.asset.json;
import com.stm.asset.model.TaskInfo;
import java.io.Serializable;
import java.util.List;
public class TaskJsonInfo implements Serializable {
private static final long serialVersionUID = 7340008696696353349L;
private String pageNum;
private String pageSize;
private String size;
private String total;
private String pages;
private List<TaskInfo> list;
public String getPageNum() {
return pageNum;
}
public void setPageNum(String pageNum) {
this.pageNum = pageNum;
}
public String getPageSize() {
return pageSize;
}
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getTotal() {
return total;
}
public void setTotal(String total) {
this.total = total;
}
public String getPages() {
return pages;
}
public void setPages(String pages) {
this.pages = pages;
}
public List<TaskInfo> getList() {
return list;
}
public void setList(List<TaskInfo> list) {
this.list = list;
}
}
package com.stm.asset.json;
import com.stm.asset.model.LoginInfo;
public class TaskListJson extends BaseInfo {
private static final long serialVersionUID = 1987319819308033456L;
private TaskJsonInfo rspData;
public void setRspData(TaskJsonInfo rspData) {
this.rspData = rspData;
}
public TaskJsonInfo getRspData() {
return rspData==null?new TaskJsonInfo():rspData;
}
}
package com.stm.asset.model;
import java.io.Serializable;
/**
* 类名称:TaskInfo
* 类描述:盘点任务实体类
* 创建人:story
* 创建时间:2023-03-27
*/
public class TaskInfo implements Serializable {
private static final long serialVersionUID = -2803924680531753060L;
private String id;
private String inventoryName; // 任务名称
private String statusName; // 任务状态
private String inventoryEmpName; // 盘点人
private String inventoryDeptName; // 盘点部门
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getInventoryName() {
return inventoryName;
}
public void setInventoryName(String inventoryName) {
this.inventoryName = inventoryName;
}
public String getStatusName() {
return statusName;
}
public void setStatusName(String statusName) {
this.statusName = statusName;
}
public String getInventoryEmpName() {
return inventoryEmpName;
}
public void setInventoryEmpName(String inventoryEmpName) {
this.inventoryEmpName = inventoryEmpName;
}
public String getInventoryDeptName() {
return inventoryDeptName;
}
public void setInventoryDeptName(String inventoryDeptName) {
this.inventoryDeptName = inventoryDeptName;
}
}
......@@ -31,6 +31,7 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
private TaskFragment unfinishedTaskFgm;
private TaskFragment finishedTaskFgm;
private LoadingDialog loadingDialog;
private String mainId = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -41,12 +42,15 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
private void initView() {
initTitle();
titleTxt.setText("盘点任务");
titleTxt.setText("资产盘点");
if (getIntent().getExtras() != null) {
mainId = getIntent().getExtras().getString("mainId");
}
findViewById(R.id.common_title_back_layout).setOnClickListener(this);
unfinishedTxt = findViewById(R.id.task_unfinished_txt);
finishedTxt = findViewById(R.id.task_finished_txt);
unfinishedTxt.setText("未盘点任务(0)");
finishedTxt.setText("已完成任务");
unfinishedTxt.setText("未盘点资产(0)");
finishedTxt.setText("已完成资产");
unfinishedTxt.setSelected(true);
finishedTxt.setSelected(false);
unfinishedTxt.setOnClickListener(this);
......@@ -89,15 +93,19 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
}
public void setUnfinishedNum(int num) {
String str = "未盘点任务(" + num + ")";
String str = "未盘点资产(" + num + ")";
unfinishedTxt.setText(str);
}
public void setFinishedNum(int num) {
String str = "已完成任务";
String str = "已完成资产";
finishedTxt.setText(str);
}
public String getMainId() {
return mainId;
}
public LoadingDialog getLoadingDialog() {
return loadingDialog;
}
......
......@@ -2,6 +2,7 @@ package com.stm.asset.page;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
......@@ -19,7 +20,9 @@ import com.fn.useries.utils.MusicPlayer;
import com.stm.asset.R;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
import com.stm.asset.utils.StringUtils;
import com.stm.asset.utils.ViewUtil;
import com.stm.asset.view.LoadingDialog;
import com.stm.asset.view.TextMoveLayout;
/**
......@@ -40,12 +43,15 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private M11U8Service mUSeries;
private int screenWidth;
private boolean firstIn = true;
private LoadingDialog loadingDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_set);
initView();
loadingDialog = new LoadingDialog(this);
}
private void initView() {
......@@ -61,7 +67,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
powerLayout = findViewById(R.id.set_power_layout);
powerSb = findViewById(R.id.set_power_sb);
powerSb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp());
powerSb.setMax(13);
powerSb.setMax(33);
layoutParams = new ViewGroup.LayoutParams(screenWidth, 40);
temperatureEt = findViewById(R.id.set_temperature_et);
......@@ -81,10 +87,18 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
mUSeries.initService();
powerLayout.removeAllViews();
powerLayout.addView(moveTextDBM, layoutParams);
if (mUSeries != null) {
loadingDialog.show();
if (mUSeries != null && firstIn) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
loadingDialog.dismiss();
firstIn = false;
getPower();
getInventoryParams();
}
}, 1500);
}
}
@Override
......@@ -95,16 +109,14 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private void getPower() {
try {
Thread.sleep(800);
String outPowerSetParams = mUSeries.getParams(M11U8Service.PARA_POWER);
Log.i("DeviceSetActivity", "M10_U8:getPower " + outPowerSetParams);
if (outPowerSetParams.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
StmApplication.getInstance().showToastShort(getResources().getString(R.string.device_set_get_power_fail) + " " + outPowerSetParams);
return;
}
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
refreshPowerView(outPowerSetParams);
// 显示软件提示音
}
});
} catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:getPowerParamsException " + e.toString());
}
......@@ -137,15 +149,19 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
temperatureEt.setText("");
try {
String strTemperature = mUSeries.getParams(M11U8Service.TEMPERATURE);
if (strTemperature.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {// 接收异常
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
StmApplication.getInstance().showToastShort(ERROR.RECEVICE_INCOMPLETE);
return;
}
Log.i("DeviceSetActivity", "M10_U8:getTemperature " + strTemperature);
if (!StringUtils.isEmptyOrNull(strTemperature)) {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
MusicPlayer.getInstance().play(MusicPlayer.Type.OK);
temperatureEt.setText(strTemperature);
} catch (Exception e) {
}
});
} else {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
}
} catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:getTemperatureParamsException" + e.toString());
e.printStackTrace();
}
......
......@@ -2,6 +2,7 @@ package com.stm.asset.page;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
......@@ -11,9 +12,8 @@ import androidx.annotation.Nullable;
import androidx.room.Room;
import com.fn.useries.operation.M11U8Service;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.reader.server.ReaderHelper;
import com.fn.useries.utils.Tools;
import com.reader.helper.InventoryBuffer;
import com.series.inter.InventoryInterface;
import com.stm.asset.R;
import com.stm.asset.adapter.InventoryAdapter;
......@@ -40,13 +40,12 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
private TextView txtCountTxt;
private M11U8Service mUSeries;
private ReaderHelper mReaderHelper;
private InventoryBuffer m_curInventoryBuffer;
private Handler mHandler;
private boolean isInventory;
private long mRefreshTime;
private InventoryAdapter inventoryAdapter;
private InventoryInfoDao inventoryInfoDao;
private int inventoryTotal = 0; // 盘存到的标签数
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
......@@ -55,8 +54,6 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
initView();
mHandler = new Handler();
try {
mReaderHelper = ReaderHelper.getDefaultHelper();
m_curInventoryBuffer = mReaderHelper.getCurInventoryBuffer();
InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao();
mUSeries = M11U8Service.getInstance();
......@@ -103,14 +100,21 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
beginBtn.setText(R.string.inventory_btn_doing);
isInventory = true;
mRefreshTime = new Date().getTime();
inventoryTotal = 0;
mUSeries.startInventory(new InventoryInterface() {
@Override
public void success(Object obj) {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
inventoryTotal++;
InventoryBuffer.InventoryTagMap tag = (InventoryBuffer.InventoryTagMap) obj;
List<InventoryBuffer.InventoryTagMap> list = new ArrayList<>();
list.add(tag);
inventoryAdapter.setData(list, false);
}
});
}
@Override
public void fail(String msg) {
......@@ -139,11 +143,14 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
List<InventoryInfo> insertList = new ArrayList<>();
for (InventoryBuffer.InventoryTagMap map : dataList) {
try {
String epcStr = map.strEPC;
byte[] bytes = Tools.stringToByteArray(epcStr);
String str = new String(bytes, StandardCharsets.UTF_8);
// TODO 暂时特殊处理
// String epcStr = map.strEPC;
// byte[] bytes = Tools.stringToByteArray(epcStr);
// String str = new String(bytes, StandardCharsets.UTF_8);
// InventoryInfo inventoryInfo = new InventoryInfo();
// inventoryInfo.setNumber(str.replaceAll(" ", ""));
InventoryInfo inventoryInfo = new InventoryInfo();
inventoryInfo.setNumber(str.trim());
inventoryInfo.setNumber(map.strEPC.replaceAll(" ", ""));
inventoryInfo.setStatus("0");
inventoryInfo.setUserName(StmApplication.getInstance().getUserInfo().getUsername());
insertList.add(inventoryInfo);
......@@ -159,6 +166,7 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
@Override
public void run() {
StmApplication.getInstance().showToastShort("保存成功");
inventoryTotal = 0;
inventoryAdapter.setData(null, true);
}
});
......@@ -172,21 +180,25 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
private Runnable mRefreshRunnable = new Runnable() {
public void run() {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
refreshText();
mHandler.postDelayed(this, 2000);
}
});
mHandler.postDelayed(this, 1000);
}
};
private void refreshText() {
String countTxtFormat = InventoryActivity.this.getString(R.string.inventory_count_text);
long now = new Date().getTime();
String text = String.format(countTxtFormat, inventoryAdapter.getCount(), mReaderHelper.getInventoryTotal(), m_curInventoryBuffer.nReadRate, (now - mRefreshTime) / 1000);
// List<InventoryBuffer.InventoryTagMap> list = m_curInventoryBuffer.lsTagList;
// if (list.size() > 0) {
// InventoryBuffer.InventoryTagMap item = list.get(0);
// String str = "strPC:" + item.strPC + " strCRC:" + item.strCRC + " strEPC:" + item.strEPC + " btAntId:" + item.btAntId + " strRSSI:" + item.strRSSI + " nReadCount:" + item.nReadCount + " strFreq:" + item.strFreq + " nAnt1:" + item.nAnt1 + " nAnt2:" + item.nAnt2 + " nAnt3:" + item.nAnt3 + " nAnt4:" + item.nAnt4;
// StmApplication.getInstance().showToastShort(str);
// }
int time = (int) ((now - mRefreshTime) / 1000);
if (time == 0) {
time = 1;
}
int rate = inventoryTotal / time;
String text = String.format(countTxtFormat, inventoryAdapter.getCount(), inventoryTotal, rate, time);
txtCountTxt.setText(text);
}
}
......@@ -101,7 +101,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
case R.id.main_inventory_data_layout:
if (userInfo != null) {
Intent gotoTaskIntent = new Intent();
gotoTaskIntent.setClass(MainActivity.this, CheckTaskActivity.class);
gotoTaskIntent.setClass(MainActivity.this, TaskListActivity.class);
startActivity(gotoTaskIntent);
} else {
Intent loginIntent = new Intent();
......@@ -119,6 +119,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
loginIntent.setClass(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
}
break;
case R.id.main_settings_layout:
Intent deviceSetIntent = new Intent();
deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class);
......@@ -145,7 +146,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
}
private void showExitDialog() {
int dialog_width = (int) (ViewUtil.getScreenWidth(this) * 4 / 5.0);
int dialog_width = (int) (ViewUtil.getScreenWidth(this) * 3 / 5.0);
final CommonAlertDialog dialog = new CommonAlertDialog(MainActivity.this);
dialog.setViewParams(new LinearLayout.LayoutParams(dialog_width, -2));
dialog.show();
......
......@@ -26,6 +26,7 @@ import com.stm.asset.http.RequestCallback;
import com.stm.asset.json.CommonStringJson;
import com.stm.asset.model.InventoryInfo;
import com.stm.asset.utils.NetworkUtil;
import com.stm.asset.utils.StringUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -120,7 +121,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public void onClick(View view) {
switch (view.getId()) {
case R.id.task_upload_btn:
if (NetworkUtil.isNetworkAvailable(checkTaskActivity)) {
if (NetworkUtil.isNetworkAvailable(checkTaskActivity) && !StringUtils.isEmptyOrNull(checkTaskActivity.getMainId())) {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
List<String> strList = new ArrayList<>();
for (InventoryInfo info : inventoryInfoList) {
......@@ -142,7 +143,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
sbf.append("]");
}
checkTaskActivity.getLoadingDialog().show();
HttpService.getInstance().scanInventory(sbf.toString(), scan_cb);
HttpService.getInstance().scanInventory(checkTaskActivity.getMainId(), sbf.toString(), scan_cb);
}
} else {
StmApplication.getInstance().showToastShort(getString(R.string.net_settings));
......@@ -207,31 +208,15 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public void onSuccess(CommonStringJson responseInfo) {
checkTaskActivity.getLoadingDialog().dismiss();
if (responseInfo.isSucess()) {
String str = responseInfo.getRspData();
Map<String, Object> failedMap = new Gson().fromJson(str, new TypeToken<Map<String, Object>>(){}.getType());
if (failedMap != null && failedMap.get("numList") != null) {
List<String> numList = (List<String>) failedMap.get("numList");
if (numList != null && numList.size() > 0) {
StmApplication.getInstance().showToastShort(String.valueOf(failedMap.get("msg")));
// 处理盘点失败数据
StmApplication.getInstance().showToastShort("上传成功");
// 处理盘点数据状态
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
for (InventoryInfo inventoryInfo : inventoryInfoList) {
boolean success = true;
for (String itemStr : numList) {
if (itemStr.equals(inventoryInfo.getNumber())) {
success = false;
}
}
if (success) {
inventoryInfo.setStatus("2");
inventoryInfoDao.updateInventory(inventoryInfo);
} else {
inventoryInfo.setStatus("1");
inventoryInfoDao.updateInventory(inventoryInfo);
}
}
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
......@@ -242,12 +227,47 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
}
}
});
} else {
StmApplication.getInstance().showToastShort("上传成功");
}
} else {
StmApplication.getInstance().showToastShort("上传成功");
}
// String str = responseInfo.getRspData();
// Map<String, Object> failedMap = new Gson().fromJson(str, new TypeToken<Map<String, Object>>(){}.getType());
// if (failedMap != null && failedMap.get("numList") != null) {
// List<String> numList = (List<String>) failedMap.get("numList");
// if (numList != null && numList.size() > 0) {
// StmApplication.getInstance().showToastShort(String.valueOf(failedMap.get("msg")));
// // 处理盘点失败数据
// StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
// @Override
// public void run() {
// if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
// for (InventoryInfo inventoryInfo : inventoryInfoList) {
// boolean success = true;
// for (String itemStr : numList) {
// if (itemStr.equals(inventoryInfo.getNumber())) {
// success = false;
// }
// }
// if (success) {
// inventoryInfo.setStatus("2");
// inventoryInfoDao.updateInventory(inventoryInfo);
// } else {
// inventoryInfo.setStatus("1");
// inventoryInfoDao.updateInventory(inventoryInfo);
// }
// }
// StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
// @Override
// public void run() {
// checkTaskActivity.refreshData();
// }
// });
// }
// }
// });
// } else {
// StmApplication.getInstance().showToastShort("上传成功");
// }
// } else {
// StmApplication.getInstance().showToastShort("上传成功");
// }
} else {
StmApplication.getInstance().showToastShort(responseInfo.getRspMsg());
}
......
package com.stm.asset.page;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AbsListView;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
import com.stm.asset.R;
import com.stm.asset.adapter.TaskListAdapter;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
import com.stm.asset.http.HttpException;
import com.stm.asset.http.HttpService;
import com.stm.asset.http.RequestCallback;
import com.stm.asset.json.TaskListJson;
import com.stm.asset.utils.NetworkUtil;
import com.stm.asset.utils.ViewUtil;
import com.stm.asset.view.LoadingDialog;
import com.stm.asset.view.SwipeListView;
public class TaskListActivity extends BaseActivity {
private RelativeLayout noneLayout;
private SwipeListView listView;
private TaskListAdapter taskListAdapter;
private LoadingDialog loadingDialog;
private int pageNum = 0;
private final static int PAGE_SIZE = 10;
private boolean isLoadFinish;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_task_list);
initView();
}
private void initView() {
initTitle();
titleTxt.setText("盘点任务");
listView = findViewById(R.id.task_data_list);
listView.setRightViewWidth(ViewUtil.dip2px(this, 160));
listView.setOnScrollListener(new ListScrollListener());
taskListAdapter = new TaskListAdapter(this, listView.getRightViewWidth());
listView.setAdapter(taskListAdapter);
noneLayout = findViewById(R.id.task_data_none_layout);
loadingDialog = new LoadingDialog(this);
}
@Override
protected void onResume() {
super.onResume();
refreshData();
}
private void loadData() {
if (NetworkUtil.isNetworkAvailable(this)) {
loadingDialog.show();
StmApplication.getInstance().getAppExecutors().networkIO().execute(new Runnable() {
@Override
public void run() {
pageNum++;
HttpService.getInstance().queryInventoryMainPage(pageNum, PAGE_SIZE, queryTask_cb);
}
});
} else {
StmApplication.getInstance().showToastShort(getString(R.string.net_settings));
}
}
private void refreshData() {
pageNum = 0;
loadData();
}
public void gotoCheckPage(String id) {
listView.hiddenCurrentRight();
Intent intent = new Intent();
intent.setClass(this, CheckTaskActivity.class);
intent.putExtra("mainId", id);
startActivity(intent);
}
private RequestCallback<TaskListJson> queryTask_cb = new RequestCallback<TaskListJson>(TaskListJson.class) {
@Override
public void onSuccess(TaskListJson responseInfo) {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
loadingDialog.dismiss();
if (responseInfo.isSucess()) {
taskListAdapter.setData(responseInfo.getRspData().getList(), pageNum == 1);
isLoadFinish = (pageNum == Integer.parseInt(responseInfo.getRspData().getPages()));
} else {
StmApplication.getInstance().showToastShort(responseInfo.getRspMsg());
isLoadFinish = true;
}
if (taskListAdapter.getCount() == 0) {
noneLayout.setVisibility(View.VISIBLE);
} else {
noneLayout.setVisibility(View.GONE);
}
}
});
}
@Override
public void onFailure(HttpException error, String msg) {
loadingDialog.dismiss();
if (taskListAdapter.getCount() == 0) {
noneLayout.setVisibility(View.VISIBLE);
}
StmApplication.getInstance().showToastShort(msg);
}
};
/**
* SCROLL_STATE_FLING:开始滑动 SCROLL_STATE_TOUCH_SCROLL:正在滑动
* SCROLL_STATE_IDLE:停止滑动
*/
private class ListScrollListener implements AbsListView.OnScrollListener {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
if (view.getLastVisiblePosition() == view.getCount() - 1) {
if (!isLoadFinish)
loadData();
}
}
}
}
}
package com.stm.asset.utils;
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.SM2;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
/**
* SM2国密工具类
* @author LIULEI
*/
public class SM2Util {
private final static String publicKey = "043aa5e5b9b5f4f74596e964359ac229c3f6fe0ec651b46406d42b345984b6abc1d0abbe82618a8dd56df08b0e9b7fd1a363e492ff3e24f140a7d1ced1f1aa9f20";
private final static String publicQKey = "043aa5e5b9b5f4f74596e964359ac229c3f6fe0ec651b46406d42b345984b6abc1d0abbe82618a8dd56df08b0e9b7fd1a363e492ff3e24f140a7d1ced1f1aa9f20";
private final static String privateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgoy5Dj/P5Dw+xhkPLz7riyylgBOkUDKmxfb0a4PzVCgigCgYIKoEcz1UBgi2hRANCAAQ6peW5tfT3RZbpZDWawinD9v4OxlG0ZAbUKzRZhLarwdCrvoJhio3VbfCLDpt/0aNj5JL/PiTxQKfRztHxqp8g";
public static void getSm2KeyPair() {
SM2 sm2 = SmUtil.sm2();
/* 公钥 */
String publicKey = sm2.getPublicKeyBase64();
System.out.println("publicKey>>【" + publicKey + "】");
/* js端公钥 JS代码实现 SM2的方案,都是直接使用的私钥的d值和公钥的q值直接进行的加解密,所以后端返回的最好是从公钥里面提取的q值,以q值作为js端的加密公钥 */
String publicQKey = HexUtil.encodeHexStr(((BCECPublicKey)sm2.getPublicKey()).getQ().getEncoded(false));
System.out.println("publicQKey>>【" + publicQKey + "】");
/* 私钥 */
String privateKey = sm2.getPrivateKeyBase64();
System.out.println("privateKey>>【" + privateKey + "】");
}
/**
* 公钥加密
* @param data
* @param publicKey
* @return
*/
public static String encrypt(String data, String publicKey) {
SM2 sm2 = SmUtil.sm2(null, publicKey);
String encryptStr = sm2.encryptBcd(data, KeyType.PublicKey);
return encryptStr;
}
/**
* 公钥加密
* @param data
* @return
*/
public static String encrypt(String data) {
return encrypt(data, publicKey);
}
/**
* 私钥解密 公钥加密密文
* @param encryptStr
* @param privateKey
* @return
*/
public static String decrypt(String encryptStr, String privateKey) {
if (!encryptStr.startsWith("04")) {
encryptStr = "04".concat(encryptStr);
}
SM2 sm2 = SmUtil.sm2(privateKey, null);
String decryptStr = StrUtil.utf8Str(sm2.decryptFromBcd(encryptStr, KeyType.PrivateKey));
return decryptStr;
}
/**
* 私钥解密 公钥加密密文
* @param encryptStr
* @return
*/
public static String decrypt(String encryptStr) {
return decrypt(encryptStr, privateKey);
}
public static void main(String[] args) {
getSm2KeyPair();
}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/common_layout_click_color" android:state_pressed="true"></item>
<item android:drawable="@android:color/white"></item>
</selector>
\ No newline at end of file
......@@ -41,7 +41,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/normal_text_size"/>
android:textSize="@dimen/msmall_text_size"/>
</HorizontalScrollView>
<LinearLayout
......@@ -58,7 +58,7 @@
android:layout_marginStart="@dimen/xxlarge_padding"
android:layout_marginEnd="@dimen/xlarge_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:textSize="@dimen/small_text_size"
android:textColor="@android:color/white"
android:text="@string/inventory_btn_begin"/>
......@@ -70,7 +70,7 @@
android:layout_marginStart="@dimen/xlarge_padding"
android:layout_marginEnd="@dimen/xxlarge_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:textSize="@dimen/small_text_size"
android:textColor="@android:color/white"
android:text="@string/inventory_btn_finish"/>
......@@ -82,17 +82,12 @@
android:layout_marginStart="@dimen/xlarge_padding"
android:layout_marginEnd="@dimen/xxlarge_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:textSize="@dimen/small_text_size"
android:textColor="@android:color/white"
android:text="@string/inventory_btn_save"/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -3,8 +3,7 @@
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=".page.SetAndSaveActivity">
android:layout_height="match_parent">
<include
android:id="@+id/base_set_title"
......
<?xml version="1.0" encoding="utf-8"?>
<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=".page.TaskListActivity">
<include
android:id="@+id/task_list_title"
layout="@layout/view_common_title"
app:layout_constraintTop_toTopOf="parent"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/top_title_bar_height_size"
app:layout_constraintBottom_toBottomOf="parent"
android:orientation="vertical">
<com.stm.asset.view.SwipeListView
android:id="@+id/task_data_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/task_list_margin_top"
android:layout_marginBottom="@dimen/task_list_margin_bottom"
android:dividerHeight="@dimen/xxsmall_padding"
android:divider="@color/colorPrimary"
android:fadingEdge="none"
android:overScrollMode="never"
android:scrollbars="none"/>
<include
android:id="@+id/task_data_none_layout"
layout="@layout/view_common_list_none"
android:visibility="gone" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/task_left_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/normal_padding"
android:background="@drawable/bg_common_layout_click_white"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_name"/>
<TextView
android:id="@+id/task_list_name_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_user"/>
<TextView
android:id="@+id/task_list_creator_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_dept"/>
<TextView
android:id="@+id/task_list_dept_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/task_right_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/task_list_item_lien_color"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/task_right_inventory_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center">
<TextView
android:id="@+id/pos_right_edit_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/task_list_inventory_btn"
android:textColor="@android:color/white"
android:textSize="@dimen/small_text_size" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SlidingMenu">
<attr name="mode">
<enum name="left" value="0" />
<enum name="right" value="1" />
</attr>
<attr name="viewAbove" format="reference" />
<attr name="viewBehind" format="reference" />
<attr name="behindOffset" format="dimension" />
<attr name="behindWidth" format="dimension" />
<attr name="behindScrollScale" format="float" />
<attr name="touchModeAbove">
<enum name="margin" value="0" />
<enum name="fullscreen" value="1" />
</attr>
<attr name="touchModeBehind">
<enum name="margin" value="0" />
<enum name="fullscreen" value="1" />
</attr>
<attr name="shadowDrawable" format="reference" />
<attr name="shadowWidth" format="dimension" />
<attr name="fadeEnabled" format="boolean" />
<attr name="fadeDegree" format="float" />
<attr name="selectorEnabled" format="boolean" />
<attr name="selectorDrawable" format="reference" />
</declare-styleable>
<declare-styleable name="swipelistviewstyle">
<attr name="right_width" format="dimension"></attr>
</declare-styleable>
<declare-styleable name="memoAtt">
<attr name="length" format="integer"></attr>
<attr name="hint" format="string"></attr>
<attr name="textsize" format="integer"></attr>
<attr name="minline" format="integer"></attr>
</declare-styleable>
<declare-styleable name="chatcirleview">
<attr name="bgColor" format="color" />
<attr name="textSize" format="dimension" />
<attr name="textValue" format="string" />
</declare-styleable>
<declare-styleable name="ReportView">
<attr name="storkeWidth" format="integer"></attr>
<attr name="centerTextSize" format="dimension"></attr>
<attr name="titleTextSize" format="dimension"></attr>
<attr name="backgroundColor" format="color"></attr>
<attr name="showColor" format="color"></attr>
<attr name="textColor" format="color"></attr>
<attr name="textColorSecondary" format="color"></attr>
<attr name="marginTop" format="integer"></attr>
</declare-styleable>
<declare-styleable name="SwitchButton">
<attr name="tintColor" format="reference|color" />
<attr name="thumbTintColor" format="reference|color" />
<attr name="strokeWidth" format="reference|dimension" />
<attr name="isOn" format="reference|boolean" />
</declare-styleable>
<declare-styleable name="SideBarView">
<attr name="barstring" format="string" />
</declare-styleable>
</resources>
\ No newline at end of file
......@@ -8,6 +8,10 @@
<color name="common_txt_value">#202020</color>
<color name="common_txt_key">#6b6b6b</color>
<color name="common_while_click">#E2E2E2</color>
<color name="common_layout_click_color">#E2E2E2</color>
<!-- 盘点任务列表 -->
<color name="task_list_item_lien_color">#DBDBDB</color>
<!-- 太保安全键盘 -->
<color name="deepDark">#222222</color>
......
......@@ -44,6 +44,10 @@
<dimen name="inventory_btn_margin_bottom">30dp</dimen>
<!-- 盘点任务列表页面 -->
<dimen name="task_list_margin_top">2dp</dimen>
<dimen name="task_list_margin_bottom">8dp</dimen>
<!-- 盘点任务列表页面 -->
<dimen name="check_task_item_height">35dp</dimen>
<dimen name="check_task_tab_height">50dp</dimen>
<dimen name="check_task_margin_bottom">20dp</dimen>
......
......@@ -2,4 +2,32 @@
<resources>
<item name="special_define_set_radio" type="id" />
<item name="special_define_set_text" type="id" />
<item name="selected_view" type="id"/>
<item type="id" name="parent_id"></item>
<item type="id" name="child_id"></item>
<item type="id" name="bill_item_key"></item>
<item type="id" name="bill_item_pindex"></item>
<item type="id" name="bill_item_mindex"></item>
<item type="id" name="bill_item_index"></item>
<item type="id" name="right_item"></item>
<item type="id" name="bill_column_index"></item>
<item type="id" name="bill_column_code"></item>
<item type="id" name="auto_focus"/>
<item type="id" name="decode"/>
<item type="id" name="decode_failed"/>
<item type="id" name="decode_succeeded"/>
<item type="id" name="encode_failed"/>
<item type="id" name="encode_succeeded"/>
<item type="id" name="launch_product_query"/>
<item type="id" name="quit"/>
<item type="id" name="restart_preview"/>
<item type="id" name="return_scan_result"/>
<item type="id" name="search_book_contents_failed"/>
<item type="id" name="search_book_contents_succeeded"/>
</resources>
\ No newline at end of file
......@@ -22,6 +22,12 @@
<string name="inventory_count_text" formatted="false">已盘:%d个,总数:%d条,速度:%d个/秒,耗时:%d秒</string>
<string name="inventory_item_epc">资产编码</string>
<!-- 后台返回盘点任务列表页面 -->
<string name="task_list_item_name">任务名称</string>
<string name="task_list_item_user">创建人</string>
<string name="task_list_item_dept">创建部门</string>
<string name="task_list_inventory_btn">盘\u3000\点</string>
<!-- 盘点任务列表页面 -->
<string name="check_task_item_name">资产名称</string>
<string name="check_task_item_number">资产编码</string>
......
......@@ -3,8 +3,12 @@
buildscript {
repositories {
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url'https://maven.aliyun.com/repository/public/' }
maven { url'https://maven.aliyun.com/repository/google/' }
maven { url'https://maven.aliyun.com/repository/jcenter/' }
maven { url'https://maven.aliyun.com/repository/central/' }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
......@@ -17,8 +21,12 @@ buildscript {
allprojects {
repositories {
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url'https://maven.aliyun.com/repository/public/' }
maven { url'https://maven.aliyun.com/repository/google/' }
maven { url'https://maven.aliyun.com/repository/jcenter/' }
maven { url'https://maven.aliyun.com/repository/central/' }
jcenter()
}
}
......
......@@ -17,4 +17,5 @@ org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# SM2
android.jetifier.blacklist=bcprov-jdk15on
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment