Browse Source

新增销售发货无源头单据

master
fyw 3 years ago
parent
commit
90fa78f5ae
  1. 1
      app/src/main/AndroidManifest.xml
  2. 773
      app/src/main/java/com/icssoft/icspda/activity/INVTrans1Activity.java
  3. 209
      app/src/main/res/layout/activity_invtrans1.xml
  4. 1
      app/src/main/res/values/strings.xml

1
app/src/main/AndroidManifest.xml

@ -57,6 +57,7 @@
<activity android:name=".activity.KINVOutActivity" /> <activity android:name=".activity.KINVOutActivity" />
<activity android:name=".activity.ICSCheckInActivity" /> <activity android:name=".activity.ICSCheckInActivity" />
<activity android:name=".activity.INVTransActivity" /> <activity android:name=".activity.INVTransActivity" />
<activity android:name=".activity.INVTrans1Activity" />
<activity android:name=".activity.TransferWarehouseActivity" /> <activity android:name=".activity.TransferWarehouseActivity" />
<activity android:name=".activity.INVTransInActivity" /> <activity android:name=".activity.INVTransInActivity" />
<activity android:name=".activity.INVTransOutActivity" /> <activity android:name=".activity.INVTransOutActivity" />

773
app/src/main/java/com/icssoft/icspda/activity/INVTrans1Activity.java

