Commit f7936c90 authored by 姜敏's avatar 姜敏

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	app/src/main/java/com/xingdata/zzdpos/api/ApiFactory.java
#	app/src/main/res/values/styles.xml
parents aba17abc bb82bb24
......@@ -23,6 +23,7 @@
<activity
android:name=".ui.splash.SplashActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......@@ -75,9 +76,18 @@
android:screenOrientation="portrait"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity android:name=".ui.help.HelpActivity" />
<activity android:name=".ui.feedback.FeedBackActivity" />
<activity android:name=".ui.statistics.StatisticsActivity" />
<activity
android:name=".ui.help.HelpActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.feedback.FeedBackActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.statistics.StatisticsActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.vip.VipActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
......@@ -88,11 +98,26 @@
android:name=".ui.marketing.ms.MsActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.manage.otherselect.OtherSelectActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.manage.manageMenu.ManageMenuActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity android:name=".ui.manage.replenishment.ReplenishmentActivity"></activity>
<activity
android:name=".ui.manage.replenishment.ReplenishmentActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.manage.sssku.SsskuActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
android:name=".ui.manage.inventory.InventoryActivity"
android:configChanges="keyboard|orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
</application>
</manifest>
\ No newline at end of file
......@@ -18,9 +18,9 @@ public class C {
public static final int MENU_MANAGER_OPER = 1251;
public static final int MENU_MANAGER_GOODS = 1252;
public static final int MENU_MANAGER_BALE = 1253;
public static final int MENU_MANAGER_REPLENISHMENT= 1254;
public static final int MENU_MANAGER_OTHER= 1255;
public static final int MENU_MANAGER_INVENTORY= 1256;
public static final int MENU_MANAGER_REPLENISHMENT = 1254;
public static final int MENU_MANAGER_OTHER = 1255;
public static final int MENU_MANAGER_INVENTORY = 1256;
public static final int MENU_ANNOUNCEMENT = 107;
......@@ -513,8 +513,8 @@ public class C {
public static final int MONEY_OFF = 4;
//换购
public static final int GIFT = 5;
//会员折扣
public static final int VIP = 6;
//第二件促销
public static final int SECOND_PRO = 6;
}
public final class DIS_TYPE {
......@@ -537,6 +537,16 @@ public class C {
public static final int SKU = 4;
}
public final class MS_AREA {
public static final int MER = 3;
public static final int LOCAL = 4;
}
public final class MS_USER {
public static final int ALL = 0;
public static final int VIP = 1;
}
public final class SETTLE_MODE {
public static final int PAYMENT = 1;
public static final int STORE = 2;
......@@ -546,6 +556,11 @@ public class C {
public static final int HIDE = 0;
public static final int TEXT = 1;
public static final int VIP = 2;
public static final int SKU = 3;
public static final int GIFT = 4;
public static final int PKG = 5;
public static final int SKU_DETAIL = 6;
}
}
......@@ -582,6 +582,9 @@ public final class ApiFactory {
.observeOn(AndroidSchedulers.mainThread())
.retryWhen(new RetryHelper(3));
}
public static Observable<com.xingdata.zzdpos.model.Saleorder> querySaleorderByVipId(Long vipId, int pageNumber, int pageSize) {
return Api.getInstance().service.querySaleorderByVipId(vipId, pageNumber, pageSize)
public static Observable<Pager<com.xingdata.zzdpos.model.Saleorder>> querySaleorderByVipId(Long vipId,int pageNumber ,int pageSize) {
return Api.getInstance().service.querySaleorderByVipId(vipId,pageNumber,pageSize)
.onErrorReturn(new ErrorFilter<>())
......@@ -592,8 +595,6 @@ public final class ApiFactory {
}
}
public static class Ticket {
......@@ -641,10 +642,8 @@ public final class ApiFactory {
.observeOn(AndroidSchedulers.mainThread());
}
public static Observable<Pager<com.xingdata.zzdpos.model.Sssku>> querySssku(int pageNum,
String keyword, Long skuGrpId) {
return Api.getInstance().service.querySssku(pageNum, C.PRODUCT.PAGE_SIZE, skuGrpId,
keyword)
public static Observable<Pager<com.xingdata.zzdpos.model.Sssku>> querySssku(int pageNum, String keyword, Long skuGrpId) {
return Api.getInstance().service.querySssku(pageNum, C.PRODUCT.PAGE_SIZE, skuGrpId, keyword)
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
.subscribeOn(Schedulers.io())
......@@ -761,6 +760,21 @@ public final class ApiFactory {
ErrorFilter<>()).map(new ResultFilter<>()).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 库存盘点记录查询接口
*
* @param pageNulmber
* @param pageSize
* @return
*/
public static Observable<Pager<com.xingdata.zzdpos.model.Cs>> querCsList(int pageNulmber,
int pageSize
) {
return Api.getInstance().service.querCsList(pageNulmber, pageSize).onErrorReturn(new
ErrorFilter<>()).map(new ResultFilter<>()).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
}
public static class Notice {
......
......@@ -181,6 +181,10 @@ interface ApiService {
("pageSize") int pageSize, @Query("startDate") long startDate, @Query("endDate") long
endDate);
@POST(C.URL.CS.query)
Observable<HttpMessage<Pager<Cs>>> querCsList(@Query("pageNumber") int pageNum, @Query
("pageSize") int pageSize);
@POST(C.URL.NOTICE.query)
Observable<HttpMessage<Pager<Notice>>> queryNotice(@Query("pageNumber") int pageNum, @Query
("pageSize") int pageSize);
......@@ -249,7 +253,6 @@ interface ApiService {
("pageNumber") int pageNum, @Query("pageSize") int pageSize);
@POST(C.URL.USER.query)
Observable<HttpMessage<Pager<Vip>>> queryDetailByWD(@Query("wd") String keyword, @Query
("pageNumber") int pageNum, @Query("pageSize") int pageSize);
......@@ -349,15 +352,17 @@ interface ApiService {
@Query("pageSize") int pageSize);
@POST(C.URL.SSSKU.query)
Observable<HttpMessage<Pager<Sssku>>> querySssku(@Query("pageNumber") int pageNumber, @Query
("pageSize") int pageSize, @Query("wd") String keyword);
Observable<HttpMessage<Pager<Sssku>>> querySssku(@Query("pageNumber") int pageNumber,
@Query("pageSize") int pageSize,
@Query("wd") String keyword);
@POST(C.URL.SSKUGRP.query)
Observable<HttpMessage<Pager<Sskugrp>>> querySskugrp();
@POST(C.URL.MS.query)
Observable<HttpMessage<Pager<Ms>>> queryMs(@Query("pageNumber") int pageNumber, @Query
("pageSize") int pageSize, @Query("msName") String keyword);
Observable<HttpMessage<Pager<Ms>>> queryMs(@Query("pageNumber") int pageNumber,
@Query("pageSize") int pageSize,
@Query("msName") String keyword);
@POST(C.URL.MS.detail)
Observable<HttpMessage<Ms>> detailMs(@Query("id") long id);
......
......@@ -43,7 +43,6 @@ public abstract class BaseDialog<P extends BasePresenter, B extends ViewDataBind
public boolean isShowing;
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
......
......@@ -4,6 +4,7 @@ import com.xingdata.api.print.entity.BaseGoodPrint;
import com.xingdata.api.print.entity.BaseOrderPrint;
import com.xingdata.zzdpos.db.DB;
import com.xingdata.zzdpos.ui.login.LoginPresenter;
import com.xingdata.zzdpos.ui.main.MainPresenter;
import java.util.ArrayList;
import java.util.List;
......@@ -255,6 +256,14 @@ public class Cs implements BaseOrderPrint {
return baseGoodPrints;
}
public String getOperName() {
if (operName == null) {
operName = DB.getInstance().get(MainPresenter.class).where(Oper.class)
.equalTo("operId", getCreateOperId())
.findFirst().getOperName();
}
return operName;
}
@Override
public String getDRAW_URL() {
return null;
......
package com.xingdata.zzdpos.ui.manage.inventory;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.FragmentUtils;
import com.blankj.utilcode.util.KeyboardUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.databinding.ActivityInventoryBinding;
import com.xingdata.zzdpos.model.Cs;
import com.xingdata.zzdpos.model.CsDetail;
import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.manage.inventory.fragment.InventoryAddFragment;
import com.xingdata.zzdpos.ui.manage.inventory.fragment.InventoryFragment;
import com.xingdata.zzdpos.ui.manage.manageMenu.ManageDateFragment;
import com.xingdata.zzdpos.ui.statistics.fragment.StatisticsDateFragment;
import java.util.List;
public class InventoryActivity extends BaseActivity<InventoryPresenter, ActivityInventoryBinding> implements InventoryContract.View {
private InventoryFragment mInventoryFragment = new InventoryFragment();
private ManageDateFragment mManageDateFragment = new ManageDateFragment();
private InventoryAddFragment mInventoryAddFragment = new InventoryAddFragment();
// private InventoryDetailDialog mInventoryDetailDialog = new InventoryDetailDialog();
LoadingDialog mLoadingDialog = new LoadingDialog();
@Override
public int getLayoutId() {
return R.layout.activity_inventory;
}
@Override
public void initView() {
loadRootFragment(R.id.f_bottom, mInventoryFragment, true, false);
}
@Override
public void showDateFragment() {
start(mManageDateFragment);
}
@Override
public void addInventoryDetailItem(CsDetail csDetail, Sssku sssku) {
mInventoryAddFragment.addInventoryDetailItem(csDetail, sssku);
}
@Override
public void addInventoryGoodsItem(List<Sssku> ssskuList) {
mInventoryAddFragment.addInventoryGoodsItem(ssskuList);
}
@Override
public void addInventoryGoodsItem(Sssku sssku) {
mInventoryAddFragment.addInventoryGoodsItem(sssku);
}
@Override
public void showInventoryDetailDialog(Cs cs) {
// mInventoryDetailDialog.setData(cs).show(this);
}
@Override
public void loadCs(Pager<Cs> csList) {
mInventoryFragment.setData(csList, csList.isFirstPage());
}
@Override
public void loadCs(Pager<Cs> csList, long start, long end) {
if (mManageDateFragment.isAdded()) {
mManageDateFragment.pop();
}
mInventoryFragment.setDate(start, end);
mInventoryFragment.setData(csList, csList.isFirstPage());
}
@Override
public void disInventoryDetailFragment(Boolean idChange) {
if (idChange) {
// mInventoryAddFragment.pop();
// mPresenter.refreshCs();
} else {
// mInventoryAddFragment.pop();
}
}
@Override
public void setInventoryCount(int count) {
mInventoryFragment.setCount(count);
}
@Override
public void setInventoryCount(String s) {
mInventoryFragment.setCount(s);
}
@Override
public void openInventoryAddFragment(Cs cs) {
mInventoryAddFragment.setCs(cs);
start(mInventoryAddFragment);
}
@Override
public void showDateAlert(Boolean f) {
// mInventoryFragment.showDateAlert(f);
}
@Override
protected void onPause() {
KeyboardUtils.hideSoftInput(this);
super.onPause();
}
@Override
public void searchGoodsSuc() {
// mInventoryAddFragment.searchGoodsSuc();
}
@Override
public void isShowLoading(Boolean is) {
if (is) {
mLoadingDialog.show((BaseActivity) mContext);
} else {
if (mLoadingDialog.isShowing) {
mLoadingDialog.dismiss();
}
}
}
}
package com.xingdata.zzdpos.ui.manage.inventory;
import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Cs;
import com.xingdata.zzdpos.model.CsDetail;
import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Sssku;
import java.util.List;
/**
* Created by Eurus on 2017/11/23.
*/
public interface InventoryContract {
interface View extends BaseView {
/**
* 添加盘库 搜索商品成功
*/
void searchGoodsSuc();
void isShowLoading(Boolean is);
/**
* 跳转日期搜索
*/
void showDateFragment();
/**
* 设置盘库记录条目数量
*/
void setInventoryCount(int count);
/**
* 设置盘库记录条目数量
*/
void setInventoryCount(String s);
/**
* 关闭添加盘库详情界面
*/
void disInventoryDetailFragment(Boolean isChange);
/**
* 添加左侧详情商品条目
*/
void addInventoryDetailItem(CsDetail csDetail, Sssku sssku);
/**
* 添加商品条目
*/
void addInventoryGoodsItem(List<Sssku> ssskuList);
void addInventoryGoodsItem(Sssku sssku);
//________________________________________
/**
* 展示记录详情Dialog
*/
void showInventoryDetailDialog(Cs csDetailList);
/**
* 加载列表
*/
void loadCs(Pager<Cs> csList);
/**
* 加载列表
*/
void loadCs(Pager<Cs> csList, long start, long end);
/**
* 跳转盘库页
*/
void openInventoryAddFragment(Cs cs);
/**
* 盘库页面-展示日期警告
*/
void showDateAlert(Boolean f);
}
abstract class Presenter extends BasePresenter<View> {
/**
* 跳转日期搜索
*/
public abstract void clickDate();
/**
* 盘库添加页面 - 取消退出这次盘库的记录
*
* @param cs 盘库记录
*/
public abstract void cancelInventoryAdd(Cs cs);
/**
* 盘库添加页面 - 结束盘库记录
*/
public abstract void exitInventoryAdd();
/**
* 盘库添加页面-确认盘库明细
*/
public abstract void clickOkCsDetail(Sssku ssku, Cs cs);
/**
* 根据条形码获取商品
*
* @param barcode 条形码
*/
public abstract void getProductByBarcode(String barcode);
/**
* 盘库列表页面 - 删除列表里的记录
*
* @param cs 盘库记录
*/
public abstract void delInventoryItem(Cs cs);
/**
* 盘库列表页面 - 点击列表里的记录
*
* @param cs 盘库记录
*/
public abstract void clickInventoryItem(Cs cs);
/**
* 盘库列表页面-检查日期合法性
*
* @param dateStart 起始时间
* @param dateEnd 终止时间
*/
public abstract void inspectDate(String dateStart, String dateEnd);
/**
* 盘库列表页面-点击开始盘库
*/
public abstract void clickStartInventory();
/**
* 获取盘库列表
*/
public abstract void getInventoryList(int pageNum, long start, long end);
/**
* 获取盘库列表
*/
public abstract void getInventoryList(long start, long end, int PageNumber, int pageSize);
/**
* 获取盘库列表
*/
public abstract void getInventoryList(int PageNumber);
}
}
package com.xingdata.zzdpos.ui.manage.inventory;
import com.blankj.utilcode.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.db.DB;
import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.Cs;
import com.xingdata.zzdpos.model.CsDetail;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.main.MainPresenter;
import com.xingdata.zzdpos.util.StringUtil;
import java.text.SimpleDateFormat;
import java.util.List;
import io.reactivex.Observable;
import io.realm.RealmQuery;
import static com.xingdata.zzdpos.db.DBFactory.getList;
public class InventoryPresenter extends InventoryContract.Presenter {
private int nowPageSize = 20;
private long start;
private long end;
@Override
public void onAttached() {
}
@Override
public void clickOkCsDetail(Sssku sssku, Cs mCs) {
CsDetail csDetail = new CsDetail();
csDetail.setSpuName(sssku.getSpuName());
csDetail.setSkuId(sssku.getSkuId());
csDetail.setSpuBarcode(sssku.getSpuBarcode());
csDetail.setSkuCnt(sssku.getSkuStock());
csDetail.setSpuUnitName(sssku.getSpuUnitName());
csDetail.setCsCnt((long) sssku.getInventoryCut());
csDetail.setChannelMapId(mCs.getChannelMapId().longValue());
csDetail.setCsNo(mCs.getCsNo());
csDetail.setSkuId(sssku.getSkuId());
csDetail.setOpMapId(mCs.getOpMapId().longValue());
if (csDetail.getCsCnt() == csDetail.getSkuCnt()) {
csDetail.setCsResultFlag(0);
} else if (csDetail.getCsCnt() > csDetail.getSkuCnt()) {
csDetail.setCsResultFlag(1);
} else {
csDetail.setCsResultFlag(2);
}
mView.isShowLoading(true);
ApiFactory.CsDetail.addCsDetail(csDetail).doFinally(() -> mView.isShowLoading(false))
.subscribe(detail -> {
mView.addInventoryDetailItem(detail, sssku);
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
/**
* 根据条形码获取商品
*
* @param barcode 条形码
*/
public void getProductByBarcode(String barcode) {
mView.isShowLoading(true);
mCompositeDisposable.add(
queryProductsByScan(barcode).subscribe(ssskus -> {
mView.isShowLoading(false);
mView.searchGoodsSuc();
if (ssskus.size() > 1) {
mView.addInventoryGoodsItem(ssskus);
} else if (ssskus.size() == 1) {
mView.addInventoryGoodsItem(ssskus.get(0));
} else {
ToastUtils.showShort("没有此商品");
}
})
);
}
/**
* 扫码查询商品
*
* @param barcode 扫描出的条形码
* @return 商品信息
*/
public static Observable<List<Sssku>> queryProductsByScan(String barcode) {
RealmQuery<Sssku> query = DB.getInstance().get(MainPresenter.class).where(Sssku.class);
query.equalTo("spuBarcode", StringUtil.strToLong(barcode)).equalTo("skuStatus", 0);
return Observable.just(query.findAll())
.flatMap(ssskus -> Observable.just(getList(ssskus)));
}
@Override
public void clickInventoryItem(Cs cs) {
mView.isShowLoading(true);
ApiFactory.Cs.getCsDetail(cs.getId()).doFinally(() -> mView.isShowLoading(false))
.subscribe(cslist -> {
mView.showInventoryDetailDialog(cslist);
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
@Override
public void delInventoryItem(Cs cs) {
mView.isShowLoading(true);
ApiFactory.Cs.delCsDetail(cs.getId(), cs.getCsNo()).doFinally(() -> mView.isShowLoading(false))
.subscribe(object -> {
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
@Override
public void clickDate() {
mView.showDateFragment();
}
@Override
public void cancelInventoryAdd(Cs cs) {
mView.isShowLoading(true);
ApiFactory.Cs.delCsDetail(cs.getId(), cs.getCsNo()).doFinally(() -> mView.isShowLoading(false))
.subscribe(object -> {
mView.disInventoryDetailFragment(false);
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
@Override
public void exitInventoryAdd() {
mView.disInventoryDetailFragment(true);
}
@Override
public void inspectDate(String dateStart, String dateEnd) {
long longStart = TimeUtils.string2Millis(dateStart, new SimpleDateFormat(StringUtil.defaultDatePattern));
long longEnd = TimeUtils.string2Millis(dateEnd, new SimpleDateFormat(StringUtil.defaultDatePattern)) + 86400000L;
if (longStart > longEnd) {
ToastUtils.showShort("日期不符合区间");
mView.showDateAlert(true);
} else {
mView.showDateAlert(false);
getInventoryList(longStart, longEnd, 1, nowPageSize);
}
}
@Override
public void clickStartInventory() {
mView.isShowLoading(true);
ApiFactory.Cs.addCs().doFinally(() -> {
mView.isShowLoading(false);
}).subscribe(cs -> {
if (cs.getCreateTime() == null) {
cs.setCreateTime(System.currentTimeMillis());
}
mView.openInventoryAddFragment(cs);
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
@Override
public void getInventoryList(int pageNum, long start, long end) {
mView.isShowLoading(true);
ApiFactory.Cs.querCsList(pageNum, nowPageSize, start, end).doFinally(() -> mView.isShowLoading(false))
.subscribe(csPager -> {
//判断是否能加载更多
mView.loadCs(csPager, start, end);
mView.setInventoryCount(com.blankj.utilcode.util.TimeUtils.millis2String(start, new SimpleDateFormat(StringUtil.defaultDatePattern)) + " ~ " +
com.blankj.utilcode.util.TimeUtils.millis2String(end, new SimpleDateFormat(StringUtil.defaultDatePattern)));
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
@Override
public void getInventoryList(long startdate, long enddate, int pageNumber, int pageSize) {
this.start = startdate;
this.end = enddate;
this.nowPageSize = pageSize;
getInventoryList(pageNumber, start, end);
}
@Override
public void getInventoryList(int PageNumber) {
mView.isShowLoading(true);
ApiFactory.Cs.querCsList(PageNumber, nowPageSize).doFinally(() -> mView.isShowLoading(false))
.subscribe(csPager -> {
//判断是否能加载更多
mView.loadCs(csPager);
mView.setInventoryCount(csPager.getTotalRow());
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
}
package com.xingdata.zzdpos.ui.manage.inventory.adpter;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import com.blankj.utilcode.util.TimeUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.databinding.ItemInventoryBinding;
import com.xingdata.zzdpos.model.Cs;
import java.util.List;
public class InventoryAdapter extends BaseAdapter<Cs, ItemInventoryBinding> {
public InventoryAdapter(@Nullable List<Cs> data) {
super(R.layout.item_inventory, data);
}
@Override
protected void convert(ItemInventoryBinding mViewBinding, Cs item) {
Drawable drawable = mContext.getResources().getDrawable(R.mipmap.icon_time);
drawable.setBounds(0, 0, (int) mViewBinding.tvDate.getTextSize(), (int) mViewBinding.tvDate.getTextSize());
mViewBinding.tvDate.setCompoundDrawablesRelative(drawable, null, null, null);
mViewBinding.tvDate.setCompoundDrawablePadding(10);
mViewBinding.tvName.setText(item.getOperName());
mViewBinding.tvPhone.setText(item.getOper_mobile());
mViewBinding.tvDate.setText(TimeUtils.millis2String(item.getCreateTime()) + "");
mViewBinding.tvNum.setText(item.getCount() + "");
switch (item.getCsResultFlag()) {
case 0:
mViewBinding.tvResult.setText("相符");
mViewBinding.imgInventory.setImageResource(R.mipmap.ic_consistent);
break;
case 1:
mViewBinding.tvResult.setText("不相符");
mViewBinding.imgInventory.setImageResource(R.mipmap.ic_not_consistent);
break;
}
}
@Override
protected View getItemView(int layoutResId, ViewGroup parent) {
return super.getItemView(layoutResId, parent);
}
}
package com.xingdata.zzdpos.ui.manage.inventory.adpter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.base.BaseViewHolder;
import com.xingdata.zzdpos.databinding.ItemInventoryCartBinding;
import com.xingdata.zzdpos.databinding.ItemStoreSaledetailBinding;
import com.xingdata.zzdpos.model.CsDetail;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.ui.store.dialog.CartDialog;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.List;
public class InventoryCartAdapter extends BaseAdapter<CsDetail, ItemInventoryCartBinding> {
public InventoryCartAdapter(List<CsDetail> csDetailList) {
super(R.layout.item_inventory_cart, csDetailList);
}
private CartDialog.OnCountChangeListener mOnCountChangeListener;
public void setOnCountChangeListener(CartDialog.OnCountChangeListener onCountChangeListener) {
this.mOnCountChangeListener = onCountChangeListener;
}
@Override
protected void convert(ItemInventoryCartBinding mViewBinding, CsDetail item) {
mViewBinding.tvName.setText(item.getSpuName());
mViewBinding.setCount(item.getCsCnt());
}
@Override
protected void convert(BaseViewHolder helper, CsDetail item) {
super.convert(helper, item);
}
}
//package com.xingdata.zzdpos.ui.manage.inventory.adpter;
//
//
//import android.support.annotation.Nullable;
//import android.view.View;
//import android.view.ViewGroup;
//
//
//import java.util.List;
//
//public class InventoryDetailAdapter extends BaseAdapter<CsDetail, ItemInventoryLeftBinding> {
// private int count = 1;
//
// public InventoryDetailAdapter(@Nullable List<CsDetail> data) {
// super(R.layout.item_inventory_left, data);
//
// }
//
//
// @Override
// protected void convert(ItemInventoryLeftBinding mViewBinding, CsDetail item) {
//
// mViewBinding.tvName.setText(item.getSpuName());
// mViewBinding.tvStockCount.setText(item.getSkuCnt() + "");
// mViewBinding.tvResultCount.setText(item.getCsCnt() + "");
// switch (item.getCsResultFlag()) {
// case 0://相等
// mViewBinding.imgResult.setImageResource(R.mipmap.icon_mark_equal);
// break;
// case 1://盘多
// mViewBinding.imgResult.setImageResource(R.mipmap.icon_mark_offer_more);
// break;
// case 2://盘少
// mViewBinding.imgResult.setImageResource(R.mipmap.icon_mark_offer_less);
// break;
// }
// }
//
// @Override
// protected View getItemView(int layoutResId, ViewGroup parent) {
// return super.getItemView(layoutResId, parent);
// }
//
//
//}
package com.xingdata.zzdpos.ui.manage.inventory.adpter;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import com.facebook.drawee.view.SimpleDraweeView;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.base.BaseViewHolder;
import com.xingdata.zzdpos.databinding.ItemInventoryGoodsBinding;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.List;
public class InventoryGoodsAdapter extends BaseAdapter<Sssku, ItemInventoryGoodsBinding> {
private int count ;
public InventoryGoodsAdapter(@Nullable List<Sssku> data) {
super(R.layout.item_inventory_goods, data);
}
@Override
protected void convert(BaseViewHolder helper, Sssku item) {
if (item.getInventoryCut() == 0) {
item.setInventoryCut(1);
}
count=item.getInventoryCut();
helper.setText(R.id.et_count, item.getInventoryCut() + "");
helper.setText(R.id.tv_goods_name, item.getSpuName())
.setText(R.id.tv_goods_code, item.getSpuBarcode() + "")
.setText(R.id.tv_goods_size, "规格/" + item.getSpuUnitName())
.setText(R.id.tv_goods_price, ConvertUtil.fenToYuan(item.getSkuRetailPrice1(), false))
.setText(R.id.tv_stock, item.getSkuStock() + "");
((SimpleDraweeView) helper.getView(R.id.img_goods)).setImageURI(item.getSpuImg());
helper.getView(R.id.btn_up).setOnClickListener(v -> {
if (count > 0 && count < 9999) {
helper.setText(R.id.et_count, String.valueOf(++count));
item.setInventoryCut(count);
}
});
helper.getView(R.id.btn_down).setOnClickListener(v -> {
if (count == 1) {
item.setInventoryCut(count);
return;
}
if (count > 1 && count < 100) {
helper.setText(R.id.et_count, String.valueOf(--count));
item.setInventoryCut(count);
}
});
((EditText) helper.getView(R.id.et_count)).addTextChangedListener((new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
count = ((EditText) helper.getView(R.id.et_count)).getText().toString().length() == 0 ? 1 : Integer.valueOf(((EditText) helper.getView(R.id.et_count)).getText().toString());
item.setInventoryCut(count);
}
@Override
public void afterTextChanged(Editable editable) {
}
}));
helper.addOnClickListener(R.id.btn_ok);
super.convert(helper, item);
}
@Override
protected void convert(ItemInventoryGoodsBinding mViewBinding, Sssku item) {
}
@Override
protected View getItemView(int layoutResId, ViewGroup parent) {
return super.getItemView(layoutResId, parent);
}
}
package com.xingdata.zzdpos.ui.manage.inventory.dialog;
import android.support.design.widget.BottomSheetBehavior;
import android.support.v7.widget.LinearLayoutManager;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.DialogStoreCartBinding;
import com.xingdata.zzdpos.model.CsDetail;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Saleorder;
import com.xingdata.zzdpos.ui.manage.inventory.adpter.InventoryCartAdapter;
import com.xingdata.zzdpos.ui.store.StorePresenter;
import com.xingdata.zzdpos.ui.store.adapter.SaledetailAdapter;
import java.util.List;
public class CsCartDialog extends BaseSheetDialog<StorePresenter, DialogStoreCartBinding> {
private List<CsDetail> mCsDetails;
public interface OnCountChangeListener {
void onCountChange(Saledetail saledetail, int value);
}
@Override
protected boolean isTransparentBackground() {
return true;
}
@Override
public int getLayoutId() {
return R.layout.dialog_store_cart;
}
@Override
public void initView() {
;
// init C
InventoryCartAdapter mInventoryCartAdapter = new InventoryCartAdapter(mCsDetails);
mViewBinding.rlCart.setAdapter(mInventoryCartAdapter);
mViewBinding.rlCart.setLayoutManager(new LinearLayoutManager(mContext));
// set Other listener
mViewBinding.tvSettle.setOnClickListener(view -> mPresenter.clickSettle());
mViewBinding.tvClear.setOnClickListener(view -> mPresenter.clearCart());
}
@Override
public void onStart() {
super.onStart();
//默认全屏展开
mBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
public CsCartDialog setSaledetails(List<CsDetail> csDetailList) {
this.mCsDetails = csDetailList;
return this;
}
@Override
public void onDestroyView() {
mPresenter.exitCartDialog();
super.onDestroyView();
}
}
//package com.xingdata.zzdpos.ui.manage.inventory.dialog;
//
//import android.support.v7.widget.LinearLayoutManager;
//import android.view.View;
//
//import com.blankj.utilcode.util.TimeUtils;
//import com.blankj.utilcode.util.ToastUtils;
//import com.xingdata.api.print.ZX_PrintPOS;
//import com.xingdata.zzdhd.R;
//import com.xingdata.zzdhd.base.BaseDialog;
//import com.xingdata.zzdhd.databinding.DialogInventoryDetailBinding;
//import com.xingdata.zzdhd.model.Cs;
//import com.xingdata.zzdhd.model.CsDetail;
//import com.xingdata.zzdhd.ui.manager.inventory.InventoryPresenter;
//import com.xingdata.zzdhd.ui.manager.inventory.adpter.InventoryDetailAdapter;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * Created by Administrator on 2017/12/4.
// */
//
//public class InventoryDetailDialog extends BaseDialog<InventoryPresenter, DialogInventoryDetailBinding> {
// private InventoryDetailAdapter mInventoryDetailAdapter;
// private List<CsDetail> csDetails = new ArrayList<>();
// private Cs cs;
// private long mExitTime=0;
//
//
// @Override
// public int getLayoutId() {
// return R.layout.dialog_inventory_detail;
// }
//
// @Override
// public void initView() {
// initLeftRecycler();
// if (cs == null) {
// ToastUtils.showShort("未获取到相关数据");
// return;
// }
// setBtnName("取消", "打印清单");
// mViewBinding.setOperName(cs.getOperName());
// mViewBinding.setDate(TimeUtils.millis2String(cs.getCreateTime()));
// mViewBinding.setSumNum(cs.getCount() + "");
// switch (cs.getCsResultFlag()) {
// case 0:
// mViewBinding.setFinallyResult("相符");
// break;
// case 1:
// mViewBinding.setFinallyResult("不相符");
// break;
// }
// csDetails.clear();
// csDetails.addAll(cs.getCsdetailList());
// mInventoryDetailAdapter.notifyDataSetChanged();
// getDialog().setCanceledOnTouchOutside(false);
//
// }
//
// @Override
// protected boolean isShowTitle() {
// return false;
// }
//
// public InventoryDetailDialog setData(Cs csDetailList) {
// this.cs = csDetailList;
// return this;
// }
//
// private void initLeftRecycler() {
// mViewBinding.replenishmentLeftRecycler.setLayoutManager(new LinearLayoutManager(getActivity()));
// mInventoryDetailAdapter = new InventoryDetailAdapter(csDetails);
// mViewBinding.replenishmentLeftRecycler.setAdapter(mInventoryDetailAdapter);
// }
//
// @Override
// public void onConfirmClick(View view) {
// if ((System.currentTimeMillis() - mExitTime) > 2000) {
// ZX_PrintPOS.getInstance(mContext).printInventory(1,cs);
// } else {
//
// }
// super.onConfirmClick(view);
// }
//}
package com.xingdata.zzdpos.ui.manage.inventory.fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.api.print.ZX_PrintPOS;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentInventoryAddBinding;
import com.xingdata.zzdpos.model.Cs;
import com.xingdata.zzdpos.model.CsDetail;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.dialog.PromptDialog;
import com.xingdata.zzdpos.ui.manage.inventory.InventoryPresenter;
import com.xingdata.zzdpos.ui.manage.inventory.adpter.InventoryGoodsAdapter;
import com.xingdata.zzdpos.ui.manage.inventory.dialog.CsCartDialog;
import com.xingdata.zzdpos.util.OnClickListener;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/11/24.
*/
public class InventoryAddFragment extends BaseFragment<InventoryPresenter, FragmentInventoryAddBinding> {
private List<Sssku> topCsList = new ArrayList<>();
private InventoryGoodsAdapter mInventoryGoodsAdapter;
private CsCartDialog mCartDialog = new CsCartDialog();
/**
* 当前购物车信息
*/
private List<CsDetail> bottomCsList = new ArrayList<>();
// private InventoryDetailAdapter mInventoryDetailAdapter;
private Cs mCs;
private boolean isResult = true;
@Override
public int getLayoutId() {
return R.layout.fragment_inventory_add;
}
@Override
public void initView() {
initRecycler();
mViewBinding.setCartCount(0);
mViewBinding.icTitle.edTitle.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
if (i == EditorInfo.IME_ACTION_SEARCH) {
mPresenter.getProductByBarcode(mViewBinding.icTitle.edTitle.getText().toString());
hideSoftInput();
}
return false;
}
});
mViewBinding.ivCart.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
if (bottomCsList.size() == 0) {
return;
}
mCartDialog.setSaledetails(bottomCsList).show((BaseActivity) getActivity());
}
});
// mViewBinding.btnEnd.setOnClickListener(view -> {
// mPresenter.exitInventoryAdd();
// });
// mViewBinding.btnDel.setOnClickListener(view -> {
// {
// PromptDialog promptDialog = new PromptDialog();
// promptDialog.setDialogType(PromptDialog.PROMPTDIALOG_SELECT, "请确认删除本次盘库记录").setClick(view1 -> {
// mPresenter.cancelInventoryAdd(mCs);
// promptDialog.dismiss();
// }, view1 -> {
// promptDialog.dismiss();
// }).setCancelables(false).show((BaseActivity) mContext);
//
// }
//
// });
// mViewBinding.btnPrint.setOnClickListener(new OnClickListener() {
// @Override
// protected void myOnClickListener(View v) {
// ZX_PrintPOS.getInstance(mContext).printInventory(1, mCs);
// }
// });
}
private void initRecycler() {
mViewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mInventoryGoodsAdapter = new InventoryGoodsAdapter(topCsList);
mInventoryGoodsAdapter.setOnItemLongClickListener((adapter, view, position) -> {
PromptDialog delDialog = new PromptDialog();
delDialog.setDialogType(PromptDialog.PROMPTDIALOG_SELECT, "是否删除").setClick(new View.OnClickListener() {
@Override
public void onClick(View view) {
adapter.getData().remove(position);
adapter.notifyDataSetChanged();
delDialog.dismiss();
}
}, new View.OnClickListener() {
@Override
public void onClick(View view) {
delDialog.dismiss();
}
}).setCancelables(false).show((BaseActivity) mContext);
return false;
});
mInventoryGoodsAdapter.setOnItemChildClickListener((adapter, view, position) -> {
switch (view.getId()) {
case R.id.btn_ok:
PromptDialog promptDialog = new PromptDialog();
promptDialog.setDialogType(PromptDialog.PROMPTDIALOG_SELECT, "请确认添加记录").setClick(view1 -> {
mPresenter.clickOkCsDetail(mInventoryGoodsAdapter.getData().get(position), mCs);
promptDialog.dismiss();
}, view1 -> {
promptDialog.dismiss();
}).setCancelables(false).show((BaseActivity) mContext);
break;
}
});
mViewBinding.recyclerView.setAdapter(mInventoryGoodsAdapter);
}
public void addInventoryGoodsItem(List<Sssku> list) {
for (Sssku s : list) {
if (topCsList.contains(s)) {
ToastUtils.showShort("商品已存在");
} else {
if (bottomCsList.contains(s)) {
ToastUtils.showShort("商品已盘点");
} else {
topCsList.add(s);
}
}
}
mInventoryGoodsAdapter.notifyDataSetChanged();
}
public void addInventoryGoodsItem(Sssku sssku) {
if (!topCsList.contains(sssku)) {
if (bottomCsList.contains(sssku)) {
ToastUtils.showShort("商品已盘点");
} else {
topCsList.add(sssku);
}
} else {
ToastUtils.showShort("商品已存在");
}
mInventoryGoodsAdapter.notifyDataSetChanged();
}
public void addInventoryDetailItem(CsDetail csDetail, Sssku sssku) {
if (csDetail.getCsResultFlag() != 0) {
isResult = false;
}
bottomCsList.add(csDetail);
mViewBinding.setCartCount(getSumNum());
topCsList.remove(sssku);
mInventoryGoodsAdapter.notifyDataSetChanged();
if (isResult) {
mViewBinding.setResult("相符");
} else {
mViewBinding.setResult("不相符");
}
}
private int getSumNum() {
long i = 0;
for (CsDetail csDetail : bottomCsList) {
i = i + csDetail.getCsCnt();
}
return (int) i;
}
public void setCs(Cs cs) {
mCs = cs;
mCs.setCsdetailList(bottomCsList);
}
public void searchGoodsSuc() {
// mViewBinding.etKeyword.setText("");
// KeyboardUtils.hideSoftInput(getActivity());
}
}
package com.xingdata.zzdpos.ui.manage.inventory.fragment;
import android.databinding.DataBindingUtil;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.text.Html;
import android.util.TimeUtils;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.PopupWindow;
import android.widget.TextView;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentInventoryBinding;
import com.xingdata.zzdpos.model.Cs;
import com.xingdata.zzdpos.model.Ossku;
import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.dialog.PromptDialog;
import com.xingdata.zzdpos.ui.manage.inventory.InventoryPresenter;
import com.xingdata.zzdpos.ui.manage.inventory.adpter.InventoryAdapter;
import com.xingdata.zzdpos.util.OnClickListener;
import com.xingdata.zzdpos.util.StringUtil;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/11/24.
*/
public class InventoryFragment extends BaseFragment<InventoryPresenter, FragmentInventoryBinding> {
private InventoryAdapter mInventoryAdapter;
private int pageNum;
private Long start;
private Long end;
@Override
public int getLayoutId() {
return R.layout.fragment_inventory;
}
@Override
public void initView() {
start = null;
end = null;
pageNum = 1;
initTitle();
mViewBinding.btnAdd.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
mPresenter.clickStartInventory();
}
});
mViewBinding.recyclerInventory.setLayoutManager(new LinearLayoutManager(getActivity()));
mInventoryAdapter = new InventoryAdapter(new ArrayList<>());
mInventoryAdapter.setEmptyView(getEmptyView());
mViewBinding.recyclerInventory.setAdapter(mInventoryAdapter);
mViewBinding.srlProduct.setOnRefreshListener(this::onRefresh);
mInventoryAdapter.setOnLoadMoreListener(this::onLoadMore, mViewBinding.recyclerInventory);
mInventoryAdapter.setOnItemClickListener((adapter, view, position) -> {
mPresenter.clickInventoryItem(mInventoryAdapter.getData().get(position));
});
mViewBinding.btnAdd.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
mPresenter.clickStartInventory();
}
}
);
mInventoryAdapter.setOnItemLongClickListener((adapter, view, position) -> {
PromptDialog promptDialog = new PromptDialog();
promptDialog.setDialogType(PromptDialog.PROMPTDIALOG_SELECT, "请确认删除此记录").setClick(view1 -> {
mPresenter.delInventoryItem(mInventoryAdapter.getData().get(position));
promptDialog.dismiss();
}, view1 -> {
promptDialog.dismiss();
}).setCancelables(false).show((BaseActivity) mContext);
return false;
});
mPresenter.getInventoryList(pageNum);
}
private void initTitle() {
mViewBinding.icTitle.edTitle.setVisibility(View.GONE);
mViewBinding.icTitle.tvTitle.setText("盘库记录");
mViewBinding.icTitle.tvTitle.setVisibility(View.VISIBLE);
mViewBinding.icTitle.ivRight.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
mPresenter.clickDate();
}
});
mViewBinding.icTitle.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
getActivity().finish();
}
});
}
//
public void setCount(int count) {
mViewBinding.tvCount.setText("共" + count + "人次盘库记录");
}
public void setCount(String count) {
mViewBinding.tvCount.setText(count);
}
private void onRefresh() {
start = null;
end = null;
pageNum = 1;
mPresenter.getInventoryList(pageNum);
}
private void onLoadMore() {
pageNum++;
if (start != null) {
mPresenter.getInventoryList(pageNum, start, end);
} else {
mPresenter.getInventoryList(pageNum);
}
}
/**
* 设置数据
*
* @param pager 数据
* @param isRefresh 是否刷新
*/
public void setData(Pager<Cs> pager, boolean isRefresh) {
if (isRefresh) {
mInventoryAdapter.setEnableLoadMore(true);
mViewBinding.srlProduct.setRefreshing(false);
pageNum = 1;
}
if (isRefresh) mInventoryAdapter.setNewData(pager.getList());
else if (pager.getList().size() > 0) mInventoryAdapter.addData(pager.getList());
if (pager.isLastPage()) mInventoryAdapter.loadMoreEnd(isRefresh);
else mInventoryAdapter.loadMoreComplete();
}
private View getEmptyView() {
View view = getLayoutInflater().inflate(R.layout.view_empty, null);
TextView textView = view.findViewById(R.id.tv_empty);
textView.setText(R.string.inventory_empty_hint);
return view;
}
public void setDate(long start, long end) {
this.start = start;
this.end = end;
}
}
package com.xingdata.zzdpos.ui.manage.manageMenu;
import android.util.TypedValue;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import com.blankj.utilcode.util.TimeUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentStatisticsDateBinding;
import com.xingdata.zzdpos.ui.manage.inventory.InventoryPresenter;
import com.xingdata.zzdpos.ui.statistics.StatisticsPresenter;
import com.xingdata.zzdpos.util.OnClickListener;
import com.xingdata.zzdpos.util.StringUtil;
import java.text.SimpleDateFormat;
public class ManageDateFragment extends BaseFragment<InventoryPresenter, FragmentStatisticsDateBinding> {
private float textSize;
private View.OnFocusChangeListener mOnFocusChangeListener;
private View.OnClickListener mOnClickListener;
@Override
public int getLayoutId() {
return R.layout.fragment_statistics_date;
}
@Override
public void initView() {
initListener();
textSize = mViewBinding.editStart.getTextSize();
mViewBinding.editStart.setOnFocusChangeListener(mOnFocusChangeListener);
mViewBinding.editEnd.setOnFocusChangeListener(mOnFocusChangeListener);
mViewBinding.editStart.setOnClickListener(mOnClickListener);
mViewBinding.editEnd.setOnClickListener(mOnClickListener);
String startAll = StringUtil.monthStart();
String[] stringsStart = startAll.split("-");
mViewBinding.datePickerStart.setMaxDate(System.currentTimeMillis());
mViewBinding.datePickerStart.init(2000, 0, 0, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {
String month = String.valueOf(i1 + 1).length() >= 2 ? String.valueOf(i1 + 1) : "0" + String.valueOf(i1 + 1);
String day = String.valueOf(i2).length() >= 2 ? String.valueOf(i2) : "0" + String.valueOf(i2);
mViewBinding.editStart.setText(i + "-" + month + "-" + day);
}
});
String endAll = TimeUtils.millis2String(System.currentTimeMillis(), new SimpleDateFormat(StringUtil.defaultDatePattern));
String[] stringsEnd = endAll.split("-");
mViewBinding.datePickerEnd.setMaxDate(System.currentTimeMillis());
mViewBinding.datePickerEnd.init(2000, 0, 0, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {
String month = String.valueOf(i1 + 1).length() >= 2 ? String.valueOf(i1 + 1) : "0" + String.valueOf(i1 + 1);
String day = String.valueOf(i2).length() >= 2 ? String.valueOf(i2) : "0" + String.valueOf(i2);
mViewBinding.editEnd.setText(i + "-" + month + "-" + day);
}
});
mViewBinding.tvOk.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
mPresenter.inspectDate(mViewBinding.editStart.getText().toString(), mViewBinding.editEnd.getText().toString());
}
});
mViewBinding.tvCancel.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
pop();
}
});
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
mViewBinding.datePickerStart.updateDate(Integer.valueOf(stringsStart[0]), Integer.valueOf(stringsStart[1]) - 1, Integer.valueOf(stringsStart[2]));
mViewBinding.datePickerEnd.updateDate(Integer.valueOf(stringsEnd[0]), Integer.valueOf(stringsEnd[1]) - 1, Integer.valueOf(stringsEnd[2]));
mViewBinding.editStart.performClick();
mViewBinding.editStart.setText(startAll);
mViewBinding.editEnd.setText(endAll);
}
}, 10);
}
public void showDateAlert(Boolean f) {
if (f) {
mViewBinding.imgAlert.setVisibility(View.VISIBLE);
} else {
mViewBinding.imgAlert.setVisibility(View.GONE);
}
}
private void initListener() {
mOnFocusChangeListener = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (b) {
((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize + 5);
((TextView) view).setTextColor(getResources().getColor(R.color.red_guanyu));
String[] strings = ((TextView) view).getText().toString().split("-");
if (mViewBinding.datePickerStart.getVisibility() == View.GONE) {
mViewBinding.datePickerStart.setVisibility(View.VISIBLE);
mViewBinding.datePickerEnd.setVisibility(View.GONE);
} else {
mViewBinding.datePickerStart.setVisibility(View.GONE);
mViewBinding.datePickerEnd.setVisibility(View.VISIBLE);
}
} else {
((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
((TextView) view).setTextColor(getResources().getColor(R.color.gray_kongming));
}
}
};
mOnClickListener = new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
if (v.isFocused()) {
} else {
v.setFocusable(true);
v.setFocusableInTouchMode(true);
v.requestFocus();
}
}
};
}
}
......@@ -11,12 +11,11 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.databinding.ActivityMarketingMenuBinding;
import com.xingdata.zzdpos.ui.manage.inventory.InventoryActivity;
import com.xingdata.zzdpos.ui.manage.otherselect.OtherSelectActivity;
import com.xingdata.zzdpos.ui.manage.replenishment.ReplenishmentActivity;
import com.xingdata.zzdpos.ui.marketing.integral.IntegralActivity;
import com.xingdata.zzdpos.ui.marketing.marketingMenu.MarketingMenuActivity;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuActivity;
import com.xingdata.zzdpos.ui.marketing.marketingMenu.adapter.MarketingMenuAdapter;
import com.xingdata.zzdpos.ui.marketing.ms.MsActivity;
import com.xingdata.zzdpos.ui.marketing.ticket.ReturnTicketActivity;
import com.xingdata.zzdpos.util.OnClickListener;
import java.util.ArrayList;
......@@ -62,7 +61,7 @@ public class ManageMenuActivity extends AppCompatActivity {
}
break;
case C.MENU.MENU_MANAGER_GOODS: {
ActivityUtils.startActivity(ManageMenuActivity.this, SsskuActivity.class);
}
break;
case C.MENU.MENU_MANAGER_BALE: {
......@@ -74,11 +73,11 @@ public class ManageMenuActivity extends AppCompatActivity {
}
break;
case C.MENU.MENU_MANAGER_OTHER: {
ActivityUtils.startActivity(ManageMenuActivity.this, OtherSelectActivity.class);
}
break;
case C.MENU.MENU_MANAGER_INVENTORY: {
ActivityUtils.startActivity(ManageMenuActivity.this, InventoryActivity.class);
}
break;
default: {
......
package com.xingdata.zzdpos.ui.manage.otherselect;
import android.view.KeyEvent;
import android.view.View;
import com.blankj.utilcode.util.FragmentUtils;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.databinding.ActivityOtherSelectBinding;
import com.xingdata.zzdpos.model.Ossku;
import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.manage.otherselect.fragment.OtherDetailFragment;
import com.xingdata.zzdpos.ui.manage.otherselect.fragment.OtherListFragment;
import com.xingdata.zzdpos.util.OnClickListener;
public class OtherSelectActivity extends BaseActivity<OtherSelectPresenter, ActivityOtherSelectBinding> implements OtherSelectContract.View {
private OtherListFragment mOtherListFragment = new OtherListFragment();
private OtherDetailFragment mOtherDetailFragment = new OtherDetailFragment();
LoadingDialog mLoadingDialog = new LoadingDialog();
@Override
public int getLayoutId() {
return R.layout.activity_other_select;
}
@Override
public void initView() {
mViewBinding.lyTitle.ivRight.setVisibility(View.GONE);
FragmentUtils.add(getSupportFragmentManager(), mOtherListFragment, mViewBinding.fragmentContainer.getId(), false, true);
mViewBinding.lyTitle.edTitle.setOnKeyListener((v, keyCode, event) -> {
if (keyCode == KeyEvent.KEYCODE_ENTER)
search(mViewBinding.lyTitle.edTitle.getText().toString().trim());
return false;
});
mViewBinding.lyTitle.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
if (mViewBinding.lyTitle.edTitle.isFocused()) {
mViewBinding.lyTitle.edTitle.clearFocus();
}
if (mOtherDetailFragment.isAdded()) {
mOtherDetailFragment.pop();
return;
}
finish();
}
});
}
@Override
public void isShowLoading(Boolean is) {
if (is) {
mLoadingDialog.show((BaseActivity) mContext);
} else {
if (mLoadingDialog.isShowing) {
mLoadingDialog.dismiss();
}
}
}
@Override
public void loadOssku(Pager<Ossku> osskuList, boolean isRefresh) {
if (mOtherDetailFragment.isAdded()) {
mOtherDetailFragment.pop();
}
mOtherListFragment.setData(osskuList, isRefresh);
}
@Override
public void showOsskuDetail(Ossku ossku) {
mOtherDetailFragment.setOssku(ossku);
FragmentUtils.add(getSupportFragmentManager(), mOtherDetailFragment, mViewBinding.fragmentContainer.getId(), false, true);
}
@Override
protected void onPause() {
KeyboardUtils.hideSoftInput(this);
super.onPause();
}
private void search(String string) {
KeyboardUtils.hideSoftInput(this);
if (string.length() == 0) {
ToastUtils.showShort("请输入搜索内容");
return;
}
mPresenter.searchGoodsFirst(string);
}
}
package com.xingdata.zzdpos.ui.manage.otherselect;
import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Ossku;
import com.xingdata.zzdpos.model.Pager;
/**
* Created by Eurus on 2017/11/23.
*/
public interface OtherSelectContract {
interface View extends BaseView {
void isShowLoading(Boolean is);
/**
* 加载列表
*/
void loadOssku(Pager<Ossku> osskuList, boolean isRefresh);
void showOsskuDetail(Ossku ossku);
}
abstract class Presenter extends BasePresenter<View> {
public abstract void clickOsskuItem(Ossku ossku);
/**
* 临库查询界面 - 查找
*
* @param keyword 搜索关键字
*/
public abstract void searchGoodsFirst(String keyword);
/**
* 临库查询界面 - 查找
*
* @param keyword 搜索关键字
*/
abstract void searchGoods(String keyword);
/**
* 临库查询页面 - 加载更多
*/
public abstract void loadMore();
/**
* 临库查询页面 - 刷新
*/
public abstract void refresh();
}
}
package com.xingdata.zzdpos.ui.manage.otherselect;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.model.Ossku;
public class OtherSelectPresenter extends OtherSelectContract.Presenter {
private int nowPageNumber = 1;
private int nowPageSize = 10;
private String wd;
@Override
public void onAttached() {
}
@Override
public void clickOsskuItem(Ossku ossku) {
mView.showOsskuDetail(ossku);
}
@Override
public void searchGoodsFirst(String keyword) {
wd = keyword;
nowPageNumber = 1;
searchGoods(wd);
}
@Override
void searchGoods(String keyword) {
mView.isShowLoading(true);
ApiFactory.Sssku.getOtherShopSsku(keyword, nowPageNumber, nowPageSize).doFinally(() -> {
mView.isShowLoading(false);
})
.subscribe(osskus -> {
if (osskus.getTotalRow() == 0) {
ToastUtils.showShort("没有搜到当前商品,请重新输入");
}
//判断是否能加载更多
mView.loadOssku(osskus, nowPageNumber == 1);
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
}
@Override
public void loadMore() {
this.nowPageNumber++;
searchGoods(wd);
}
@Override
public void refresh() {
this.nowPageNumber = 1;
searchGoods(wd);
}
}
package com.xingdata.zzdpos.ui.manage.otherselect.adpter;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.databinding.ItemOtherSelectBinding;
import com.xingdata.zzdpos.model.Ossku;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.List;
public class OtherSelectAdapter extends BaseAdapter<Ossku, ItemOtherSelectBinding> {
public OtherSelectAdapter(@Nullable List<Ossku> data) {
super(R.layout.item_other_select, data);
}
@Override
protected void convert(ItemOtherSelectBinding mViewBinding, Ossku item) {
mViewBinding.tvGoodsName.setText(item.getSpuName());
mViewBinding.tvGoodsCode.setText(item.getSpuBarcode() + "");
// mViewBinding.tvGoodsPrice.setText(ConvertUtil.fenToYuan(item.getSkuRetailPrice1(), false));
mViewBinding.tvGoodsSize.setText("规格/" + item.getSpuUnitName());
mViewBinding.imgGoods.setImageURI(item.getSpuImg());
// mViewBinding.tvNum.setText(item.getSkuStock() + "个");
mViewBinding.tvShop.setText(item.getShopName());
// mViewBinding.tvAddress.setText(item.getCityAddress());
// mViewBinding.tvTel.setText(item.getContactTel());
}
}
package com.xingdata.zzdpos.ui.manage.otherselect.fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentOtherDetailBinding;
import com.xingdata.zzdpos.databinding.FragmentOtherListBinding;
import com.xingdata.zzdpos.model.Ossku;
import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.ui.manage.otherselect.OtherSelectPresenter;
import com.xingdata.zzdpos.ui.manage.otherselect.adpter.OtherSelectAdapter;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.ArrayList;
/**
* Created by Administrator on 2017/11/23.
*/
public class OtherDetailFragment extends BaseFragment<OtherSelectPresenter, FragmentOtherDetailBinding> {
private Ossku ossku;
@Override
public int getLayoutId() {
return R.layout.fragment_other_detail;
}
@Override
public void initView() {
if (ossku != null) {
mViewBinding.tvGoodsName.setText(ossku.getSpuName());
mViewBinding.tvGoodsCode.setText(ossku.getSpuBarcode() + "");
mViewBinding.tvPrice.setText(ConvertUtil.fenToYuan(ossku.getSkuRetailPrice1(), false));
mViewBinding.tvGoodsSize.setText("规格/" + ossku.getSpuUnitName());
mViewBinding.imgGoods.setImageURI(ossku.getSpuImg());
mViewBinding.setStock("库存:" + ossku.getSkuStock());
mViewBinding.setShopName(ossku.getShopName());
mViewBinding.setAddress(ossku.getCityAddress());
mViewBinding.setPhone(ossku.getContactTel());
}
}
public void setOssku(Ossku ossku) {
this.ossku = ossku;
}
}
package com.xingdata.zzdpos.ui.manage.otherselect.fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentOrderListBinding;
import com.xingdata.zzdpos.databinding.FragmentOtherListBinding;
import com.xingdata.zzdpos.model.Ossku;
import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.ui.manage.otherselect.OtherSelectPresenter;
import com.xingdata.zzdpos.ui.manage.otherselect.adpter.OtherSelectAdapter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/11/23.
*/
public class OtherListFragment extends BaseFragment<OtherSelectPresenter, FragmentOtherListBinding> {
private OtherSelectAdapter mOtherSelectAdapter;
@Override
public int getLayoutId() {
return R.layout.fragment_other_list;
}
@Override
public void initView() {
mOtherSelectAdapter = new OtherSelectAdapter(new ArrayList<>());
mOtherSelectAdapter.setEmptyView(getEmptyView(R.string.empty_other_select));
mViewBinding.recyclerOtherSelcet.setLayoutManager(new LinearLayoutManager(getActivity()));
mViewBinding.recyclerOtherSelcet.setAdapter(mOtherSelectAdapter);
mOtherSelectAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
mPresenter.clickOsskuItem(mOtherSelectAdapter.getData().get(position));
}
});
mViewBinding.srlProduct.setOnRefreshListener(this::onRefresh);
mOtherSelectAdapter.setOnLoadMoreListener(this::onLoadMore, mViewBinding.recyclerOtherSelcet);
}
private void onRefresh() {
mPresenter.refresh();
}
private void onLoadMore() {
mPresenter.loadMore();
}
/**
* 设置数据
*
* @param pager 数据
* @param isRefresh 是否刷新
*/
public void setData(Pager<Ossku> pager, boolean isRefresh) {
if (isRefresh) {
mOtherSelectAdapter.setEnableLoadMore(true);
mViewBinding.srlProduct.setRefreshing(false);
}
if (isRefresh) mOtherSelectAdapter.setNewData(pager.getList());
else if (pager.getList().size() > 0) mOtherSelectAdapter.addData(pager.getList());
if (pager.isLastPage()) mOtherSelectAdapter.loadMoreEnd(isRefresh);
else mOtherSelectAdapter.loadMoreComplete();
}
private View getEmptyView(int resHint) {
View view = getLayoutInflater().inflate(R.layout.view_empty, null);
view.setBackgroundResource(R.color.white_caocao);
((TextView) view.findViewById(R.id.tv_empty)).setText(resHint);
return view;
}
}
......@@ -5,17 +5,19 @@ import com.blankj.utilcode.util.KeyboardUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.databinding.ActivityReplenishmentBinding;
import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Psb;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.manage.replenishment.fragment.ReplenishmentDetailFragment;
import com.xingdata.zzdpos.ui.manage.replenishment.fragment.ReplenishmentFragment;
import java.util.List;
public class ReplenishmentActivity extends BaseActivity<ReplenishmentPresenter, ActivityReplenishmentBinding> implements ReplenishmentContract.View {
private ReplenishmentFragment mReplenishmentFragment = new ReplenishmentFragment();
// private ReplenishmentDetailFragment mReplenishmentDetailFragment = new ReplenishmentDetailFragment();
private ReplenishmentDetailFragment mReplenishmentDetailFragment = new ReplenishmentDetailFragment();
private boolean isAllowFragment = true;
LoadingDialog mLoadingDialog = new LoadingDialog();
......@@ -26,40 +28,45 @@ public class ReplenishmentActivity extends BaseActivity<ReplenishmentPresenter,
@Override
public void initView() {
loadRootFragment(R.id.f_bottom, mReplenishmentFragment, true, false);
mPresenter.queryPsbList();
}
@Override
public void addPsbSuc() {
// mReplenishmentDetailFragment.pop();
mReplenishmentDetailFragment.pop();
mPresenter.refreshPsb();
}
@Override
public void showReplenishmentList(List<Psb> A, List<Psb> B, List<Psb> C) {
mReplenishmentFragment.showReplenishmentList(A, B, C);
if (mReplenishmentFragment.isAdded()){
mReplenishmentFragment.showReplenishmentList(A, B, C,false);
}else {
mReplenishmentFragment.showReplenishmentList(A, B, C,true);
loadRootFragment(R.id.f_bottom, mReplenishmentFragment, true, false);
}
}
@Override
public void openReplenishmentDetailFragment(List<Sssku> ssskuList) {
// if (isAllowFragment) {
// isAllowFragment = false;
// mReplenishmentDetailFragment.setSsskuList(ssskuList);
// start(mReplenishmentDetailFragment);
// }
if (isAllowFragment) {
isAllowFragment = false;
mReplenishmentDetailFragment.setSsskuList(ssskuList);
start(mReplenishmentDetailFragment);
}
}
@Override
public void openReplenishmentDetailFragment(Psb psb) {
// if (isAllowFragment) {
// isAllowFragment = false;
// mReplenishmentDetailFragment.setPsb(psb);
// start(mReplenishmentDetailFragment);
//
// }
if (isAllowFragment) {
isAllowFragment = false;
mReplenishmentDetailFragment.setPsb(psb);
start(mReplenishmentDetailFragment);
}
}
......@@ -84,4 +91,6 @@ public class ReplenishmentActivity extends BaseActivity<ReplenishmentPresenter,
public void isAllowFragment(Boolean is) {
isAllowFragment = is;
}
}
......@@ -2,6 +2,7 @@ package com.xingdata.zzdpos.ui.manage.replenishment;
import android.util.Log;
import android.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.api.ApiFactory;
......@@ -24,8 +25,6 @@ public class ReplenishmentPresenter extends ReplenishmentContract.Presenter {
}
@Override
public void clickAdd() {
mView.isShowLoading(true);
......@@ -33,7 +32,11 @@ public class ReplenishmentPresenter extends ReplenishmentContract.Presenter {
mView.isShowLoading(false);
})
.subscribe(ssskuPager -> {
mView.openReplenishmentDetailFragment(ssskuPager.getList());
if (ssskuPager.getList().size() == 0) {
ToastUtils.showShort("库存正常,无需补货");
} else {
mView.openReplenishmentDetailFragment(ssskuPager.getList());
}
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
});
......@@ -42,10 +45,12 @@ public class ReplenishmentPresenter extends ReplenishmentContract.Presenter {
@Override
public void queryPsbList() {
mView.isShowLoading(true);
unConfirmedPsbList.clear();
unReceivePsbList.clear();
finishedPsbList.clear();
ApiFactory.Psb.queryPsb(1, 200).doFinally(() -> {
mView.isShowLoading(false);
})
.subscribe(psbPager -> {
......@@ -82,11 +87,7 @@ public class ReplenishmentPresenter extends ReplenishmentContract.Presenter {
mView.isShowLoading(false);
})
.subscribe(psbNew -> {
// psbNew.setOutChannelNameabcn(psb.getOutChannelNameabcn());
// psbNew.setCityAddress(psb.getCityAddress());
// psbNew.setCityProvName(psb.getCityProvName());
// psbNew.setCityName(psb.getCityName());
// psbNew.setCityCountyName(psb.getCityCountyName());
mView.openReplenishmentDetailFragment(psbNew);
}, throwable -> {
ToastUtils.showShort(throwable.getMessage());
......
//package com.xingdata.zzdpos.ui.manage.replenishment.adpter;
//
//
//import android.support.annotation.Nullable;
//import android.support.v4.content.ContextCompat;
//import android.text.Editable;
//import android.text.TextWatcher;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.EditText;
//
//
//import com.xingdata.zzdpos.R;
//import com.xingdata.zzdpos.model.Sssku;
//import com.xingdata.zzdpos.util.ConvertUtil;
//
//import java.util.List;
//
//public class ReplenishmentDetailAdapter extends BaseAdapter<Sssku, ItemReplenishmentDetailBinding> {
// private Boolean isTouch = true;
// private UpdatePriceListener mUpdatePriceListener;
//
// public ReplenishmentDetailAdapter(@Nullable List<Sssku> data, boolean Touch) {
// super(R.layout.item_replenishment_detail, data);
// isTouch = Touch;
//
// }
//
//
// @Override
// protected void convert(ItemReplenishmentDetailBinding mViewBinding, Sssku item) {
// mViewBinding.imgGoods.setImageURI(item.getSpuImg());
// mViewBinding.tvGoodsName.setText(item.getSpuName());
// mViewBinding.tvGoodsCode.setText(item.getSpuBarcode() + "");
// mViewBinding.tvGoodsSize.setText("规格/" + item.getSpuUnitName());
// mViewBinding.tvGoodsPrice.setText(ConvertUtil.fenToYuan(item.getSkuCost(), false));
// mViewBinding.tvStock.setText(item.getSkuStock() + "");
// if (item.getSkuCnt() != null) {
// mViewBinding.etCount.setText(item.getSkuCnt() + "");
// } else {
// item.setSkuCnt(1);
// }
//
// if (!isTouch) {
// mViewBinding.etCount.setEnabled(false);
// mViewBinding.etCount.setTextColor(ContextCompat.getColor(mContext,R.color.white_cargo));
// mViewBinding.btnDown.setVisibility(View.GONE);
// mViewBinding.btnUp.setVisibility(View.GONE);
// }
// }
//
//
// @Override
// protected void convert(BaseViewHolder helper, Sssku item) {
//
// if (isTouch) {
// helper.getView(R.id.btn_up).setOnClickListener(v -> {
// Integer sellCount = item.getSkuCnt();
// if (sellCount >= 0 && sellCount < 9999) {
// helper.setText(R.id.et_count, String.valueOf(++sellCount));
// item.setSkuCnt(sellCount);
//// mUpdatePriceListener.updatePrice(1L*(item.getSkuCost()));
// }
// });
// helper.getView(R.id.btn_down).setOnClickListener(v -> {
// Integer sellCount = item.getSkuCnt();
// if (sellCount == 1) {
// return;
// }
// if (sellCount > 1 && sellCount <= 9999) {
// helper.setText(R.id.et_count, String.valueOf(--sellCount));
// item.setSkuCnt(sellCount);
//// mUpdatePriceListener.updatePrice(-1L*(item.getSkuCost()));
//
// }
// });
// ((EditText) helper.getView(R.id.et_count)).addTextChangedListener((new TextWatcher() {
//
// @Override
// public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
//
// }
//
// @Override
// public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// Integer sellCount = ((EditText) helper.getView(R.id.et_count)).getText().toString().length() == 0 ? 1 : Integer.valueOf(((EditText) helper.getView(R.id.et_count)).getText().toString());
// if (sellCount==0){
// sellCount=1;
// helper.setText(R.id.et_count,"");
//
// }
// Integer changedNum = sellCount - item.getSkuCnt();
// item.setSkuCnt(sellCount);
// mUpdatePriceListener.updatePrice(item.getSkuCost() * changedNum);
// }
//
// @Override
// public void afterTextChanged(Editable editable) {
// }
//
//
// }));
// }
// super.convert(helper, item);
// }
//
// @Override
// protected View getItemView(int layoutResId, ViewGroup parent) {
// return super.getItemView(layoutResId, parent);
// }
//
//
// public void setmUpdatePriceListener(UpdatePriceListener updatePriceListener) {
// this.mUpdatePriceListener = updatePriceListener;
// }
//
//
// public abstract static class UpdatePriceListener {
//
// public abstract void updatePrice(long amt);
// }
//
//}
package com.xingdata.zzdpos.ui.manage.replenishment.adpter;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.base.BaseViewHolder;
import com.xingdata.zzdpos.databinding.ItemReplenishmentDetailBinding;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.List;
public class ReplenishmentDetailAdapter extends BaseAdapter<Sssku, ItemReplenishmentDetailBinding> {
private Boolean isTouch = true;
private UpdatePriceListener mUpdatePriceListener;
public ReplenishmentDetailAdapter(@Nullable List<Sssku> data, boolean Touch) {
super(R.layout.item_replenishment_detail, data);
isTouch = Touch;
}
@Override
protected void convert(ItemReplenishmentDetailBinding mViewBinding, Sssku item) {
mViewBinding.imgGoods.setImageURI(item.getSpuImg());
mViewBinding.tvGoodsName.setText(item.getSpuName());
mViewBinding.tvGoodsCode.setText(item.getSpuBarcode() + "");
mViewBinding.tvGoodsSize.setText("规格/" + item.getSpuUnitName());
mViewBinding.tvGoodsPrice.setText(ConvertUtil.fenToYuan(item.getSkuCost(), false));
mViewBinding.tvStock.setText(item.getSkuStock() + "");
if (item.getSkuCnt() != null) {
mViewBinding.etCount.setText(item.getSkuCnt() + "");
} else {
item.setSkuCnt(1);
}
if (!isTouch) {
mViewBinding.etCount.setEnabled(false);
mViewBinding.etCount.setTextColor(ContextCompat.getColor(mContext, R.color.white_cargo));
mViewBinding.btnDown.setVisibility(View.GONE);
mViewBinding.btnUp.setVisibility(View.GONE);
}
}
@Override
protected void convert(BaseViewHolder helper, Sssku item) {
if (isTouch) {
helper.getView(R.id.btn_up).setOnClickListener(v -> {
Integer sellCount = item.getSkuCnt();
if (sellCount >= 0 && sellCount < 9999) {
helper.setText(R.id.et_count, String.valueOf(++sellCount));
item.setSkuCnt(sellCount);
// mUpdatePriceListener.updatePrice(1L*(item.getSkuCost()));
}
});
helper.getView(R.id.btn_down).setOnClickListener(v -> {
Integer sellCount = item.getSkuCnt();
if (sellCount == 1) {
return;
}
if (sellCount > 1 && sellCount <= 9999) {
helper.setText(R.id.et_count, String.valueOf(--sellCount));
item.setSkuCnt(sellCount);
// mUpdatePriceListener.updatePrice(-1L*(item.getSkuCost()));
}
});
((EditText) helper.getView(R.id.et_count)).addTextChangedListener((new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
Integer sellCount = ((EditText) helper.getView(R.id.et_count)).getText().toString().length() == 0 ? 1 : Integer.valueOf(((EditText) helper.getView(R.id.et_count)).getText().toString());
if (sellCount == 0) {
sellCount = 1;
helper.setText(R.id.et_count, "");
}
Integer changedNum = sellCount - item.getSkuCnt();
item.setSkuCnt(sellCount);
mUpdatePriceListener.updatePrice(item.getSkuCost() * changedNum);
}
@Override
public void afterTextChanged(Editable editable) {
}
}));
}
super.convert(helper, item);
}
public void setmUpdatePriceListener(UpdatePriceListener updatePriceListener) {
this.mUpdatePriceListener = updatePriceListener;
}
public abstract static class UpdatePriceListener {
public abstract void updatePrice(long amt);
}
}
......@@ -4,6 +4,7 @@ package com.xingdata.zzdpos.ui.manage.replenishment.fragment;
import android.databinding.DataBindingUtil;
import android.graphics.Typeface;
import android.support.design.widget.TabLayout;
import android.text.InputType;
import android.view.View;
import android.widget.TextView;
......@@ -19,6 +20,7 @@ import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.main.adapter.FragmentViewAdapter;
import com.xingdata.zzdpos.ui.manage.replenishment.ReplenishmentPresenter;
import com.xingdata.zzdpos.ui.manage.replenishment.adpter.ReplenishmentAdapter;
import com.xingdata.zzdpos.util.OnClickListener;
import java.util.ArrayList;
import java.util.List;
......@@ -39,6 +41,9 @@ public class ReplenishmentFragment extends BaseFragment<ReplenishmentPresenter,
private int[] titleInts = {R.string.manage_replenishment_unConfirmed, R.string.manage_replenishment_unReceive, R.string.manage_replenishment_finished};
private FragmentViewAdapter mFragmentPagerAdapter;
private List<BaseFragment> fragments;
private List<Psb> psbA;
private List<Psb> psbB;
private List<Psb> psbC;
@Override
......@@ -50,14 +55,26 @@ public class ReplenishmentFragment extends BaseFragment<ReplenishmentPresenter,
public void initView() {
initData();
initTab();
mPresenter.queryPsbList();
((ReplenishmentListFragment) fragments.get(0)).setData(psbA);
((ReplenishmentListFragment) fragments.get(1)).setData(psbB);
((ReplenishmentListFragment) fragments.get(2)).setData(psbC);
mViewBinding.btnAdd.setOnClickListener(view -> {
mPresenter.clickAdd();
});
mViewBinding.icTitle.ivRight.setImageResource(R.mipmap.but_sweep_yard);
mViewBinding.icTitle.edTitle.setHint("请输入供货商名称");
mViewBinding.icTitle.setOnClickListener(new OnClickListener() {
@Override
protected void myOnClickListener(View v) {
getActivity().finish();
}
});
mViewBinding.icTitle.ivRight.setVisibility(View.GONE);
mViewBinding.icTitle.edTitle.setHint("请输入供货商名称");
mViewBinding.icTitle.edTitle.setInputType(InputType.TYPE_CLASS_TEXT);
mViewBinding.icTitle.edTitle.setOnClickListener(view -> {
if (mViewBinding.icTitle.edTitle.getText().toString().trim().length() == 0) {
ToastUtils.showShort("请输入供货商名称");
......@@ -143,10 +160,16 @@ public class ReplenishmentFragment extends BaseFragment<ReplenishmentPresenter,
}
public void showReplenishmentList(List<Psb> A, List<Psb> B, List<Psb> C) {
((ReplenishmentListFragment) fragments.get(0)).setData(A, true);
((ReplenishmentListFragment) fragments.get(1)).setData(B, true);
((ReplenishmentListFragment) fragments.get(2)).setData(C, true);
public void showReplenishmentList(List<Psb> A, List<Psb> B, List<Psb> C,boolean isFrist) {
if (isFrist){
this.psbA = A;
this.psbB = B;
this.psbC = C;
}else {
((ReplenishmentListFragment) fragments.get(0)).setData(psbA,true);
((ReplenishmentListFragment) fragments.get(1)).setData(psbB,true);
((ReplenishmentListFragment) fragments.get(2)).setData(psbC,true);
}
}
......
......@@ -8,6 +8,7 @@ import android.view.View;
import android.widget.TextView;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
......@@ -32,6 +33,7 @@ import java.util.regex.Pattern;
public class ReplenishmentListFragment extends BaseFragment<ReplenishmentPresenter, FragmentReplenishmentListBinding> {
private ReplenishmentAdapter mReplenishmentAdapter;
private List<Psb> psbArrayList = new ArrayList<>();
private long mExitTime = 0;
@Override
public int getLayoutId() {
......@@ -41,7 +43,7 @@ public class ReplenishmentListFragment extends BaseFragment<ReplenishmentPresent
@Override
public void initView() {
if (mReplenishmentAdapter == null) {
mReplenishmentAdapter = new ReplenishmentAdapter(psbArrayList);
mReplenishmentAdapter = new ReplenishmentAdapter(new ArrayList<>());
mViewBinding.recycler.setLayoutManager(new LinearLayoutManager(getActivity()));
mViewBinding.recycler.setAdapter(mReplenishmentAdapter);
......@@ -51,17 +53,17 @@ public class ReplenishmentListFragment extends BaseFragment<ReplenishmentPresent
mViewBinding.recycler.setAdapter(mReplenishmentAdapter);
}
mReplenishmentAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Intent intent = new Intent(getActivity(), StatisticsDetailActivity.class);
intent.putExtra(Saleorder.class.getName(), mReplenishmentAdapter.getData().get(position).getId());
ActivityUtils.startActivity(intent);
mReplenishmentAdapter.setOnItemClickListener((adapter, view, position) -> {
if ((System.currentTimeMillis() - mExitTime) > 500) {
mPresenter.queryPsbDetail(mReplenishmentAdapter.getData().get(position));
} else {
ToastUtils.showLong("您操作太快了");
}
});
mViewBinding.srlProduct.setOnRefreshListener(this::onRefresh);
setData(psbArrayList,true);
}
private void onRefresh() {
......@@ -83,10 +85,11 @@ public class ReplenishmentListFragment extends BaseFragment<ReplenishmentPresent
* @param isRefresh 是否刷新
*/
public void setData(List<Psb> psbList, boolean isRefresh) {
if (mReplenishmentAdapter == null) {
psbArrayList = psbList;
return;
}
if (mReplenishmentAdapter==null){
this.psbArrayList=psbList;
return;
}
if (isRefresh) {
mReplenishmentAdapter.setEnableLoadMore(true);
mViewBinding.srlProduct.setRefreshing(false);
......@@ -103,9 +106,13 @@ public class ReplenishmentListFragment extends BaseFragment<ReplenishmentPresent
}
public void setData(List<Psb> psbList){
this.psbArrayList=psbList;
}
public void searchSucc(String wd) {
List<Psb> psbs = new ArrayList<>();
if (psbArrayList == null) {
if (psbArrayList .size()==0) {
return;
}
for (Psb psb : psbArrayList) {
......@@ -133,7 +140,7 @@ public class ReplenishmentListFragment extends BaseFragment<ReplenishmentPresent
}
}
}, 500);
}, 300);
}
}
package com.xingdata.zzdpos.ui.manage.sssku;
import android.view.inputmethod.EditorInfo;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.StringUtils;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.databinding.ActivitySsskuBinding;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.manage.sssku.fragment.DetailFragment;
import com.xingdata.zzdpos.ui.manage.sssku.fragment.EditorFragment;
import com.xingdata.zzdpos.ui.manage.sssku.fragment.ManagerFragment;
import com.xingdata.zzdpos.ui.manage.sssku.fragment.SearchFragment;
import com.xingdata.zzdpos.ui.manage.sssku.fragment.SkugrpFragment;
import java.util.List;
public class SsskuActivity extends BaseActivity<SsskuPresenter, ActivitySsskuBinding> implements SsskuContract.View {
private ManagerFragment mManagerFragment = new ManagerFragment();
private SearchFragment mSearchFragment = new SearchFragment();
private SkugrpFragment mSkugrpFragment = new SkugrpFragment();
private EditorFragment mEditorFragment = new EditorFragment();
private DetailFragment mDetailFragment = new DetailFragment();
private LoadingDialog mLoadingDialog = new LoadingDialog();
@Override
public int getLayoutId() {
return R.layout.activity_sssku;
}
@Override
public void initView() {
this.showTitleBarByTitleMode(C.TITLE_MODE.SKU);
this.loadRootFragment(R.id.f_sssku, mManagerFragment);
mViewBinding.btnBack.setOnClickListener(view -> {
getTopFragment().onBackPressedSupport();
});
mViewBinding.etSearch.setOnEditorActionListener((textView, i, keyEvent) -> {
if (i == EditorInfo.IME_ACTION_SEARCH && !StringUtils.isEmpty(textView.getText())) {
KeyboardUtils.hideSoftInput(textView);
mPresenter.searchSku(textView.getText().toString());
}
return false;
});
mViewBinding.etSearch.setOnFocusChangeListener((view, b) -> {
mPresenter.searchBarFocusChanged(b);
});
}
@Override
public void loadSkus(List<Sssku> skus, boolean isRefresh) {
mManagerFragment.loadSkus(skus, isRefresh);
}
@Override
public void loadSkugrps(List<Sskugrp> sskugrps) {
mManagerFragment.loadSkugrps(sskugrps);
}
@Override
public void loadSkugrpState(Long skugrpId) {
mManagerFragment.loadSkugrpState(skugrpId);
}
@Override
public void loadReplenishCount(int count) {
mManagerFragment.loadReplenishCount(count);
}
@Override
public void loadSsskuCount(int count) {
mManagerFragment.loadSsskuCount(count);
}
@Override
public void loadSearchResult(List<Sssku> skus, boolean isRefresh) {
mSearchFragment.loadSkus(skus, isRefresh);
}
@Override
public void showSearchFragment(int searchType) {
if (mSearchFragment.isAdded()) return;
this.showTitleBarByTitleMode(searchType);
this.start(mSearchFragment.setSearchType(searchType));
}
@Override
public void showEditorFragment(Sssku sku) {
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.sssku_update);
this.start(mEditorFragment);
}
@Override
public void showEditorFragment() {
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.sssku_add);
this.start(mEditorFragment);
}
@Override
public void showDetailFragment(Sssku sku) {
this.showTitleBarByTitleMode(C.TITLE_MODE.SKU_DETAIL);
mViewBinding.tvTitle.setText(R.string.sssku_detail);
this.start(mDetailFragment);
}
@Override
public void showSkugrpFragment() {
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.sssku_skugrp);
this.start(mSkugrpFragment);
}
@Override
public void backToEditFragment() {
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
}
@Override
public void backToManagerFragment() {
this.showTitleBarByTitleMode(C.TITLE_MODE.SKU);
this.resetSearchBar();
}
@Override
public void showLoadingDialog() {
mLoadingDialog.show(this);
}
@Override
public void dismissLoadingDialog() {
mLoadingDialog.dismiss();
}
/**
* 根据titleMode显示TitleBar
*
* @param titleMode 标题模式
*/
private void showTitleBarByTitleMode(int titleMode) {
if (mViewBinding.getTitleMode() == titleMode) return;
mViewBinding.setTitleMode(titleMode);
mViewBinding.etSearch.setText("");
switch (titleMode) {
case C.TITLE_MODE.SKU:
mViewBinding.etSearch.setHint(R.string.sssku_search_hint);
break;
case C.TITLE_MODE.PKG:
mViewBinding.etSearch.setHint(R.string.sssku_search_hint);
break;
case C.TITLE_MODE.SKU_DETAIL:
break;
}
}
/**
* 重置搜索栏
*/
private void resetSearchBar() {
mViewBinding.etSearch.setText("");
mViewBinding.clTitle.requestFocus();
mViewBinding.clTitle.requestFocusFromTouch();
}
}
package com.xingdata.zzdpos.ui.manage.sssku;
import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.model.Sssku;
import java.util.List;
public interface SsskuContract {
interface View extends BaseView {
/**
* 加载商品
*
* @param skus 商品列表
* @param isRefresh 是否刷新列表
*/
void loadSkus(List<Sssku> skus, boolean isRefresh);
/**
* 加载商品分组
*
* @param sskugrps 商品分组列表
*/
void loadSkugrps(List<Sskugrp> sskugrps);
/**
* 加载分组选中状态
*
* @param skugrpId 分组ID
*/
void loadSkugrpState(Long skugrpId);
/**
* 加载需要补货商品的数量
*
* @param count 数量
*/
void loadReplenishCount(int count);
/**
* 加载商品种类的总数
*/
void loadSsskuCount(int count);
/**
* 加载搜索结果
*
* @param skus 商品列表
* @param isRefresh 是否刷新列表
*/
void loadSearchResult(List<Sssku> skus, boolean isRefresh);
/**
* 显示搜索页面
*/
void showSearchFragment(int searchType);
/**
* 显示编辑页面
*
* @param sku 要编辑的商品
*/
void showEditorFragment(Sssku sku);
/**
* 显示编辑页面
*/
void showEditorFragment();
/**
* 显示详情页面
*
* @param sku 要显示的商品
*/
void showDetailFragment(Sssku sku);
/**
* 显示商品分组页面
*/
void showSkugrpFragment();
/**
* 返回编辑页面
*/
void backToEditFragment();
/**
* 返回管理页面
*/
void backToManagerFragment();
/**
* 显示读取对话框
*/
void showLoadingDialog();
/**
* 隐藏读取对话框
*/
void dismissLoadingDialog();
}
abstract class Presenter extends BasePresenter<View> {
/**
* 管理页面 - 初始化
*/
public abstract void initManager();
/**
* 管理页面 - 刷新商品
*/
public abstract void refreshSku();
/**
* 管理页面 - 加载更多商品
*/
public abstract void loadMoreSku();
/**
* 管理页面 - 点击商品
*
* @param sssku 商品信息
*/
public abstract void clickSku(Sssku sssku);
/**
* 管理页面 - 切换分组
*
* @param sskugrp 分组
*/
public abstract void clickSkugrp(Sskugrp sskugrp);
/**
* 管理页面 - 点击添加商品
*/
public abstract void clickAddSku();
/**
* 管理页面 - 点击添加分组
*/
public abstract void clickAddSkugrp();
/**
* 管理页面 - 点击一键补货
*/
public abstract void clickReplenish();
/**
* 搜索页面 - 点击搜索
*/
public abstract void searchSku(String keyword);
/**
* 搜索页面 - 加载更多搜索结果
*/
public abstract void loadMoreSearchResult();
/**
* 搜索页面 - 点击商品
*
* @param sssku 商品信息
* @param searchType 搜索类型
*/
public abstract void clickSku(Sssku sssku, int searchType);
/**
* 详情页面 - 编辑商品
*
* @param sssku 要编辑的商品
*/
public abstract void clickEditSku(Sssku sssku);
/**
* 分组页面 - 删除分组.
*
* @param sskugrp 要删除的分组
*/
public abstract void clickDeleteSkugrp(Sskugrp sskugrp);
/**
* 分组页面 - 编辑分组
*
* @param sskugrp 要编辑的分组
*/
public abstract void clickEditSkugrp(Sskugrp sskugrp);
/**
* 主页面 - 搜索框焦点改变
*
* @param b 获取焦点
*/
public abstract void searchBarFocusChanged(boolean b);
}
}
package com.xingdata.zzdpos.ui.manage.sssku;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.model.Sssku;
public class SsskuPresenter extends SsskuContract.Presenter {
private int mPageNum;
private Long mSkuGrpId;
private int mSearchPageNum;
private String mKeyword;
@Override
public void onAttached() {
}
@Override
public void initManager() {
this.getSkugrp();
this.getReplenish();
this.refreshSku();
}
@Override
public void refreshSku() {
this.mPageNum = 0;
this.mSkuGrpId = 0L;
mView.loadSkugrpState(mSkuGrpId);
this.getSku();
}
@Override
public void loadMoreSku() {
this.mPageNum++;
this.getSku();
}
@Override
public void clickSku(Sssku sssku) {
mView.showDetailFragment(sssku);
}
@Override
public void clickSkugrp(Sskugrp sskugrp) {
this.mPageNum = 0;
this.mSkuGrpId = sskugrp.getSkuGrpId();
mView.loadSkugrpState(mSkuGrpId);
this.getSku();
}
@Override
public void clickAddSku() {
mView.showEditorFragment();
}
@Override
public void clickAddSkugrp() {
mView.showSkugrpFragment();
}
@Override
public void clickReplenish() {
//TODO 跳转到补货界面
}
@Override
public void searchSku(String keyword) {
this.mSearchPageNum = 0;
this.mKeyword = keyword;
this.getSearchSku();
}
@Override
public void loadMoreSearchResult() {
this.mSearchPageNum++;
this.getSearchSku();
}
@Override
public void clickSku(Sssku sssku, int searchType) {
switch (searchType) {
case C.TITLE_MODE.SKU:
mView.showDetailFragment(sssku);
break;
case C.TITLE_MODE.PKG:
break;
}
}
@Override
public void clickEditSku(Sssku sssku) {
mView.showEditorFragment(sssku);
}
@Override
public void clickDeleteSkugrp(Sskugrp sskugrp) {
}
@Override
public void clickEditSkugrp(Sskugrp sskugrp) {
}
@Override
public void searchBarFocusChanged(boolean b) {
if (b) mView.showSearchFragment(C.TITLE_MODE.SKU);
}
/**
* 获取商品
*/
private void getSku() {
mView.showLoadingDialog();
mCompositeDisposable.add(
ApiFactory.Sssku.querySssku(mPageNum, "", mSkuGrpId)
.doOnSubscribe(subscription -> mView.dismissLoadingDialog())
.subscribe(ssskuPager -> {
if (mPageNum == 0) mView.loadSsskuCount(ssskuPager.getTotalRow());
mView.loadSkus(ssskuPager.getList(), mPageNum == 0);
})
);
}
/**
* 获取搜索商品
*/
private void getSearchSku() {
mView.showLoadingDialog();
mCompositeDisposable.add(
ApiFactory.Sssku.querySssku(mSearchPageNum, mKeyword)
.doOnSubscribe(subscription -> mView.dismissLoadingDialog())
.subscribe(ssskuPager -> mView.loadSearchResult(ssskuPager.getList(), mSearchPageNum == 0))
);
}
/**
* 获取分组
*/
private void getSkugrp() {
mCompositeDisposable.add(
ApiFactory.Sskugrp.querySskugrp().subscribe(sskugrpPager -> {
Sskugrp sskugrp = new Sskugrp();
sskugrp.setSkuGrpId(0L);
sskugrp.setSkuGrpName("全部分组");
sskugrp.setSelected(true);
sskugrpPager.getList().add(0, sskugrp);
mView.loadSkugrps(sskugrpPager.getList());
}
)
);
}
/**
* 获取补货信息
*/
private void getReplenish() {
mCompositeDisposable.add(
ApiFactory.Psb.preOrder().subscribe(ssskuPager -> mView.loadReplenishCount(ssskuPager.getTotalRow()))
);
}
}
package com.xingdata.zzdpos.ui.manage.sssku.adapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.databinding.ItemSsskuSkuBinding;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.ArrayList;
public class SkuAdapter extends BaseAdapter<Sssku, ItemSsskuSkuBinding> {
public SkuAdapter() {
super(R.layout.item_sssku_sku, new ArrayList<>());
}
@Override
protected void convert(ItemSsskuSkuBinding mViewBinding, Sssku item) {
mViewBinding.ivPic.setImageURI(item.getSpuImg());
mViewBinding.tvAmt.setText(ConvertUtil.fenToYuan(item.getSkuRetailPrice1()));
mViewBinding.setSpuName(item.getSpuName());
mViewBinding.setSpuUnitName(item.getSpuUnitName());
}
}
package com.xingdata.zzdpos.ui.manage.sssku.adapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSelectedAdapter;
import com.xingdata.zzdpos.base.BaseViewHolder;
import com.xingdata.zzdpos.databinding.ItemSelectorBinding;
import com.xingdata.zzdpos.model.Sskugrp;
import java.util.ArrayList;
public class SkugrpAdapter extends BaseSelectedAdapter<Sskugrp, ItemSelectorBinding> {
public SkugrpAdapter() {
super(R.layout.item_selector, new ArrayList<>(), false);
}
@Override
protected void convert(BaseViewHolder helper, ItemSelectorBinding mViewBinding, Sskugrp item) {
mViewBinding.setSelected(getSelectedPosition() == helper.getAdapterPosition());
mViewBinding.tvName.getPaint().setFakeBoldText(getSelectedPosition() == helper.getAdapterPosition());
mViewBinding.tvName.setText(item.getSkuGrpName());
}
}
package com.xingdata.zzdpos.ui.manage.sssku.dialog;
import android.view.View;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseDialog;
import com.xingdata.zzdpos.databinding.DialogSkugrpDeleteBinding;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
public class SkugrpDeleteDialog extends BaseDialog<SsskuPresenter, DialogSkugrpDeleteBinding> {
private Sskugrp mSskugrp;
public SkugrpDeleteDialog setSskugrp(Sskugrp sskugrp) {
this.mSskugrp = sskugrp;
return this;
}
@Override
protected boolean isShowTitle() {
return false;
}
@Override
public int getLayoutId() {
return R.layout.dialog_skugrp_delete;
}
@Override
public void initView() {
}
@Override
public void onConfirmClick(View view) {
super.onConfirmClick(view);
mPresenter.clickDeleteSkugrp(mSskugrp);
}
}
package com.xingdata.zzdpos.ui.manage.sssku.dialog;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseDialog;
import com.xingdata.zzdpos.databinding.DialogSkugrpEditorBinding;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
public class SkugrpEditorDialog extends BaseDialog<SsskuPresenter, DialogSkugrpEditorBinding> {
private Sskugrp mSskugrp;
public SkugrpEditorDialog setSskugrp(Sskugrp sskugrp) {
this.mSskugrp = sskugrp;
return this;
}
@Override
protected boolean isShowTitle() {
return false;
}
@Override
public int getLayoutId() {
return R.layout.dialog_skugrp_editor;
}
@Override
public void initView() {
}
}
package com.xingdata.zzdpos.ui.manage.sssku.dialog;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.DialogSkugrpMenuBinding;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
public class SkugrpMenuDialog extends BaseSheetDialog<SsskuPresenter, DialogSkugrpMenuBinding> {
private Sskugrp mSskugrp;
public SkugrpMenuDialog setSskugrp(Sskugrp sskugrp) {
this.mSskugrp = sskugrp;
return this;
}
@Override
public int getLayoutId() {
return R.layout.dialog_skugrp_menu;
}
@Override
public void initView() {
}
}
package com.xingdata.zzdpos.ui.manage.sssku.fragment;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentSsskuDetailBinding;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuActivity;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
public class DetailFragment extends BaseFragment<SsskuPresenter, FragmentSsskuDetailBinding> {
private Sssku mSssku;
@Override
public int getLayoutId() {
return R.layout.fragment_sssku_detail;
}
@Override
public void initView() {
mViewBinding.tvEdit.setOnClickListener(view -> {
this.pop();
mPresenter.clickEditSku(mSssku);
});
}
/**
* 设置商品
*
* @param sssku 商品信息
*/
public DetailFragment setSssku(Sssku sssku) {
this.mSssku = sssku;
return this;
}
@Override
public boolean onBackPressedSupport() {
((SsskuActivity) getActivity()).backToManagerFragment();
return super.onBackPressedSupport();
}
}
package com.xingdata.zzdpos.ui.manage.sssku.fragment;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentSsskuEditorBinding;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuActivity;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
public class EditorFragment extends BaseFragment<SsskuPresenter, FragmentSsskuEditorBinding> {
private Sssku mSssku;
@Override
public int getLayoutId() {
return R.layout.fragment_sssku_editor;
}
@Override
public void initView() {
}
/**
* 设置商品
*
* @param sssku 商品信息
*/
public EditorFragment setSssku(Sssku sssku) {
this.mSssku = sssku;
return this;
}
@Override
public boolean onBackPressedSupport() {
((SsskuActivity) getActivity()).backToManagerFragment();
return super.onBackPressedSupport();
}
}
\ No newline at end of file
package com.xingdata.zzdpos.ui.manage.sssku.fragment;
import android.annotation.SuppressLint;
import android.support.v4.app.ActivityCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentSsskuManagerBinding;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
import com.xingdata.zzdpos.ui.manage.sssku.adapter.SkuAdapter;
import com.xingdata.zzdpos.ui.manage.sssku.adapter.SkugrpAdapter;
import java.util.List;
public class ManagerFragment extends BaseFragment<SsskuPresenter, FragmentSsskuManagerBinding> {
private SkuAdapter mSkuAdapter;
private SkugrpAdapter mSkugrpAdapter;
@Override
public int getLayoutId() {
return R.layout.fragment_sssku_manager;
}
@Override
public void initView() {
// init sku
mSkuAdapter = new SkuAdapter();
mViewBinding.rlSku.setAdapter(mSkuAdapter);
mViewBinding.rlSku.setLayoutManager(new LinearLayoutManager(mContext));
// init skugrp
mSkugrpAdapter = new SkugrpAdapter();
mViewBinding.rlSkugrp.setAdapter(mSkugrpAdapter);
mViewBinding.rlSkugrp.setLayoutManager(new LinearLayoutManager(mContext));
// set sku listener
mViewBinding.srlSku.setOnRefreshListener(this::refreshSku);
mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku);
mSkuAdapter.setOnItemClickListener((adapter, view, position) -> mPresenter.clickSku(mSkuAdapter.getItem(position)));
// set grp listener
mSkugrpAdapter.setOnItemClickListener((adapter, view, position) -> mPresenter.clickSkugrp(mSkugrpAdapter.getData().get(position)));
// set other listener
mViewBinding.llSsskuAdd.setOnClickListener(view -> mPresenter.clickAddSku());
mViewBinding.tvReplenish.setOnClickListener(view -> mPresenter.clickReplenish());
mViewBinding.llSkugrpAdd.setOnClickListener(view -> mPresenter.clickAddSkugrp());
// set empty
@SuppressLint("InflateParams") View view = getLayoutInflater().inflate(R.layout.view_empty, null);
mSkuAdapter.setEmptyView(view);
mSkuAdapter.isUseEmpty(false);
// init data
mPresenter.initManager();
}
/**
* 加载商品
*
* @param skus 商品信息
* @param isRefresh 是否需要刷新
*/
public void loadSkus(List<Sssku> skus, boolean isRefresh) {
if (isRefresh) {
mSkuAdapter.isUseEmpty(true);
mSkuAdapter.setEnableLoadMore(true);
mViewBinding.srlSku.setRefreshing(false);
mSkuAdapter.setNewData(skus);
} else if (skus.size() > 0) mSkuAdapter.addData(skus);
if (skus.size() < C.PRODUCT.PAGE_SIZE) mSkuAdapter.loadMoreEnd(isRefresh);
else mSkuAdapter.loadMoreComplete();
}
/**
* 加载商品分组
*
* @param sskugrps 分组信息
*/
public void loadSkugrps(List<Sskugrp> sskugrps) {
mSkugrpAdapter.setNewData(sskugrps);
}
/**
* 加载分组状态
*
* @param skugrpId 当前选中的分组ID
*/
public void loadSkugrpState(Long skugrpId) {
for (int i = 0; i < mSkugrpAdapter.getData().size(); i++) {
if (mSkugrpAdapter.getData().get(i).getSkuGrpId().longValue() == skugrpId) {
mSkugrpAdapter.setSelectedPosition(i);
}
}
mSkugrpAdapter.notifyDataSetChanged();
}
/**
* 加载需要补货的商品数量
*
* @param count 数量
*/
public void loadReplenishCount(int count) {
mViewBinding.tvReplenishCount.setText(String.valueOf(count));
}
/**
* 加载商品总数
*
* @param count 商品总数
*/
public void loadSsskuCount(int count) {
mViewBinding.tvTotalCount.setText(String.valueOf(count));
}
/**
* 刷新商品
*/
private void refreshSku() {
mSkuAdapter.setEnableLoadMore(false);
mPresenter.refreshSku();
}
/**
* 加载更多商品
*/
private void loadMoreSku() {
mPresenter.loadMoreSku();
}
@Override
public boolean onBackPressedSupport() {
ActivityCompat.finishAfterTransition(getActivity());
return super.onBackPressedSupport();
}
}
package com.xingdata.zzdpos.ui.manage.sssku.fragment;
import android.annotation.SuppressLint;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentSsskuSearchBinding;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuActivity;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
import com.xingdata.zzdpos.ui.marketing.ms.adapter.SkuAdapter;
import java.util.List;
public class SearchFragment extends BaseFragment<SsskuPresenter, FragmentSsskuSearchBinding> {
private int mSearchType;
private SkuAdapter<Sssku> mSkuAdapter;
@Override
public int getLayoutId() {
return R.layout.fragment_sssku_search;
}
@Override
public void initView() {
// init sku
mSkuAdapter = new SkuAdapter<>();
mViewBinding.rlSku.setAdapter(mSkuAdapter);
mViewBinding.rlSku.setLayoutManager(new LinearLayoutManager(mContext));
// set sku listener
mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku);
mSkuAdapter.setOnItemClickListener((adapter, view, position) -> {
this.pop();
mPresenter.clickSku(mSkuAdapter.getData().get(position), mSearchType);
});
// set empty
@SuppressLint("InflateParams") View view = getLayoutInflater().inflate(R.layout.view_empty, null);
mSkuAdapter.setEmptyView(view);
mSkuAdapter.isUseEmpty(false);
}
/**
* 加载更多商品
*/
private void loadMoreSku() {
mPresenter.loadMoreSearchResult();
}
/**
* 加载商品
*
* @param skus 商品
* @param isRefresh 是否刷新
*/
public void loadSkus(List<Sssku> skus, boolean isRefresh) {
if (isRefresh) {
mSkuAdapter.isUseEmpty(true);
mSkuAdapter.setEnableLoadMore(true);
mSkuAdapter.setNewData(skus);
} else if (skus.size() > 0) mSkuAdapter.addData(skus);
if (skus.size() < C.PRODUCT.PAGE_SIZE) mSkuAdapter.loadMoreEnd(isRefresh);
else mSkuAdapter.loadMoreComplete();
}
/**
* 设置搜索类型
*
* @param searchType 搜索类型
* @return this
*/
public SearchFragment setSearchType(int searchType) {
this.mSearchType = searchType;
return this;
}
@Override
public boolean onBackPressedSupport() {
switch (mSearchType) {
case C.TITLE_MODE.SKU:
((SsskuActivity) getActivity()).backToManagerFragment();
break;
case C.TITLE_MODE.PKG:
((SsskuActivity) getActivity()).backToEditFragment();
break;
}
return super.onBackPressedSupport();
}
}
package com.xingdata.zzdpos.ui.manage.sssku.fragment;
import android.view.View;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentSsskuSkugrpBinding;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuActivity;
import com.xingdata.zzdpos.ui.manage.sssku.SsskuPresenter;
import com.xingdata.zzdpos.ui.manage.sssku.dialog.SkugrpEditorDialog;
public class SkugrpFragment extends BaseFragment<SsskuPresenter, FragmentSsskuSkugrpBinding> {
@Override
public int getLayoutId() {
return R.layout.fragment_sssku_skugrp;
}
@Override
public void initView() {
mViewBinding.setVisibility(View.GONE);
mViewBinding.llSkugrpAdd.setOnClickListener(view -> {
new SkugrpEditorDialog().show(((SsskuActivity) getActivity()));
});
}
@Override
public boolean onBackPressedSupport() {
((SsskuActivity) getActivity()).backToManagerFragment();
return super.onBackPressedSupport();
}
}
package com.xingdata.zzdpos.ui.marketing.integral.fragment;
import android.app.IntentService;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
......
package com.xingdata.zzdpos.ui.marketing.ms;
import com.blankj.utilcode.util.LogUtils;
import android.view.inputmethod.EditorInfo;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.base.BaseSku;
......@@ -11,6 +15,8 @@ import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.AddFragment;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.EditorFragment;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.ManagerFragment;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.ScanFragment;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.SearchFragment;
import com.xingdata.zzdpos.ui.marketing.ms.model.Area;
import com.xingdata.zzdpos.ui.marketing.ms.model.Group;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
......@@ -18,12 +24,15 @@ import com.xingdata.zzdpos.ui.marketing.ms.model.User;
import java.util.List;
public class MsActivity extends BaseActivity<MsPresenter, ActivityMsBinding> implements MsContract.View {
public class MsActivity<Sku extends BaseSku> extends BaseActivity<MsPresenter, ActivityMsBinding> implements MsContract.View<Sku> {
private ManagerFragment mManagerFragment = new ManagerFragment();
private EditorFragment mEditorFragment = new EditorFragment();
private AddFragment mAddFragment = new AddFragment();
private SearchFragment<Sku> mSearchFragment = new SearchFragment<>();
private ScanFragment<Sku> mScanFragment = new ScanFragment<>();
private LoadingDialog mLoadingDialog = new LoadingDialog();
@Override
......@@ -34,7 +43,24 @@ public class MsActivity extends BaseActivity<MsPresenter, ActivityMsBinding> imp
@Override
public void initView() {
this.loadRootFragment(R.id.f_ms, mManagerFragment);
mViewBinding.btnBack.setOnClickListener(view -> onBackPressedSupport());
mViewBinding.setTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.btnBack.setOnClickListener(view -> {
getTopFragment().onBackPressedSupport();
onBackPressedSupport();
});
mViewBinding.etSearch.setOnEditorActionListener((textView, i, keyEvent) -> {
if (i == EditorInfo.IME_ACTION_SEARCH) {
KeyboardUtils.hideSoftInput(textView);
mPresenter.clickSearchButton(textView.getText().toString());
}
return false;
});
}
@Override
public void showMsg(String msg) {
ToastUtils.showShort(msg);
}
@Override
......@@ -49,16 +75,27 @@ public class MsActivity extends BaseActivity<MsPresenter, ActivityMsBinding> imp
@Override
public void showEditorFragment(Ms ms) {
LogUtils.e("编辑 " + ms.getMsName());
start(mEditorFragment);
start(mEditorFragment.setMs(ms).setEditMode(C.MS_EDITOR_MODE.UPDATE));
}
@Override
public void showEditorFragment(int msType) {
LogUtils.e("添加 " + msType);
start(mEditorFragment);
start(mEditorFragment.setMs(msType).setEditMode(C.MS_EDITOR_MODE.ADD));
}
@Override
public void showSearchFragment(int searchType) {
this.showTitleBarByTitleMode(searchType);
this.start(mSearchFragment.setSearchType(searchType));
}
@Override
public void showScanFragment(int searchType) {
this.showTitleBarByTitleMode(searchType);
this.start(mScanFragment.setSearchType(searchType));
}
@Override
public void loadTypes(List<Type> types) {
mAddFragment.loadTypes(types);
......@@ -80,15 +117,41 @@ public class MsActivity extends BaseActivity<MsPresenter, ActivityMsBinding> imp
}
@Override
public <Sku extends BaseSku> void loadGroupSkuSssku(Sku sku) {
public void loadSkus(List<Sku> skus, boolean isRefresh) {
mSearchFragment.loadSkus(skus, isRefresh);
}
@Override
public void loadGroupSku(Sku sku) {
mEditorFragment.loadGroupSku(sku);
}
@Override
public <Sku extends BaseSku> void loadTypeGiftSssku(Sku sku) {
public void loadTypeGift(Sku sku) {
mEditorFragment.loadTypeSku(sku);
}
@Override
public void addMs(Ms ms) {
mManagerFragment.addMs(ms);
}
@Override
public void updateMs(Ms ms) {
mManagerFragment.updateMs(ms);
}
@Override
public void backToEditFragment() {
this.popTo(EditorFragment.class, false);
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
}
@Override
public void backToManagerFragment() {
this.popTo(ManagerFragment.class, false);
}
@Override
public void showLoadingDialog() {
mLoadingDialog.show(this);
......@@ -98,4 +161,25 @@ public class MsActivity extends BaseActivity<MsPresenter, ActivityMsBinding> imp
public void dismissLoadingDialog() {
mLoadingDialog.dismiss();
}
/**
* 根据titleMode显示TitleBar
*
* @param titleMode 标题模式
*/
private void showTitleBarByTitleMode(int titleMode) {
if (mViewBinding.getTitleMode() == titleMode) return;
mViewBinding.setTitleMode(titleMode);
mViewBinding.etSearch.setText("");
switch (titleMode) {
case C.TITLE_MODE.SKU:
mViewBinding.etSearch.setHint(R.string.ms_editor_type_gift_search_hint);
break;
case C.TITLE_MODE.GIFT:
mViewBinding.etSearch.setHint(R.string.ms_editor_type_gift_search_hint);
break;
}
}
}
......@@ -4,7 +4,6 @@ import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.marketing.ms.model.Area;
import com.xingdata.zzdpos.ui.marketing.ms.model.Group;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
......@@ -14,7 +13,13 @@ import java.util.List;
interface MsContract {
interface View extends BaseView {
interface View<Sku extends BaseSku> extends BaseView {
/**
* 显示文字内容
*
* @param msg 要显示的内容
*/
void showMsg(String msg);
/**
* 加载营销计划数据
......@@ -40,6 +45,18 @@ interface MsContract {
*/
void showEditorFragment(int msType);
/**
* 显示搜索页面
*/
void showSearchFragment(int searchType);
/**
* 显示扫描页面
*
* @param searchType 搜索类型
*/
void showScanFragment(int searchType);
/**
* 加载营销类型
*
......@@ -68,19 +85,51 @@ interface MsContract {
*/
void loadUsers(List<User> users);
/**
* 加载商品对象
*
* @param skus 商品对象列表
* @param isRefresh 是否刷新
*/
void loadSkus(List<Sku> skus, boolean isRefresh);
/**
* 加载作为主体的商品信息
*
* @param sku 加载编辑信息
*/
<Sku extends BaseSku> void loadGroupSkuSssku(Sku sku);
void loadGroupSku(Sku sku);
/**
* 加载换购的商品
*
* @param sku 包装内的商品
*/
<Sku extends BaseSku> void loadTypeGiftSssku(Sku sku);
void loadTypeGift(Sku sku);
/**
* 添加营销
*
* @param ms 要添加的营销实体
*/
void addMs(Ms ms);
/**
* 更新营销
*
* @param ms 更新营销实体
*/
void updateMs(Ms ms);
/**
* 返回编辑页面
*/
void backToEditFragment();
/**
* 返回管理页面
*/
void backToManagerFragment();
/**
* 显示读取对话框
......@@ -93,7 +142,7 @@ interface MsContract {
void dismissLoadingDialog();
}
abstract class Presenter extends BasePresenter<View> {
abstract class Presenter<Sku extends BaseSku> extends BasePresenter<View<Sku>> {
/**
* 管理页面 - 刷新营销计划
......@@ -131,27 +180,47 @@ interface MsContract {
public abstract void initEditor();
/**
* 编辑页面 - 点击GroupSkuView里的搜索按钮
* 编辑页面 - 点击营销主体商品的搜索框
*/
public abstract void clickGroupSkuSearch();
/**
* 编辑页面 - 点击营销类型商品的搜索框
*/
public abstract void clickTypeSkuSearch();
/**
* 编辑页面 - 点击搜索按钮
*
* @param barcode 条形码
* @param keyword 搜索关键字
*/
public abstract void clickGroupSearchButton(String barcode);
public abstract void clickSearchButton(String keyword);
/**
* 编辑页面 - 点击TypeGift里的搜索按钮
* 编辑页面 - 点击编辑器的确定
*
* @param barcode 条形码
* @param ms 要保存的营销计划
* @param editMode 编辑模式
*/
public abstract void clickTypeSearchButton(String barcode);
public abstract void clickEditorConfirm(Ms ms, Integer editMode);
/**
* 商品列表页面 - 确认选择
* 搜索页面 - 加载更多搜索信息
*/
public abstract void loadMoreSearchResult();
/**
* 搜索页面 - 点击商品
*
* @param sssku 商品
* @param res 使用的地方
* @param sku 商品
* @param searchType 搜索类型
*/
public abstract void selectedSkuInDialog(Sssku sssku, int res);
public abstract void clickSku(Sku sku, int searchType);
/**
* 搜素页面 - 退出
*/
public abstract void exitSearchFragment();
}
}
......@@ -3,9 +3,10 @@ package com.xingdata.zzdpos.ui.marketing.ms;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.login.LoginPresenter;
import com.xingdata.zzdpos.ui.marketing.ms.model.Area;
import com.xingdata.zzdpos.ui.marketing.ms.model.Group;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
......@@ -14,13 +15,16 @@ import com.xingdata.zzdpos.ui.marketing.ms.model.User;
import java.util.ArrayList;
import java.util.List;
public class MsPresenter extends MsContract.Presenter {
public class MsPresenter<Sku extends BaseSku> extends MsContract.Presenter<Sku> {
/**
* 页码
*/
private int mPageNum = 1;
private int mSkuPageNum = 1;
private String mSkuKeyword;
@Override
public void onAttached() {
}
......@@ -44,7 +48,13 @@ public class MsPresenter extends MsContract.Presenter {
@Override
public void clickMsItem(Ms ms) {
mView.showEditorFragment(ms);
mView.showLoadingDialog();
ApiFactory.Ms.detail(ms.getId())
.doFinally(() -> mView.dismissLoadingDialog())
.subscribe(
ms1 -> mView.showEditorFragment(ms1),
throwable -> mView.dismissLoadingDialog()
);
}
@Override
......@@ -70,12 +80,12 @@ public class MsPresenter extends MsContract.Presenter {
groups.add(new Group(C.MS_GROUP.SKU, "指定商品"));
List<Area> areas = new ArrayList<>();
areas.add(new Area(0, "所有门店"));
areas.add(new Area(1, "本店"));
areas.add(new Area(C.MS_AREA.MER, "所有门店", LoginPresenter.loginReturnBean.getMerMapId()));
areas.add(new Area(C.MS_AREA.LOCAL, "本店", LoginPresenter.loginReturnBean.getMerMapId()));
List<User> users = new ArrayList<>();
users.add(new User(0, "所有顾客", 0));
users.add(new User(0, "所有会员", 0));
users.add(new User(C.MS_USER.ALL, "所有顾客", 0));
users.add(new User(C.MS_USER.VIP, "所有会员", 0));
DBFactory.Marketing.Ms.queryLevel()
.doFinally(() -> {
......@@ -91,18 +101,74 @@ public class MsPresenter extends MsContract.Presenter {
}
@Override
public void clickGroupSearchButton(String barcode) {
public void clickGroupSkuSearch() {
mView.showSearchFragment(C.TITLE_MODE.SKU);
}
@Override
public void clickTypeSkuSearch() {
mView.showSearchFragment(C.TITLE_MODE.GIFT);
}
@Override
public void clickTypeSearchButton(String barcode) {
public void clickSearchButton(String keyword) {
this.mSkuPageNum = 0;
this.mSkuKeyword = keyword;
this.getSearchSku();
}
@Override
public void clickEditorConfirm(Ms ms, Integer editMode) {
mView.showLoadingDialog();
switch (editMode) {
case C.MS_EDITOR_MODE.ADD:
ApiFactory.Ms.add(ms)
.doOnSubscribe(disposable -> mView.dismissLoadingDialog())
.subscribe(ms1 -> {
mView.showMsg("添加成功");
mView.backToManagerFragment();
mView.addMs(ms1);
}, throwable -> {
mView.showMsg("添加失败");
});
break;
case C.MS_EDITOR_MODE.UPDATE:
ApiFactory.Ms.update(ms)
.doOnSubscribe(disposable -> mView.dismissLoadingDialog())
.subscribe(ms1 -> {
mView.showMsg("修改成功");
mView.backToManagerFragment();
mView.updateMs(ms1);
}, throwable -> {
mView.showMsg("修改失败");
});
break;
}
}
@Override
public void selectedSkuInDialog(Sssku sssku, int res) {
public void loadMoreSearchResult() {
this.mSkuPageNum++;
this.getSearchSku();
}
@Override
public void clickSku(Sku sku, int searchType) {
switch (searchType) {
case C.TITLE_MODE.SKU:
mView.loadGroupSku(sku);
break;
case C.TITLE_MODE.GIFT:
mView.loadTypeGift(sku);
break;
}
}
@Override
public void exitSearchFragment() {
mView.backToEditFragment();
}
/**
......@@ -112,4 +178,19 @@ public class MsPresenter extends MsContract.Presenter {
mCompositeDisposable.add(ApiFactory.Ms.query(mPageNum).subscribe(msPager -> mView.loadMss(msPager.getList(), mPageNum == 1)));
}
/**
* 搜索商品
*/
private void getSearchSku() {
mView.showLoadingDialog();
mCompositeDisposable.add(
DBFactory.Store.querySku(mSkuPageNum, mSkuKeyword)
.doOnSubscribe(subscription -> mView.dismissLoadingDialog())
.subscribe(ssskus -> {
mView.loadSkus((List<Sku>) ssskus, mSkuPageNum == 0);
})
);
}
}
package com.xingdata.zzdpos.ui.marketing.ms.adapter;
import android.support.annotation.Nullable;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSelectedAdapter;
import com.xingdata.zzdpos.base.BaseViewHolder;
......@@ -7,21 +9,43 @@ import com.xingdata.zzdpos.databinding.ItemSelectorBinding;
import com.xingdata.zzdpos.ui.marketing.ms.model.BaseBean;
import java.util.ArrayList;
import java.util.List;
public class BeanAdapter<T extends BaseBean> extends BaseSelectedAdapter<T, ItemSelectorBinding> {
public class BeanAdapter<B extends BaseBean> extends BaseSelectedAdapter<B, ItemSelectorBinding> {
public BeanAdapter() {
super(R.layout.item_selector, new ArrayList<>(), true);
}
public interface OnItemSelectedListener {
void onItemSelected(String item);
}
private OnItemSelectedListener mOnItemSelectedListener;
@Override
protected void convert(BaseViewHolder helper, ItemSelectorBinding mViewBinding, T item) {
protected void convert(BaseViewHolder helper, ItemSelectorBinding mViewBinding, B item) {
mViewBinding.setSelected(getSelectedPosition() == helper.getAdapterPosition());
mViewBinding.tvName.getPaint().setFakeBoldText(getSelectedPosition() == helper.getAdapterPosition());
mViewBinding.tvName.setText(item.getName());
}
public void setNewData(@Nullable List<B> data) {
if (b != null && data != null) {
for (int i = 0; i < data.size(); i++) {
if (data.get(i).getId() == b.getId() && data.get(i).getInfo() == b.getInfo()) {
if (mOnItemSelectedListener != null) {
this.mOnItemSelectedListener.onItemSelected(data.get(i).getName());
}
this.setSelectedPosition(i);
}
}
}
super.setNewData(data);
}
public String[] getStrs() {
String[] strs = new String[getData().size()];
for (int i = 0; i < getData().size(); i++) {
......@@ -30,8 +54,17 @@ public class BeanAdapter<T extends BaseBean> extends BaseSelectedAdapter<T, Item
return strs;
}
public <B extends BaseBean> void setItemId(B b) {
private B b;
public void setBean(B b) {
this.b = b;
}
public void setOnItemSelectedListener(OnItemSelectedListener onItemSelectedListener) {
this.mOnItemSelectedListener = onItemSelectedListener;
}
public OnItemSelectedListener getOnItemSelectedListener() {
return mOnItemSelectedListener;
}
}
package com.xingdata.zzdpos.ui.marketing.ms.adapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.ItemMsSkuBinding;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.ArrayList;
public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemMsSkuBinding> {
public SkuAdapter() {
super(R.layout.item_ms_sku, new ArrayList<>());
}
@Override
protected void convert(ItemMsSkuBinding mViewBinding, T item) {
mViewBinding.ivPic.setImageURI(item.getSpuImg());
mViewBinding.tvName.setText(item.getSpuName());
mViewBinding.tvAmt.setText(ConvertUtil.fenToYuan(item.getSkuRetailPrice1()));
}
}
......@@ -61,6 +61,31 @@ public class ManagerFragment extends BaseFragment<MsPresenter, FragmentMsManager
}
/**
* 添加营销计划
*
* @param ms 要添加的营销计划
*/
public void addMs(Ms ms) {
mMsAdapter.setEnableLoadMore(false);
mViewBinding.rlMs.scrollToPosition(0);
mMsAdapter.addData(0, ms);
}
/**
* 更新营销计划
*
* @param ms 要更新的营销计划
*/
public void updateMs(Ms ms) {
for (int i = 0; i < mMsAdapter.getData().size(); i++) {
if (mMsAdapter.getData().get(i).getId().longValue() == ms.getId().longValue()) {
mMsAdapter.setData(i, ms);
return;
}
}
}
/**
* 刷新营销计划
*/
......
package com.xingdata.zzdpos.ui.marketing.ms.fragment;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.FragmentMsScanBinding;
import com.xingdata.zzdpos.ui.store.StorePresenter;
public class ScanFragment<Sku extends BaseSku> extends BaseFragment<StorePresenter, FragmentMsScanBinding> {
private int mSearchType;
@Override
public int getLayoutId() {
return R.layout.fragment_ms_scan;
}
@Override
public void initView() {
}
/**
* 设置搜索类型
*
* @param searchType 搜索类型
* @return this
*/
public ScanFragment setSearchType(int searchType) {
this.mSearchType = searchType;
return this;
}
}
package com.xingdata.zzdpos.ui.marketing.ms.fragment;
import android.annotation.SuppressLint;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.FragmentMsSearchBinding;
import com.xingdata.zzdpos.ui.marketing.ms.MsPresenter;
import com.xingdata.zzdpos.ui.marketing.ms.adapter.SkuAdapter;
import java.util.List;
public class SearchFragment<Sku extends BaseSku> extends BaseFragment<MsPresenter, FragmentMsSearchBinding> {
private int mSearchType;
private SkuAdapter<Sku> mSkuAdapter;
@Override
public int getLayoutId() {
return R.layout.fragment_ms_search;
}
@Override
public void initView() {
// init sku
mSkuAdapter = new SkuAdapter<>();
mViewBinding.rlSku.setAdapter(mSkuAdapter);
mViewBinding.rlSku.setLayoutManager(new LinearLayoutManager(mContext));
// set sku listener
mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku);
mSkuAdapter.setOnItemClickListener((adapter, view, position) -> {
mPresenter.clickSku(mSkuAdapter.getData().get(position), mSearchType);
this.pop();
});
// set empty
@SuppressLint("InflateParams") View view = getLayoutInflater().inflate(R.layout.view_empty, null);
mSkuAdapter.setEmptyView(view);
mSkuAdapter.isUseEmpty(false);
}
@Override
public void onDestroyView() {
mPresenter.exitSearchFragment();
super.onDestroyView();
}
/**
* 加载更多商品
*/
private void loadMoreSku() {
mPresenter.loadMoreSearchResult();
}
/**
* 加载商品
*
* @param skus 商品
* @param isRefresh 是否刷新
*/
public void loadSkus(List<Sku> skus, boolean isRefresh) {
if (isRefresh) {
mSkuAdapter.isUseEmpty(true);
mSkuAdapter.setEnableLoadMore(true);
mSkuAdapter.setNewData(skus);
} else if (skus.size() > 0) mSkuAdapter.addData(skus);
if (skus.size() < C.PRODUCT.PAGE_SIZE) mSkuAdapter.loadMoreEnd(isRefresh);
else mSkuAdapter.loadMoreComplete();
}
/**
* 设置搜索类型
*
* @param searchType 搜索类型
* @return this
*/
public SearchFragment setSearchType(int searchType) {
this.mSearchType = searchType;
return this;
}
}
package com.xingdata.zzdpos.ui.marketing.ms.model;
public class Area extends BaseBean {
public Area(int id, String name) {
public Area(int id, String name, Long merId) {
setId(id);
setName(name);
setInfo(merId);
}
public Area(int id, long merId) {
setId(id);
setInfo(merId);
}
public void setMerId(int merId) {
setInfo(merId);
}
public long getMerId() {
return getInfo();
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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