达翔pda
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

523 lines
20 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. package com.icssoft.icspda.activity;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.graphics.Color;
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.os.Message;
  7. import android.text.Editable;
  8. import android.text.TextWatcher;
  9. import android.view.KeyEvent;
  10. import android.view.View;
  11. import android.view.inputmethod.EditorInfo;
  12. import android.widget.AdapterView;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.Button;
  15. import android.widget.EditText;
  16. import android.widget.Spinner;
  17. import android.widget.SpinnerAdapter;
  18. import android.widget.TextView;
  19. import com.bin.david.form.core.SmartTable;
  20. import com.bin.david.form.data.column.Column;
  21. import com.bin.david.form.data.table.TableData;
  22. import com.google.gson.Gson;
  23. import com.icssoft.icspda.R;
  24. import com.icssoft.icspda.entity.OpTransferData;
  25. import com.icssoft.icspda.entity.PoArriveConfirmData;
  26. import com.icssoft.icspda.entity.ApplicationModel;
  27. import com.icssoft.icspda.net.WebServiceUtil;
  28. import com.icssoft.icspda.util.HelpUtil;
  29. import java.util.ArrayList;
  30. import java.util.HashMap;
  31. import java.util.List;
  32. import java.util.Map;
  33. public class POArriveConfirmActivity extends AppCompatActivity {
  34. //region 变量初始化
  35. private TextView tvMsg;
  36. private EditText asnNo;
  37. private Spinner spInvCode;
  38. private Button btnConfirm;
  39. private Button btnSubmit;
  40. private EditText qty;
  41. private EditText barCode;
  42. private String result;
  43. private ApplicationModel applicationModel;
  44. private PoArriveConfirmData[] poData;
  45. private List<PoArriveConfirmData> dataList;
  46. private SmartTable smartTable;
  47. private String ErrorMsg = "";
  48. private boolean flag = false;
  49. //endregion
  50. private Handler handler = new Handler() {
  51. @Override
  52. public void handleMessage(Message msg) {
  53. super.handleMessage(msg);
  54. switch (msg.what) {
  55. case 0:
  56. gridBarCode();
  57. HelpUtil.SetMsg(tvMsg, Color.BLUE, "单据扫描成功!");
  58. break;
  59. case 1:
  60. HelpUtil.SetMsg(tvMsg, Color.RED, applicationModel.getMsg());
  61. //asnNo.requestFocus();
  62. asnNo.postDelayed(new Runnable() {
  63. @Override
  64. public void run() {
  65. asnNo.requestFocus();
  66. }
  67. },1000);
  68. break;
  69. case 3:
  70. clear();
  71. HelpUtil.SetMsg(tvMsg, Color.BLUE, "到货成功,到货单号:" + applicationModel.getMsg() + "!");
  72. break;
  73. case 4:
  74. HelpUtil.SetMsg(tvMsg, Color.RED, applicationModel.getMsg());
  75. asnNo.postDelayed(new Runnable() {
  76. @Override
  77. public void run() {
  78. asnNo.requestFocus();
  79. }
  80. },1000);
  81. break;
  82. case 99:
  83. HelpUtil.SetMsg(tvMsg, Color.RED, ErrorMsg);
  84. asnNo.postDelayed(new Runnable() {
  85. @Override
  86. public void run() {
  87. asnNo.requestFocus();
  88. }
  89. },1000);
  90. break;
  91. case 98:
  92. HelpUtil.SetMsg(tvMsg, Color.BLUE, "实收总重修改成功!");
  93. qty.postDelayed(new Runnable() {
  94. @Override
  95. public void run() {
  96. qty.requestFocus();
  97. }
  98. },1000);
  99. break;
  100. case 97:
  101. HelpUtil.SetMsg(tvMsg, Color.RED, "实际总重不能为0!");
  102. qty.postDelayed(new Runnable() {
  103. @Override
  104. public void run() {
  105. qty.requestFocus();
  106. }
  107. },1000);
  108. break;
  109. }
  110. }
  111. };
  112. @Override
  113. protected void onCreate(Bundle savedInstanceState) {
  114. super.onCreate(savedInstanceState);
  115. setContentView(R.layout.activity_poarriveconfirm);
  116. bindView();
  117. }
  118. private void bindView() {
  119. this.setTitle("到货确认");
  120. tvMsg = findViewById(R.id.tv_msg);
  121. asnNo = findViewById(R.id.et_asnno);
  122. barCode = findViewById(R.id.et_lotno);
  123. spInvCode = findViewById(R.id.sp_invcode);
  124. qty = findViewById(R.id.et_qty);
  125. smartTable = findViewById(R.id.table);
  126. btnConfirm = findViewById(R.id.btn_confirm);
  127. btnSubmit = findViewById(R.id.btn_submit);
  128. // HelpUtil.disableShowSoftInput(asnNo);
  129. asnNo.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  130. @Override
  131. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  132. try {
  133. if (actionId == EditorInfo.IME_ACTION_SEND || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT
  134. || (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
  135. if (v.getText().length() > 0) {
  136. new Thread(new Runnable() {
  137. @Override
  138. public void run() {
  139. checkAsnNo();
  140. }
  141. }).start();
  142. }
  143. }
  144. return false;
  145. } catch (Exception ex) {
  146. ErrorMsg = ex.getMessage();
  147. handler.sendEmptyMessage(99);
  148. }
  149. return false;
  150. }
  151. });
  152. barCode.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  153. @Override
  154. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  155. try {
  156. if (actionId == EditorInfo.IME_ACTION_SEND || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT
  157. || (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
  158. if (v.getText().length() > 0) {
  159. checkExist();
  160. }
  161. }
  162. return false;
  163. } catch (Exception ex) {
  164. ErrorMsg = ex.getMessage();
  165. handler.sendEmptyMessage(99);
  166. }
  167. return false;
  168. }
  169. });
  170. spInvCode.setOnItemSelectedListener(
  171. new AdapterView.OnItemSelectedListener() {
  172. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  173. if ((spInvCode.getSelectedItem().toString().equals("--请选择--"))) {
  174. barCode.setText("");
  175. }else{
  176. barCode.setText(spInvCode.getSelectedItem().toString());
  177. qty.postDelayed(new Runnable() {
  178. @Override
  179. public void run() {
  180. qty.requestFocus();
  181. }
  182. },1000);
  183. }
  184. }
  185. public void onNothingSelected(AdapterView<?> parent) {
  186. }
  187. });
  188. qty.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  189. @Override
  190. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  191. try {
  192. if (actionId == EditorInfo.IME_ACTION_SEND || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT
  193. || (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
  194. if (qty.getText().toString().trim().equals("")||Double.parseDouble(qty.getText().toString().trim())<=0) {
  195. HelpUtil.SetMsg(tvMsg, Color.RED, "请输入正确数量");
  196. return false;
  197. }
  198. String invCode = spInvCode.getSelectedItem().toString();
  199. if ((invCode.equals("--请选择--"))) {
  200. HelpUtil.SetMsg(tvMsg, Color.RED, "请选择物料条码");
  201. return false;
  202. } else {
  203. HelpUtil.SetMsg(tvMsg, Color.BLUE, "");
  204. }
  205. for (PoArriveConfirmData item : dataList) {
  206. if (item.getLOTNO().equals(invCode)) {
  207. item.setReceiveQTY(qty.getText().toString().trim());
  208. break;
  209. }
  210. }
  211. smartTable.setData(dataList);
  212. handler.sendEmptyMessage(98);
  213. chooseRow();
  214. }
  215. return false;
  216. } catch (Exception ex) {
  217. ErrorMsg = ex.getMessage();
  218. handler.sendEmptyMessage(99);
  219. }
  220. return false;
  221. }
  222. });
  223. btnConfirm.setOnClickListener(new View.OnClickListener() {
  224. @Override
  225. public void onClick(View v) {
  226. try {
  227. if (qty.getText().toString().trim().equals("")||Double.parseDouble(qty.getText().toString().trim())<=0) {
  228. HelpUtil.SetMsg(tvMsg, Color.RED, "请输入正确数量");
  229. return;
  230. }
  231. String invCode = barCode.getText().toString();
  232. if ((invCode.equals(""))) {
  233. HelpUtil.SetMsg(tvMsg, Color.RED, "请扫描条码");
  234. return;
  235. } else {
  236. HelpUtil.SetMsg(tvMsg, Color.BLUE, "");
  237. }
  238. for (PoArriveConfirmData item : dataList) {
  239. if (item.getLOTNO().equals(invCode)) {
  240. item.setReceiveQTY(qty.getText().toString().trim());
  241. break;
  242. }
  243. }
  244. smartTable.setData(dataList);
  245. handler.sendEmptyMessage(98);
  246. chooseRow();
  247. }catch (Exception ex) {
  248. HelpUtil.SetMsg(tvMsg, Color.RED, "请先扫描单据");
  249. }
  250. }
  251. });
  252. btnSubmit.setOnClickListener(new View.OnClickListener() {
  253. @Override
  254. public void onClick(View v) {
  255. try{
  256. if (dataList==null||dataList.size() <= 0) {
  257. HelpUtil.SetMsg(tvMsg, Color.RED, "请先扫描正确单据!");
  258. asnNo.requestFocus();
  259. return;
  260. }
  261. new Thread(new Runnable() {
  262. @Override
  263. public void run() {
  264. // checkAsnNo();
  265. asnConfirm();
  266. }
  267. }).start();
  268. }catch (Exception ex){
  269. ErrorMsg = ex.getMessage();
  270. handler.sendEmptyMessage(99);
  271. }
  272. }
  273. });
  274. }
  275. private void checkExist() {
  276. String lotNo = barCode.getText().toString();
  277. //获取下拉列表的视图
  278. SpinnerAdapter spinnerAdapter = spInvCode.getAdapter();
  279. //下拉列表元素总个数
  280. int spIncodeCount = spinnerAdapter.getCount();
  281. if (dataList!=null){
  282. for (PoArriveConfirmData data : dataList) {
  283. if (barCode.getText().toString().equals(data.getLOTNO())){
  284. for (int i = 0; i < spIncodeCount; i++) {
  285. if (lotNo.equals(spinnerAdapter.getItem(i).toString())){
  286. spInvCode.setSelection(i);
  287. break;
  288. }
  289. }
  290. qty.setText("");
  291. ErrorMsg = "扫描成功";
  292. HelpUtil.SetMsg(tvMsg, Color.BLUE, ErrorMsg);
  293. qty.postDelayed(new Runnable() {
  294. @Override
  295. public void run() {
  296. qty.requestFocus();
  297. }
  298. },1000);
  299. return;
  300. }
  301. }
  302. ErrorMsg = "此条码不在本次送货单内,请重新扫码!";
  303. barCode.postDelayed(new Runnable() {
  304. @Override
  305. public void run() {
  306. barCode.requestFocus();
  307. }
  308. },1000);
  309. for (int i = 0; i < spIncodeCount; i++) {
  310. if ("--请选择--".equals(spinnerAdapter.getItem(i).toString())){
  311. spInvCode.setSelection(i);
  312. break;
  313. }
  314. }
  315. HelpUtil.SetMsg(tvMsg, Color.RED, ErrorMsg);
  316. }else{
  317. ErrorMsg = "请先扫描正确单据";
  318. HelpUtil.SetMsg(tvMsg, Color.RED, ErrorMsg);
  319. }
  320. }
  321. private void chooseRow(){
  322. try{
  323. smartTable.getTableData().setOnRowClickListener(new TableData.OnRowClickListener<PoArriveConfirmData>() {
  324. @Override
  325. public void onClick(Column column, PoArriveConfirmData poArriveConfirmData, int col,final int row) {
  326. try{
  327. //改变选中行的颜色
  328. HelpUtil.ChangeRowBackgroundColor(smartTable, row);
  329. String lotNo =poArriveConfirmData.getLOTNO();
  330. //获取下拉列表的视图
  331. SpinnerAdapter spinnerAdapter = spInvCode.getAdapter();
  332. //下拉列表元素总个数
  333. int spIncodeCount = spinnerAdapter.getCount();
  334. for (int i = 0; i < spIncodeCount; i++) {
  335. if (lotNo.equals(spinnerAdapter.getItem(i).toString())){
  336. spInvCode.setSelection(i);
  337. break;
  338. }
  339. }
  340. barCode.setText(lotNo);
  341. qty.setText("");
  342. }catch (Exception ex){
  343. ErrorMsg = ex.getMessage();
  344. handler.sendEmptyMessage(99);
  345. }
  346. }
  347. });
  348. }catch (Exception ex){
  349. ErrorMsg = ex.getMessage();
  350. handler.sendEmptyMessage(99);
  351. }
  352. }
  353. private void gridBarCode() {
  354. try{
  355. ArrayList<CharSequence> spList = new ArrayList<>();
  356. dataList = new ArrayList<>();
  357. spList.add("--请选择--");
  358. for (PoArriveConfirmData data : poData) {
  359. spList.add(data.getLOTNO());
  360. dataList.add(data);
  361. }
  362. ArrayAdapter<CharSequence> arrayAdapter = new ArrayAdapter<CharSequence>(this, R.layout.simple_spinner_dropdown_item, spList);
  363. arrayAdapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
  364. spInvCode.setAdapter(arrayAdapter);
  365. HelpUtil.InitSmartTable(smartTable, this.getApplicationContext());
  366. smartTable.setData(dataList);
  367. chooseRow();
  368. }catch(Exception ex){
  369. ErrorMsg = ex.getMessage();
  370. handler.sendEmptyMessage(99);
  371. }
  372. }
  373. private void checkAsnNo() {
  374. Map params = new HashMap();
  375. params.put("BarCode", asnNo.getText().toString());
  376. params.put("WorkPointCode", LoginActivity.user.getWorkPointCode());
  377. try {
  378. result = "";
  379. result = WebServiceUtil.GetWSReturnInfo("CheckASNNo", params);
  380. if (result != null && result.length() != 0) {
  381. applicationModel = new Gson().fromJson(result, ApplicationModel.class);
  382. int code = Integer.parseInt(applicationModel.getCode());
  383. if (code == 0) {
  384. getAsnData();
  385. if (poData.length!=0){
  386. handler.sendEmptyMessage(0);
  387. return;
  388. }
  389. handler.sendEmptyMessage(99);
  390. } else {
  391. handler.sendEmptyMessage(1);
  392. }
  393. }
  394. } catch (Exception ex) {
  395. ErrorMsg = ex.getMessage();
  396. handler.sendEmptyMessage(99);
  397. }
  398. }
  399. private void getAsnData() {
  400. Map params = new HashMap();
  401. params.put("BarCode", asnNo.getText().toString());
  402. params.put("WorkPointCode", LoginActivity.user.getWorkPointCode());
  403. try {
  404. result = "";
  405. result = WebServiceUtil.GetWSReturnInfo("GetASNData", params);
  406. if (result != null && result.length() != 0) {
  407. poData = new Gson().fromJson(result, PoArriveConfirmData[].class);
  408. }
  409. } catch (Exception ex) {
  410. ErrorMsg = ex.getMessage();
  411. handler.sendEmptyMessage(99);
  412. }
  413. }
  414. private void asnConfirm() {
  415. String poRowList = "";
  416. String poRowQtyList = "";
  417. String invCodeList = "";
  418. String lotNoList= "";
  419. for (PoArriveConfirmData item : dataList) {
  420. if (poRowList.equals("")) {
  421. poRowList += item.getSTLine();
  422. // if (Double.parseDouble(item.getReceiveQTY())<=0){
  423. // handler.sendEmptyMessage(97);
  424. // return;
  425. // }
  426. poRowQtyList += item.getReceiveQTY();
  427. invCodeList += item.getINVCODE();
  428. lotNoList += item.getLOTNO();
  429. } else {
  430. poRowList += "," + item.getSTLine() + "";
  431. // if (Double.parseDouble(item.getReceiveQTY())<=0){
  432. // handler.sendEmptyMessage(97);
  433. // return;
  434. // }
  435. poRowQtyList += "," + item.getReceiveQTY() + "";
  436. invCodeList += "," + item.getINVCODE() + "";
  437. lotNoList += "," + item.getLOTNO() + "";
  438. }
  439. }
  440. Map params = new HashMap();
  441. params.put("POCode", asnNo.getText().toString());
  442. params.put("PoRowList", poRowList);
  443. params.put("PoRowQtyList", poRowQtyList);
  444. params.put("BarCodeList", lotNoList);
  445. params.put("InvCodeList", invCodeList);
  446. params.put("userID", LoginActivity.user.getID());
  447. params.put("userCode", LoginActivity.user.getUserCode());
  448. params.put("userName", LoginActivity.user.getUserName());
  449. params.put("workPoint", LoginActivity.user.getWorkPointCode());
  450. params.put("Type", "收");
  451. try {
  452. result = "";
  453. result = WebServiceUtil.GetWSReturnInfo("ASNConfirm", params);
  454. if (result != null && result.length() != 0) {
  455. applicationModel = new Gson().fromJson(result, ApplicationModel.class);
  456. int code = Integer.parseInt(applicationModel.getCode());
  457. if (code == 0) {
  458. handler.sendEmptyMessage(3);
  459. } else {
  460. handler.sendEmptyMessage(1);
  461. }
  462. }
  463. } catch (Exception ex) {
  464. ErrorMsg = ex.getMessage();
  465. handler.sendEmptyMessage(99);
  466. }
  467. }
  468. private void clear() {
  469. asnNo.setText("");
  470. asnNo.requestFocus();
  471. spInvCode.setAdapter(null);
  472. qty.setText("");
  473. barCode.setText("");
  474. dataList.clear();
  475. // smartTable.getTableData().clear();
  476. PoArriveConfirmData a = new PoArriveConfirmData();
  477. a.setINVCODE("");
  478. a.setLOTNO("");
  479. a.setINVName("");
  480. a.setINVSTD("");
  481. a.setPlanQTY("");
  482. a.setReceiveQTY("");
  483. dataList.add(a);
  484. smartTable.setData(dataList);
  485. }
  486. }