Commit 05c0b440 by Wyh Committed by 宁斌

6.10 打印N張,歷史訂單查看已取消單

parent 7ef23438
......@@ -52,4 +52,46 @@ public class TimePickerUtils {
return pvTime;
}
/**
* @param mContext
* @param startTime 開始時間
* @param endTime 結束時間
* @param defaultTime 默認選中時間
* @param onTimeSelectListener 選中時間後點擊確認 回調
* @return
*/
public static TimePickerView showReportTimePicker(Context mContext, Calendar startTime, Calendar endTime, Calendar defaultTime, TimePickerView.OnTimeSelectListener onTimeSelectListener) {
//獲取今年第一天的日期
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.DAY_OF_YEAR));
//打開時間選擇器
TimePickerView pvTime = new TimePickerView.Builder(mContext, onTimeSelectListener)
.setType(TimePickerView.Type.YEAR_MONTH_DAY)//默认全部显示
.setCancelText("取消")//取消按钮文字
.setSubmitText("確認")//确认按钮文字
.setContentSize(20)//滚轮文字大小
.setTitleSize(20)//标题文字大小
// .setTitleText("请选择时间")//标题文字
.setOutSideCancelable(true)//点击屏幕,点在控件外部范围时,是否取消显示
.isCyclic(false)//是否循环滚动
.setTextColorCenter(Color.BLACK)//设置选中项的颜色
.setTitleColor(Color.BLACK)//标题文字颜色
.setSubmitColor(Color.BLUE)//确定按钮文字颜色
.setCancelColor(Color.BLUE)//取消按钮文字颜色
// .setTitleBgColor(0xFF666666)//标题背景颜色 Night mode
// .setBgColor(0xFF333333)//滚轮背景颜色 Night mode
.setRange(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.YEAR))
// .setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
.setRangDate(startTime, endTime)//時間是今年第一天到今天
.setLabel("", "", "", "", "", "")
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
// .isDialog(true)//是否显示为对话框样式
.build();
//設置默認選中時間
pvTime.setDate(defaultTime);//注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。
pvTime.show();
return pvTime;
}
}
......@@ -141,6 +141,24 @@ public class TimeUtils {
return sf.format(endDate);
}
/**@param beginTime 開始時間
* @param distance 差距: 昨天天傳負一,今天傳零,明天傳一
* @param type 類型: 1、天 Calendar.DATE 2、年Calendar.YEAR 3、月Calendar.MONTH
* @param sf {@link #DEFAULT_DATE_MD}
* @return 獲得從開始時間+distance(偏移時間的年月日)
*/
public static String getBeginDistanceDate(Calendar beginTime, int distance, int type, SimpleDateFormat sf) {
beginTime.set(type, beginTime.get(type) + distance);
Date endDate = null;
try {
endDate = sf.parse(sf.format(beginTime.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
return sf.format(endDate);
}
/**
* 获取前n天日期、后n天日期
*
......
package com.gingersoft.gsa.cloud.constans;
public class ExpandConstant {
public final static String DeliveryPrintCount = "DeliveryPrintCount";
}
......@@ -82,6 +82,14 @@ public class TriangleView extends QMUIAlphaImageButton {
canvas.drawPath(path, mPaint);
}
public boolean isOpen() {
return isOpen;
}
public void setOpen(boolean open) {
isOpen = open;
}
public void toggle(){
if(isOpen){
startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.rotate_anticlockwise_anim));
......
......@@ -5,8 +5,8 @@ ext {
buildToolsVersion: '28.0.3',
minSdkVersion : 19, //N5收銀機應用安卓開發環境要求Android OS Version: 5.1Android SDK Min Version: 19
targetSdkVersion : 28,
versionCode : 1,
versionName : "1.0.1"
versionCode : 2,
versionName : "1.0.2"
]
version = [
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.gingersoft.gsa.cloud.main">
<uses-permission android:name="android.permission.INTERNET" />
......
......@@ -240,7 +240,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
// }
List<Function> functions = new ArrayList<>();
if (!BuildConfig.DEBUG) {
// if (!BuildConfig.DEBUG) {
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order"));
functions.add(new Function((long) 150, 0, 5, "點餐", 0, 0));
functions.add(new Function((long) 138, 150, 5, "餐檯模式", R.drawable.ic_dining_table_mode, 0));
......@@ -263,11 +263,11 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
functions.add(new Function((long) 147, 152, 5, "員工管理", R.drawable.ic_staff_management_close, 1));
functions.add(new Function((long) 148, 152, 5, "權限管理", R.drawable.ic_authority_management_close, 1));
functions.add(new Function((long) 149, 152, 5, "操作記錄", R.drawable.ic_operation_record_close, 1));
} else {
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order"));
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager"));
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.employee, "employee"));
}
// } else {
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order"));
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager"));
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.employee, "employee"));
// }
//將功能列表數據分組
SparseArray<String> parents = new SparseArray<>();
......
......@@ -77,12 +77,15 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
TextView mTvStartTime;
@BindView(R2.id.tv_end_time)
TextView mTvEndTime;
@BindView(R2.id.iv_time_triangle)
@BindView(R2.id.iv_start_time_triangle)
TriangleView triangleView;
@BindView(R2.id.iv_end_time_triangle)
TriangleView endTimeTriangleView;
private BusinessInfoAdapter businessInfoAdapter;
//查詢多少天的數據
private int manyDay = 2;
private int manyDay = 6;
public static BusinessReportFragment newInstance() {
BusinessReportFragment fragment = new BusinessReportFragment();
......@@ -114,6 +117,7 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
mRestaurantName.setText(GsaCloudApplication.getRestaurantName(mContext));
mTvStartTime.setText(startTime);
mTvEndTime.setText(TimeUtils.getOldDate(0));
}
......@@ -191,21 +195,33 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
*/
@Override
public void loadChart(List<MainBusinessBean.DataBean> data) {
Object[] chartData = new Object[manyDay + 1];
manyDay = data.size();
Object[] chartData = new Object[manyDay];
String[] xData = new String[manyDay + 1];
for (int i = 0; i <= manyDay; i++) {
xData[i] = TimeUtils.getDistanceDate(-(manyDay - i), Calendar.DATE, TimeUtils.DEFAULT_DATE_MD);
String[] xData = new String[manyDay];
Calendar cal = Calendar.getInstance();
//設置默認時間為當前的起止時間
try {
cal.setTime(TimeUtils.DATE_FORMAT_DATE.parse(mTvStartTime.getText().toString()));
} catch (ParseException e) {
e.printStackTrace();
}
//將數據以 時間為key,數據為value存入map
for (int i = 0; i < manyDay; i++) {
xData[i] = TimeUtils.getBeginDistanceDate(cal, 1, Calendar.DATE, TimeUtils.DEFAULT_DATE_MD);
}
//將數據以時間為key,數據為value存入map
Map<String, MainBusinessBean.DataBean> map = new HashMap<>();
for (int i = 0; i < data.size(); i++) {
map.put(data.get(i).getStartingTime(), data.get(i));
}
//y軸 數據間隔
double yAxisTickInterval = 0;
//第一條線
for (int i = 0; i <= manyDay; i++) {
for (int i = 0; i < manyDay; i++) {
//通過今年年份+月份+日期,獲取對應的對象
MainBusinessBean.DataBean bean = map.get(TimeUtils.getDistanceDate(0, Calendar.YEAR, DEFAULT_DATE_Y) + xData[i]);
if (bean != null) {
......@@ -286,45 +302,75 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
}
}
@OnClick({R2.id.tv_start_time, R2.id.iv_time_triangle})
@OnClick({R2.id.tv_start_time, R2.id.iv_start_time_triangle, R2.id.tv_end_time, R2.id.iv_end_time_triangle})
@Override
public void onClick(View v) {
if (v.getId() == R.id.tv_start_time || v.getId() == R.id.iv_time_triangle) {
triangleView.toggle();
int viewId = v.getId();
try {
String time = null;
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.DAY_OF_YEAR, startTime.getActualMinimum(Calendar.DAY_OF_YEAR));//今年第一天
Calendar endTime = Calendar.getInstance();
if (viewId == R.id.tv_start_time || viewId == R.id.iv_start_time_triangle) {
triangleView.toggle();
time = mTvStartTime.getText().toString();
endTime.setTime(TimeUtils.DATE_FORMAT_DATE.parse(mTvEndTime.getText().toString()));
} else if (viewId == R.id.tv_end_time || viewId == R.id.iv_end_time_triangle) {
endTimeTriangleView.toggle();
time = mTvEndTime.getText().toString();
startTime.setTime(TimeUtils.DATE_FORMAT_DATE.parse(mTvStartTime.getText().toString()));
}
Calendar cal = Calendar.getInstance();
try {
//設置默認時間為當前的起止時間
cal.setTime(TimeUtils.DATE_FORMAT_DATE.parse(mTvStartTime.getText().toString()));
cal.setTime(TimeUtils.DATE_FORMAT_DATE.parse(time));
} catch (ParseException e) {
e.printStackTrace();
}
//打開時間選擇器
TimePickerUtils.showReportTimePicker(mContext, cal, (date, v1) ->
TimePickerUtils.showReportTimePicker(mContext, startTime, endTime, cal, (date, v1) ->
{
mTvStartTime.setText(TimeUtils.DATE_FORMAT_DATE.format(date));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
calendar.setTime(new Date());
//如果不是當前月份,那麼報表最多顯示最近七天
if (month != calendar.get(Calendar.MONTH)) {
manyDay = 7;
if (viewId == R.id.tv_start_time || viewId == R.id.iv_start_time_triangle) {
mTvStartTime.setText(TimeUtils.DATE_FORMAT_DATE.format(date));
} else {
//如果選中的是當前月份,判斷天數是否大於7
if (calendar.get(Calendar.DAY_OF_MONTH) - day > 7) {
manyDay = 7;
} else {
manyDay = calendar.get(Calendar.DAY_OF_MONTH) - day;
if (manyDay < 0) {
manyDay = 0;
}
}
mTvEndTime.setText(TimeUtils.DATE_FORMAT_DATE.format(date));
}
mPresenter.getRestaurantAmount(GsaCloudApplication.getRestaurantId(mContext) + "", mTvStartTime.getText().toString(), TimeUtils.getOldDate(1));
mPresenter.getRestaurantBusinessInfo(GsaCloudApplication.getRestaurantId(mContext) + "", mTvStartTime.getText().toString(), TimeUtils.getOldDate(1));
}).setOnDismissListener(o -> triangleView.toggle());
// Calendar calendar = Calendar.getInstance();
// calendar.setTime(date);
// int month = calendar.get(Calendar.MONTH);
// int day = calendar.get(Calendar.DAY_OF_MONTH);
// calendar.setTime(new Date());
// //如果不是當前月份,那麼報表最多顯示最近七天
// if (month != calendar.get(Calendar.MONTH)) {
// manyDay = 7;
// } else {
// //如果選中的是當前月份,判斷天數是否大於7
// if (calendar.get(Calendar.DAY_OF_MONTH) - day > 7) {
// manyDay = 7;
// } else {
// manyDay = calendar.get(Calendar.DAY_OF_MONTH) - day;
// if (manyDay < 0) {
// manyDay = 0;
// }
// }
// }
mPresenter.getRestaurantAmount(GsaCloudApplication.getRestaurantId(mContext) + "", mTvStartTime.getText().toString(), mTvEndTime.getText().toString());
mPresenter.getRestaurantBusinessInfo(GsaCloudApplication.getRestaurantId(mContext) + "", mTvStartTime.getText().toString(), mTvEndTime.getText().toString());
}).setOnDismissListener(o -> {
if (triangleView.isOpen()) {
triangleView.toggle();
} else if (endTimeTriangleView.isOpen()) {
endTimeTriangleView.toggle();
}
});
} catch (ParseException e) {
e.printStackTrace();
}
}
}
......@@ -56,9 +56,9 @@
android:textSize="@dimen/sp_10" />
<com.gingersoft.gsa.cloud.ui.view.TriangleView
android:id="@+id/iv_time_triangle"
android:layout_marginLeft="@dimen/dp_2"
android:layout_width="@dimen/dp_8"
android:id="@+id/iv_start_time_triangle"
android:paddingLeft="@dimen/dp_2"
android:layout_width="@dimen/dp_10"
app:trv_direction="bottom"
android:layout_height="@dimen/dp_5" />
......@@ -78,6 +78,13 @@
android:text="2020-02-14"
android:textColor="#181818"
android:textSize="@dimen/sp_10" />
<com.gingersoft.gsa.cloud.ui.view.TriangleView
android:id="@+id/iv_end_time_triangle"
android:layout_marginLeft="@dimen/dp_2"
android:layout_width="@dimen/dp_8"
app:trv_direction="bottom"
android:layout_height="@dimen/dp_5" />
</LinearLayout>
<com.gingersoft.gsa.cloud.ui.AAChartCore.AAChartCoreLib.AAChartConfiger.AAChartView
......
package com.gingersoft.gsa.other_order_mode.data.model.bean
import androidx.lifecycle.LiveData
class HistoryOrderBean {
/**
* success : true
* sysTime : 1587026350363
* data : [{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)15:30~16:00","PHONE":"18995813316","orderPayType":1,"ORDER_NO":"26201551325454427","STATUS":4,"PAY_AMOUNT":60,"Id":4350992,"CREATE_TIME":"Mar 27, 2020 3:23:45 PM","takeFoodCode":"0036","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200681304157037","STATUS":4,"PAY_AMOUNT":60,"Id":4348789,"CREATE_TIME":"Mar 27, 2020 12:27:21 PM","takeFoodCode":"0035","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200221368356841","STATUS":4,"PAY_AMOUNT":46,"Id":4348785,"CREATE_TIME":"Mar 27, 2020 12:27:07 PM","takeFoodCode":"0034","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:30~13:00","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201371328853396","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348780,"CREATE_TIME":"Mar 27, 2020 12:26:44 PM","takeFoodCode":"0033","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26203051303752129","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348467,"CREATE_TIME":"Mar 27, 2020 11:47:59 AM","takeFoodCode":"0032","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26201611370358516","STATUS":4,"PAY_AMOUNT":9999,"Id":4348434,"CREATE_TIME":"Mar 27, 2020 11:42:35 AM","takeFoodCode":"0031","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201341375950995","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348392,"CREATE_TIME":"Mar 27, 2020 11:35:35 AM","takeFoodCode":"0030","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26200871312851078","STATUS":4,"PAY_AMOUNT":9999,"Id":4348287,"CREATE_TIME":"Mar 27, 2020 11:18:44 AM","takeFoodCode":"0029","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26202231360959188","STATUS":4,"PAY_AMOUNT":9999,"Id":4348114,"CREATE_TIME":"Mar 27, 2020 10:43:53 AM","takeFoodCode":"0028","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200591367856595","STATUS":4,"PAY_AMOUNT":46,"Id":4347838,"CREATE_TIME":"Mar 27, 2020 9:51:13 AM","takeFoodCode":"0027","order_type":7,"RECEIVER":""},{"sumnum":1827}]
*/
private var success: Boolean = false
private var sysTime: Long = 0
private var data: ArrayList<DataBean>? = null
fun isSuccess(): Boolean {
return success
}
fun setSuccess(success: Boolean) {
this.success = success
}
fun getSysTime(): Long {
return sysTime
}
fun setSysTime(sysTime: Long) {
this.sysTime = sysTime
}
fun getData(): ArrayList<DataBean>? {
return data
}
fun setData(data: ArrayList<DataBean>) {
this.data = data
}
var success: Boolean = false
var sysTime: Long = 0
var data: ArrayList<DataBean>? = null
class DataBean {
/**
......
package com.gingersoft.gsa.other_order_mode.data.model.bean
data class MessageBean(val code: String, val errorMsg: String, val success: Boolean = false, val sysTime: Long = 0, val data: String? = null)
\ No newline at end of file
data class MessageBean(val code: String, val errorMsg: String, val success: Boolean = false, val sysTime: Long = 0, val data: Any? = null)
\ No newline at end of file
......@@ -2,12 +2,14 @@ package com.gingersoft.gsa.other_order_mode.model.viewModel
import android.content.Context
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.billy.cc.core.component.CC
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils
import com.gingersoft.gsa.cloud.constans.PrintConstans
import com.gingersoft.gsa.cloud.print.bean.OrderDetails
......@@ -18,8 +20,13 @@ import kotlinx.coroutines.launch
class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepository) : ViewModel() {
var data = MutableLiveData<HistoryOrderBean>()
fun getHistoryOrderList(context: Context, pageIndex: String, orderNum: String = "", startDate: String, endDate: String, listener: (HistoryOrderBean?) -> Unit) {
var historyData = MutableLiveData<HistoryOrderBean>()
var historyTime = MutableLiveData<String>(TimeUtils.getOldDate(0)) //按時間查詢
var status = MutableLiveData("4") //按類型查詢
var searchValue = MutableLiveData("")//按搜索內容查詢
fun getHistoryOrderList(context: Context, pageIndex: String, orderNum: String = "", startDate: String, endDate: String, status: String) {
launch({
var phone = ""
var orderNumber = ""
......@@ -29,25 +36,25 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
orderNumber = orderNum
}
historyOrderRepository.getHistoryOrderList(GsaCloudApplication.getRestaurantId(context).toString(), "4", startDate, endDate, pageIndex, "10", orderNumber, phone).apply {
this.getData()?.let {
historyOrderRepository.getHistoryOrderList(GsaCloudApplication.getRestaurantId(context).toString(), status, startDate, endDate, pageIndex, "10", orderNumber, phone).apply {
this.data?.let {
if (it.size > 0) {
it.removeAt(it.size - 1)//移除最後一個,最後一個是顯示總條數的
}
if (pageIndex != "1") {
data.value!!.getData()!!.addAll(it)
data.value!!.setSuccess(true)
if (pageIndex == "1") {
historyData.postValue(this)
} else {
historyData.value!!.data!!.addAll(it)
historyData.postValue(historyData.value)
historyData.value!!.success = true
}
}
if (pageIndex == "1") {
data.value = this
}
listener.invoke(data.value)
}
}, {
//出錯
it.printStackTrace()
listener.invoke(null)
historyData.postValue(null)
})
}
......
......@@ -194,7 +194,8 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
dialog.dismiss()
}
}, {
ToastUtils.show(context, "修改失敗")
dialog.dismiss()
})
}
hepler.getView<TextView>(R.id.tv_dialog_cancel).setOnClickListener {
......
package com.gingersoft.gsa.other_order_mode.ui.activity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.TableLayout
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
......@@ -14,9 +16,12 @@ import com.gingersoft.gsa.other_order_mode.R2
import com.gingersoft.gsa.other_order_mode.model.viewModel.HistoryOrderViewModel
import com.gingersoft.gsa.other_order_mode.ui.adapter.HistoryOrderAdapter
import com.gingersoft.gsa.other_order_mode.ui.base.BaseActivity
import com.gingersoft.gsa.other_order_mode.ui.fragment.HistoryFragment
import com.gingersoft.gsa.other_order_mode.util.InjectorUtil
import com.gingersoft.gsa.other_order_mode.util.OtherOrderUtils
import com.gingersoft.gsa.other_order_mode.util.setState
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.scwang.smartrefresh.layout.SmartRefreshLayout
import kotlinx.android.synthetic.main.activity_history_order.*
import java.text.ParseException
......@@ -25,109 +30,59 @@ import java.util.*
class HistoryOrderActivity : BaseActivity() {
private lateinit var mViewModel: HistoryOrderViewModel
private var mHistoryOrderAdapter: HistoryOrderAdapter? = null
private var pageIndex = 1
lateinit var refreshLayout: SmartRefreshLayout
lateinit var rvOrderList: RecyclerView
lateinit var layoutNoData: View
lateinit var time:String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_history_order)
refreshLayout = findViewById(R.id.refresh_layout)
rvOrderList = findViewById(R.id.rv_other_order)
layoutNoData = findViewById(R.id.layout_nodata)
tv_start_time.text = TimeUtils.getOldDate(0)
tv_end_time.text = TimeUtils.getOldDate(0)
time = TimeUtils.getOldDate(0)
initAppTop()
rvOrderList.layoutManager = LinearLayoutManager(this)
initViewModel()
getHistoryInfo()
initSearch()
initRefresh()
}
history_tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabUnselected(tab: TabLayout.Tab?) {
private fun getHistoryInfo(page: Int = pageIndex, orderNum: String = "") {
showLoading()
mViewModel.getHistoryOrderList(this, page.toString(), orderNum, time, time) { it ->
cancelDialogForLoading()
it?.let { it ->
refreshLayout.setEnableLoadMore(it.getData() != null)
refreshLayout.finishRefresh()
refreshLayout.finishLoadMore()
if (mHistoryOrderAdapter == null) {
mHistoryOrderAdapter = it.getData()?.let { it1 -> HistoryOrderAdapter(this@HistoryOrderActivity, it1) }
rvOrderList.adapter = mHistoryOrderAdapter
mHistoryOrderAdapter!!.setOnItemClickListenter { it ->
showLoading()
mViewModel.getOrderInfo(it.Id.toString()) { it2 ->
cancelDialogForLoading()
if (it2.data != null && it2.data!!.isNotEmpty()) {
//顯示彈窗
OtherOrderUtils.showOrderDetailsDialog(this@HistoryOrderActivity, it2, it.STATUS, it.order_type, true) { view, _, _ ->
//重印
showLoading()
mViewModel.printOrder(this@HistoryOrderActivity, it){
cancelDialogForLoading()
if(it){
ToastUtils.show(this@HistoryOrderActivity, "打印成功")
} else {
ToastUtils.show(this@HistoryOrderActivity, "打印失敗")
}
}
}
} else {
ToastUtils.show(this, "未查詢到訂單信息")
}
}
}
} else {
mHistoryOrderAdapter!!.data = it.getData()
mHistoryOrderAdapter!!.notifyDataSetChanged()
}
override fun onTabSelected(tab: TabLayout.Tab?) {
tab?.let { it ->
mViewModel.status.postValue(when (it.position) {
0 -> "4"
1 -> "6"
else -> "4"
})
}
}
layoutNoData.setState(it?.getData() == null || it.getData()!!.size <= 0)
}
override fun onTabReselected(tab: TabLayout.Tab?) {
}
})
supportFragmentManager.beginTransaction().add(R.id.content_layout, HistoryFragment.newInstance()).commit()
}
private fun initViewModel() {
mViewModel = ViewModelProvider(this, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java]
mViewModel = ViewModelProvider(this, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply {
historyTime.observe(this@HistoryOrderActivity, androidx.lifecycle.Observer {
tv_start_time.text = it
})
}
}
private fun initSearch() {
iv_search_order.setOnClickListener {
time = ""
//搜索
if (ed_order_num_search.text != null && ed_order_num_search.text.isNotEmpty()) {
getHistoryInfo(1, ed_order_num_search.text.toString())
mViewModel.searchValue.postValue(ed_order_num_search.text.toString())
} else {
ToastUtils.show(this@HistoryOrderActivity, "請輸入手機號或訂單號")
}
}
}
private fun initRefresh() {
//设置 Header 顏色
refreshLayout.setPrimaryColorsId(R.color.color_f0, R.color.color_66)
//下拉刷新,加載更多
refreshLayout.setOnRefreshListener {
pageIndex = 1
getHistoryInfo()
}
refreshLayout.setOnLoadMoreListener {
pageIndex++
getHistoryInfo()
}
}
private fun initAppTop() {
qm_other_order_bar.setTitle(R.string.history_order)
qm_other_order_bar.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener { finish() }
......@@ -146,10 +101,11 @@ class HistoryOrderActivity : BaseActivity() {
e.printStackTrace()
}
TimePickerUtils.showReportTimePicker(this@HistoryOrderActivity, cal) { date, v ->
tv_start_time.text = TimeUtils.DATE_FORMAT_DATE.format(date)
time = TimeUtils.DATE_FORMAT_DATE.format(date)
pageIndex = 1
getHistoryInfo()
// tv_start_time.text = TimeUtils.DATE_FORMAT_DATE.format(date)
// time = TimeUtils.DATE_FORMAT_DATE.format(date)
mViewModel.historyTime.postValue(TimeUtils.DATE_FORMAT_DATE.format(date))
// pageIndex = 1
// getHistoryInfo()
}.setOnDismissListener {
iv_start_time_triangle.toggle()
}
......
package com.gingersoft.gsa.other_order_mode.ui.fragment
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils
import com.gingersoft.gsa.other_order_mode.R
import com.gingersoft.gsa.other_order_mode.model.viewModel.HistoryOrderViewModel
import com.gingersoft.gsa.other_order_mode.ui.adapter.HistoryOrderAdapter
import com.gingersoft.gsa.other_order_mode.ui.base.BaseFragment
import com.gingersoft.gsa.other_order_mode.util.InjectorUtil
import com.gingersoft.gsa.other_order_mode.util.OtherOrderUtils
import com.gingersoft.gsa.other_order_mode.util.setState
import kotlinx.android.synthetic.main.fragment_other_order.*
class HistoryFragment : BaseFragment() {
companion object {
fun newInstance() = HistoryFragment()
}
private lateinit var viewModel: HistoryOrderViewModel
private var mHistoryOrderAdapter: HistoryOrderAdapter? = null
private var pageIndex = 1
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_other_order, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProvider(activity!!.viewModelStore, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply {
historyData.observe(viewLifecycleOwner, Observer{ it ->
cancelDialogForLoading()
refresh_layout.finishRefresh()
refresh_layout.finishLoadMore()
it?.let { _ ->
refresh_layout.setEnableLoadMore((it.data != null && it.data!!.size > 0))
if (mHistoryOrderAdapter == null) {
mHistoryOrderAdapter = it.data.let { it1 -> context?.let { it2 -> HistoryOrderAdapter(it2, it1) } }
rv_other_order.layoutManager = LinearLayoutManager(context)
rv_other_order.adapter = mHistoryOrderAdapter
mHistoryOrderAdapter!!.setOnItemClickListenter { it ->
showLoading()
viewModel.getOrderInfo(it.Id.toString()) { it2 ->
cancelDialogForLoading()
if (it2.data != null && it2.data!!.isNotEmpty()) {
//顯示彈窗
context?.let { context ->
OtherOrderUtils.showOrderDetailsDialog(context, it2, it.STATUS, it.order_type, true) { view, _, _ ->
//重印
showLoading()
viewModel.printOrder(context, it) {
cancelDialogForLoading()
if (it) {
ToastUtils.show(context, "打印成功")
} else {
ToastUtils.show(context, "打印失敗")
}
}
}
}
} else {
ToastUtils.show(context, "未查詢到訂單信息")
}
}
}
} else {
mHistoryOrderAdapter!!.data = it.data
mHistoryOrderAdapter!!.notifyDataSetChanged()
}
}
layout_nodata.setState(it?.data == null || it.data!!.size <= 0)
})
historyTime.observe(viewLifecycleOwner, Observer {
//當時間發生變化,請求數據
pageIndex = 1
getHistoryInfo()
})
status.observe(viewLifecycleOwner, Observer {
//用戶切換到已取消頁面或切換到已完成頁面
pageIndex = 1
getHistoryInfo()
})
searchValue.observe(viewLifecycleOwner, Observer {
pageIndex = 1
getHistoryInfo()
})
}
refresh_layout.setPrimaryColorsId(R.color.color_f0, R.color.color_66)
refresh_layout.setEnableRefresh(false)
refresh_layout.setOnLoadMoreListener {
pageIndex++
getHistoryInfo()
}
}
private fun getHistoryInfo(page: Int = pageIndex) {
viewModel.getHistoryOrderList(activity!!, page.toString(), viewModel.searchValue.value!!, viewModel.historyTime.value!!, viewModel.historyTime.value!!, viewModel.status.value!!)
}
}
package com.gingersoft.gsa.other_order_mode.ui.fragment
import androidx.lifecycle.ViewModel
class HistoryViewModel : ViewModel() {
// TODO: Implement the ViewModel
}
......@@ -85,9 +85,9 @@
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:text="至"
android:visibility="gone"
android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_14"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/iv_start_time_triangle"
app:layout_constraintLeft_toRightOf="@id/iv_start_time_triangle"
app:layout_constraintTop_toTopOf="@id/iv_start_time_triangle" />
......@@ -100,8 +100,8 @@
android:layout_marginLeft="@dimen/dp_10"
android:onClick="onClickListener"
android:textColor="@color/theme_333_color"
android:visibility="gone"
android:textSize="@dimen/dp_14"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/tv_to"
app:layout_constraintLeft_toRightOf="@id/tv_to"
app:layout_constraintTop_toTopOf="@id/tv_to" />
......@@ -119,7 +119,33 @@
app:trv_direction="bottom" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/history_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:tabPaddingEnd="-1dp"
app:tabPaddingStart="-1dp">
<com.google.android.material.tabs.TabItem
android:id="@+id/tabItem_completed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已完成" />
<com.google.android.material.tabs.TabItem
android:id="@+id/tabItem_cancelled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已取消" />
</com.google.android.material.tabs.TabLayout>
</com.google.android.material.appbar.AppBarLayout>
<include layout="@layout/fragment_other_order" />
<FrameLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_f0"
android:orientation="vertical"
tools:context=".ui.activity.HistoryOrderActivity">
<!-- <include layout="@layout/fragment_other_order" />-->
<com.scwang.smartrefresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_other_order"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include
android:id="@+id/layout_nodata"
layout="@layout/layout_no_data" />
</FrameLayout>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
\ No newline at end of file
......@@ -38,8 +38,8 @@
style="@style/otherOrderInfoDialogTextStyle"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_30"
android:minWidth="@dimen/dp_50"
android:background="@drawable/shape_black_border"
android:minWidth="@dimen/dp_80"
android:background="@drawable/shape_white_search_bg"
android:gravity="right|center_vertical"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
......@@ -50,20 +50,18 @@
style="@style/otherOrderInfoDialogTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:text="——" />
<EditText
android:id="@+id/et_max_delivery_fee"
style="@style/otherOrderInfoDialogTextStyle"
android:layout_width="wrap_content"
android:minWidth="@dimen/dp_50"
android:minWidth="@dimen/dp_80"
android:layout_height="@dimen/dp_30"
android:layout_marginRight="@dimen/dp_20"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:background="@drawable/shape_black_border"
android:background="@drawable/shape_white_search_bg"
android:gravity="right|center_vertical"
android:inputType="numberDecimal"
android:maxLines="1" />
......@@ -217,8 +215,9 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:minHeight="@dimen/dp_50"
android:background="@color/white"
android:gravity="center_vertical"
android:paddingLeft="@dimen/dp_10">
......@@ -233,7 +232,8 @@
android:id="@+id/ed_desc"
style="@style/otherOrderInfoDialogTextStyle"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_30"
android:layout_height="wrap_content"
android:minHeight="@dimen/dp_30"
android:background="@color/trans"
android:gravity="right|center_vertical"
android:paddingRight="@dimen/dp_20" />
......
......@@ -32,6 +32,13 @@ public class IpPrintMaker implements PrintDataMaker {
this.width = width;
this.bitmaps = bitmaps;
}
public IpPrintMaker(Context context, int width, Bitmap bitmap) {
this.mContext = context;
this.width = width;
this.bitmaps = new ArrayList<>();
this.bitmaps.add(bitmap);
}
@Override
public List<byte[]> getPrintData(int type) {
......
......@@ -42,6 +42,11 @@ public class PrintBill extends PrinterRoot {
return bitmapMaps;
}
@Override
public int getPrintCount(Context context) {
return 1;
}
/**
* 獲取"結賬單"圖片
......
......@@ -25,6 +25,11 @@ public class PrintCleanMachine extends PrinterRoot {
return bitmapMaps;
}
@Override
public int getPrintCount(Context context) {
return 1;
}
/**
* 獲取"清機報表"圖片
......
......@@ -125,6 +125,11 @@ public class PrintKitchen extends PrinterRoot {
return bitmapMaps;
}
@Override
public int getPrintCount(Context context) {
return 1;
}
private void addToMap(Map<String, List<OrderDetail>> foodMaps, OrderDetail food) {
if (foodMaps.get(food.getPrintseting()) != null) {
Objects.requireNonNull(foodMaps.get(food.getPrintseting())).add(food);
......
......@@ -27,7 +27,6 @@ import com.joe.print.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
......@@ -38,19 +37,6 @@ public class PrintOtherOrder extends PrinterRoot {
@Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) {
OrderDetails.DataBean dataBean = MyOrderManage.getDataBean();
ExpandInfoDaoUtils expandInfoDaoUtils = new ExpandInfoDaoUtils(mContext);
List<ExpandInfo> expandInfos = expandInfoDaoUtils.queryAllExpandInfo();
int printCount = 1;
if (expandInfos != null) {
for (ExpandInfo expandInfo : expandInfos) {
if (expandInfo.getSettingName().equals(ExpandConstant.DeliveryPrintCount)) {
printCount = expandInfo.getValueInt();
}
}
}
if (dataBean != null) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
//廚房單,可能會有多個IP打印
......@@ -145,13 +131,27 @@ public class PrintOtherOrder extends PrinterRoot {
List<Bitmap> bitmaps = new ArrayList<>();
Bitmap bitmap = initPrintView(mContext, dataBean);
bitmaps.add(bitmap);
merge2ResultMap(bitmapMaps, "", bitmaps);
return bitmapMaps;
}
return null;
}
@Override
public int getPrintCount(Context context) {
ExpandInfoDaoUtils expandInfoDaoUtils = new ExpandInfoDaoUtils(context);
List<ExpandInfo> expandInfos = expandInfoDaoUtils.queryAllExpandInfo();
int printCount = 1;
if (expandInfos != null) {
for (ExpandInfo expandInfo : expandInfos) {
if (expandInfo.getSettingName().equals(ExpandConstant.DeliveryPrintCount)) {
printCount = expandInfo.getValueInt();
}
}
}
return printCount;
}
private void addCountBitmap(List<Bitmap> bitmaps, int count, Bitmap bitmap) {
for (int i = 0; i < count; i++) {
bitmaps.add(bitmap);
......
......@@ -55,6 +55,11 @@ public class PrintPrjKitchen extends PrinterRoot {
return bitmapMaps;
}
@Override
public int getPrintCount(Context context) {
return 1;
}
/**
* 獲取"廚房單"圖片
*
......
......@@ -40,6 +40,11 @@ public class PrintServe extends PrinterRoot {
return bitmapMaps;
}
@Override
public int getPrintCount(Context context) {
return 1;
}
/**
* 獲取"印單"圖片
......
......@@ -50,6 +50,11 @@ public class PrintSlip extends PrinterRoot {
return bitmapMaps;
}
@Override
public int getPrintCount(Context context) {
return 1;
}
/**
* 獲取"印單"圖片
*
......
......@@ -27,6 +27,11 @@ public class PrintTest extends PrinterRoot {
return bitmapMaps;
}
@Override
public int getPrintCount(Context context) {
return 1;
}
/**
* 獲取測試打印bitmap
......
......@@ -69,6 +69,8 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
private PrintListener printListener;
private Map<String, List<Bitmap>> listMap;
private int printCount = 1;
public static PrinterRoot getPrinterByType(int type) {
if (type == PRINT_TEST) {
return new PrintTest();
......@@ -117,58 +119,24 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
resultMap.put(key2, value);
}
}
if(resultMap.size() == 0){
// resultMap.put(key2, value);
if (resultMap.size() == 0) {
resultMap.put(key2, value);
}
return resultMap;
}
public static <E,T> Map<E,T> deepCopy(Map<E,T> src) {
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(src);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
@SuppressWarnings("unchecked")
Map<E,T> dest = (Map<E,T> ) in.readObject();
return dest;
} catch (Exception e) {
e.printStackTrace();
return new HashMap<E,T>();
}
}
@SuppressWarnings("unchecked")
public static <E,T> Map<E,T> deepClone(Map<E,T> obj){
T clonedObj = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
clonedObj = (T) ois.readObject();
ois.close();
}catch (Exception e){
e.printStackTrace();
}
return (Map) clonedObj;
}
/**
* @param mContext
* @return key為打印位置,值為圖片集合的map
*/
public abstract Map<String, List<Bitmap>> getPrintBitmap(Context mContext);
public abstract int getPrintCount(Context context);
public void print(List<PrinterDeviceBean> deviceBeans) {
listMap = getPrintBitmap(mContext);
printSize = listMap.size();
printCount = getPrintCount(mContext);
if (printSize <= 0) {
printListener.printFile();
return;
......@@ -206,14 +174,16 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return;
}
String model = Build.MODEL;
if (GsaCloudApplication.mV2.contains(model)) {
sunmiPrint(bitmaps, listener);
} else if (GsaCloudApplication.mN5.contains(model)) {
//N5打印
n5Print(bitmaps, listener);
} else {
ToastUtils.show(mContext, "暫不支持本機型打印");
listener.printFile();
for (int i = 0; i < printCount; i++) {
if (GsaCloudApplication.mV2.contains(model)) {
sunmiPrint(bitmaps, listener);
} else if (GsaCloudApplication.mN5.contains(model)) {
//N5打印
n5Print(bitmaps, listener);
} else {
ToastUtils.show(mContext, "暫不支持本機型打印");
listener.printFile();
}
}
}
......@@ -507,14 +477,18 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
PrintExecutor executor = new PrintExecutor(printerDeviceBean, paperType);
executor.setOnStateChangedListener(stateChangedListener);
executor.setOnPrintResultListener(resultListener);
List<Bitmap> zoomBitmaps = new ArrayList<>();
// List<Bitmap> zoomBitmaps = new ArrayList<>();
if (bitmaps != null) {
for (int i = 0; i < bitmaps.size(); i++) {
zoomBitmaps.add(ImageUtils.zoomDrawable(bitmaps.get(i), printWidth));
for (int j = 0; j < printCount; j++) {
for (int i = 0; i < bitmaps.size(); i++) {
// zoomBitmaps.add(ImageUtils.zoomDrawable(bitmaps.get(i), printWidth));
IpPrintMaker maker = new IpPrintMaker(mContext, printWidth, ImageUtils.zoomDrawable(bitmaps.get(i), printWidth));
executor.doPrinterRequestAsync(maker);
}
}
}
IpPrintMaker maker = new IpPrintMaker(mContext, printWidth, zoomBitmaps);
executor.doPrinterRequestAsync(maker);
// IpPrintMaker maker = new IpPrintMaker(mContext, printWidth, zoomBitmaps);
// executor.doPrinterRequestAsync(maker);
}
/**
......@@ -537,18 +511,24 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
Log.e("eee", "打印成功");
cutPrintSize();
break;
case PrintSocketHolder.ERROR_1:
Log.e("eee", "生成測試頁面數據失敗");
break;
case PrintSocketHolder.ERROR_2:
Log.e("eee", "連接打印機失敗");
case PrintSocketHolder.ERROR_3:
Log.e("eee", "獲取輸出流失敗");
printerFileDevices.add(printerDeviceBean);
cutPrintSize();
break;
case PrintSocketHolder.ERROR_4:
Log.e("eee", "寫入測試頁面數據失敗");
break;
case PrintSocketHolder.ERROR_5:
Log.e("eee", "必要的參數不能為空");
break;
}
setPrintState(errorCode);
......@@ -563,6 +543,22 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
if (printListener != null) {
printListener.printStateChanged(state);
}
switch (state) {
case PrintSocketHolder.STATE_0:
Log.e("eee", "生成測試頁數據");
case PrintSocketHolder.STATE_1:
Log.e("eee", "開始創建連接");
break;
case PrintSocketHolder.STATE_2:
Log.e("eee", "創建連接成功,開始發送數據");
break;
case PrintSocketHolder.STATE_3:
Log.e("eee", "開始寫入數據");
break;
case PrintSocketHolder.STATE_4:
Log.e("eee", "關閉中");
break;
}
}
private void cutPrintSize() {
......
......@@ -185,43 +185,43 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
String tip = "加載中...";
switch (state) {
case PrintSocketHolder.ERROR_0:
// Log.e("eee", "打印成功");
Log.e("eee", "打印成功");
tip = "打印成功";
break;
case PrintSocketHolder.ERROR_1:
// Log.e("eee", "生成測試頁面數據失敗");
Log.e("eee", "生成測試頁面數據失敗");
tip = "生成打印數據失敗";
break;
case PrintSocketHolder.ERROR_2:
// Log.e("eee", "連接打印機失敗" + System.currentTimeMillis());
Log.e("eee", "連接打印機失敗");
case PrintSocketHolder.ERROR_3:
// Log.e("eee", "獲取輸出流失敗");
Log.e("eee", "獲取輸出流失敗");
tip = "連接打印機失敗";
break;
case PrintSocketHolder.ERROR_4:
// Log.e("eee", "寫入測試頁面數據失敗");
Log.e("eee", "寫入測試頁面數據失敗");
tip = "寫入測試頁面數據失敗";
break;
case PrintSocketHolder.ERROR_5:
// Log.e("eee", "必要的參數不能為空");
Log.e("eee", "必要的參數不能為空");
tip = "必要的參數不能為空";
break;
case PrintSocketHolder.STATE_0:
// Log.e("eee", "生成測試頁數據");
Log.e("eee", "生成測試頁數據");
case PrintSocketHolder.STATE_1:
// Log.e("eee", "開始創建連接");
tip = "開始創建連接";
break;
case PrintSocketHolder.STATE_2:
// Log.e("eee", "創建連接成功,開始發送數據");
Log.e("eee", "創建連接成功,開始發送數據");
tip = "創建連接成功,開始發送數據";
break;
case PrintSocketHolder.STATE_3:
// Log.e("eee", "開始寫入數據");
Log.e("eee", "開始寫入數據");
tip = "開始寫入數據";
break;
case PrintSocketHolder.STATE_4:
// Log.e("eee", "關閉中");
Log.e("eee", "關閉中");
tip = "關閉中";
break;
case DIMISS_LOADING:
......
<?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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="@dimen/dp_6">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_food_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintHorizontal_weight="0.5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv_food_number"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_food_item_next"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:src="@drawable/item_next"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/tv_food_name"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_food_name" />
<TextView
android:id="@+id/tv_food_name"
style="@style/print_other_order_food_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@id/iv_food_item_next"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_food_number"
style="@style/print_other_order_food_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:gravity="right"
app:layout_constraintHorizontal_weight="0.2"
app:layout_constraintLeft_toRightOf="@id/layout_food_name"
app:layout_constraintRight_toLeftOf="@id/tv_food_price"
app:layout_constraintTop_toTopOf="@id/layout_food_name" />
<TextView
android:id="@+id/tv_food_price"
style="@style/print_other_order_food_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:gravity="right"
android:visibility="invisible"
app:layout_constraintHorizontal_weight="0.3"
app:layout_constraintLeft_toRightOf="@id/tv_food_number"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/layout_food_name" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
android:orientation="horizontal"
app:constraint_referenced_ids="layout_food_name,tv_food_number,tv_food_price" />
<LinearLayout
android:id="@+id/layout_food_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/barrier" />
</androidx.constraintlayout.widget.ConstraintLayout>
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