@ -0,0 +1,773 @@
package com.icssoft.icspda.activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.bin.david.form.core.SmartTable;
import com.bin.david.form.data.column.Column;
import com.bin.david.form.data.table.TableData;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.icssoft.icspda.R;
import com.icssoft.icspda.entity.ApplicationModel;
import com.icssoft.icspda.entity.CfreeApplicationModel;
import com.icssoft.icspda.entity.CfreeData;
import com.icssoft.icspda.entity.Data;
import com.icssoft.icspda.entity.Detail;
import com.icssoft.icspda.net.WebServiceUtil;
import com.icssoft.icspda.util.BaseDialog;
import com.icssoft.icspda.util.HelpUtil;
import com.icssoft.icspda.util.HorizontalProgressBarWithNumber;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class INVTrans1Activity extends AppCompatActivity {
//region 变量初始化
private TextView tvMsg;
private String result;
private ApplicationModel applicationModel;
private List<Data> lotDatas;
private List<Data> dataList;
private List<Detail> dataDetailList;
private SmartTable smartTable;
private SmartTable smartDetailTable;
private EditText transferNo;
private EditText toBin;
private EditText barCode;
private Button btnDel;
private Button btnOk;
private RadioButton rbIn;
private RadioButton rbOut;
private int selectRowIndex = 999;
private String selectRowInvCode = "";
private TableData<Data> tableData;
private List<Column> columns;
private String ErrorMsg = "";
private BigDecimal LotQty;
private String InvCode;
// private String WhCode;
private String ToWhCode;
private BigDecimal NeedQty;
private long[] mHits = new long[2];//存储时间的数组
private final String WorkPoint = LoginActivity.user.getWorkPointCode();
private Data whData;
private HorizontalProgressBarWithNumber barWithNumber;
private BaseDialog dialog;
private Boolean IsFinish=false;
private CfreeApplicationModel cfreeApplicationModel;
private List<CfreeData> cfreeDataList;
//endregion
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
// if (dataList!=null) {
// dataList.clear();
// }
// dataDetailList.clear();
gridBarCode();
toBin.requestFocus();
HelpUtil.SetMsg(tvMsg, Color.BLUE, "源头单据扫描成功!");
break;
case 1:
transferNo.requestFocus();
HelpUtil.SetMsg(tvMsg, Color.RED, ErrorMsg);
break;
case 2:
toBin.requestFocus();
HelpUtil.SetMsg(tvMsg, Color.RED, ErrorMsg);
break;
case 3:
barCode.requestFocus();
HelpUtil.SetMsg(tvMsg, Color.RED, ErrorMsg);
break;
case 5:
barCode.requestFocus();
HelpUtil.SetMsg(tvMsg, Color.BLUE, "调拨数量记录成功!");
break;
case 6:
clear();
HelpUtil.SetMsg(tvMsg, Color.BLUE, ErrorMsg);
break;
case 7:
barCode.requestFocus();
HelpUtil.SetMsg(tvMsg, Color.BLUE, "库位条码扫描成功!");
break;
case 99:
HelpUtil.SetMsg(tvMsg, Color.RED, ErrorMsg);
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_invtrans1);
bindView();
}
private void bindView() {
this.setTitle("物料调拨无源头单据");
tvMsg = findViewById(R.id.tv_msg);
smartTable = findViewById(R.id.table);
toBin = findViewById(R.id.et_toBin);
barCode = findViewById(R.id.et_barCode);
btnDel = findViewById(R.id.btn_del);
btnOk = findViewById(R.id.btn_ok);
rbIn = findViewById(R.id.rbIn);
rbOut = findViewById(R.id.rbOut);
HelpUtil.disableShowSoftInput(toBin);
HelpUtil.disableShowSoftInput(barCode);
dataList = new ArrayList<>();
dataDetailList = new ArrayList<>();
whData = new Data();
cfreeDataList = new ArrayList<>();
//目标库位
toBin.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
try {
if (actionId == EditorInfo.IME_ACTION_SEND || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT
|| (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
if (v.getText().length() > 0) {
new Thread(new Runnable() {
@Override
public void run() {
CheckStackCode();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
JDT();
}
}).start();
}
}
return false;
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
} return false;
}
});
//物料条码
barCode.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
try {
if (actionId == EditorInfo.IME_ACTION_SEND || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT
|| (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
if (v.getText().length() > 0) {
new Thread(new Runnable() {
@Override
public void run() {
if (TextUtils.isEmpty(toBin.getText().toString().trim())) {
ErrorMsg = "请先扫描目标库位!";
handler.sendEmptyMessage(2);
return;
}
if (rbIn.isChecked()) {
for (Detail itemLotDetailData : dataDetailList) {
if (itemLotDetailData.getInvCode().equals(barCode.getText())) {
ErrorMsg = "请勿扫描重复条码!";
handler.sendEmptyMessage(3);
return;
}
}
}
new Thread(new Runnable() {
@Override
public void run() {
CheckLotNoForTrans();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
JDT();
}
}).start();
}
}).start();
}
}
return false;
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
} return false;
}
});
//子表清空主表数量清零
btnDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (tableData != null && selectRowIndex != 999 && !TextUtils.isEmpty(selectRowInvCode)) {
//dataList正常显示本次数量清0
for (Data invTransData : dataList) {
invTransData.setCurrentQty("0.00");
}
dataDetailList.clear();
/*for (PdaListData invTransData : dataList) {
if (invTransData.getINVCode().equals(selectRowInvCode))
dataList.remove(invTransData);
}
for (PdaListDetailData itemLotDetailData : dataDetailList) {
if (itemLotDetailData.getINVCode().equals(selectRowInvCode)) {
dataDetailList.remove(itemLotDetailData);
}
}*/
tableData = new TableData<>("物料调拨", dataList, columns);
smartTable.setTableData(tableData);
HelpUtil.SetMsg(tvMsg, Color.BLUE, "条码信息移除成功!");
selectRowInvCode = "";
selectRowIndex = 999;
} else {
HelpUtil.SetMsg(tvMsg, Color.RED, "尚未扫入任何条码!");
}
} catch (Exception ex) {
HelpUtil.SetMsg(tvMsg, Color.RED, ex.getMessage());
}
}
});
//提交按钮
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dataList.size() <= 0) {
HelpUtil.SetMsg(tvMsg, Color.RED, "请先扫描条码!");
barCode.requestFocus();
return;
}
new Thread(new Runnable() {
@Override
public void run() {
WareHouseTrans();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
JDT();
}
}).start();
}
});
}
private void JDT(){
barWithNumber = (HorizontalProgressBarWithNumber) findViewById(R.id.hpbwn);
System.out.println(IsFinish);
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
showJDT();
Looper.loop();
Looper.getMainLooper().quit();
}
}).start();
for (int i = 0; i <= 100; i++) {
if (IsFinish == false){
try {
Thread.sleep(50);
barWithNumber.setProgress(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
barWithNumber.setProgress(100);
dialog.dismiss();
IsFinish=false;
}
}).start();
break;
}
}
}
private void showJDT() {
View tableView = View.inflate(this, R.layout.jindutiao, null);
barWithNumber=tableView.findViewById(R.id.hpbwn);
dialog = new BaseDialog.Builder(this).setFillWidth(true).setContentView(tableView).create();
dialog.show();
dialog.setCanceledOnTouchOutside(false);
}
private void gridBarCode() {
try {
// dataList = new Gson().fromJson(result, new TypeToken<ArrayList<PdaListData>>() {
// }.getType());
// WhCode = dataList.get(dataList.size() - 1).getFromWHCode();//源仓库
ToWhCode = dataList.get(dataList.size() - 1).getWHCode();//目标仓库
HelpUtil.InitSmartTable(smartTable, this.getApplicationContext());
//region 声明列
columns = new ArrayList<>();
columns.add(new Column("行号", "TransSequence"));
// columns.add(new Column("源仓库", "FromWHCode"));
columns.add(new Column("目标仓库", "ToWarehouseCode"));
columns.add(new Column("物料编码", "InvCode"));
columns.add(new Column("物料名称", "InvName"));
columns.add(new Column("规格型号", "InvStd"));
columns.add(new Column("计划数量", "Quantity"));
// columns.add(new Column("已发数量", "IssueQuantity"));
columns.add(new Column("本次数量", "CurrentQty"));
columns.add(new Column("单位", "InvUnit"));
// List<ICSExtData> filter= LoginActivity.ICSExtList.stream().filter(s -> s.getEnable()
// .equals("1")).collect(Collectors.toList());
// filter.stream().forEach(s->{
// if (s.getColCode().equals("BatchCode"))
// columns.add(new Column("批次", "Batch"));
// else if (s.getColCode().equals("ProjectCode"))
// columns.add(new Column("项目号", "ORDERNO"));
// else
// columns.add(new Column( s.getColName(),s.getColCode()));
// });
/******************************************自由项动态显示*******************************************/
try {
if (LoginActivity.CfreeFlag){
cfreeApplicationModel = new Gson().fromJson(LoginActivity.CfreeString, CfreeApplicationModel.class);
cfreeDataList = cfreeApplicationModel.getData();
for (CfreeData cfreeData : cfreeDataList) {
columns.add(new Column(cfreeData.getColName(),cfreeData.getColCode()));
}
}
} catch (JsonSyntaxException e) {
e.printStackTrace();
ErrorMsg = e.getMessage();
handler.sendEmptyMessage(99);
}
/************************************************************************************************/
//endregion
tableData = new TableData<>("物料调拨", dataList, columns);
tableData.setOnRowClickListener(new TableData.OnRowClickListener<Data>() {
@Override
public void onClick(Column column, Data data, int col, int row) {
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
mHits[mHits.length - 1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {
showSMTableDialog(data.getInvCode(), data.getTransSequence());
} else {
HelpUtil.ChangeRowBackgroundColor(smartTable, row);
smartTable.invalidate();
selectRowIndex = row;
selectRowInvCode = data.getInvCode();
HelpUtil.SetMsg(tvMsg, Color.RED, "当前选中第" + (selectRowIndex + 1) + "行,物料编码为:" + data.getInvCode());
}
}
});
smartTable.setTableData(tableData);
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
//目标库位
private void CheckStackCode() {
Map params = new HashMap();
params.put("LocationCode",toBin.getText().toString().trim());
// params.put("StackCode", toBin.getText().toString());
params.put("WorkPoint", WorkPoint);
try {
result = "";
result = WebServiceUtil.GetWSReturnInfo("Location/Get", params);
Log.e("判断目标库位是否存在", "CheckStackCode: "+result );
if (result != null && result.length() != 0) {
applicationModel = new Gson().fromJson(result, ApplicationModel.class);
IsFinish=true;
if (applicationModel.getSuccess()){
whData = applicationModel.getData().get(0);
handler.sendEmptyMessage(7);
}else {
ErrorMsg = applicationModel.getMessage();
handler.sendEmptyMessage(2);
}
// if (applicationModel.getCode().equals("0")) {
// if (!applicationModel.getData().equals(ToWhCode)) {
// ErrorMsg = "目标库位与源头单据不符,请确认后重新扫描!";
// handler.sendEmptyMessage(2);
// } else {
// handler.sendEmptyMessage(7);
// }
// } else {
// ErrorMsg = "库位条码不存在!";
// handler.sendEmptyMessage(2);
// }
}
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
private void showSMTableDialog(String InvCode, String TransferLine) {
List<Detail> dData = new ArrayList<>();
for (Detail itemLotDetailData : dataDetailList) {
if (itemLotDetailData.getTransSequence().equals(TransferLine)
&& itemLotDetailData.getInvCode().equals(InvCode)) {
dData.add(itemLotDetailData);
}
}
View tableView = View.inflate(this, R.layout.detialinfo, null);
smartDetailTable = tableView.findViewById(R.id.detailTable);
smartDetailTable.getConfig().setShowTableTitle(false);
smartDetailTable.getConfig().setShowXSequence(false);
smartDetailTable.getConfig().setShowYSequence(false);
smartDetailTable.getConfig().setFixedTitle(true);
smartDetailTable.setData(dData);
BaseDialog dialog = new BaseDialog.Builder(this).setFillWidth(true).setContentView(tableView).create();
dialog.show();
}
/**
* 获取条码信息
*/
private void CheckLotNoForTrans() {
Map params = new HashMap();
// params.put("TransCode", transferNo.getText().toString().trim());
params.put("Code", barCode.getText().toString().trim());
params.put("TransType", "一步调拨");
params.put("WorkPoint",WorkPoint);
try {
result = "";
result = WebServiceUtil.GetWSReturnInfo("BarCodeInformation/Get", params);//InvOut的方法
Log.e("物料条码", "CheckLotNoForTrans: "+result );
if (result != null && result.length() != 0){
applicationModel = new Gson().fromJson(result,ApplicationModel.class);
IsFinish=true;
}
if (!applicationModel.getSuccess()) {
ErrorMsg = applicationModel.getMessage();
handler.sendEmptyMessage(3);
return;
} else {
GetLotData();
}
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
private void GetLotData() {
boolean ifExist = false;
BigDecimal planQty = BigDecimal.ZERO;
BigDecimal currentQty = BigDecimal.ZERO;
BigDecimal sendQty = BigDecimal.ZERO;
try {
// lotDetails = new Gson().fromJson(result, new TypeToken<ArrayList<LotDetail>>() {
// }.getType());
lotDatas = applicationModel.getData();
if (rbIn.isChecked()) {
for (Data lotData : lotDatas) {
lotData.setQuantity(HelpUtil.getAssignedFigures(lotData.getQuantity(),LoginActivity.DEFAULT_DECIMAL_FIGURE));
lotData.setIssueQuantity(HelpUtil.getAssignedFigures(lotData.getIssueQuantity(),LoginActivity.DEFAULT_DECIMAL_FIGURE));
lotData.setCurrentQty(HelpUtil.getAssignedFigures(lotData.getCurrentQty(),LoginActivity.DEFAULT_DECIMAL_FIGURE));
for (int i = 0; i < dataList.size(); i++) {
Data invTransData = dataList.get(i);
if (invTransData.getWHCode().equals(lotData.getWHCode())//源头仓库
&& invTransData.getInvCode().equals(lotData.getInvCode())//物料编码
// && invTransData.getProjectCode().equals(lotData.getProjectCode())//项目号
// && invTransData.getBatchCode().equals(lotData.getBatchCode())//批次
) {
planQty = planQty.add(new BigDecimal(invTransData.getQuantity()));//计划数量
// currentQty += Double.parseDouble(invTransData.getCurrentQty());//本次数量
// sendQty += Double.parseDouble(invTransData.getHasQuantity());//已发数量
ifExist = true;
selectRowIndex = i;
HelpUtil.ChangeRowBackgroundColor(smartTable, selectRowIndex);
break;
}
}
if (ifExist) {
LotQty = new BigDecimal(lotData.getQuantity());
// InvCode = lotData.getInvCode() + lotData.getWHCode() +lotData.getProjectCode()+ lotData.getBatchCode();//物料编码,源头仓库,项目号,批次
InvCode = lotData.getInvCode();
if (planQty.compareTo(currentQty.add(sendQty).add(LotQty)) == -1) {
NeedQty = planQty.subtract(currentQty).subtract(sendQty);
if (NeedQty.compareTo(BigDecimal.ZERO) != 1) {
ErrorMsg = "此行物料已调拨完成,请确认后重新扫描";
handler.sendEmptyMessage(3);
return;
}
} else {
NeedQty = LotQty;
}
// for (Detail itemLotDetailData : dataDetailList) {
// if (itemLotDetailData.getLotNo().toUpperCase().equals(lotData.getLotNo().toUpperCase())) {
// ErrorMsg = "请勿扫描重复条码!";
// handler.sendEmptyMessage(3);
// return;
// }
// }
} else {
ErrorMsg = "条码对应的物料/仓库/项目号/批次与源头单据不符!";
handler.sendEmptyMessage(3);
return;
}
SetMainTableQty();
DetailSum();
}
tableData = new TableData<>("物料调拨", dataList, columns);
smartTable.setTableData(tableData);
handler.sendEmptyMessage(5);
} else if (rbOut.isChecked()) {
if (dataDetailList != null && dataDetailList.size() > 0 && !dataDetailList.get(0).getTransSequence().equals("0")) {
for (int i = dataDetailList.size() - 1; i >= 0; i--) {
Detail rows = dataDetailList.get(i);
if (rows.getLotNo().toUpperCase().equals(barCode.getText().toString().toUpperCase())) {
for (Data invTransData : dataList) {
if (rows.getInvCode().equals(invTransData.getInvCode()) && new BigDecimal(invTransData.getCurrentQty()).compareTo(BigDecimal.ZERO) == 1//产品编码,本次数量
&& rows.getTransSequence().equals(invTransData.getTransSequence())) {//序号
invTransData.setCurrentQty(new BigDecimal(invTransData.getCurrentQty()).subtract(new BigDecimal(rows.getCurrentQty())) + "");
dataDetailList.remove(rows);
break;
}
}
}
}
}
tableData = new TableData<>("物料调拨", dataList, columns);
smartTable.setTableData(tableData);
ErrorMsg = "已移除!";
handler.sendEmptyMessage(3);
}
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
//给主表的本次数量赋值CurrentQTY
private void SetMainTableQty() {
try {
for (int j = 0; j < dataList.size(); j++) {
Data row = dataList.get(j);
String ItemCode = row.getInvCode();
// String ItemCode = row.getInvCode()+row.getFromWHCode()+row.getProjectCode()+row.getBatchCode();//物料编码,源头仓库,项目号,批次
BigDecimal PlanQTY = new BigDecimal(row.getQuantity());
BigDecimal SendQTY = new BigDecimal(row.getIssueQuantity());
BigDecimal CurrentQTY = new BigDecimal(row.getCurrentQty());
BigDecimal PlQty = PlanQTY.subtract(SendQTY).subtract(CurrentQTY);
if (PlQty.compareTo(BigDecimal.ZERO) == 0){
continue;
}
if (ItemCode.equals(InvCode)) {
if (LotQty.compareTo(PlanQTY.subtract(SendQTY).subtract(CurrentQTY)) == 1 && (PlanQTY.subtract(SendQTY).subtract(CurrentQTY)).compareTo(BigDecimal.ZERO) != 0 && LotQty.compareTo(BigDecimal.ZERO) != 0) {
LotQty = LotQty.subtract(PlanQTY.subtract(SendQTY).subtract(CurrentQTY));
row.setCurrentQty(CurrentQTY.add(PlanQTY.subtract(SendQTY).subtract(CurrentQTY)) + "");
Detail itemLotDetailData = new Detail();
itemLotDetailData.setLotNo(barCode.getText().toString().trim());
itemLotDetailData.setTransSequence(row.getTransSequence());
itemLotDetailData.setInvCode(row.getInvCode());
itemLotDetailData.setInvName(row.getInvName());
itemLotDetailData.setQuantity(LotQty.toString());//条码数量
itemLotDetailData.setCurrentQty(PlanQTY.subtract(SendQTY).subtract(CurrentQTY) + "");
// itemLotDetailData.setBinCode(toBin.getText().toString().trim());
itemLotDetailData.setProjectCode(row.getProjectCode());
itemLotDetailData.setBatchCode(row.getBatchCode());
dataDetailList.add(itemLotDetailData);
} else if (LotQty.compareTo(PlanQTY.subtract(SendQTY)) != 1 && LotQty.compareTo(BigDecimal.ZERO) != 0 && PlanQTY.subtract(SendQTY).subtract(CurrentQTY).compareTo(BigDecimal.ZERO) != 0) {
row.setCurrentQty(CurrentQTY.add(LotQty) + "");
Detail itemLotDetailData = new Detail();
itemLotDetailData.setLotNo(barCode.getText().toString().trim());
itemLotDetailData.setTransSequence(row.getTransSequence());
itemLotDetailData.setInvCode(row.getInvCode());
itemLotDetailData.setInvName(row.getInvName());
itemLotDetailData.setQuantity(LotQty.toString());
itemLotDetailData.setCurrentQty(LotQty + "");
// itemLotDetailData.setBinCode(toBin.getText().toString().trim());//目标库位
itemLotDetailData.setProjectCode(row.getProjectCode());
itemLotDetailData.setBatchCode(row.getBatchCode());
dataDetailList.add(itemLotDetailData);
LotQty = BigDecimal.ZERO;
}
}
}
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
//合并子表
private void DetailSum() {
try {
List<Detail> newDataDetailList = new ArrayList<>();
for (Detail row : dataDetailList) {
if (newDataDetailList != null) {
if (newDataDetailList.size() > 0) {
for (Detail item : newDataDetailList) {
if (item.getLotNo().toUpperCase().equals(row.getLotNo().toUpperCase())
&& item.getTransSequence().equals(row.getTransSequence())) {
item.setCurrentQty(new BigDecimal(item.getCurrentQty()).add(new BigDecimal(row.getCurrentQty())) + "");
} else {
newDataDetailList.add(row);
}
}
} else {
newDataDetailList.add(row);
}
}
}
dataDetailList = newDataDetailList;
}catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
private void WareHouseTrans() {
String MUSER = LoginActivity.user.getUserCode();
String MTIME = HelpUtil.GetFormatDate();
// Double PlanQty = 0.0;
// Double HasQty = 0.0;
// for (Data invTransData : dataList) {
// PlanQty += Double.parseDouble(invTransData.getQuantity());
// HasQty += Double.parseDouble(invTransData.getHasQuantity()) + Double.parseDouble(invTransData.getCurrentQty());
// }
//测试关掉使用时请还原
// if (PlanQty > HasQty) {
// ErrorMsg = "该单据尚有条码未扫入,请补全后再提交!";
// handler.sendEmptyMessage(3);
// return;
// }
List tempArrP = new ArrayList();
for (Data data : dataList){
Map params = new HashMap();
BigDecimal currQtyy = new BigDecimal(data.getCurrentQty());
if (currQtyy.compareTo(BigDecimal.ZERO) != 1){
continue;
}
//params.put("TransCode", transferNo.getText().toString().trim());
params.put("TransSequence", data.getTransSequence());
params.put("User", MUSER);
params.put("Mtime", MTIME);
params.put("WorkPoint",WorkPoint);
params.put("TransType","1");//类型一步调拨为1两步调拨为2
List tempArr = new ArrayList();
for (Detail detail : dataDetailList) {
Map tempDetailMap = new HashMap();
BigDecimal currQty = new BigDecimal(detail.getCurrentQty());
if (currQty.compareTo(BigDecimal.ZERO) > 0) {
tempDetailMap.put("LotNo", detail.getLotNo());
tempDetailMap.put("CurrentQuantity", detail.getCurrentQty());
tempDetailMap.put("LocationCode",whData.getLocationCode());
tempDetailMap.put("WarehouseCode",whData.getWarehouseCode());
tempDetailMap.put("Quantity",data.getQuantity());
tempDetailMap.put("Amount",data.getAmount());
if (data.getTransSequence().equals(detail.getTransSequence())) {
tempArr.add(tempDetailMap);
}
} else {
ErrorMsg = "提交数量不可为0,请确认后再提交";
handler.sendEmptyMessage(99);
return;
}
}
params.put("Detail",tempArr);
tempArrP.add(params);
}
try {
result = "";
result = WebServiceUtil.GetWSReturnInfoNew("TransferDoc/Update", tempArrP);
if (result != null && result.length() != 0) {
applicationModel = new Gson().fromJson(result, ApplicationModel.class);
IsFinish=true;
boolean flag = applicationModel.getSuccess();
if (flag) {
ErrorMsg = "调拨成功!";
handler.sendEmptyMessage(6);
} else {
ErrorMsg = applicationModel.getMessage();
handler.sendEmptyMessage(3);
}
}
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
private void clear() {
try {
// transferNo.setText("");
toBin.setText("");
barCode.setText("");
//transferNo.requestFocus();
dataList.clear();
dataDetailList.clear();
/*ItemLotData itemLotData = new ItemLotData();
itemLotData.setVouchRow("");
itemLotData.setFromWHCode("");
itemLotData.setToWHCode("");
itemLotData.setINVCode("");
itemLotData.setINVName("");
itemLotData.setInvStd("");
itemLotData.setCurrentQty("");
itemLotData.setQuantity("");
itemLotData.setHasQty("");
itemLotData.setCurrentQty("");
itemLotData.setInvUom("");
itemLotData.setORDERNO("");
itemLotData.setBatch("");
dataList.add(itemLotData);*/
tableData = new TableData<>("物料调拨", dataList, columns);
smartTable.setTableData(tableData);
} catch (Exception ex) {
ErrorMsg = ex.getMessage();
handler.sendEmptyMessage(99);
}
}
}

209
app/src/main/res/layout/activity_invtrans1.xml

@ -0,0 +1,209 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_app_bg">
<LinearLayout
android:id="@+id/main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="10dp"
android:textSize="18sp">
<!-- <LinearLayout-->
<!-- android:id="@+id/top_1"-->
<!-- android:layout_width="fill_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:baselineAligned="false"-->
<!-- android:gravity="center"-->
<!-- android:orientation="horizontal"-->
<!-- android:padding="2dp">-->
<!-- <TextView-->
<!-- android:id="@+id/tv_transferNo"-->
<!-- android:layout_width="75dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginLeft="5dp"-->
<!-- android:gravity="right"-->
<!-- android:text="源头单据:" />-->
<!-- <EditText-->
<!-- android:id="@+id/et_transferNo"-->
<!-- android:layout_width="fill_parent"-->
<!-- android:layout_height="26dp"-->
<!-- android:layout_marginRight="5dp"-->
<!-- android:background="@drawable/shape_white"-->
<!-- android:gravity="center"-->
<!-- android:selectAllOnFocus="true"-->
<!-- android:singleLine="true" />-->
<!-- </LinearLayout>-->
<LinearLayout
android:id="@+id/top_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:padding="2dp">
<TextView
android:id="@+id/tv_toBin"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="right"
android:text="目标库位:" />
<EditText
android:id="@+id/et_toBin"
android:layout_width="fill_parent"
android:layout_height="26dp"
android:layout_marginRight="5dp"
android:background="@drawable/shape_white"
android:gravity="center"
android:selectAllOnFocus="true"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/top_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="2dp">
<TextView
android:id="@+id/tv_barCode"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="right"
android:text="物料条码:" />
<EditText
android:id="@+id/et_barCode"
android:layout_width="fill_parent"
android:layout_height="26dp"
android:layout_marginRight="5dp"
android:background="@drawable/shape_white"
android:gravity="center"
android:selectAllOnFocus="true"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/middle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:background="@color/color_tbgc"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:padding="2dp">
<com.bin.david.form.core.SmartTable
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:id="@+id/down_1"
android:layout_width="match_parent"
android:layout_height="26dp"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:padding="2dp">
<TextView
android:id="@+id/tv_qty"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="right"
android:text="操作模式:" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rbIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:checked="true"
android:text="移入" />
<RadioButton
android:id="@+id/rbOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="移出" />
</RadioGroup>
</LinearLayout>
<LinearLayout
android:id="@+id/boom"
android:layout_width="match_parent"
android:layout_height="50dp"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:padding="2dp">
<Button
android:id="@+id/btn_del"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_weight="1"
android:text="移除" />
<Button
android:id="@+id/btn_ok"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_weight="1"
android:text="提交" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="50dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:padding="2dp">
<TextView
android:id="@+id/tv_msg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="" />
</LinearLayout>
</ScrollView>
</LinearLayout>
</RelativeLayout>

1
app/src/main/res/values/strings.xml

@ -39,6 +39,7 @@
<string name="InvTransIn">两步调入</string> <string name="InvTransIn">两步调入</string>
<string name="OpTransfer">移库扫描</string> <string name="OpTransfer">移库扫描</string>
<string name="InvTrans">物料调拨</string> <string name="InvTrans">物料调拨</string>
<string name="InvTrans1">物料调拨无源头单据</string>
<string name="ICSCheckIn">盘点扫描</string> <string name="ICSCheckIn">盘点扫描</string>
<string name="BoxTransfer">移箱扫描</string> <string name="BoxTransfer">移箱扫描</string>
<string name="Batch">条码分批</string> <string name="Batch">条码分批</string>

Loading…
Cancel
Save