Commit b7bddad0 by 王宇航

首頁報表數據填充完成、登陸頁面edittext修改,添加logo,打印回調

parent bfeeddea
......@@ -14,7 +14,6 @@ import com.daivd.chart.listener.OnClickLegendListener;
import com.daivd.chart.provider.component.point.ILegendPoint;
import com.daivd.chart.provider.component.point.IPoint;
import com.daivd.chart.provider.component.point.LegendPoint;
import com.daivd.chart.provider.component.point.Point;
import java.util.List;
......
......@@ -3,12 +3,11 @@ package com.daivd.chart.core.base;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Build;
import android.util.AttributeSet;
import com.daivd.chart.component.axis.HorizontalAxis;
import com.daivd.chart.component.base.IAxis;
import com.daivd.chart.component.axis.VerticalAxis;
import com.daivd.chart.component.base.IAxis;
import com.daivd.chart.data.BarData;
import com.daivd.chart.provider.IProvider;
......
......@@ -5,28 +5,27 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Rect;
import android.os.Build;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import com.daivd.chart.component.ChartTitle;
import com.daivd.chart.component.EmptyView;
import com.daivd.chart.component.Legend;
import com.daivd.chart.component.PicGeneration;
import com.daivd.chart.component.base.IChartTitle;
import com.daivd.chart.component.base.IEmpty;
import com.daivd.chart.component.base.ILegend;
import com.daivd.chart.data.ChartData;
import com.daivd.chart.data.ColumnData;
import com.daivd.chart.data.PicOption;
import com.daivd.chart.data.ScaleData;
import com.daivd.chart.component.ChartTitle;
import com.daivd.chart.component.EmptyView;
import com.daivd.chart.component.base.IEmpty;
import com.daivd.chart.listener.ChartGestureObserver;
import com.daivd.chart.listener.OnChartChangeListener;
import com.daivd.chart.listener.OnClickColumnListener;
import com.daivd.chart.listener.OnClickLegendListener;
import com.daivd.chart.listener.ChartGestureObserver;
import com.daivd.chart.matrix.MatrixHelper;
import com.daivd.chart.provider.IProvider;
......
......@@ -2,7 +2,6 @@ package com.daivd.chart.core.base;
import android.content.Context;
import android.graphics.Canvas;
import android.os.Build;
import android.util.AttributeSet;
import android.view.MotionEvent;
......
......@@ -2,7 +2,6 @@ package com.daivd.chart.data.style;
import android.content.Context;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.PathEffect;
......@@ -27,42 +26,44 @@ public class LineStyle implements IStyle {
this.width = width;
this.color = color;
}
public LineStyle(Context context,float dp, int color) {
this.width = DensityUtils.dp2px(context,dp);
public LineStyle(Context context, float dp, int color) {
this.width = DensityUtils.dp2px(context, dp);
this.color = color;
}
public static void setDefaultLineSize(float width){
public static void setDefaultLineSize(float width) {
defaultLineSize = width;
}
public static void setDefaultLineSize(Context context,float dp){
defaultLineSize = DensityUtils.dp2px(context,dp);
public static void setDefaultLineSize(Context context, float dp) {
defaultLineSize = DensityUtils.dp2px(context, dp);
}
public static void setDefaultLineColor(int color){
public static void setDefaultLineColor(int color) {
defaultLineColor = color;
}
public float getWidth() {
if(width == 0){
if (width == 0) {
return defaultLineSize;
}
return width;
}
public LineStyle setWidth(float width) {
this.width = width;
return this;
}
public LineStyle setWidth(Context context,int dp) {
this.width = DensityUtils.dp2px(context,dp);
public LineStyle setWidth(Context context, int dp) {
this.width = DensityUtils.dp2px(context, dp);
return this;
}
public int getColor() {
if(color == 0){
if (color == 0) {
return defaultLineColor;
}
return color;
......@@ -79,8 +80,9 @@ public class LineStyle implements IStyle {
return this;
}
@Override
public void fillPaint(Paint paint){
public void fillPaint(Paint paint) {
paint.setColor(getColor());
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(getWidth());
......
......@@ -5,7 +5,6 @@ import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
......@@ -15,8 +14,8 @@ import android.view.animation.DecelerateInterpolator;
import android.widget.Scroller;
import com.daivd.chart.core.base.BaseChart;
import com.daivd.chart.listener.Observable;
import com.daivd.chart.listener.ChartGestureObserver;
import com.daivd.chart.listener.Observable;
import com.daivd.chart.listener.OnChartChangeListener;
import java.util.List;
......
......@@ -12,10 +12,9 @@ import android.view.animation.Interpolator;
import com.daivd.chart.core.base.BaseChart;
import com.daivd.chart.data.ChartData;
import com.daivd.chart.data.ColumnData;
import com.daivd.chart.data.style.FontStyle;
import com.daivd.chart.listener.OnClickColumnListener;
import com.daivd.chart.provider.component.mark.IMark;
import com.daivd.chart.matrix.MatrixHelper;
import com.daivd.chart.provider.component.mark.IMark;
import com.daivd.chart.provider.component.text.IText;
/**
......
......@@ -5,16 +5,13 @@ import android.graphics.Paint;
import android.graphics.Rect;
import com.daivd.chart.component.base.IAxis;
import com.daivd.chart.data.ChartData;
import com.daivd.chart.provider.component.cross.ICross;
import com.daivd.chart.provider.component.grid.IGrid;
import com.daivd.chart.provider.component.level.ILevel;
import com.daivd.chart.provider.component.level.LevelLine;
import com.daivd.chart.data.BarData;
import com.daivd.chart.data.ChartData;
import com.daivd.chart.data.ScaleData;
import com.daivd.chart.exception.ChartException;
import com.daivd.chart.provider.BaseProvider;
import com.daivd.chart.provider.component.path.IPath;
import com.daivd.chart.provider.component.cross.ICross;
import com.daivd.chart.provider.component.level.ILevel;
import com.daivd.chart.provider.component.tip.ITip;
import java.util.ArrayList;
......
......@@ -5,6 +5,7 @@ import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PointF;
import android.graphics.Rect;
import android.util.Log;
import com.daivd.chart.data.LineData;
import com.daivd.chart.data.style.LineStyle;
......@@ -32,7 +33,7 @@ public class LineProvider extends BaseBarLineProvider<LineData> {
private int rowSize;
private boolean isArea; //是否打开面积图
private boolean isDrawLine = true;
private int filterPointTextCount = 30; //最多显示30个点文字
private int filterPointTextCount = 7; //最多显示30个点文字
private ILineModel lineModel = new BrokenLineModel();
private IPath path;
private int perWidth;
......@@ -81,7 +82,6 @@ public class LineProvider extends BaseBarLineProvider<LineData> {
drawTip(canvas, pointX, pointY, lineData);
canvas.restore();
drawPoint(canvas, pointX, pointY, lineData, paint);
}
drawLevelLine(canvas, zoomRect, paint);
drawClickCross(canvas, rect, zoomRect, paint);
......@@ -95,6 +95,14 @@ public class LineProvider extends BaseBarLineProvider<LineData> {
if (isDrawLine) {
ILineModel model = lineData.getLineModel();
model = model == null ? lineModel : model;
for (int i = 0; i < pointY.size(); i++) {
Log.e("bbb", "前值:" + pointY.get(i));
pointY.set(i, pointY.get(i) - style.getWidth() / 2);
Log.e("bbb", "後值:" + pointY.get(i));
}
for (int i = 0; i < pointX.size(); i++) {
pointX.set(i, pointX.get(i) + style.getWidth() / 2);
}
Path path = model.getLinePath(pointX, pointY);
if (isArea) {
paint.setStyle(Paint.Style.FILL);
......@@ -160,7 +168,7 @@ public class LineProvider extends BaseBarLineProvider<LineData> {
double value;
if (minPositionX < lineData.getChartYDataList().size()) {
value = lineData.getChartYDataList().get(minPositionX);
} else{
} else {
break;
}
float startY = getStartY(zoomRect, value, lineData.getDirection());
......
package com.gingersoft.gsa.cloud.main.mvp.contract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.jess.arms.mvp.IView;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainOrderInfoChartBean;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
......@@ -26,10 +28,14 @@ public interface MainTopContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void loadBusinessInfo(Map<String, HomeTurnoverBean.DataBean> dataBeanMap);
void loadChart(List<MainOrderInfoChartBean.DataBean> dataBeans);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Observable<HomeTurnoverBean> getRestaurantReport(RequestBody requestBody);
Observable<MainOrderInfoChartBean> getOrderInfoChart(RequestBody requestBody);
}
}
......@@ -2,18 +2,17 @@ package com.gingersoft.gsa.cloud.main.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.MainTopContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainOrderInfoChartBean;
import com.gingersoft.gsa.cloud.main.mvp.model.service.HomeService;
import com.google.gson.Gson;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.MainTopContract;
import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
......@@ -52,8 +51,15 @@ public class MainTopModel extends BaseModel implements MainTopContract.Model {
@Override
public Observable<HomeTurnoverBean> getRestaurantReport(RequestBody requestBody) {
RetrofitUrlManager.getInstance().putDomain("common", "https://m.ricepon.com/member-web/api/");
RetrofitUrlManager.getInstance().putDomain("common", "http://a.ricepon.com:61177/member-web/api/");
return mRepositoryManager.obtainRetrofitService(HomeService.class)
.getRestaurantReport(requestBody);
}
@Override
public Observable<MainOrderInfoChartBean> getOrderInfoChart(RequestBody requestBody) {
RetrofitUrlManager.getInstance().putDomain("common", "http://a.ricepon.com:61177/member-web/api/");
return mRepositoryManager.obtainRetrofitService(HomeService.class)
.getOrderInfoChart(requestBody);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.util.List;
/**
* Created by Wyh on 2020/2/26.
*/
public class MainOrderInfoChartBean {
/**
* success : true
* sysTime : 1582688486497
* data : [{"date":"2020-02-25","items":[{"person":"0","amount":249.3,"hours":"11","count":5,"date":"2020-02-25"},{"person":"0","amount":2.2,"hours":"12","count":1,"date":"2020-02-25"},{"person":"2","amount":630,"hours":"13","count":8,"date":"2020-02-25"},{"person":"12","amount":600.4,"hours":"14","count":10,"date":"2020-02-25"},{"person":"11","amount":1,"hours":"18","count":2,"date":"2020-02-25"},{"person":"0","amount":2.1,"hours":"19","count":1,"date":"2020-02-25"},{"person":"0","amount":232.28,"hours":"20","count":2,"date":"2020-02-25"}]},{"date":"2020-02-26","items":[{"person":"6","amount":1949,"hours":"10","count":3,"date":"2020-02-26"},{"person":"1","amount":1,"hours":"11","count":1,"date":"2020-02-26"}]}]
*/
private boolean success;
private long sysTime;
private List<DataBean> data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* date : 2020-02-25
* items : [{"person":"0","amount":249.3,"hours":"11","count":5,"date":"2020-02-25"},{"person":"0","amount":2.2,"hours":"12","count":1,"date":"2020-02-25"},{"person":"2","amount":630,"hours":"13","count":8,"date":"2020-02-25"},{"person":"12","amount":600.4,"hours":"14","count":10,"date":"2020-02-25"},{"person":"11","amount":1,"hours":"18","count":2,"date":"2020-02-25"},{"person":"0","amount":2.1,"hours":"19","count":1,"date":"2020-02-25"},{"person":"0","amount":232.28,"hours":"20","count":2,"date":"2020-02-25"}]
*/
private String date;
private List<ItemsBean> items;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public List<ItemsBean> getItems() {
return items;
}
public void setItems(List<ItemsBean> items) {
this.items = items;
}
public static class ItemsBean {
/**
* person : 0
* amount : 249.3
* hours : 11
* count : 5
* date : 2020-02-25
*/
private String person;
private double amount;
private String hours;
private int count;
private String date;
public String getPerson() {
return person;
}
public void setPerson(String person) {
this.person = person;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getHours() {
return hours;
}
public void setHours(String hours) {
this.hours = hours;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.service;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainOrderInfoChartBean;
import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
......@@ -9,7 +10,6 @@ import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.QueryName;
/**
* Created by Wyh on 2020/1/10.
......@@ -20,6 +20,10 @@ public interface HomeService {
@POST("wx/doBusiness" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<HomeTurnoverBean> getRestaurantReport(@Body RequestBody requestBody);
@POST("wx/findOrderInfoChart" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<MainOrderInfoChartBean> getOrderInfoChart(@Body RequestBody requestBody);
@GET("user/resource/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<String> getRestaurantFunList(@Query("restaurantId") String restaurantId);
}
......@@ -6,6 +6,7 @@ import com.gingersoft.gsa.cloud.base.utils.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.main.mvp.contract.MainTopContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainOrderInfoChartBean;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -67,7 +68,6 @@ public class MainTopPresenter extends BasePresenter<MainTopContract.Model, MainT
.add("startTime", TimeUtils.getYesterdayTime(TimeUtils.DATE_FORMAT_DATE))
.add("endTime", TimeUtils.getCurrentTimeInString(TimeUtils.DATE_FORMAT_DATE))
.build();
mModel.getRestaurantReport(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(""))
......@@ -84,7 +84,7 @@ public class MainTopPresenter extends BasePresenter<MainTopContract.Model, MainT
mRootView.loadBusinessInfo(info.getData());
}
} else {
mRootView.showMessage("營業報表獲取失敗");
mRootView.showMessage("營業信息獲取失敗");
}
}
......@@ -102,6 +102,36 @@ public class MainTopPresenter extends BasePresenter<MainTopContract.Model, MainT
});
}
//http://a.ricepon.com:61177/member-web/api/wx/findOrderInfoChart 獲取消費曲線圖
//{"success":true,"sysTime":1582375800036,"data":[{"date":"2020-02-22","items":[{"person":"0","amount":0.0,"hours":"12","count":1,"date":"2020-02-22"},{"person":"0","amount":42.2,"hours":"14","count":3,"date":"2020-02-22"},{"person":"0","amount":21.1,"hours":"15","count":3,"date":"2020-02-22"},{"person":"0","amount":136.0,"hours":"17","count":3,"date":"2020-02-22"},{"person":"0","amount":58.0,"hours":"18","count":1,"date":"2020-02-22"}]}]}
public void getOrderInfoChart(){
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId", "26")
.build();
mModel.getOrderInfoChart(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(""))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<MainOrderInfoChartBean>(mErrorHandler) {
@Override
public void onNext(@NonNull MainOrderInfoChartBean info) {
if (info != null && info.isSuccess()) {
mRootView.loadChart(info.getData());
}
}
@Override
public void onComplete() {
super.onComplete();
RetrofitUrlManager.getInstance().putDomain("common", HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL);
}
@Override
public void onError(Throwable t) {
super.onError(t);
RetrofitUrlManager.getInstance().putDomain("common", HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL);
}
});
}
}
package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import android.content.Intent;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.jess.arms.integration.AppManager;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewMainContract;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.RxLifecycleUtils;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
......@@ -17,14 +17,8 @@ import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import okhttp3.FormBody;
import okhttp3.Request;
import okhttp3.RequestBody;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewMainContract;
import com.jess.arms.utils.RxLifecycleUtils;
/**
* ================================================
......
......@@ -5,6 +5,7 @@ import android.content.res.Resources;
import android.graphics.DashPathEffect;
import android.os.Bundle;
import android.os.Message;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -30,6 +31,7 @@ import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerMainTopComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.MainTopContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainOrderInfoChartBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.MainTopPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.ReportActivity;
import com.jess.arms.base.BaseFragment;
......@@ -116,138 +118,14 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main_top, container, false);
ButterKnife.bind(this, view);
// ShadowUtil.setShadowDrawable(view.findViewById(R.id.cv_white_bg), Color.parseColor("#FFFFFF"), dpToPx(5),
// Color.parseColor("#73888888"), dpToPx(5), 0, 2);
// ShadowUtil.setShadowDrawable(view.findViewById(R.id.layout_info), Color.parseColor("#FFFFFF"), dpToPx(5),
// Color.parseColor("#73888888"), dpToPx(5), 0, 2);
return view;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
mPresenter.getRestaurantReport(GsaCloudApplication.getRestaurantId(mContext) + "");//GsaCloudApplication.getRestaurantId(mContext) 獲取餐廳營業信息
mPresenter.getOrderInfoChart();
time.setText(TimeUtils.getCurrentTimeInString(new SimpleDateFormat("yyyy-MM-dd E")));
loadReport();//加載報表線形圖
}
private void loadReport() {
Resources res = getResources();
FontStyle.setDefaultTextSpSize(mContext, 12);
List<String> chartYDataList = new ArrayList<>();
chartYDataList.add("00:00");
chartYDataList.add("04:00");
chartYDataList.add("08:00");
chartYDataList.add("12:00");
chartYDataList.add("16:00");
chartYDataList.add("20:00");
chartYDataList.add("24:00");
List<LineData> ColumnDatas = new ArrayList<>();
//第一條線
ArrayList<Double> tempList1 = new ArrayList<>();
tempList1.add(1880d);
tempList1.add(1920d);
tempList1.add(4920d);
tempList1.add(2930d);
tempList1.add(4950d);
tempList1.add(2340d);
final LineData columnData1 = new LineData("今日", "", getResources().getColor(R.color.theme_color), tempList1);
columnData1.setLineStyle(new LineStyle(mContext, 5, getResources().getColor(R.color.theme_color)));
//第二條線
ArrayList<Double> humidityList = new ArrayList<>();
humidityList.add(1790d);
humidityList.add(2450d);
humidityList.add(6430d);
humidityList.add(2360d);
humidityList.add(17900d);
humidityList.add(3460d);
humidityList.add(2410d);
humidityList.add(4640d);
LineData columnData2 = new LineData("昨日", "", getResources().getColor(R.color.today_line), humidityList);
columnData2.setLineStyle(new LineStyle(mContext, 5, getResources().getColor(R.color.today_line)));
ColumnDatas.add(columnData2);
ColumnDatas.add(columnData1);
ChartData<LineData> chartData2 = new ChartData<>("Line chart", chartYDataList, ColumnDatas);
//設置曲線圖樣式
lineChart.setLineModel(LineChart.CURVE_MODEL);
//獲取左側垂直軸線
VerticalAxis verticalAxis = lineChart.getLeftVerticalAxis();
//獲取橫向軸線
HorizontalAxis horizontalAxis = lineChart.getHorizontalAxis();
//右側軸線
VerticalAxis rightAxis = lineChart.getRightVerticalAxis();
//設置右側軸線不顯示
rightAxis.setDisplay(false);
//设置竖轴方向在左側
verticalAxis.setAxisDirection(IAxis.AxisDirection.LEFT);
verticalAxis.setStartZero(true);
verticalAxis.setMaxValue(18000);
//设置网格
verticalAxis.setDrawGrid(true);
//设置横轴方向
horizontalAxis.setAxisDirection(IAxis.AxisDirection.BOTTOM);
//不顯示網格
horizontalAxis.setDrawGrid(false);
horizontalAxis.getAxisStyle().setWidth(mContext, 1).setColor(res.getColor(R.color.theme_color));
//设置线条样式
verticalAxis.getAxisStyle().setWidth(mContext, 1).setColor(res.getColor(R.color.theme_color));
//設置網格虛線樣式
DashPathEffect effects = new DashPathEffect(new float[]{1, 2, 4, 8}, 1);
verticalAxis.setGridStyle(new LineStyle(0.5f, res.getColor(R.color.report_dotted_line_color)));
verticalAxis.getGridStyle().setEffect(effects);
FontStyle scaleStyle = new FontStyle(mContext, 9, res.getColor(R.color.report_left_scale));
scaleStyle.setScalePadding(30);
horizontalAxis.setScaleStyle(scaleStyle);
verticalAxis.setScaleStyle(scaleStyle);
lineChart.setZoom(false);
//开启十字架
lineChart.getProvider().setOpenCross(true);
//开启MarkView
// lineChart.getProvider().setOpenMark(true);
//设置MarkView
// lineChart.getProvider().setMarkView(new CustomMarkView(mContext));
//设置显示点
Point point = new Point();
point.getPointStyle().setShape(PointStyle.CIRCLE);
//设置显示点的样式
lineChart.getProvider().setPoint(point);
//设置显示标题
lineChart.setShowChartName(false);
//底部不顯示顏色代表的意思
lineChart.getLegend().setDisplay(false);
lineChart.getMatrixHelper().setWidthMultiple(0.9f);
lineChart.getHorizontalAxis().setRotateAngle(0);//設置底部文字旋轉角度
lineChart.setFirstAnim(false);
lineChart.setChartData(chartData2);
lineChart.setOnClickColumnListener((lineData, pos) -> {
// Paint paint = new Paint();
// paint.setAntiAlias(true);
// paint.setTextSize(DensityUtils.sp2px(mContext, 13));
// paint.setStyle(Paint.Style.FILL);
// paint.setColor(Color.WHITE);
// MultiLineBubbleTip tip = new MultiLineBubbleTip<LineData>(mContext,
// R.mipmap.round_rect, R.mipmap.triangle, paint) {
// @Override
// public boolean isShowTip(LineData lineData, int position) {
// return position == pos;
// }
//
// @Override
// public String[] format(LineData lineData, int position) {
// String title = lineData.getName();
// String value = lineData.getChartYDataList().get(position) + lineData.getUnit();
// return new String[]{title, value};
// }
// };
// tip.setColorFilter(Color.parseColor("#FA8072"));
// tip.setAlpha(0.8f);
// lineChart.getProvider().setTip(tip);
// lineChart.invalidate();
});
}
/**
......@@ -305,7 +183,6 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
......@@ -359,6 +236,147 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
}
}
@Override
public void loadChart(List<MainOrderInfoChartBean.DataBean> dataBeans) {
Resources res = getResources();
FontStyle.setDefaultTextSpSize(mContext, 12);
//存儲今天的線條數據
SparseArray<MainOrderInfoChartBean.DataBean.ItemsBean> dataBeanMap = new SparseArray<>();
SparseArray<MainOrderInfoChartBean.DataBean.ItemsBean> yesterdayArrays = new SparseArray<>();
for (int i = 0; i < dataBeans.size(); i++) {
if (dataBeans.get(i).getDate().equals(TimeUtils.getCurrentTimeInString(TimeUtils.DATE_FORMAT_DATE))) {
//獲得今天的線條數據
for (MainOrderInfoChartBean.DataBean.ItemsBean itemsBean : dataBeans.get(i).getItems()) {
dataBeanMap.put(Integer.parseInt(itemsBean.getHours()), itemsBean);
}
}
if (dataBeans.get(i).getDate().equals(TimeUtils.getOldDate(-1))) {
//獲得前一天的線條數據
for (MainOrderInfoChartBean.DataBean.ItemsBean itemsBean : dataBeans.get(i).getItems()) {
yesterdayArrays.put(Integer.parseInt(itemsBean.getHours()), itemsBean);
}
}
}
List<LineData> ColumnDatas = new ArrayList<>();
//第一條線
ArrayList<Double> tempList1 = new ArrayList<>();
final LineData columnData1 = new LineData("今日", "", getResources().getColor(R.color.theme_color), tempList1);
columnData1.setLineStyle(new LineStyle(mContext, 5, getResources().getColor(R.color.theme_color)));
//第二條線
ArrayList<Double> humidityList = new ArrayList<>();
LineData columnData2 = new LineData("昨日", "", getResources().getColor(R.color.today_line), humidityList);
columnData2.setLineStyle(new LineStyle(mContext, 5, getResources().getColor(R.color.today_line)));
//X軸數據,固定不變
List<String> chartYDataList = new ArrayList<>();
for (int i = 0; i < 24; i++) {
if (i < 10) {
chartYDataList.add("0" + i + ":00");
} else {
chartYDataList.add(i + ":00");
}
//添加今天的數據
if (dataBeanMap.get(i) != null) {
tempList1.add(dataBeanMap.get(i).getAmount());
} else {
tempList1.add(0d);
}
//添加昨天的數據
if (yesterdayArrays.get(i) != null) {
humidityList.add(yesterdayArrays.get(i).getAmount());
} else {
humidityList.add(0d);
}
}
ColumnDatas.add(columnData2);
ColumnDatas.add(columnData1);
ChartData<LineData> chartData2 = new ChartData<>("Line chart", chartYDataList, ColumnDatas);
//設置曲線圖樣式
lineChart.setLineModel(LineChart.CURVE_MODEL);
//獲取左側垂直軸線
VerticalAxis verticalAxis = lineChart.getLeftVerticalAxis();
//獲取橫向軸線
HorizontalAxis horizontalAxis = lineChart.getHorizontalAxis();
//右側軸線
VerticalAxis rightAxis = lineChart.getRightVerticalAxis();
//設置右側軸線不顯示
rightAxis.setDisplay(false);
//设置竖轴方向在左側
verticalAxis.setAxisDirection(IAxis.AxisDirection.LEFT);
verticalAxis.setStartZero(true);
// verticalAxis.setMaxValue(18000);
//设置网格
verticalAxis.setDrawGrid(true);
//设置横轴方向
horizontalAxis.setAxisDirection(IAxis.AxisDirection.BOTTOM);
//不顯示網格
horizontalAxis.setDrawGrid(false);
horizontalAxis.getAxisStyle().setWidth(mContext, 1).setColor(res.getColor(R.color.theme_color));
//设置线条样式
verticalAxis.getAxisStyle().setWidth(mContext, 1).setColor(res.getColor(R.color.theme_color));
//設置網格虛線樣式
DashPathEffect effects = new DashPathEffect(new float[]{1, 2, 4, 8}, 1);
verticalAxis.setGridStyle(new LineStyle(0.5f, res.getColor(R.color.report_dotted_line_color)));
verticalAxis.getGridStyle().setEffect(effects);
FontStyle scaleStyle = new FontStyle(mContext, 9, res.getColor(R.color.report_left_scale));
scaleStyle.setScalePadding(30);
horizontalAxis.setScaleStyle(scaleStyle);
verticalAxis.setScaleStyle(scaleStyle);
lineChart.setZoom(false);
//开启十字架
lineChart.getProvider().setOpenCross(true);
//开启MarkView
// lineChart.getProvider().setOpenMark(true);
//设置MarkView
// lineChart.getProvider().setMarkView(new CustomMarkView(mContext));
//设置显示点
Point point = new Point();
point.getPointStyle().setShape(PointStyle.CIRCLE);
//设置显示点的样式
lineChart.getProvider().setPoint(point);
//设置显示标题
lineChart.setShowChartName(false);
//底部不顯示顏色代表的意思
lineChart.getLegend().setDisplay(false);
lineChart.getMatrixHelper().setWidthMultiple(1f);
lineChart.getMatrixHelper().setCanZoom(false);
lineChart.getHorizontalAxis().setRotateAngle(0);//設置底部文字旋轉角度
lineChart.setFirstAnim(true);
lineChart.setChartData(chartData2);
lineChart.setOnClickColumnListener((lineData, pos) -> {
// Paint paint = new Paint();
// paint.setAntiAlias(true);
// paint.setTextSize(DensityUtils.sp2px(mContext, 13));
// paint.setStyle(Paint.Style.FILL);
// paint.setColor(Color.WHITE);
// MultiLineBubbleTip tip = new MultiLineBubbleTip<LineData>(mContext,
// R.mipmap.round_rect, R.mipmap.triangle, paint) {
// @Override
// public boolean isShowTip(LineData lineData, int position) {
// return position == pos;
// }
//
// @Override
// public String[] format(LineData lineData, int position) {
// String title = lineData.getName();
// String value = lineData.getChartYDataList().get(position) + lineData.getUnit();
// return new String[]{title, value};
// }
// };
// tip.setColorFilter(Color.parseColor("#FA8072"));
// tip.setAlpha(0.8f);
// lineChart.getProvider().setTip(tip);
// lineChart.invalidate();
});
}
private int getTrendImg(double amount) {
if (amount > 0) {
return R.drawable.ic_rise;
......@@ -372,7 +390,7 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
@OnClick({R2.id.tv_more_report})
@Override
public void onClick(View v) {
if(v.getId() == R.id.tv_more_report){
if (v.getId() == R.id.tv_more_report) {
//更多報表
startActivity(new Intent(mContext, ReportActivity.class));
}
......
......@@ -11,6 +11,8 @@ import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
......@@ -137,6 +139,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//本機打印
if (bitmap == null) {
ToastUtils.show(mContext, "未獲取到打印內容");
printFile();
return;
}
String model = Build.MODEL;
......@@ -145,8 +148,10 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
boolean isSuccess = SunMiPrint.printBitmap(mContext, bitmap);
if (isSuccess) {
ToastUtils.show(mContext, "商米打印機連接成功");
printSuccess();
} else {
ToastUtils.show(mContext, "商米打印機連接失敗");
printFile();
}
} else if (mN5.contains(model)) {
//N5打印
......@@ -160,9 +165,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
if (i == 0) {
//打印成功
ToastUtils.show(mContext, "N5打印結果:成功");
printSuccess();
} else {
//打印失敗
ToastUtils.show(mContext, "N5打印結果:失敗");
printFile();
}
}
......@@ -173,12 +180,26 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
});
} catch (RemoteException | NoInitPrinterException e) {
e.printStackTrace();
printFile();
}
} else {
ToastUtils.show(mContext, "暫不支持本機型打印");
printFile();
}
}
/**
* 打印失敗
*/
private void printFile() {
CC.sendCCResult(getIntent().getStringExtra("callId"), CCResult.error("print error"));
}
/**
* 打印成功
*/
private void printSuccess() {
CC.sendCCResult(getIntent().getStringExtra("callId"), CCResult.success());
}
//初始化打印內容
public Bitmap initPrintBitmap(int width) {
Bitmap bitmap = getIntent().getParcelableExtra("bitmap");
......
......@@ -5,8 +5,8 @@ package com.gingersoft.gsa.cloud.base.utils.constans;
*/
public class HttpsConstans {
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器
public static String ROOT_SERVER_ADDRESS_FORMAL2 = "http://gingersoft.tpddns.cn:53000/mock/49/ricepon-cloud-gsa/api/";//測試服務器
......
package com.gingersoft.gsa.cloud.base.utils.time;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
......@@ -101,18 +99,17 @@ public class TimeUtils {
* @return
*/
public static String getOldDate(int distanceDay) {
SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate = new Date();
Calendar date = Calendar.getInstance();
date.setTime(beginDate);
date.set(Calendar.DATE, date.get(Calendar.DATE) + distanceDay);
Date endDate = null;
try {
endDate = dft.parse(dft.format(date.getTime()));
endDate = DATE_FORMAT_DATE.parse(DATE_FORMAT_DATE.format(date.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
return dft.format(endDate);
return DATE_FORMAT_DATE.format(endDate);
}
......
......@@ -12,6 +12,7 @@ import com.gingersoft.gsa.cloud.ui.view.BaseTextSection;
import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUISection;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import androidx.annotation.NonNull;
import butterknife.BindView;
import butterknife.ButterKnife;
......
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.ui.adapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.ui.R;
import com.gingersoft.gsa.cloud.ui.R2;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
......@@ -11,6 +12,7 @@ import com.gingersoft.gsa.cloud.ui.view.BaseTextSection;
import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUISection;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import androidx.annotation.NonNull;
import butterknife.BindView;
import butterknife.ButterKnife;
......
......@@ -8,9 +8,11 @@ import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.ui.R;
import com.gingersoft.gsa.cloud.ui.bean.SectionHeader;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import androidx.annotation.Nullable;
/**
......
......@@ -11,7 +11,9 @@ import android.graphics.PathMeasure;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import com.gingersoft.gsa.cloud.table.R;
import androidx.core.content.ContextCompat;
......
......@@ -18,7 +18,7 @@
android:label="@string/user_login_name"
tools:replace="android:label"
android:networkSecurityConfig="@xml/network_android"
android:roundIcon="@mipmap/ic_launcher_round"
android:roundIcon="@mipmap/ic_logo"
android:supportsRtl="true"
android:theme="@style/AppTheme">
......
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