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