4 changed files with 984 additions and 0 deletions
-
1app/src/main/AndroidManifest.xml
-
773app/src/main/java/com/icssoft/icspda/activity/INVTrans1Activity.java
-
209app/src/main/res/layout/activity_invtrans1.xml
-
1app/src/main/res/values/strings.xml
@ -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); |
|||
} |
|||
} |
|||
} |
@ -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> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue