Commit 31f65a09 by Wyh

1、打印prj帶*號問題 2、處理打印結果回調BUG 3、優化PRJ查詢 4、優化PrjBean

parent d315d8ac
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
<activity <activity
android:name=".mvp.ui.activity.SendOrderActivity" android:name=".mvp.ui.activity.SendOrderActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<meta-data <meta-data
android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration" android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
android:value="ConfigModule" /> android:value="ConfigModule" />
......
...@@ -16,5 +16,5 @@ public class PrjQueryBean { ...@@ -16,5 +16,5 @@ public class PrjQueryBean {
private boolean success; private boolean success;
private long sysTime; private long sysTime;
private String errMsg; private String errMsg;
private List<PrjBean.DataBean.Bean> data; private List<PrjBean> data;
} }
...@@ -19,6 +19,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -19,6 +19,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.constans.AppConstans; import com.gingersoft.gsa.cloud.common.constans.AppConstans;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans; import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.print.bean.PrjBean; import com.gingersoft.gsa.cloud.print.bean.PrjBean;
import com.gingersoft.gsa.cloud.print.bean.UpdateBean; import com.gingersoft.gsa.cloud.print.bean.UpdateBean;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
...@@ -68,6 +69,8 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -68,6 +69,8 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
TextView tvPrjRecordOrderId; TextView tvPrjRecordOrderId;
@BindView(R2.id.rv_prj_record_list) @BindView(R2.id.rv_prj_record_list)
RecyclerView rvPrjRecordList; RecyclerView rvPrjRecordList;
private PrjStateAdapter prjStateAdapter;
@BindView(R2.id.layout_edit_prj_order_number) @BindView(R2.id.layout_edit_prj_order_number)
ConstraintLayout editLayout; ConstraintLayout editLayout;
...@@ -100,8 +103,9 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -100,8 +103,9 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
String orderId = getIntent().getStringExtra(ORDERID_EXTRA_NAME); String orderId = getIntent().getStringExtra(ORDERID_EXTRA_NAME);
if (TextUtil.isNotEmptyOrNullOrUndefined(orderId)) { if (TextUtil.isNotEmptyOrNullOrUndefined(orderId)) {
layoutPrjOrderNumber.setVisibility(View.VISIBLE); // layoutPrjOrderNumber.setVisibility(View.VISIBLE);
tvPrjRecordOrderId.setText(orderId); // tvPrjRecordOrderId.setText(orderId);
edOrderNumber.setText(orderId);
getKitchenPrintRecord(); getKitchenPrintRecord();
} else { } else {
editLayout.setVisibility(View.VISIBLE); editLayout.setVisibility(View.VISIBLE);
...@@ -192,7 +196,6 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -192,7 +196,6 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
} }
} }
private PrjStateAdapter prjStateAdapter;
@Override @Override
public void loadPrjInfo(PrjQueryBean prjQueryBean) { public void loadPrjInfo(PrjQueryBean prjQueryBean) {
...@@ -203,7 +206,7 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -203,7 +206,7 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
prjStateAdapter.setOnItemChildClickListener((adapter, view, position) -> { prjStateAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.tv_prj_record_print_operation) { if (view.getId() == R.id.tv_prj_record_print_operation) {
//重印 //重印
List<PrjBean.DataBean.Bean> prjData = prjQueryBean.getData(); List<PrjBean> prjData = prjQueryBean.getData();
if (prjData.get(position).getPrinterType() == 3) { if (prjData.get(position).getPrinterType() == 3) {
//已打印的,提示是否重新打印 //已打印的,提示是否重新打印
new AppDialog().showWaringDialog(mContext, "食品已打印,確認重印?", (view1, dialog) -> { new AppDialog().showWaringDialog(mContext, "食品已打印,確認重印?", (view1, dialog) -> {
...@@ -220,18 +223,18 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -220,18 +223,18 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
} }
} }
private void organizeData(int position, List<PrjBean.DataBean.Bean> prjData) { private void organizeData(int position, List<PrjBean> prjData) {
if (prjData.get(position).getParentId() == 0) { if (prjData.get(position).getParentId() == 0) {
//是主食品,判斷有沒有子食品,如果沒有子食品,直接打印主食品 //是主食品,判斷有沒有子食品,如果沒有子食品,直接打印主食品
if (position + 1 >= prjData.size()) { if (position + 1 >= prjData.size()) {
//沒有子食品 //沒有子食品
//直接打印 //直接打印
List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>(); List<PrjBean> printDatas = new ArrayList<>();
printDatas.add(prjData.get(position)); printDatas.add(prjData.get(position));
printPrj(printDatas); printPrj(printDatas);
} else if (prjData.get(position).getProductId().equals(prjData.get(position + 1).getParentId() + "")) { } else if (prjData.get(position).getProductId().equals(prjData.get(position + 1).getParentId() + "")) {
//有子食品 //有子食品
List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>(); List<PrjBean> printDatas = new ArrayList<>();
printDatas.add(prjData.get(position)); printDatas.add(prjData.get(position));
for (int i = position; i < prjData.size(); i++) { for (int i = position; i < prjData.size(); i++) {
if (prjData.get(position).getProductId().equals(prjData.get(i).getParentId() + "")) { if (prjData.get(position).getProductId().equals(prjData.get(i).getParentId() + "")) {
...@@ -244,26 +247,26 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -244,26 +247,26 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
} else { } else {
//沒有子食品 //沒有子食品
//直接打印 //直接打印
List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>(); List<PrjBean> printDatas = new ArrayList<>();
printDatas.add(prjData.get(position)); printDatas.add(prjData.get(position));
printPrj(printDatas); printPrj(printDatas);
} }
} else { } else {
//是主食品,直接打印子食品 //是主食品,直接打印子食品
List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>(); List<PrjBean> printDatas = new ArrayList<>();
printDatas.add(prjData.get(position)); printDatas.add(prjData.get(position));
printPrj(printDatas); printPrj(printDatas);
} }
} }
private void printPrj(List<PrjBean.DataBean.Bean> printDatas) { private void printPrj(List<PrjBean> printDatas) {
String orderNo = ""; String orderNo = "";
StringBuilder ids = new StringBuilder(); StringBuilder ids = new StringBuilder();
for (int i = 0; i < printDatas.size(); i++) { for (int i = 0; i < printDatas.size(); i++) {
PrjBean.DataBean.Bean prjBean = printDatas.get(i); PrjBean prjBean = printDatas.get(i);
orderNo = prjBean.getOrderNo(); orderNo = prjBean.getOrderNo();
prjBean.setTotalPrj(printDatas.size()); prjBean.setTotalPrj(printDatas.size());
prjBean.setCurrentIndex(i); prjBean.setCurrentIndex(i + 1);
ids.append(prjBean.getId()); ids.append(prjBean.getId());
} }
//添加重印的報警推送 //添加重印的報警推送
...@@ -272,7 +275,7 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -272,7 +275,7 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
.addParam(PrintConstans.PRINT_ORDER_NO, orderNo) .addParam(PrintConstans.PRINT_ORDER_NO, orderNo)
.addParam("prjBeans", printDatas) .addParam("prjBeans", GsonUtils.GsonString(printDatas))
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
......
...@@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable; ...@@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, BaseViewHolder> { public class PrjStateAdapter extends BaseQuickAdapter<PrjBean, BaseViewHolder> {
private Context context; private Context context;
private int indentation; private int indentation;
...@@ -29,7 +29,7 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas ...@@ -29,7 +29,7 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
*/ */
private int successColor, failColor, flyFailColor; private int successColor, failColor, flyFailColor;
public PrjStateAdapter(Context context, @Nullable List<PrjBean.DataBean.Bean> data) { public PrjStateAdapter(Context context, @Nullable List<PrjBean> data) {
super(R.layout.item_prj_state, data); super(R.layout.item_prj_state, data);
this.context = context; this.context = context;
addChildClickViewIds(R.id.tv_prj_record_print_operation); addChildClickViewIds(R.id.tv_prj_record_print_operation);
...@@ -39,7 +39,7 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas ...@@ -39,7 +39,7 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
} }
@Override @Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, PrjBean.DataBean.Bean dataBean) { protected void convert(@NotNull BaseViewHolder baseViewHolder, PrjBean dataBean) {
//食品組名稱 //食品組名稱
baseViewHolder.setText(R.id.tv_prj_record_food_group_name, dataBean.getFoodGroupName()); baseViewHolder.setText(R.id.tv_prj_record_food_group_name, dataBean.getFoodGroupName());
//食品名稱 //食品名稱
...@@ -56,15 +56,19 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas ...@@ -56,15 +56,19 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
tvFailReason.setText(""); tvFailReason.setText("");
} else if (dataBean.getPrinterType() == UpdateBean.FAILED_PRINT) { } else if (dataBean.getPrinterType() == UpdateBean.FAILED_PRINT) {
//打印失敗 //打印失敗
if (dataBean.getPresence() == PrjBean.DataBean.Bean.NOT_GENERATED_PRJ) { if (dataBean.getPresence() == PrjBean.NOT_GENERATED_PRJ) {
//未生成PRJ記錄 //未生成PRJ記錄
baseViewHolder.setBackgroundColor(R.id.tv_prj_record_food_name, failColor); baseViewHolder.setBackgroundColor(R.id.tv_prj_record_food_name, failColor);
tvFailReason.setText("未生成打印記錄"); tvFailReason.setText("未生成打印記錄");
} else if (dataBean.getPrinterDeviceId() == -1) { } else if (dataBean.getPrinterDeviceId() == -1) {
//打印機id為-1 //打印機id為-1
baseViewHolder.setBackgroundColor(R.id.tv_prj_record_food_name, failColor); baseViewHolder.setBackgroundColor(R.id.tv_prj_record_food_name, failColor);
tvFailReason.setText("未找到對應的打印機");
} else if (TextUtil.isEmptyOrNullOrUndefined(dataBean.getPrintPosition())) {
//沒有打印位置
baseViewHolder.setBackgroundColor(R.id.tv_prj_record_food_name, failColor);
tvFailReason.setText("未配置打印位置"); tvFailReason.setText("未配置打印位置");
} else if (TextUtil.isNotEmptyOrNullOrUndefined(dataBean.getFlyingSinglePosition()) && dataBean.getRequests() > PrjBean.DataBean.Bean.REQUEST_COUNT_FLY) { } else if (TextUtil.isNotEmptyOrNullOrUndefined(dataBean.getFlyingSinglePosition()) && dataBean.getRequests() > PrjBean.REQUEST_COUNT_FLY) {
//飛單位置不為空並且請求次數大於5此,說明飛單打印失敗 //飛單位置不為空並且請求次數大於5此,說明飛單打印失敗
baseViewHolder.setBackgroundColor(R.id.tv_prj_record_food_name, flyFailColor); baseViewHolder.setBackgroundColor(R.id.tv_prj_record_food_name, flyFailColor);
} }
...@@ -80,24 +84,29 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas ...@@ -80,24 +84,29 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
//只第一次測量一下 //只第一次測量一下
indentation = new BigDecimal(foodName.getPaint().measureText("哈")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); indentation = new BigDecimal(foodName.getPaint().measureText("哈")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
} }
LinearLayout foodNameLayout = baseViewHolder.getView(R.id.layout_print_state); TextView tvFoodName = baseViewHolder.getView(R.id.tv_prj_record_food_name);
if (dataBean.getParentId() != 0) { if (dataBean.getParentId() != 0) {
foodNameLayout.setPadding(indentation, foodNameLayout.getPaddingTop(), foodNameLayout.getPaddingRight(), foodNameLayout.getPaddingBottom()); tvFoodName.setPadding(indentation, tvFoodName.getPaddingTop(), tvFoodName.getPaddingRight(), tvFoodName.getPaddingBottom());
} else { } else {
foodNameLayout.setPadding(0, foodNameLayout.getPaddingTop(), foodNameLayout.getPaddingRight(), foodNameLayout.getPaddingBottom()); tvFoodName.setPadding(0, tvFoodName.getPaddingTop(), tvFoodName.getPaddingRight(), tvFoodName.getPaddingBottom());
} }
} }
private void setPrintPosition(@NotNull BaseViewHolder baseViewHolder, PrjBean.DataBean.Bean dataBean) { private void setPrintPosition(@NotNull BaseViewHolder baseViewHolder, PrjBean dataBean) {
TextView tvPrintPosition = baseViewHolder.getView(R.id.tv_prj_record_print_position);
if (TextUtil.isNotEmptyOrNullOrUndefined(dataBean.getPrintPosition())) { if (TextUtil.isNotEmptyOrNullOrUndefined(dataBean.getPrintPosition())) {
//打印位置 //打印位置
baseViewHolder.setText(R.id.tv_prj_record_print_position, dataBean.getPrintPosition()); if (dataBean.getStatus() == PrjBean.PRJ_STATUS_CUT_PAPER) {
tvPrintPosition.setText(dataBean.getPrintPosition() + "*");
} else {
tvPrintPosition.setText(dataBean.getPrintPosition());
}
if (TextUtil.isNotEmptyOrNullOrUndefined(dataBean.getFlyingSinglePosition())) { if (TextUtil.isNotEmptyOrNullOrUndefined(dataBean.getFlyingSinglePosition())) {
//打印位置+飛單位置 //打印位置+飛單位置
baseViewHolder.setText(R.id.tv_prj_record_print_position, dataBean.getPrintPosition() + "/" + dataBean.getFlyingSinglePosition()); tvPrintPosition.setText(tvPrintPosition.getText() + "/" + dataBean.getFlyingSinglePosition());
} }
} else { } else {
baseViewHolder.setText(R.id.tv_prj_record_print_position, ""); tvPrintPosition.setText("");
} }
} }
} }
...@@ -111,11 +111,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -111,11 +111,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
getOrderDetails(orderId, binding) getOrderDetails(orderId, binding)
} }
initTopBar(qm_order_details_bar) initTopBar(qm_order_details_bar)
//訂單編號點擊事件
findViewById<TextView>(R.id.tv_order_no).setOnClickListener {
ClipboardUtils.copyText(tv_order_no.text)
showMessage("複製成功")
}
} }
private fun initTopBar(topbar: QMUITopBar) { private fun initTopBar(topbar: QMUITopBar) {
...@@ -133,6 +128,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -133,6 +128,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
//初始化頁面佈局 //初始化頁面佈局
val orderDetails = it.data!![0] val orderDetails = it.data!![0]
orderNo = orderDetails.ORDER_NO.toString() orderNo = orderDetails.ORDER_NO.toString()
//訂單編號點擊事件
tv_order_details_order_no.setOnClickListener {
ClipboardUtils.copyText(orderNo)
showMessage("複製成功")
}
qm_order_details_bar.addRightImageButton(R.drawable.ic_print, R.id.iv_prj_history).setOnClickListener { qm_order_details_bar.addRightImageButton(R.drawable.ic_print, R.id.iv_prj_history).setOnClickListener {
PrjQueryActivity.startPrjQueryActivity(this@OrderDetailsActivity, orderNo) PrjQueryActivity.startPrjQueryActivity(this@OrderDetailsActivity, orderNo)
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<variable <variable
name="total" name="total"
type="Double" /> type="Double" />
<variable <variable
name="data" name="data"
type="com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails.DataBean" /> type="com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails.DataBean" />
...@@ -114,12 +115,15 @@ ...@@ -114,12 +115,15 @@
<!-- 訂單編號--> <!-- 訂單編號-->
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView <com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_order_no" android:id="@+id/tv_order_details_order_no"
style="@style/otherOrder_details_twelve_text_Style" style="@style/otherOrder_details_twelve_text_Style"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/other_order_info_dialog_content_marginLeft" android:layout_margin="@dimen/other_order_info_dialog_content_marginLeft"
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="@{@string/order_no + data.oRDER_NO}" /> android:text="@{@string/order_no + data.oRDER_NO}" />
<TextView <TextView
...@@ -536,11 +540,11 @@ ...@@ -536,11 +540,11 @@
<LinearLayout <LinearLayout
android:id="@+id/layout_takeaway_discount" android:id="@+id/layout_takeaway_discount"
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/other_order_info_dialog_content_marginLeft" android:paddingLeft="@dimen/other_order_info_dialog_content_marginLeft"
android:paddingRight="@dimen/other_order_info_dialog_content_marginLeft"/> android:paddingRight="@dimen/other_order_info_dialog_content_marginLeft" />
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -647,9 +651,9 @@ ...@@ -647,9 +651,9 @@
android:id="@+id/rv_third_expenses" android:id="@+id/rv_third_expenses"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginLeft="@dimen/dp_10" android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"/> android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
......
...@@ -22,8 +22,7 @@ ...@@ -22,8 +22,7 @@
android:layout_marginRight="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingTop="@dimen/dp_20" android:paddingTop="@dimen/dp_20"
android:paddingBottom="@dimen/dp_20" android:paddingBottom="@dimen/dp_20">
android:visibility="gone">
<EditText <EditText
android:id="@+id/ed_input_order_number" android:id="@+id/ed_input_order_number"
......
...@@ -16,42 +16,41 @@ ...@@ -16,42 +16,41 @@
android:textColor="@color/theme_333_color" android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_16" android:textSize="@dimen/dp_16"
tools:text="食品組名稱" /> tools:text="食品組名稱" />
<include layout="@layout/include_vertical_color_ccc_dividing_line" /> <include layout="@layout/include_vertical_color_ccc_dividing_line" />
<LinearLayout <LinearLayout
android:id="@+id/layout_print_state"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0.2" android:layout_weight="0.8"
android:orientation="vertical" android:paddingTop="@dimen/dp_2"
android:paddingLeft="@dimen/dp_5" android:paddingBottom="@dimen/dp_2"
android:paddingTop="@dimen/dp_5" android:gravity="center_vertical"
android:paddingRight="@dimen/dp_5"> android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView <TextView
android:id="@+id/tv_prj_record_food_name" android:id="@+id/tv_prj_record_food_name"
style="@style/PrjQueryItemStyle" style="@style/PrjQueryItemStyle"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0.2"
android:paddingLeft="@dimen/dp_5"
android:paddingTop="@dimen/dp_5"
android:paddingRight="@dimen/dp_5"
tools:text="食品名稱一" /> tools:text="食品名稱一" />
<TextView <TextView
android:id="@+id/tv_prj_record_fail_reason"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:textColor="@color/required_color"
android:textSize="@dimen/dp_10"
tools:text="失敗原因" />
</LinearLayout>
<TextView
android:id="@+id/tv_prj_record_print_position" android:id="@+id/tv_prj_record_print_position"
style="@style/PrjQueryItemStyle" style="@style/PrjQueryItemStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0.26" android:layout_weight="0.26"
tools:text="打印位置/飛單位置" /> tools:text="打印位置/飛單置" />
<TextView <TextView
android:id="@+id/tv_prj_record_print_count" android:id="@+id/tv_prj_record_print_count"
...@@ -83,5 +82,19 @@ ...@@ -83,5 +82,19 @@
android:textSize="@dimen/dp_16" /> android:textSize="@dimen/dp_16" />
</LinearLayout> </LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_prj_record_fail_reason"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:paddingLeft="@dimen/dp_5"
android:paddingRight="@dimen/dp_5"
android:textColor="@color/required_color"
android:textSize="@dimen/dp_10"
tools:text="失敗原因" />
</LinearLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -181,36 +181,6 @@ public class PrintInfoBean { ...@@ -181,36 +181,6 @@ public class PrintInfoBean {
} }
/**
* 將prj數據轉為打印類
*
* @param datas prj數據
* @param printLocation 廚房位置
* @param deviceBean 打印機信息
* @return 打印類集合
*/
public static List<List<PrintInfoBean>> transPrjBean(List<PrjBean.DataBean.Bean> datas, String printLocation, PrinterDeviceBean deviceBean) {
List<List<PrintInfoBean>> prjPrintBeans = new ArrayList<>();
//通過打印位置生成多張用於打印的bitmap
List<PrjBean.DataBean.Bean> noCut = new ArrayList<>();
for (PrjBean.DataBean.Bean prjbean : datas) {
//遍歷當前打印位置所有的食品
if (prjbean.getStatus() == 2) {
//切紙,單獨生成一條prj數據
List<PrjBean.DataBean.Bean> beans = new ArrayList<>();
beans.add(prjbean);
prjPrintBeans.add(getPrjPrintInfoBean(printLocation, beans, deviceBean));
} else {
//不切紙,保存到單獨的集合里,之後生成一組數據
noCut.add(prjbean);
}
}
if (noCut.size() > 0) {
prjPrintBeans.add(getPrjPrintInfoBean(printLocation, noCut, deviceBean));
}
return prjPrintBeans;
}
private static boolean foodIsBold = false;//食品是否加粗 private static boolean foodIsBold = false;//食品是否加粗
private static boolean foodItemIsBold = false;//細項是否加粗 private static boolean foodItemIsBold = false;//細項是否加粗
private static boolean foodIsItalic = false;//食品是否斜體 private static boolean foodIsItalic = false;//食品是否斜體
...@@ -231,13 +201,13 @@ public class PrintInfoBean { ...@@ -231,13 +201,13 @@ public class PrintInfoBean {
* *
* @return * @return
*/ */
private static List<PrintInfoBean> getPrjPrintInfoBean(String key, List<PrjBean.DataBean.Bean> prjBeans, PrinterDeviceBean deviceBean) { private static List<PrintInfoBean> getPrjPrintInfoBean(String key, List<PrjBean> prjBeans, PrinterDeviceBean deviceBean) {
List<PrintInfoBean> printInfoBeans = new ArrayList<>(); List<PrintInfoBean> printInfoBeans = new ArrayList<>();
initPrintConfig(deviceBean); initPrintConfig(deviceBean);
if (prjBeans == null || prjBeans.size() <= 0) { if (prjBeans == null || prjBeans.size() <= 0) {
return null; return null;
} }
PrjBean.DataBean.Bean prjBean = prjBeans.get(0); PrjBean prjBean = prjBeans.get(0);
if (prjBean == null) { if (prjBean == null) {
return null; return null;
} }
...@@ -275,7 +245,7 @@ public class PrintInfoBean { ...@@ -275,7 +245,7 @@ public class PrintInfoBean {
printInfoBeans.add(new PrintInfoBean(new String[]{"人數:" + prjBean.getPerson(), UserContext.newInstance().getMemberName()}, new Double[]{1d}, 0)); printInfoBeans.add(new PrintInfoBean(new String[]{"人數:" + prjBean.getPerson(), UserContext.newInstance().getMemberName()}, new Double[]{1d}, 0));
} }
printInfoBeans.add(new PrintInfoBean(new String[]{getLineBorder("", 1, paperWidth)}, 0)); printInfoBeans.add(new PrintInfoBean(new String[]{getLineBorder("", 1, paperWidth)}, 0));
for (PrjBean.DataBean.Bean bean : prjBeans) { for (PrjBean bean : prjBeans) {
if (bean.getParentId() == 0) { if (bean.getParentId() == 0) {
//沒有父級id,則是第一級食品 //沒有父級id,則是第一級食品
bean.setItemType(1); bean.setItemType(1);
...@@ -284,7 +254,7 @@ public class PrintInfoBean { ...@@ -284,7 +254,7 @@ public class PrintInfoBean {
if (bean.getParentId() != 0) { if (bean.getParentId() != 0) {
bean.setItemType(2);//先設置為細項,再通過下面的遍歷確定是否是第三級細項 bean.setItemType(2);//先設置為細項,再通過下面的遍歷確定是否是第三級細項
//循環遍歷查找父級食品 //循環遍歷查找父級食品
for (PrjBean.DataBean.Bean itembean : prjBeans) { for (PrjBean itembean : prjBeans) {
if (bean.getParentId() == itembean.getOrderDetailsId()) { if (bean.getParentId() == itembean.getOrderDetailsId()) {
//如果父級是細項,則當前食品就是二級細項 //如果父級是細項,則當前食品就是二級細項
bean.setItemType(bean.getItemType() + 1); bean.setItemType(bean.getItemType() + 1);
......
...@@ -12,10 +12,10 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager; ...@@ -12,10 +12,10 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins; import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.print.PrintExecutor; import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder; import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener;
import com.joe.print.mvp.model.bean.PrintInfoBean; import com.joe.print.mvp.model.bean.PrintInfoBean;
import com.joe.print.mvp.print.utils.MyPrintUtils; import com.joe.print.mvp.print.utils.MyPrintUtils;
import java.net.ConnectException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -25,7 +25,7 @@ public class EpsonPrint implements ReceiveListener { ...@@ -25,7 +25,7 @@ public class EpsonPrint implements ReceiveListener {
private Printer mPrinter = null; private Printer mPrinter = null;
private ReceiveListener receiveListener; private ReceiveListener receiveListener;
private PrintExecutor.OnPrintResultListener resultListener; private OnPrjPrintResultListener onPrjPrintResultListener;
private static EpsonPrint epsonPrint; private static EpsonPrint epsonPrint;
...@@ -45,9 +45,9 @@ public class EpsonPrint implements ReceiveListener { ...@@ -45,9 +45,9 @@ public class EpsonPrint implements ReceiveListener {
* *
* @return * @return
*/ */
public boolean initializeObject(Context context, ReceiveListener receiveListener, PrintExecutor.OnPrintResultListener resultListener) { public boolean initializeObject(Context context, ReceiveListener receiveListener, OnPrjPrintResultListener onPrjPrintResultListener) {
try { try {
this.resultListener = resultListener; this.onPrjPrintResultListener = onPrjPrintResultListener;
this.receiveListener = receiveListener; this.receiveListener = receiveListener;
//第一個參數是機型,第二個參數是語言,因為是打印圖片,語言沒有影響 //第一個參數是機型,第二個參數是語言,因為是打印圖片,語言沒有影響
mPrinter = new Printer(Printer.TM_U220, Printer.MODEL_TAIWAN, context); mPrinter = new Printer(Printer.TM_U220, Printer.MODEL_TAIWAN, context);
...@@ -143,7 +143,7 @@ public class EpsonPrint implements ReceiveListener { ...@@ -143,7 +143,7 @@ public class EpsonPrint implements ReceiveListener {
/** /**
* 打印的食品id隊列 * 打印的食品id隊列
*/ */
private List<String> ids = new ArrayList<>(); private List<String> prjIds = new ArrayList<>();
public void putPrintString(String ip, int paperWidth, List<PrintInfoBean> printInfoBeans) { public void putPrintString(String ip, int paperWidth, List<PrintInfoBean> printInfoBeans) {
if (mPrinter == null) { if (mPrinter == null) {
...@@ -276,68 +276,72 @@ public class EpsonPrint implements ReceiveListener { ...@@ -276,68 +276,72 @@ public class EpsonPrint implements ReceiveListener {
isPrint = false; isPrint = false;
} }
bitmaps.add(bitmap); bitmaps.add(bitmap);
ids.add(foodId); prjIds.add(foodId);
if (isPrint) { if (isPrint) {
Log.d("eee", "針式打印機隊列中,前面還有" + bitmaps.size() + "個任務"); Log.d("eee", "prj針式打印機隊列中,前面還有" + bitmaps.size() + "個任務");
PrinterPlugins.getOnPrinterFlowHandler().connectionBefore("針式打印機隊列中,前面還有" + bitmaps.size() + "個任務", ip, 0, 0, 0); PrinterPlugins.getOnPrinterFlowHandler().connectionBefore("針式打印機隊列中,前面還有" + bitmaps.size() + "個任務", ip, 0, 0, 0);
return; return;
} }
isPrint = true; isPrint = true;
printData(ip, bitmap); printData(ip, foodId, bitmap);
} }
private void printData(String ip, Bitmap bitmap) { private void printData(String ip, String ids, Bitmap bitmap) {
PrinterPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(0, 0, "針式打印機", ip); PrinterPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(0, 0, "針式打印機", ip);
mPrinter.clearCommandBuffer(); mPrinter.clearCommandBuffer();
Log.d("eee", "針式打印機創建數據中,任務數:" + bitmaps.size()); Log.d("eee", "prj針式打印機創建數據中,任務數:" + bitmaps.size());
if (!createPrintData(bitmap)) { if (!createPrintData(bitmap)) {
Log.d("eee", "針式打印機創建數據失敗"); Log.d("eee", "prj針式打印機創建數據失敗");
//如果是創建數據失敗,說明這個數據有問題,移除掉 //如果是創建數據失敗,說明這個數據有問題,移除掉
bitmaps.remove(bitmap); printErrorProcess(ids, bitmap, new Exception("針式打印機添加數據失敗" + ip), PrintSocketHolder.ERROR_6);
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("針式打印機添加數據失敗" + ip));
updatePrintState(PrintSocketHolder.ERROR_6);
isPrint = false;
return; return;
} }
//連接打印機 //連接打印機
connectByIp(ip, mPrinter.getStatus()); connectByIp(ip, mPrinter.getStatus());
//獲取打印機狀態 //獲取打印機狀態
PrinterStatusInfo statusInfo = mPrinter.getStatus(); PrinterStatusInfo statusInfo = mPrinter.getStatus();
Log.d("eee", "針式打印機:" + "紙張狀態:" + statusInfo.getPaper() + "連接狀態:" + statusInfo.getConnection() + ",任務數:" + bitmaps.size()); Log.d("eee", "prj針式打印機:" + "紙張狀態:" + statusInfo.getPaper() + "連接狀態:" + statusInfo.getConnection() + ",任務數:" + bitmaps.size());
if (statusInfo.getConnection() != 1) { if (statusInfo.getConnection() != 1) {
//未連接到打印機 //未連接到打印機
updatePrintState(PrintSocketHolder.ERROR_7); Log.d("eee", "prj針式打印機連接失敗:" + ids);
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new ConnectException("針式打印機連接失敗" + ip)); printErrorProcess(ids, bitmap, new Exception("針式打印機連接失敗" + ip), PrintSocketHolder.ERROR_7);
isPrint = false;
return; return;
} else if (statusInfo.getPaper() != 0) { } else if (statusInfo.getPaper() != 0) {
//紙張不正常 //紙張不正常
if (statusInfo.getPaper() == 2) { if (statusInfo.getPaper() == 2) {
//沒紙了 //沒紙了
updatePrintState(PrintSocketHolder.ERROR_11); printErrorProcess(ids, bitmap, new Exception("針式打印機缺紙,打印失敗" + ip), PrintSocketHolder.ERROR_11);
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("針式打印機缺紙,打印失敗" + ip));
} else { } else {
//紙張狀態異常 //紙張狀態異常
updatePrintState(PrintSocketHolder.ERROR_11); printErrorProcess(ids, bitmap, new Exception("針式打印機紙張異常,請重啟打印機" + ip), PrintSocketHolder.ERROR_11);
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("針式打印機紙張異常,請重啟打印機" + ip));
} }
isPrint = false;
return; return;
} }
try { try {
mPrinter.sendData(Printer.PARAM_DEFAULT); mPrinter.sendData(Printer.PARAM_DEFAULT);
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(); PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
Log.d("eee", "針式打印機打印成功" + ",任務數:" + bitmaps.size()); Log.d("eee", "prj針式打印機打印成功" + ",任務數:" + bitmaps.size());
} catch (Exception e) { } catch (Exception e) {
Log.d("eee", "針式打印機打印失敗" + ",任務數:" + bitmaps.size() + e.getMessage()); Log.d("eee", "prj針式打印機打印失敗" + ",任務數:" + bitmaps.size() + e.getMessage());
updatePrintState(PrintSocketHolder.ERROR_10); printErrorProcess(ids, bitmap, new Exception("針式打印機打印報錯" + ip), PrintSocketHolder.ERROR_10);
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("針式打印機打印報錯" + ip));
mPrinter.clearCommandBuffer(); mPrinter.clearCommandBuffer();
disconnectPrinter();
isPrint = false;
} }
} }
/**
* 打印異常處理
* @param ids
* @param bitmap
*/
private void printErrorProcess(String ids, Bitmap bitmap, Exception e, int errorCode) {
bitmaps.remove(bitmap);
prjIds.remove(ids);
PrinterPlugins.getOnPrinterFlowHandler().connectionError(e);
updatePrintState(ids, errorCode);
isPrint = false;
isExecutionNextTask();
}
private void connectByIp(String ip, PrinterStatusInfo statusInfo) { private void connectByIp(String ip, PrinterStatusInfo statusInfo) {
if (statusInfo != null) { if (statusInfo != null) {
LoganManager.w_printer(TAG, "連接狀態1111:" + statusInfo.getConnection()); LoganManager.w_printer(TAG, "連接狀態1111:" + statusInfo.getConnection());
...@@ -361,8 +365,10 @@ public class EpsonPrint implements ReceiveListener { ...@@ -361,8 +365,10 @@ public class EpsonPrint implements ReceiveListener {
ipAddress = ip; ipAddress = ip;
} }
} }
if (statusInfo != null) {
LoganManager.w_printer(TAG, "連接狀態222:" + statusInfo.getConnection()); LoganManager.w_printer(TAG, "連接狀態222:" + statusInfo.getConnection());
} }
}
private void loginfo(PrinterStatusInfo statusInfo) { private void loginfo(PrinterStatusInfo statusInfo) {
int connection = statusInfo.getConnection(); int connection = statusInfo.getConnection();
...@@ -388,7 +394,7 @@ public class EpsonPrint implements ReceiveListener { ...@@ -388,7 +394,7 @@ public class EpsonPrint implements ReceiveListener {
try { try {
mPrinter.connect("TCP:" + ip, Printer.PARAM_DEFAULT); mPrinter.connect("TCP:" + ip, Printer.PARAM_DEFAULT);
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "連接打印機報錯" + e.getMessage() + e.getClass().getName()); Log.e(TAG, "prj連接打印機報錯" + e.getMessage() + e.getClass().getName());
e.printStackTrace(); e.printStackTrace();
LoganManager.w_printer(TAG, "連接打印機報錯:" + e.getMessage()); LoganManager.w_printer(TAG, "連接打印機報錯:" + e.getMessage());
disconnectPrinter(); disconnectPrinter();
...@@ -400,33 +406,51 @@ public class EpsonPrint implements ReceiveListener { ...@@ -400,33 +406,51 @@ public class EpsonPrint implements ReceiveListener {
return true; return true;
} }
private void updatePrintState(int code) { private void updatePrintState(String ids, int code) {
if (resultListener != null) { if (onPrjPrintResultListener != null) {
resultListener.onResult(code); onPrjPrintResultListener.onResult(code, ids);
} }
} }
/** /**
* 打印結果回調 * 打印結果回調
*
* @param printer 打印類 * @param printer 打印類
* @param i 打印結果 * @param i 打印結果
* @param printerStatusInfo 打印機狀態 * @param printerStatusInfo 打印機狀態
* @param s * @param s 沒值
*/ */
@Override @Override
public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String s) { public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String s) {
this.mPrinter = printer; this.mPrinter = printer;
mPrinter.clearCommandBuffer(); mPrinter.clearCommandBuffer();
executionNextTask(printer, i, printerStatusInfo);
}
/**
* 執行下一個打印任務
* @param printer
* @param i
* @param printerStatusInfo
*/
private void executionNextTask(Printer printer, int i, PrinterStatusInfo printerStatusInfo) {
if (bitmaps.size() > 0) { if (bitmaps.size() > 0) {
if (receiveListener != null) { if (receiveListener != null) {
receiveListener.onPtrReceive(printer, i, printerStatusInfo, ids.get(0)); receiveListener.onPtrReceive(printer, i, printerStatusInfo, prjIds.get(0));
} }
Log.d("eee", "移除前:onPtrReceive" + ids.get(0) + ",任務數:" + bitmaps.size()); Log.d("eee", "prj移除前:onPtrReceive" + prjIds.get(0) + ",任務數:" + bitmaps.size());
bitmaps.remove(0); bitmaps.remove(0);
ids.remove(0); prjIds.remove(0);
}
isExecutionNextTask();
} }
/**
* 是否繼續執行下一個任務
*/
private void isExecutionNextTask() {
if (bitmaps.size() > 0) { if (bitmaps.size() > 0) {
printData(ipAddress, bitmaps.get(0)); printData(ipAddress, prjIds.get(0), bitmaps.get(0));
} else { } else {
isPrint = false; isPrint = false;
disconnectPrinter(); disconnectPrinter();
......
...@@ -66,21 +66,21 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -66,21 +66,21 @@ public class PrintPrjKitchen extends PrinterRoot {
private int modifierIsItalic; private int modifierIsItalic;
private String[] languageTypes; private String[] languageTypes;
private static Map<String, List<PrjBean.DataBean.Bean>> prjMap; private static Map<String, List<PrjBean>> prjMap;
@Override @Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) { public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>(); Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
//通過打印位置生成多張用於打印的bitmap //通過打印位置生成多張用於打印的bitmap
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> entry : getPrjMap().entrySet()) { for (Map.Entry<String, List<PrjBean>> entry : getPrjMap().entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
List<Bitmap> bitmaps = new ArrayList<>(); List<Bitmap> bitmaps = new ArrayList<>();
List<PrjBean.DataBean.Bean> noCut = new ArrayList<>(); List<PrjBean> noCut = new ArrayList<>();
//不帶*號,所有同樣廚房位置的食品都在一張紙上 //不帶*號,所有同樣廚房位置的食品都在一張紙上
for (PrjBean.DataBean.Bean bean : entry.getValue()) { for (PrjBean bean : entry.getValue()) {
if (bean.getStatus() == 2) { if (bean.getStatus() == 2) {
List<PrjBean.DataBean.Bean> beans = new ArrayList<>(); List<PrjBean> beans = new ArrayList<>();
beans.add(bean); beans.add(bean);
Bitmap bitmap = getKitChenPrintBitmap(mContext, key, beans, deviceBean); Bitmap bitmap = getKitChenPrintBitmap(mContext, key, beans, deviceBean);
bitmaps.add(bitmap); bitmaps.add(bitmap);
...@@ -120,16 +120,16 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -120,16 +120,16 @@ public class PrintPrjKitchen extends PrinterRoot {
this.languageTypes = deviceBean.getLanguageType().split(","); this.languageTypes = deviceBean.getLanguageType().split(",");
List<String> pritContents = new ArrayList<>(); List<String> pritContents = new ArrayList<>();
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> entry : getPrjMap().entrySet()) { for (Map.Entry<String, List<PrjBean>> entry : getPrjMap().entrySet()) {
//不帶*號,所有同樣廚房位置的食品都在一張紙上 //不帶*號,所有同樣廚房位置的食品都在一張紙上
// for (PrjBean.DataBean.Bean bean : entry.getValue()) { // for (PrjBean bean : entry.getValue()) {
pritContents.add(getBBPosPrintData(entry.getKey(), entry.getValue(), entry.getValue().get(0))); pritContents.add(getBBPosPrintData(entry.getKey(), entry.getValue(), entry.getValue().get(0)));
// } // }
} }
return (String[]) pritContents.toArray(); return (String[]) pritContents.toArray();
} }
private String getBBPosPrintData(String key, List<PrjBean.DataBean.Bean> prjBeans, PrjBean.DataBean.Bean prjBean) { private String getBBPosPrintData(String key, List<PrjBean> prjBeans, PrjBean prjBean) {
String stringBuilder = "<html><body>" + String stringBuilder = "<html><body>" +
getHtmlHeadInfo(key, prjBean) + getHtmlHeadInfo(key, prjBean) +
getHtmlKitchenFood(prjBeans) + getHtmlKitchenFood(prjBeans) +
...@@ -138,7 +138,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -138,7 +138,7 @@ public class PrintPrjKitchen extends PrinterRoot {
return stringBuilder; return stringBuilder;
} }
private String getHtmlHeadInfo(String key, PrjBean.DataBean.Bean prjBean) { private String getHtmlHeadInfo(String key, PrjBean prjBean) {
List<HtmlLable> htmlLables = new ArrayList<>(); List<HtmlLable> htmlLables = new ArrayList<>();
...@@ -200,13 +200,13 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -200,13 +200,13 @@ public class PrintPrjKitchen extends PrinterRoot {
return getHtmlLables(htmlLables.toArray(new HtmlLable[htmlLables.size()])); return getHtmlLables(htmlLables.toArray(new HtmlLable[htmlLables.size()]));
} }
private String getHtmlKitchenFood(List<PrjBean.DataBean.Bean> prjBeans) { private String getHtmlKitchenFood(List<PrjBean> prjBeans) {
setFoodItemType(prjBeans); setFoodItemType(prjBeans);
List<HtmlLable> htmlLables = new ArrayList<>(); List<HtmlLable> htmlLables = new ArrayList<>();
for (PrjBean.DataBean.Bean prjBean : prjBeans) { for (PrjBean prjBean : prjBeans) {
} }
...@@ -215,7 +215,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -215,7 +215,7 @@ public class PrintPrjKitchen extends PrinterRoot {
return getHtmlLables(htmlLables.toArray(new HtmlLable[htmlLables.size()])); return getHtmlLables(htmlLables.toArray(new HtmlLable[htmlLables.size()]));
} }
private String getHtmlEndInfo(PrjBean.DataBean.Bean prjBean) { private String getHtmlEndInfo(PrjBean prjBean) {
List<HtmlLable> htmlLables = new ArrayList<>(); List<HtmlLable> htmlLables = new ArrayList<>();
//台號 //台號
htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, getTableName(prjBean), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_kitchen_print_table_number2))); htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, getTableName(prjBean), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_kitchen_print_table_number2)));
...@@ -233,8 +233,8 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -233,8 +233,8 @@ public class PrintPrjKitchen extends PrinterRoot {
return 1; return 1;
} }
public Bitmap getKitChenPrintBitmap(Context context, String key, PrjBean.DataBean.Bean data, PrinterDeviceBean printerDeviceBean) { public Bitmap getKitChenPrintBitmap(Context context, String key, PrjBean data, PrinterDeviceBean printerDeviceBean) {
List<PrjBean.DataBean.Bean> beans = new ArrayList<>(); List<PrjBean> beans = new ArrayList<>();
beans.add(data); beans.add(data);
return getKitChenPrintBitmap(context, key, beans, printerDeviceBean); return getKitChenPrintBitmap(context, key, beans, printerDeviceBean);
} }
...@@ -245,11 +245,11 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -245,11 +245,11 @@ public class PrintPrjKitchen extends PrinterRoot {
* @param context * @param context
* @return * @return
*/ */
public Bitmap getKitChenPrintBitmap(Context context, String key, List<PrjBean.DataBean.Bean> data, PrinterDeviceBean printerDeviceBean) { public Bitmap getKitChenPrintBitmap(Context context, String key, List<PrjBean> data, PrinterDeviceBean printerDeviceBean) {
if (data == null || data.size() <= 0) { if (data == null || data.size() <= 0) {
return null; return null;
} }
PrjBean.DataBean.Bean prjBean = data.get(0); PrjBean prjBean = data.get(0);
if (prjBean == null) { if (prjBean == null) {
return null; return null;
} }
...@@ -433,8 +433,8 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -433,8 +433,8 @@ public class PrintPrjKitchen extends PrinterRoot {
} }
private void setFoodItemType(List<PrjBean.DataBean.Bean> data) { private void setFoodItemType(List<PrjBean> data) {
for (PrjBean.DataBean.Bean bean : data) { for (PrjBean bean : data) {
if (bean.getParentId() == 0) { if (bean.getParentId() == 0) {
//沒有父級id,則是第一級食品 //沒有父級id,則是第一級食品
bean.setItemType(1); bean.setItemType(1);
...@@ -443,7 +443,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -443,7 +443,7 @@ public class PrintPrjKitchen extends PrinterRoot {
if (bean.getParentId() != 0) { if (bean.getParentId() != 0) {
bean.setItemType(2);//先設置為細項,再通過下面的遍歷確定是否是第三級細項 bean.setItemType(2);//先設置為細項,再通過下面的遍歷確定是否是第三級細項
//循環遍歷查找父級食品 //循環遍歷查找父級食品
for (PrjBean.DataBean.Bean itembean : data) { for (PrjBean itembean : data) {
if (bean.getParentId() == itembean.getOrderDetailsId()) { if (bean.getParentId() == itembean.getOrderDetailsId()) {
//如果父級是細項,則當前食品就是二級細項 //如果父級是細項,則當前食品就是二級細項
bean.setItemType(bean.getItemType() + 1); bean.setItemType(bean.getItemType() + 1);
...@@ -454,7 +454,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -454,7 +454,7 @@ public class PrintPrjKitchen extends PrinterRoot {
} }
} }
private String getTableName(PrjBean.DataBean.Bean prjBean) { private String getTableName(PrjBean prjBean) {
if (TextUtil.isEmptyOrNullOrUndefined(prjBean.getTableName())) { if (TextUtil.isEmptyOrNullOrUndefined(prjBean.getTableName())) {
switch (prjBean.getOrderType()) { switch (prjBean.getOrderType()) {
case 1: case 1:
...@@ -470,7 +470,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -470,7 +470,7 @@ public class PrintPrjKitchen extends PrinterRoot {
} }
} }
// private String getProductNameByLanguageType(PrjBean.DataBean.Bean prjBean) { // private String getProductNameByLanguageType(PrjBean prjBean) {
// for (String type : languageTypes) { // for (String type : languageTypes) {
// String languageType = type; // String languageType = type;
// if (languageType.contains(".")) { // if (languageType.contains(".")) {
...@@ -495,7 +495,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -495,7 +495,7 @@ public class PrintPrjKitchen extends PrinterRoot {
// } // }
// } // }
public static Map<String, List<PrjBean.DataBean.Bean>> getPrjMap() { public static Map<String, List<PrjBean>> getPrjMap() {
if (prjMap == null) { if (prjMap == null) {
prjMap = new HashMap<>(); prjMap = new HashMap<>();
} }
......
...@@ -37,7 +37,6 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager; ...@@ -37,7 +37,6 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil; import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins; import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.view.ImageUtils; import com.gingersoft.gsa.cloud.common.utils.view.ImageUtils;
import com.gingersoft.gsa.cloud.common.utils.view.LayoutToBitmapUtils; import com.gingersoft.gsa.cloud.common.utils.view.LayoutToBitmapUtils;
...@@ -53,6 +52,7 @@ import com.gingersoft.gsa.cloud.print.bean.PrintTakeawayFormContent; ...@@ -53,6 +52,7 @@ import com.gingersoft.gsa.cloud.print.bean.PrintTakeawayFormContent;
import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem; import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem; import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.gingersoft.gsa.cloud.print.bean.base.PrintPayTypeItem; import com.gingersoft.gsa.cloud.print.bean.base.PrintPayTypeItem;
import com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener;
import com.google.zxing.WriterException; import com.google.zxing.WriterException;
import com.hyweb.n5.lib.constant.PrinterConstant; import com.hyweb.n5.lib.constant.PrinterConstant;
import com.hyweb.n5.lib.util.PrinterUtil; import com.hyweb.n5.lib.util.PrinterUtil;
...@@ -326,6 +326,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -326,6 +326,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
} }
private PrintExecutor executor; private PrintExecutor executor;
private EpsonPrint mPrinter;
/** /**
* ip設備打印 * ip設備打印
...@@ -339,8 +340,13 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -339,8 +340,13 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
RxJavaUtils.doInIOThread(new RxIOTask<Object>(0) { RxJavaUtils.doInIOThread(new RxIOTask<Object>(0) {
@Override @Override
public Void doInIOThread(Object o) { public Void doInIOThread(Object o) {
EpsonPrint mPrinter = new EpsonPrint(); mPrinter = new EpsonPrint();
mPrinter.initializeObject(GsaCloudApplication.getAppContext(), PrinterRoot.this, PrinterRoot.this); mPrinter.initializeObject(GsaCloudApplication.getAppContext(), PrinterRoot.this, new OnPrjPrintResultListener() {
@Override
public void onResult(int errorCode, String prjIds) {
PrinterRoot.this.onResult(errorCode);
}
});
for (int j = 0; j < bitmaps.size(); j++) { for (int j = 0; j < bitmaps.size(); j++) {
mPrinter.putPrintData(printerDeviceBean.getIp(), bitmaps.get(j), ""); mPrinter.putPrintData(printerDeviceBean.getIp(), bitmaps.get(j), "");
} }
...@@ -354,6 +360,12 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -354,6 +360,12 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
ipPrint(printerDeviceBean, bitmaps, this, this); ipPrint(printerDeviceBean, bitmaps, this, this);
} }
public void disconnectEpson() {
if (mPrinter != null) {
mPrinter.disconnectPrinter();
}
}
private void ipPrint(PrinterDeviceBean printerDeviceBean, List<Bitmap> bitmaps, PrintSocketHolder.OnStateChangedListener stateChangedListener, PrintExecutor.OnPrintResultListener resultListener) { private void ipPrint(PrinterDeviceBean printerDeviceBean, List<Bitmap> bitmaps, PrintSocketHolder.OnStateChangedListener stateChangedListener, PrintExecutor.OnPrintResultListener resultListener) {
if (executor == null) { if (executor == null) {
executor = new PrintExecutor() executor = new PrintExecutor()
......
...@@ -6,6 +6,7 @@ import com.gingersoft.gsa.cloud.print.PrintDataMaker; ...@@ -6,6 +6,7 @@ import com.gingersoft.gsa.cloud.print.PrintDataMaker;
import com.gingersoft.gsa.cloud.print.PrintExecutor; import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrinterWriter; import com.gingersoft.gsa.cloud.print.PrinterWriter;
import com.gingersoft.gsa.cloud.print.PrinterWriterExecutor; import com.gingersoft.gsa.cloud.print.PrinterWriterExecutor;
import com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -21,9 +22,9 @@ public class PrjPrintMaker implements PrintDataMaker { ...@@ -21,9 +22,9 @@ public class PrjPrintMaker implements PrintDataMaker {
private String ip; private String ip;
private int port; private int port;
private PrintExecutor.OnPrjPrintResultListener onPrjPrintResultListener; private OnPrjPrintResultListener onPrjPrintResultListener;
public PrintExecutor.OnPrjPrintResultListener getOnPrjPrintResultListener() { public OnPrjPrintResultListener getOnPrjPrintResultListener() {
return onPrjPrintResultListener; return onPrjPrintResultListener;
} }
......
...@@ -15,6 +15,7 @@ import androidx.annotation.Nullable; ...@@ -15,6 +15,7 @@ import androidx.annotation.Nullable;
import com.epson.epos2.printer.Printer; import com.epson.epos2.printer.Printer;
import com.epson.epos2.printer.PrinterStatusInfo; import com.epson.epos2.printer.PrinterStatusInfo;
import com.epson.epos2.printer.ReceiveListener; import com.epson.epos2.printer.ReceiveListener;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans; import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans; import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
...@@ -53,6 +54,7 @@ import com.joe.print.mvp.print.utils.MyPrintUtils; ...@@ -53,6 +54,7 @@ import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.sunmi.peripheral.printer.InnerResultCallbcak; import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils; import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import org.jetbrains.annotations.NotNull;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -219,15 +221,13 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -219,15 +221,13 @@ public class PrjService extends Service implements ReceiveListener {
} }
} }
private int totalPrj;
private int currentIndex;
private String prjJson = "{\"success\":true,\"sysTime\":1613789540248,\"data\":{\"K1\":[{\"id\":71387,\"printerDeviceId\":186,\"status\":2,\"tableName\":\"堂食1\",\"orderNo\":\"0013\",\"orderTime\":2021,\"person\":1,\"number\":1,\"orderDetailsTime\":\"Feb 23, 2021 1:52:06 PM\",\"orderDetailsId\":372,\"productName\":\"N1. Mr.Arita華盛丼>得獎和牛使用定食\",\"productName2\":\"\",\"productName3\":\"\",\"parentId\":0,\"type\":3,\"createTime\":1614059526281,\"productId\":61256,\"requests\":1,\"actualPrinterDeviceId\":186,\"orderType\":1,\"isFirstSendOrder\":1,\"quantity\":21,\"memberName\":\"96761128\"}]}}"; private String prjJson = "{\"success\":true,\"sysTime\":1613789540248,\"data\":{\"K1\":[{\"id\":71387,\"printerDeviceId\":186,\"status\":2,\"tableName\":\"堂食1\",\"orderNo\":\"0013\",\"orderTime\":2021,\"person\":1,\"number\":1,\"orderDetailsTime\":\"Feb 23, 2021 1:52:06 PM\",\"orderDetailsId\":372,\"productName\":\"N1. Mr.Arita華盛丼>得獎和牛使用定食\",\"productName2\":\"\",\"productName3\":\"\",\"parentId\":0,\"type\":3,\"createTime\":1614059526281,\"productId\":61256,\"requests\":1,\"actualPrinterDeviceId\":186,\"orderType\":1,\"isFirstSendOrder\":1,\"quantity\":21,\"memberName\":\"96761128\"}]}}";
private void newPrint(String json) { private void newPrint(String json) {
Map<String, List<PrjBean.DataBean.Bean>> listMap = new HashMap<>(); Map<String, List<PrjBean>> listMap = new HashMap<>();
currentIndex = 0; int totalPrj = 0;
totalPrj = 0;
PrjBean prjBean = JsonUtils.parseObject(json, PrjBean.class); BaseResult prjBean = JsonUtils.parseObject(json, BaseResult.class);
if (prjBean == null || prjBean.getData() == null) { if (prjBean == null || prjBean.getData() == null) {
LoganManager.w_printer(TAG, "newPrint prjBean == null || prjBean.getData() == null "); LoganManager.w_printer(TAG, "newPrint prjBean == null || prjBean.getData() == null ");
return; return;
...@@ -236,7 +236,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -236,7 +236,7 @@ public class PrjService extends Service implements ReceiveListener {
cancel(pollDisposable); cancel(pollDisposable);
//第一步:解析PRJ數據,格式為 Map<廚房位置,需要打印的數據> //第一步:解析PRJ數據,格式為 Map<廚房位置,需要打印的數據>
try { try {
JSONObject jsonObject = new JSONObject(prjBean.getData()); JSONObject jsonObject = new JSONObject(GsonUtils.GsonString(prjBean.getData()));
//通过迭代器获取这段json当中所有的key值 //通过迭代器获取这段json当中所有的key值
Iterator keys = jsonObject.keys(); Iterator keys = jsonObject.keys();
//然后通过一个循环取出所有的key值 //然后通过一个循环取出所有的key值
...@@ -244,45 +244,71 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -244,45 +244,71 @@ public class PrjService extends Service implements ReceiveListener {
String key = String.valueOf(keys.next()); String key = String.valueOf(keys.next());
//最后就可以通过刚刚得到的key值去解析后面的json了 //最后就可以通过刚刚得到的key值去解析后面的json了
JSONArray dataJson = (JSONArray) jsonObject.get(key); JSONArray dataJson = (JSONArray) jsonObject.get(key);
List<PrjBean.DataBean.Bean> datas = JsonUtils.parseArray(dataJson.toString(), PrjBean.DataBean.Bean.class); //解析出prj集合
List<PrjBean> datas = JsonUtils.parseArray(dataJson.toString(), PrjBean.class);
if (datas != null && datas.size() > 0) { if (datas != null && datas.size() > 0) {
//打印位置和需要打印的數據 //打印位置和需要打印的數據
listMap.put(key, datas); listMap.put(key, datas);
//計算prj總數
totalPrj = calculationPrjQuantity(datas);
}
}
} catch (JSONException e) {
e.printStackTrace();
LoganManager.w_printer(TAG, "newPrint JSONException: " + e.getMessage());
}
//設置每張prj的頁數
setPrjIndex(listMap, totalPrj);
//配置對應打印機
foreachPrint(listMap, getPrinterDevices());
}
/**
* 計算出prj總數
*
* @param prjBeans prj數據
*/
private int calculationPrjQuantity(List<PrjBean> prjBeans) {
int totalPrj = 0;
//計算本次打印的prj總張數有沒有不需要切紙的 //計算本次打印的prj總張數有沒有不需要切紙的
boolean isHasNoCut = false; boolean isHasNoCut = false;
for (PrjBean.DataBean.Bean bean : datas) { for (PrjBean bean : prjBeans) {
if (bean.getStatus() == 2) { if (bean.getStatus() == 2) {
//需要切紙,prj總數就+1 // 需要切紙,prj總數就+1
totalPrj++; totalPrj++;
} else { } else if (bean.getStatus() != PrjBean.PRJ_STATUS_FOLLOW_PARENT) {
// 不切紙,並且不跟主項,在遍歷結束後,需要總數+1
isHasNoCut = true; isHasNoCut = true;
} }
} }
if (isHasNoCut) { if (isHasNoCut) {
//有不需要切紙的食物,prj總數+1 // 有不需要切紙的食物,prj總數+1
// +1的原因是,如果全是不切紙的,在遍歷時是不加1的,總數就為0,所以在遍歷結束後+1
totalPrj++; totalPrj++;
} }
} return totalPrj;
}
} catch (JSONException e) {
e.printStackTrace();
LoganManager.w_printer(TAG, "newPrint JSONException: " + e.getMessage());
}
setPrjIndex(listMap, totalPrj);
foreachPrint(listMap, getPrinterDevices());
} }
private Map<String, List<PrjBean.DataBean.Bean>> setPrjIndex(Map<String, List<PrjBean.DataBean.Bean>> listMap, int totalPrj) { /**
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) { * 設置prj的頁數
*
* @param listMap key為打印位置
* @param totalPrj prj總數
* @return 排好頁數的prj數據
*/
private Map<String, List<PrjBean>> setPrjIndex(Map<String, List<PrjBean>> listMap, int totalPrj) {
int currentIndex = 0;
for (Map.Entry<String, List<PrjBean>> prjMap : listMap.entrySet()) {
//上一個對象是否切紙 //上一個對象是否切紙
boolean lastIsCute = false; boolean lastIsCute = false;
for (PrjBean.DataBean.Bean bean : prjMap.getValue()) { for (PrjBean bean : prjMap.getValue()) {
bean.setTotalPrj(totalPrj); bean.setTotalPrj(totalPrj);
if (bean.getStatus() == 2) { if (bean.getStatus() == PrjBean.PRJ_STATUS_CUT_PAPER) {
//要切紙,紙張數+1 //要切紙,紙張數+1
currentIndex++; currentIndex++;
lastIsCute = true; lastIsCute = true;
} else { } else if (bean.getStatus() != PrjBean.PRJ_STATUS_FOLLOW_PARENT) {
// 不跟主項的
if (currentIndex == 0) { if (currentIndex == 0) {
currentIndex = 1; currentIndex = 1;
} else if (lastIsCute) { } else if (lastIsCute) {
...@@ -298,10 +324,10 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -298,10 +324,10 @@ public class PrjService extends Service implements ReceiveListener {
return listMap; return listMap;
} }
private void foreachPrint(Map<String, List<PrjBean.DataBean.Bean>> listMap, List<PrinterDeviceBean> printerDeviceBeans) { private void foreachPrint(Map<String, List<PrjBean>> listMap, List<PrinterDeviceBean> printerDeviceBeans) {
//雙重遍歷可以以後優化 //雙重遍歷可以以後優化
//第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置 //第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) { for (Map.Entry<String, List<PrjBean>> prjMap : listMap.entrySet()) {
boolean isFindDevice = false; boolean isFindDevice = false;
for (PrinterDeviceBean deviceBean : printerDeviceBeans) { for (PrinterDeviceBean deviceBean : printerDeviceBeans) {
//遍歷得到當前打印機,如果沒找到打印機,就不打印 //遍歷得到當前打印機,如果沒找到打印機,就不打印
...@@ -344,7 +370,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -344,7 +370,7 @@ public class PrjService extends Service implements ReceiveListener {
* @param beans prj數據 * @param beans prj數據
* @return 通用配置 * @return 通用配置
*/ */
private PrintCurrencyBean getPrintCurrencyBean(List<PrjBean.DataBean.Bean> beans) { private PrintCurrencyBean getPrintCurrencyBean(List<PrjBean> beans) {
PrintCurrencyBean printCurrencyBean = null; PrintCurrencyBean printCurrencyBean = null;
if (beans != null && beans.size() > 0) { if (beans != null && beans.size() > 0) {
if (beans.get(0).getOrderType() == 1 || beans.get(0).getOrderType() == 3) { if (beans.get(0).getOrderType() == 1 || beans.get(0).getOrderType() == 3) {
...@@ -361,7 +387,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -361,7 +387,7 @@ public class PrjService extends Service implements ReceiveListener {
/** /**
* 生成用於打印的prj的Bitmap * 生成用於打印的prj的Bitmap
*/ */
private void generatePrintData(String key, List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) { private void generatePrintData(String key, List<PrjBean> beans, PrinterDeviceBean printerDeviceBean) {
int orderType = 1; int orderType = 1;
if (beans != null && beans.size() > 0) { if (beans != null && beans.size() > 0) {
...@@ -407,12 +433,12 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -407,12 +433,12 @@ public class PrjService extends Service implements ReceiveListener {
* @param beans prj數據 * @param beans prj數據
* @param printerDeviceBean 打印設備 * @param printerDeviceBean 打印設備
*/ */
private void prjToPc(List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) { private void prjToPc(List<PrjBean> beans, PrinterDeviceBean printerDeviceBean) {
//PRJ模式,生成PRJ文件到共享的電腦上 //PRJ模式,生成PRJ文件到共享的電腦上
ThreadPoolManager.getInstence().putExecutableTasks(() -> { ThreadPoolManager.getInstence().putExecutableTasks(() -> {
List<PrjBean.DataBean.Bean> noCutList = new ArrayList<>(); List<PrjBean> noCutList = new ArrayList<>();
List<PrjBean.DataBean.Bean> cutList = new ArrayList<>(); List<PrjBean> cutList = new ArrayList<>();
for (PrjBean.DataBean.Bean bean : beans) { for (PrjBean bean : beans) {
if (bean.getStatus() == 2) { if (bean.getStatus() == 2) {
//需要切紙 //需要切紙
cutList.add(bean); cutList.add(bean);
...@@ -454,7 +480,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -454,7 +480,7 @@ public class PrjService extends Service implements ReceiveListener {
createFile.createNewFile(); createFile.createNewFile();
if (createFile.exists()) { if (createFile.exists()) {
PrintStream ps = new PrintStream(new SmbFileOutputStream(createFile)); PrintStream ps = new PrintStream(new SmbFileOutputStream(createFile));
PrjBean.DataBean.Bean bean = noCutList.get(0); PrjBean bean = noCutList.get(0);
String tableName = ""; String tableName = "";
if (TextUtil.isEmptyOrNullOrUndefined(bean.getTableName())) { if (TextUtil.isEmptyOrNullOrUndefined(bean.getTableName())) {
...@@ -507,16 +533,17 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -507,16 +533,17 @@ public class PrjService extends Service implements ReceiveListener {
* @param beans prj數據 * @param beans prj數據
* @param printerDeviceBean 打印機 * @param printerDeviceBean 打印機
*/ */
private void stylusPrinting(String key, List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) { private void stylusPrinting(String key, List<PrjBean> beans, PrinterDeviceBean printerDeviceBean) {
//針式打印機並且打印機類型為IP打印,生成獨特的格式 //針式打印機並且打印機類型為IP打印,生成獨特的格式
List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean); List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
//將打印的圖片保存到手機中 //將打印的圖片保存到手機中
hookPrinterBitmap(bitmapMaps, beans); hookPrinterBitmap(bitmapMaps, beans);
EpsonPrint mPrinter = EpsonPrint.getInstance(); EpsonPrint mPrinter = EpsonPrint.getInstance();
boolean initResult = EpsonPrint.getInstance().initializeObject(this, this, errorCode -> updatePrjState(errorCode, getPrintIds(bitmapMaps))); boolean initResult = EpsonPrint.getInstance().initializeObject(this, this, this::updatePrjState);
if (!initResult) { if (!initResult) {
//初始化打印機失敗 //初始化打印機失敗
Log.e("eee", "prj初始化打印失敗" + getPrintIds(bitmapMaps));
updatePrjState(UpdateBean.FAIL_EPSON_INIT, getPrintIds(bitmapMaps)); updatePrjState(UpdateBean.FAIL_EPSON_INIT, getPrintIds(bitmapMaps));
return; return;
} }
...@@ -618,9 +645,9 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -618,9 +645,9 @@ public class PrjService extends Service implements ReceiveListener {
* *
* @return prj的id集合 * @return prj的id集合
*/ */
private String getPrintIdsByPrjData(List<PrjBean.DataBean.Bean> prjBeans) { private String getPrintIdsByPrjData(List<PrjBean> prjBeans) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
for (PrjBean.DataBean.Bean prjBean : prjBeans) { for (PrjBean prjBean : prjBeans) {
stringBuilder.append(prjBean.getId()); stringBuilder.append(prjBean.getId());
if (stringBuilder.toString().lastIndexOf(",") != stringBuilder.length() - 1) { if (stringBuilder.toString().lastIndexOf(",") != stringBuilder.length() - 1) {
//如果最後一位不是逗號,才添加 //如果最後一位不是逗號,才添加
...@@ -768,44 +795,224 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -768,44 +795,224 @@ public class PrjService extends Service implements ReceiveListener {
* @param key 打印位置 * @param key 打印位置
* @param beans 打印的食品和其他的一些信息 * @param beans 打印的食品和其他的一些信息
*/ */
private List<Map<String, Bitmap>> generatePrintMaps(String key, List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) { private List<Map<String, Bitmap>> generatePrintMaps(String key, List<PrjBean> beans, PrinterDeviceBean printerDeviceBean) {
//當前所有食品都是同一個打印位置,例如:K1
PrintPrjKitchen printPrjKitchen = new PrintPrjKitchen(); PrintPrjKitchen printPrjKitchen = new PrintPrjKitchen();
//這個Map的key是這張PRJ的所有PRJ記錄的id,然後會同時打印多張,所以是一個List集合 //這個Map的key是這張PRJ的所有PRJ記錄的id,然後會同時打印多張,所以是一個List集合
List<Map<String, Bitmap>> bitmapMaps = new ArrayList<>(); List<Map<String, Bitmap>> bitmapMaps = new ArrayList<>();
List<PrjBean.DataBean.Bean> noCut = new ArrayList<>(); List<PrjBean> notCutData = new ArrayList<>();
//不帶*號,所有同樣廚房位置的食品都在一張紙上 List<PrjBean> cutPrjData = new ArrayList<>();
for (PrjBean.DataBean.Bean bean : beans) {
if (bean.getStatus() == 2) { int prjSize = beans.size();
for (int i = 0; i < prjSize; i++) {
PrjBean bean = beans.get(i);
//如果是跟隨主項,那就放入不切紙,因為要切紙的,都已經全部遍歷完了
//如果是要切紙的
if (bean.getStatus() == PrjBean.PRJ_STATUS_CUT_PAPER) {
//裝進切紙集合
cutPrjData.add(bean);
//遍歷後面的prj,一直到不是他子項為止
i = getFollow(i, beans, cutPrjData, notCutData, key, printerDeviceBean, printPrjKitchen, bitmapMaps);
} else {
//不切紙的,都放在這裡
notCutData.add(bean);
}
}
//將所有不切紙的轉為打印數據
PrjDataTransToPrintData(key, printerDeviceBean, printPrjKitchen, bitmapMaps, notCutData);
hookPrinterBitmap(bitmapMaps, beans);
return bitmapMaps;
}
/**
* 將prjData數據轉為打印數據
*
* @param key 打印位置
* @param printerDeviceBean 打印設備信息
* @param printPrjKitchen 打印類
* @param bitmapMaps 裝本次打印數據的map,key為打印數據的所有prj的id
* @param prjData prj數據
*/
private void PrjDataTransToPrintData(String key, PrinterDeviceBean printerDeviceBean, PrintPrjKitchen printPrjKitchen, List<Map<String, Bitmap>> bitmapMaps, List<PrjBean> prjData) {
if (prjData.size() > 0) {
Map<String, Bitmap> map = new HashMap<>(); Map<String, Bitmap> map = new HashMap<>();
//帶*,需要切紙的,單獨放一張紙 map.put(getPrjIds(prjData), printPrjKitchen.getKitChenPrintBitmap(mContext, key, prjData, printerDeviceBean));
map.put(bean.getId() + "", printPrjKitchen.getKitChenPrintBitmap(mContext, key, bean, printerDeviceBean));
bitmapMaps.add(map); bitmapMaps.add(map);
prjData.clear();
}
}
/**
* @param i 當前食品下標
* @param beans 所有prj數據集合
* @param cutPrjData 切紙的集合
* @param notCutData 不切紙的集合
* @param key 打印位置
* @param printerDeviceBean 打印設備
* @param printPrjKitchen 打印類
* @param bitmapMaps 裝打印數據的map
* @return 返回本次遍歷到的食品位置
*/
public int getFollow(int i, List<PrjBean> beans, List<PrjBean> cutPrjData, List<PrjBean> notCutData, String key, PrinterDeviceBean printerDeviceBean, PrintPrjKitchen printPrjKitchen, List<Map<String, Bitmap>> bitmapMaps) {
//遍歷後面所有的prj
for (int j = i + 1; j < beans.size(); j++) {
PrjBean itemPrjBean = beans.get(j);
if (itemPrjBean.getType() == PrjBean.FOOD_TYPE) {
//如果是食品,可能是套餐
if (itemPrjBean.getParentId() != 0) {
//用來判斷是不是這個食品的細項,如果遍歷完所有的食品,還沒找到他的父類,說明就不是當前要切紙對象的細項
boolean isThisFoodItem = false;
//這裡之所以需要遍歷切紙集合,因為當前食品可能是三級,他的父類id不一定是第一級那個bean的id,可能是二級食品的子類
for (int k = 0; k < cutPrjData.size(); k++) {
if (itemPrjBean.getParentId() == cutPrjData.get(k).getOrderDetailsId()) {
isThisFoodItem = true;
//是這個食品的細項,判斷是不是跟隨主項
if (itemPrjBean.getStatus() == PrjBean.PRJ_STATUS_FOLLOW_PARENT) {
//跟隨主項
cutPrjData.add(itemPrjBean);
} else if (itemPrjBean.getStatus() == PrjBean.PRJ_STATUS_CUT_PAPER) {
//不跟隨主項,要切紙
//要切紙的,又要判斷下一個是不是當前細項的細項,因為有可能下一個細項也是要跟隨主項的
List<PrjBean> itemCutPrjData = new ArrayList<>();
itemCutPrjData.add(itemPrjBean);
//遍歷之後所有的食品,一直到不是當前子項的子項為止
j = getFollow(j, beans, itemCutPrjData, notCutData, key, printerDeviceBean, printPrjKitchen, bitmapMaps);
} else { } else {
noCut.add(bean); //不跟隨主項,不切紙
//下一個食品可能是這個不切紙食品的細項
//遍歷之後的食品,直到不是這個食品的細項為止
j = getNotCutFoodItem(j, beans, itemPrjBean, notCutData, key, printerDeviceBean, printPrjKitchen, bitmapMaps);
} }
break;
} }
if (noCut.size() > 0) { }
Map<String, Bitmap> map = new HashMap<>(); if (!isThisFoodItem) {
//遍歷拿到這張紙所有的PRJ記錄ID //不是這個食品的細項,說明這個食品的所有細項都已經遍歷完了
//將這個食品的數據轉為打印數據
PrjDataTransToPrintData(key, printerDeviceBean, printPrjKitchen, bitmapMaps, cutPrjData);
//跳出循環
return j - 1;
}
} else {
//如果是食品,並且沒有父類,說明之前的食品所有細項都已經遍歷完了
//將這個食品的數據轉為打印數據
PrjDataTransToPrintData(key, printerDeviceBean, printPrjKitchen, bitmapMaps, cutPrjData);
//就跳出循環
return j - 1;
}
} else {
boolean isThisFoodItem = false;
//如果是細項,先判斷是不是這個食品的細項,再判斷是不是跟隨主項
//這裡之所以需要遍歷切紙集合,因為當前細項可能是三級細項,他的父類id不一定是第一級那個bean的id,可能是二級細項的子類
for (int k = 0; k < cutPrjData.size(); k++) {
if (itemPrjBean.getParentId() == cutPrjData.get(k).getOrderDetailsId()) {
isThisFoodItem = true;
//是這個食品的細項,判斷是不是跟隨主項
if (itemPrjBean.getStatus() == PrjBean.PRJ_STATUS_FOLLOW_PARENT) {
//跟隨主項
cutPrjData.add(itemPrjBean);
} else if (itemPrjBean.getStatus() == PrjBean.PRJ_STATUS_CUT_PAPER) {
//不跟隨主項,要切紙
//要切紙的,又要判斷下一個是不是當前細項的細項,因為有可能下一個細項也是要跟隨主項的
List<PrjBean> itemCutPrjData = new ArrayList<>();
itemCutPrjData.add(itemPrjBean);
//遍歷之後所有的食品,一直到不是當前子項的子項為止
j = getFollow(j, beans, itemCutPrjData, notCutData, key, printerDeviceBean, printPrjKitchen, bitmapMaps);
} else {
//不跟隨主項,不切紙
//下一個食品可能是這個不切紙食品的細項
//遍歷之後的食品,直到不是這個食品的細項為止
j = getNotCutFoodItem(j, beans, itemPrjBean, notCutData, key, printerDeviceBean, printPrjKitchen, bitmapMaps);
}
break;
}
}
if (!isThisFoodItem) {
//不是這個食品的細項,說明這個食品的所有細項都已經遍歷完了
//將這個食品的數據轉為打印數據
PrjDataTransToPrintData(key, printerDeviceBean, printPrjKitchen, bitmapMaps, cutPrjData);
//跳出循環
return j - 1;
}
}
}
PrjDataTransToPrintData(key, printerDeviceBean, printPrjKitchen, bitmapMaps, cutPrjData);
return beans.size();
}
/**
* 獲取不切紙的後續的食品細項
*
* @param j
* @param beans
* @param cutPrjData
* @param notCutData
* @param key
* @param printerDeviceBean
* @param printPrjKitchen
* @param bitmapMaps
* @return
*/
private int getNotCutFoodItem(int j, List<PrjBean> beans, PrjBean parentPrjBean, List<PrjBean> notCutData, String key, PrinterDeviceBean printerDeviceBean, PrintPrjKitchen printPrjKitchen, List<Map<String, Bitmap>> bitmapMaps) {
//遍歷不切紙的後續的prj
//當前食品的後續的不切紙的細項
List<PrjBean> currentNotCutPrjBeans = new ArrayList<>();
currentNotCutPrjBeans.add(parentPrjBean);
for (int i = j + 1; i < beans.size(); i++) {
PrjBean itemPrjBean = beans.get(i);
boolean isThisFoodItem = false;
//如果這個食品是不是食品的子類
//這裡之所以遍歷,是因為可能存在,一級-二級-三級,如果只用一級去和三級判斷父類關係,三級判斷通不過
for (int k = 0; k < currentNotCutPrjBeans.size(); k++) {
if (itemPrjBean.getParentId() == currentNotCutPrjBeans.get(k).getOrderDetailsId()) {
isThisFoodItem = true;
//判斷是否切紙
if (itemPrjBean.getStatus() == PrjBean.PRJ_STATUS_CUT_PAPER) {
//要切紙的,又要判斷下一個是不是當前細項的細項,因為有可能下一個細項也是要跟隨主項的
List<PrjBean> itemCutPrjData = new ArrayList<>();
itemCutPrjData.add(itemPrjBean);
//遍歷之後所有的食品,一直到不是當前子項的子項為止
i = getFollow(i, beans, itemCutPrjData, notCutData, key, printerDeviceBean, printPrjKitchen, bitmapMaps);
} else {
//不切紙或
//跟隨主項,就加入不切紙的集合中
currentNotCutPrjBeans.add(itemPrjBean);
}
break;
}
}
if (!isThisFoodItem) {
//不是這個食品的細項
notCutData.addAll(currentNotCutPrjBeans);
return i - 1;
}
}
notCutData.addAll(currentNotCutPrjBeans);
return beans.size();
}
@NotNull
private String getPrjIds(List<PrjBean> noCut) {
StringBuilder stringBuffer = new StringBuilder(); StringBuilder stringBuffer = new StringBuilder();
for (PrjBean.DataBean.Bean noCutData : noCut) { for (PrjBean noCutData : noCut) {
stringBuffer.append(noCutData.getId()); stringBuffer.append(noCutData.getId());
stringBuffer.append(","); stringBuffer.append(",");
} }
Bitmap prjBitmap = printPrjKitchen.getKitChenPrintBitmap(mContext, key, noCut, printerDeviceBean); if (stringBuffer.length() <= 0) {
map.put(stringBuffer.toString(), prjBitmap); return "";
bitmapMaps.add(map);
} }
hookPrinterBitmap(bitmapMaps, beans); //最後一位是逗號,去掉
return bitmapMaps; return stringBuffer.substring(0, stringBuffer.length() - 1);
} }
private void hookPrinterBitmap(List<Map<String, Bitmap>> bitmapMaps, List<PrjBean.DataBean.Bean> beans) { private void hookPrinterBitmap
(List<Map<String, Bitmap>> bitmapMaps, List<PrjBean> beans) {
if (bitmapMaps.size() > 0) { if (bitmapMaps.size() > 0) {
String prjName = String.valueOf(System.currentTimeMillis()); String prjName = String.valueOf(System.currentTimeMillis());
int orderType = 1; int orderType = 1;
if (beans.size() > 0) { if (beans.size() > 0) {
PrjBean.DataBean.Bean prjBean = beans.get(0); PrjBean prjBean = beans.get(0);
if (prjBean != null) { if (prjBean != null) {
if (!TextUtils.isEmpty(prjBean.getBillNo())) { if (!TextUtils.isEmpty(prjBean.getBillNo())) {
prjName = prjBean.getBillNo(); prjName = prjBean.getBillNo();
...@@ -897,7 +1104,9 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -897,7 +1104,9 @@ public class PrjService extends Service implements ReceiveListener {
} }
@Override @Override
public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String s) { public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String
s) {
Log.e("eee", "prj針式打印結果" + i);
//針式打印回調 //針式打印回調
if (i == 0) { if (i == 0) {
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(); PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
...@@ -908,6 +1117,5 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -908,6 +1117,5 @@ public class PrjService extends Service implements ReceiveListener {
//打印失敗 //打印失敗
updatePrjFailure(s); updatePrjFailure(s);
} }
startGetPrjInfo();
} }
} }
...@@ -5,6 +5,7 @@ import android.content.Intent; ...@@ -5,6 +5,7 @@ import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.WindowManager; import android.view.WindowManager;
...@@ -35,7 +36,6 @@ import com.jess.arms.utils.ArmsUtils; ...@@ -35,7 +36,6 @@ import com.jess.arms.utils.ArmsUtils;
import com.joe.print.di.component.DaggerPrintComponent; import com.joe.print.di.component.DaggerPrintComponent;
import com.joe.print.mvp.contract.PrintContract; import com.joe.print.mvp.contract.PrintContract;
import com.joe.print.mvp.presenter.PrintPresenter; import com.joe.print.mvp.presenter.PrintPresenter;
import com.joe.print.mvp.print.EpsonPrint;
import com.joe.print.mvp.print.PrintInstruction; import com.joe.print.mvp.print.PrintInstruction;
import com.joe.print.mvp.print.PrintListener; import com.joe.print.mvp.print.PrintListener;
import com.joe.print.mvp.print.PrintPrjKitchen; import com.joe.print.mvp.print.PrintPrjKitchen;
...@@ -45,6 +45,8 @@ import com.joe.print.mvp.print.utils.MyPrintUtils; ...@@ -45,6 +45,8 @@ import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.joe.print.mvp.ui.view.PrinterLoadingDialog; import com.joe.print.mvp.ui.view.PrinterLoadingDialog;
import com.joe.print.mvp.ui.view.SelectPrintDevicePopup; import com.joe.print.mvp.ui.view.SelectPrintDevicePopup;
import com.lxj.xpopup.XPopup; import com.lxj.xpopup.XPopup;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxUITask;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -256,10 +258,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -256,10 +258,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
* @return 如果prj有指定打印機,並且找到了,就返回 * @return 如果prj有指定打印機,並且找到了,就返回
*/ */
private PrinterDeviceBean setKitChenPrj(PrinterDeviceBean defaultPrint) { private PrinterDeviceBean setKitChenPrj(PrinterDeviceBean defaultPrint) {
List<PrjBean.DataBean.Bean> printDatas = CCUtil.getNavigateParam(this, "prjBeans", null); String prjJson = CCUtil.getNavigateParam(this, "prjBeans", null);
Map<String, List<PrjBean.DataBean.Bean>> prjMap = PrintPrjKitchen.getPrjMap(); List<PrjBean> printDatas = GsonUtils.jsonToList(prjJson, PrjBean.class);
// List<PrjBean> printDatas = CCUtil.getNavigateParam(this, "prjBeans", null);
Map<String, List<PrjBean>> prjMap = PrintPrjKitchen.getPrjMap();
String printLocation = null; String printLocation = null;
for (PrjBean.DataBean.Bean prjBean : printDatas) { prjMap.put("", printDatas);
for (PrjBean prjBean : printDatas) {
if (printLocation == null) { if (printLocation == null) {
if (TextUtil.isNotEmptyOrNullOrUndefined(prjBean.getPrintPosition())) { if (TextUtil.isNotEmptyOrNullOrUndefined(prjBean.getPrintPosition())) {
printLocation = prjBean.getPrintPosition(); printLocation = prjBean.getPrintPosition();
...@@ -275,7 +280,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -275,7 +280,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
prjBean.setPrintPosition(printLocation); prjBean.setPrintPosition(printLocation);
prjBean.setCurrentIndex(1); prjBean.setCurrentIndex(1);
} }
prjMap.put("", printDatas);
return null; return null;
} }
...@@ -312,6 +316,8 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -312,6 +316,8 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
PrintExecutor executor = new PrintExecutor(); PrintExecutor executor = new PrintExecutor();
executor.doPrinterRequestAsync(new OpenCashBoxMaker(defaultPrint.getIp(), defaultPrint.getPort())); executor.doPrinterRequestAsync(new OpenCashBoxMaker(defaultPrint.getIp(), defaultPrint.getPort()));
CC.sendCCResult(callId, CCResult.success()); CC.sendCCResult(callId, CCResult.success());
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
killMyself();
} else { } else {
Map<String, List<Bitmap>> listMap; Map<String, List<Bitmap>> listMap;
List<Bitmap> zoomBitmaps = null; List<Bitmap> zoomBitmaps = null;
...@@ -367,8 +373,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -367,8 +373,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
} }
private void addPrintProgress(String printState) { private void addPrintProgress(String printState) {
RxJavaUtils.doInUIThread(new RxUITask<Object>(0) {
@Override
public void doInUIThread(Object o) {
printerLoadingDialog.setTitle(printState); printerLoadingDialog.setTitle(printState);
} }
});
}
@Override @Override
public boolean dispatchTouchEvent(MotionEvent ev) { public boolean dispatchTouchEvent(MotionEvent ev) {
...@@ -379,6 +390,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -379,6 +390,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override @Override
public void printStateChanged(int state) { public void printStateChanged(int state) {
Log.e("eee", "printStateChanged:" + state);
String tip = "加載中..."; String tip = "加載中...";
switch (state) { switch (state) {
case PrintSocketHolder.ERROR_0: case PrintSocketHolder.ERROR_0:
...@@ -544,8 +556,10 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -544,8 +556,10 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//關閉ip打印連接 //關閉ip打印連接
PrintSocketHolder.getInstance().closeSocket(); PrintSocketHolder.getInstance().closeSocket();
//關閉針式打印連接 //關閉針式打印連接
EpsonPrint.getInstance().disconnectPrinter(); if (printerInIt != null) {
EpsonPrint.getInstance().finalizeObject(); printerInIt.disconnectEpson();
}
printerLoadingDialog.dismiss(); printerLoadingDialog.dismiss();
} }
......
...@@ -17,7 +17,7 @@ import java.util.List; ...@@ -17,7 +17,7 @@ import java.util.List;
/** /**
* Created by Wyh on 2020/2/20. * Created by Wyh on 2020/2/20.
*/ */
public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, BaseViewHolder> { public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean, BaseViewHolder> {
private int indentation = 0; private int indentation = 0;
...@@ -29,7 +29,7 @@ public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean.DataBea ...@@ -29,7 +29,7 @@ public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean.DataBea
private int modifierIsItalic; private int modifierIsItalic;
private String[] languageTypes; private String[] languageTypes;
public KitChenPrjPrintFoodAdapter(@Nullable List<PrjBean.DataBean.Bean> data, PrinterDeviceBean printerDeviceBean) { public KitChenPrjPrintFoodAdapter(@Nullable List<PrjBean> data, PrinterDeviceBean printerDeviceBean) {
super(R.layout.print_kitchen_item_parent, data); super(R.layout.print_kitchen_item_parent, data);
try { try {
this.foodFontSize = Integer.parseInt(printerDeviceBean.getFoodFont()) * 2; this.foodFontSize = Integer.parseInt(printerDeviceBean.getFoodFont()) * 2;
...@@ -45,7 +45,7 @@ public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean.DataBea ...@@ -45,7 +45,7 @@ public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean.DataBea
} }
@Override @Override
protected void convert(BaseViewHolder helper, PrjBean.DataBean.Bean item) { protected void convert(BaseViewHolder helper, PrjBean item) {
LinearLayout layout = helper.getView(R.id.layout_print_kitchen_parent); LinearLayout layout = helper.getView(R.id.layout_print_kitchen_parent);
for (String type : languageTypes) { for (String type : languageTypes) {
String languageType = type; String languageType = type;
......
...@@ -35,9 +35,9 @@ public class KitChenPrjFoodView extends LinearLayout { ...@@ -35,9 +35,9 @@ public class KitChenPrjFoodView extends LinearLayout {
private int foodIsItalic; private int foodIsItalic;
private int modifierIsItalic; private int modifierIsItalic;
private String[] languageTypes; private String[] languageTypes;
private List<PrjBean.DataBean.Bean> data; private List<PrjBean> data;
public KitChenPrjFoodView(Context context, @Nullable List<PrjBean.DataBean.Bean> data, PrinterDeviceBean printerDeviceBean) { public KitChenPrjFoodView(Context context, @Nullable List<PrjBean> data, PrinterDeviceBean printerDeviceBean) {
super(context); super(context);
try { try {
this.foodFontSize = Integer.parseInt(printerDeviceBean.getFoodFont()) * 2; this.foodFontSize = Integer.parseInt(printerDeviceBean.getFoodFont()) * 2;
...@@ -56,7 +56,7 @@ public class KitChenPrjFoodView extends LinearLayout { ...@@ -56,7 +56,7 @@ public class KitChenPrjFoodView extends LinearLayout {
private void init() { private void init() {
setOrientation(LinearLayout.VERTICAL); setOrientation(LinearLayout.VERTICAL);
for (PrjBean.DataBean.Bean item : data) { for (PrjBean item : data) {
// View view = View.inflate(getContext(), R.layout.print_kitchen_item_parent, null); // View view = View.inflate(getContext(), R.layout.print_kitchen_item_parent, null);
// LinearLayout layout = view.findViewById(R.id.layout_print_kitchen_parent); // LinearLayout layout = view.findViewById(R.id.layout_print_kitchen_parent);
for (String type : languageTypes) { for (String type : languageTypes) {
...@@ -95,7 +95,7 @@ public class KitChenPrjFoodView extends LinearLayout { ...@@ -95,7 +95,7 @@ public class KitChenPrjFoodView extends LinearLayout {
} }
boolean isBold, isItalic; boolean isBold, isItalic;
int paddingLeft; int paddingLeft;
if (itemType == PrjBean.DataBean.Bean.FOOD_SECONDARY) { if (itemType == PrjBean.FOOD_SECONDARY) {
//細項,縮進 //細項,縮進
paddingLeft = indentation; paddingLeft = indentation;
tvFoodName.setTextSize(modifierFontSize); tvFoodName.setTextSize(modifierFontSize);
...@@ -103,7 +103,7 @@ public class KitChenPrjFoodView extends LinearLayout { ...@@ -103,7 +103,7 @@ public class KitChenPrjFoodView extends LinearLayout {
isBold = modifierIsBold == 1; isBold = modifierIsBold == 1;
isItalic = modifierIsItalic == 1; isItalic = modifierIsItalic == 1;
} else if (itemType == PrjBean.DataBean.Bean.FOOD_THREE_LEVEL) { } else if (itemType == PrjBean.FOOD_THREE_LEVEL) {
//細項,縮進 //細項,縮進
paddingLeft = indentation * 2; paddingLeft = indentation * 2;
tvFoodName.setTextSize(modifierFontSize); tvFoodName.setTextSize(modifierFontSize);
......
...@@ -172,8 +172,6 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -172,8 +172,6 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
} }
//添加主單位到副單位列表,用戶可手動切換 //添加主單位到副單位列表,用戶可手動切換
DeputyUnitBean deputyUnitBean = new DeputyUnitBean(purchaseOrderDetailsInfoVO.getBasicUnitName(), purchaseOrderDetailsInfoVO.getFoodQuantity()); DeputyUnitBean deputyUnitBean = new DeputyUnitBean(purchaseOrderDetailsInfoVO.getBasicUnitName(), purchaseOrderDetailsInfoVO.getFoodQuantity());
deputyUnitBean.setDeputyValue(purchaseOrderDetailsInfoVO.getFoodQuantity());
deputyUnitBean.setUnitPrice(purchaseOrderDetailsInfoVO.getFoodPrice());
deputyUnitBeans.add(0, deputyUnitBean); deputyUnitBeans.add(0, deputyUnitBean);
//设置显示的单位,如果大於1,則顯示第一個,因為第一個是副單位,默認顯示副單位 //设置显示的单位,如果大於1,則顯示第一個,因為第一個是副單位,默認顯示副單位
if (deputyUnitBeans.size() > 1) { if (deputyUnitBeans.size() > 1) {
...@@ -182,6 +180,9 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -182,6 +180,9 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
//只有一個單位,顯示主單位 //只有一個單位,顯示主單位
purchaseOrderDetailsInfoVO.setShowUnit(deputyUnitBeans.get(0)); purchaseOrderDetailsInfoVO.setShowUnit(deputyUnitBeans.get(0));
} }
//設置默認顯示數量和價格
purchaseOrderDetailsInfoVO.getShowUnit().setDeputyValue(purchaseOrderDetailsInfoVO.getFoodQuantity());
purchaseOrderDetailsInfoVO.getShowUnit().setUnitPrice(purchaseOrderDetailsInfoVO.getFoodPrice());
//設置單位集合 //設置單位集合
purchaseOrderDetailsInfoVO.setFoodUnits(deputyUnitBeans); purchaseOrderDetailsInfoVO.setFoodUnits(deputyUnitBeans);
} else { } else {
......
...@@ -74,7 +74,7 @@ import static com.yalantis.ucrop.UCrop.REQUEST_CROP; ...@@ -74,7 +74,7 @@ import static com.yalantis.ucrop.UCrop.REQUEST_CROP;
/** /**
* ================================================ * ================================================
* Description: 訂單詳情 * Description: 訂單詳情,收貨操作頁面
*/ */
public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPresenter> implements OrderDetailsContract.View, View.OnClickListener { public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPresenter> implements OrderDetailsContract.View, View.OnClickListener {
......
...@@ -55,29 +55,21 @@ import com.gingersoft.gsa.cloud.common.utils.FileUtils; ...@@ -55,29 +55,21 @@ import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler; import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil; import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils; import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
import com.gingersoft.gsa.cloud.common.utils.xlog.MyBackupStrategy; import com.gingersoft.gsa.cloud.common.utils.xlog.MyBackupStrategy;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.DaoManager; import com.gingersoft.gsa.cloud.database.DaoManager;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.hyweb.n5.lib.exception.NoInitPrinterException; import com.hyweb.n5.lib.exception.NoInitPrinterException;
import com.hyweb.n5.lib.util.PrinterUtil; import com.hyweb.n5.lib.util.PrinterUtil;
import com.jess.arms.base.BaseApplication; import com.jess.arms.base.BaseApplication;
import com.kingja.loadsir.core.LoadSir; import com.kingja.loadsir.core.LoadSir;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader; import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.io.File; import java.io.File;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map;
import java.util.Set;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
import io.reactivex.plugins.RxJavaPlugins; import io.reactivex.plugins.RxJavaPlugins;
......
...@@ -4,6 +4,7 @@ import android.os.AsyncTask; ...@@ -4,6 +4,7 @@ import android.os.AsyncTask;
import android.util.Log; import android.util.Log;
import com.gingersoft.gsa.cloud.common.logan.LoganManager; import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils; import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -20,6 +21,7 @@ public class PrintExecutor { ...@@ -20,6 +21,7 @@ public class PrintExecutor {
protected final String TAG = this.getClass().getSimpleName(); protected final String TAG = this.getClass().getSimpleName();
private static PrintExecutor printExecutor; private static PrintExecutor printExecutor;
public static PrintExecutor getInstance() { public static PrintExecutor getInstance() {
if (printExecutor == null) { if (printExecutor == null) {
printExecutor = new PrintExecutor(); printExecutor = new PrintExecutor();
...@@ -219,13 +221,6 @@ public class PrintExecutor { ...@@ -219,13 +221,6 @@ public class PrintExecutor {
void onResult(int errorCode); void onResult(int errorCode);
} }
public interface OnPrjPrintResultListener {
/**
* PRJ打印結果回調,prj service用
*/
void onResult(int errorCode, String ids);
}
public PrintExecutor setOnPrjPrintResultListener(OnPrjPrintResultListener onPrjPrintResultListener) { public PrintExecutor setOnPrjPrintResultListener(OnPrjPrintResultListener onPrjPrintResultListener) {
this.onPrjPrintResultListener = onPrjPrintResultListener; this.onPrjPrintResultListener = onPrjPrintResultListener;
return this; return this;
......
...@@ -6,25 +6,23 @@ import java.util.Map; ...@@ -6,25 +6,23 @@ import java.util.Map;
import lombok.Data; import lombok.Data;
/**
* @author admin
*/
@Data @Data
public class PrjBean { public class PrjBean implements Serializable {
/** /**
* success : true * prj狀態為不切紙
* sysTime : 1589177793623
* data : {"-1":[{"id":1,"printerDeviceId":-1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 7, 2020 6:47:16 PM","orderDetailsId":48827589,"productName":"炸鸡翅","parentId":0,"type":3},{"id":2,"printerDeviceId":-1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 7, 2020 6:47:16 PM","orderDetailsId":48827590,"productName":"鮮茄汁藍青口","parentId":0,"type":3}],"k1":[{"id":77,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828004,"productName":"走青檸測試","parentId":48827589,"type":4},{"id":78,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828005,"productName":"走豆測試","parentId":48827590,"type":4},{"id":79,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828006,"productName":"精選牛肉","parentId":0,"type":3},{"id":80,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828007,"productName":"走豆測試","parentId":48828006,"type":4},{"id":81,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828008,"productName":"雞飯(四客)","parentId":48828006,"type":3},{"id":82,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828009,"productName":"精選牛肉","parentId":48828006,"type":3}]}
*/ */
private boolean success; public static final int PRJ_STATUS_NOT_CUT_PAPER = 1;
private long sysTime; /**
private String data; * prj狀態為切紙
*/
@Data public static final int PRJ_STATUS_CUT_PAPER = 2;
public static class DataBean { /**
public Map<String, List<Bean>> prjMap; * prj狀態為跟隨主項
*/
@Data public static final int PRJ_STATUS_FOLLOW_PARENT = 3;
public static class Bean implements Serializable {
private static final long serialVersionUID = -3210457151279539745L;
/** /**
* id : 77 * id : 77
* printerDeviceId : 1 * printerDeviceId : 1
...@@ -58,6 +56,9 @@ public class PrjBean { ...@@ -58,6 +56,9 @@ public class PrjBean {
* 食品类型#3:食品;4:细项; * 食品类型#3:食品;4:细项;
*/ */
private int type; private int type;
public static final int FOOD_TYPE = 3;
public static final int FOOD_ITEM_TYPE = 4;
/** /**
* 打印狀態 * 打印狀態
*/ */
...@@ -115,6 +116,4 @@ public class PrjBean { ...@@ -115,6 +116,4 @@ public class PrjBean {
private String printPosition;//廚房位置 private String printPosition;//廚房位置
private String foodGroupName;//食品組 private String foodGroupName;//食品組
private String flyingSinglePosition;//飛單位置 private String flyingSinglePosition;//飛單位置
}
}
} }
package com.gingersoft.gsa.cloud.print.impl;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/26
* Time: 10:49
* prj 打印結果回調
* Use:
*/
public interface OnPrjPrintResultListener {
/**
* prj 打印結果回調
*
* @param prjIds 本次打印的prj集合的id
* @param errorCode 錯誤碼
*/
void onResult(int errorCode, String prjIds);
}
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