package com.jiaju.activity; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.jiaju.adapter.DeliveryNoteInquiryItemAdapter; import com.jiaju.adapter.OrderSpinnerAdapter; import com.jiaju.model.DeliveryNoteInquiryItemModel; import com.jiaju.model.Order; import com.jiaju.net.WebClient; import com.jiaju.utils.CommonUtil; import com.jiaju.utils.Constants; import com.jiaju.utils.CustomListView; import com.jiaju.utils.ProcessDialogUtils; import com.jiaju.utils.TimePickerInfo; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; /** * 发货单一览 * 2024-11-15 * 李士越 * */ @SuppressLint("HandlerLeak") public class DeliveryNoteInquiryActivity extends Activity { /**返回*/ private ImageButton backbtn; /**返回*/ private TextView backtext; /**标题*/ private TextView tvTitle; private CustomListView lstView; private SharedPreferences preferences; private DeliveryNoteInquiryItemAdapter adapter = null; /** 同步状态控件 */ private Spinner spinnerSynchronizationStatus; /** 撤销状态控件 */ private Spinner revoke; /** 车牌号 */ private Spinner LicensePlateNumber; /** 发出仓库 */ private Spinner SendOutWarehouse; /** 接收仓库 */ private Spinner ReceivingWarehouse; /** 状态数据 */ private OrderSpinnerAdapter orderspinnerAdapter; private WebClient client; private HandlerThread thread; private Handler mHandler; private String ServerAddress_ip; private String ServerAddress_Port; private String accountCode; private String barcode_print_userCode; private String password; private String sessionkey; /** 记账日期 */ private ImageView PostingDateWorker; /** 记账日期文本控件 */ private TextView PostingDate_TextView; /** 送货日期 */ private ImageView DeliveryDateWorker; /** 送货日期文本控件 */ private TextView DeliveryDate_TextView; private long timeMillis; private TimePickerInfo mTimePickerInfo; /** 记账日期控件标识 */ private boolean isPostingDateSelected = false; /** 送货日期控件标识 */ private boolean isDeliveryDateSelected = false; /** 生产工号输入框 */ private EditText edt_barcode; /** 查询按钮 */ private Button select_Button; /** 撤销按钮 */ private Button revoke_Button; /** 补推按钮 */ private Button SupplementaryPush_Button; /** 删除按钮 */ private Button Delete_Button; private List detailList = new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_delivery_note_inquiry); initview(); preferences = getSharedPreferences("user", Context.MODE_PRIVATE); ServerAddress_ip = preferences.getString("ServerAddress_ip", ""); ServerAddress_Port = preferences.getString("ServerAddress_duankou", ""); accountCode = preferences.getString("AccountCode", ""); barcode_print_userCode = preferences.getString("UserCode", ""); password = preferences.getString("UserPassword", ""); sessionkey = preferences.getString("SessionKey", ""); tvTitle.setVisibility(View.VISIBLE); tvTitle.setText("发货单一览"); // 同步状态下拉框赋值 initSynchronizationStatusData(); // 撤销状态下拉框赋值 initRevokeData(); // 调用车牌号下拉框 SendOutWarehouse("{\"type\":\"车牌号\"}", 0); // 调用发出仓库下拉框 SendOutWarehouse("{\"type\":\"发出仓库\"}", 1); // 调用接收仓库下拉框 SendOutWarehouse("{\"type\":\"接收仓库\"}", 2); PostingDateWorker.setEnabled(true); DeliveryDateWorker.setEnabled(true); // 调用控件初始化逻辑 AllListeners(); } private void initview() { tvTitle = (TextView) findViewById(R.id.title); backbtn = (ImageButton) findViewById(R.id.left_img); backtext = (TextView) findViewById(R.id.back); lstView = (CustomListView) findViewById(R.id.Invoice_listview); spinnerSynchronizationStatus = (Spinner) findViewById(R.id.SynchronizationStatus_batchSp); revoke = (Spinner) findViewById(R.id.revoke_batchSp); LicensePlateNumber = (Spinner) findViewById(R.id.LicensePlateNumber_batchSp); SendOutWarehouse = (Spinner) findViewById(R.id.SendOutWarehouse_batchSp); ReceivingWarehouse = (Spinner) findViewById(R.id.ReceivingWarehouse_batchSp); PostingDateWorker = (ImageView) findViewById(R.id.PostingDateIv); DeliveryDateWorker = (ImageView) findViewById(R.id.DeliveryDateIv); PostingDate_TextView = (TextView) findViewById(R.id.PostingDate_TextView); DeliveryDate_TextView = (TextView) findViewById(R.id.DeliveryDate_TextView); edt_barcode = (EditText) findViewById(R.id.edt_barcode); select_Button = (Button) findViewById(R.id.select_Button); revoke_Button = (Button) findViewById(R.id.revoke_Button); SupplementaryPush_Button = (Button) findViewById(R.id.SupplementaryPush_Button); Delete_Button = (Button) findViewById(R.id.Delete_Button); } /** 同步状态下拉框赋值 */ public void initSynchronizationStatusData() { // 激活状态数据 List orderList = new ArrayList(); // 创建初始同步状态数据 List OrderNoList = new ArrayList(); OrderNoList.add("未同步"); OrderNoList.add("同步成功"); OrderNoList.add("同步失败"); // 赋值 for (int i = 0; i < OrderNoList.size(); i++) { Order order = new Order(); order.setOrderId(i); order.setOrderNo(OrderNoList.get(i)); orderList.add(order); } Order order = new Order(); order.setOrderId(4); order.setOrderNo("请选择"); orderList.add(0, order); // 控件赋值 orderspinnerAdapter = new OrderSpinnerAdapter(DeliveryNoteInquiryActivity.this, orderList); spinnerSynchronizationStatus.setAdapter(orderspinnerAdapter); } /** 撤销状态下拉框赋值 */ public void initRevokeData() { // 激活状态数据 List orderList = new ArrayList(); // 创建初始同步状态数据 List OrderNoList = new ArrayList(); OrderNoList.add("未撤销"); OrderNoList.add("撤销成功"); OrderNoList.add("撤销失败"); // 赋值 for (int i = 0; i < OrderNoList.size(); i++) { Order order = new Order(); order.setOrderId(i); order.setOrderNo(OrderNoList.get(i)); orderList.add(order); } Order order = new Order(); order.setOrderId(4); order.setOrderNo("请选择"); orderList.add(0, order); // 控件赋值 orderspinnerAdapter = new OrderSpinnerAdapter(DeliveryNoteInquiryActivity.this, orderList); revoke.setAdapter(orderspinnerAdapter); } /** 对象赋值 */ public void ObjectAssignment(String result, List orderList) { try { JSONObject jo = new JSONObject(result); JSONObject jobj = jo.optJSONObject("d"); int status = jobj.optInt("Status"); if (status == 0) { String result1 = jobj.optString("Result"); JSONArray jarray = new JSONArray(result1); if (jarray != null && jarray.length() > 0) { for (int i = 0; i < jarray.length(); i++) { JSONObject jobj1 = jarray.optJSONObject(i); Order order = new Order(); order.setOrderId(jobj1.optInt("数据ID")); order.setOrderNo(jobj1.optString("数据名称")); orderList.add(order); } // 控件赋值 orderspinnerAdapter = new OrderSpinnerAdapter(DeliveryNoteInquiryActivity.this, orderList); } } } catch (Exception e) { e.printStackTrace(); } } /** 发货单信息列表数据处理 */ public List ListObjectAssignment(String result) { List detailList = new ArrayList(); try { JSONObject jo = new JSONObject(result); JSONObject jobj = jo.optJSONObject("d"); int status = jobj.optInt("Status"); String message = jobj.optString("Message"); if (status == 0) { String result1 = jobj.optString("Result"); JSONArray jarray = new JSONArray(result1); if (jarray != null && jarray.length() > 0) { for (int i = 0; i < jarray.length(); i++) { JSONObject jobj1 = jarray.optJSONObject(i); DeliveryNoteInquiryItemModel model = new DeliveryNoteInquiryItemModel(); model.setSenddoutgoodsLogID(String.valueOf(jobj1.optInt("总单ID")) ); model.setSendoutCode(jobj1.optString("发货单号")); model.setSendOutWarehouse(jobj1.optString("发出仓库")); model.setReceivingWarehouse(jobj1.optString("接收仓库")); model.setLicensePlateNumber(jobj1.optString("车牌号")); model.setPostingDate(jobj1.optString("记账日期")); model.setDeliveryDate(jobj1.optString("送货日期")); model.setSynchronizationStatus(jobj1.optString("同步状态")); model.setRevoke(jobj1.optString("撤销状态")); model.setSyncstatusState(String.valueOf(jobj1.optInt("SYNCSTATUSSTATE"))); model.setRevokeState(String.valueOf(jobj1.optInt("REVOKESTATE"))); model.setAmendsState(String.valueOf(jobj1.optInt("AMENDSSTATE"))); detailList.add(model); } } } else { Bundle b = new Bundle(); Message m = new Message(); m.what = 0; b.putString("message", message); m.setData(b); exceptionHandler.sendMessage(m); } } catch (Exception e) { e.printStackTrace(); } return detailList; } /** 下拉框API */ public class ListAPIRunnable implements Runnable { JSONObject js; String API; int what; public ListAPIRunnable(JSONObject js, String API, int what) { this.js = js; this.API = API; this.what = what; } @Override public void run() { Bundle b = new Bundle(); client = new WebClient(); try { String result = client.doPost(API, js.toString(), "application/json"); Message m = new Message(); m.what = what; b.putString("result", result); m.setData(b); handler.sendMessage(m); } catch (Exception e) { Message m = new Message(); // m.what = 2; b.putString("message", "网络异常"); m.setData(b); handler.sendMessage(m); e.printStackTrace(); } } } /** 初始化下拉框 */ public void SendOutWarehouse(String Data, int wath) { JSONObject js = null; try { js = new JSONObject(Data); } catch (JSONException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } thread = new HandlerThread("barcodeThread", 5); thread.start(); mHandler = new Handler(thread.getLooper()); String API = "http://" + ServerAddress_ip + ":" + ServerAddress_Port + Constants.serverAction + "/SelectCARPLATENAMES"; ListAPIRunnable APIData = new ListAPIRunnable(js, API, wath); mHandler.post(APIData); } /** 控件初始化逻辑 */ private void AllListeners() { // 获取当前时间 Date currentDate = new Date(); // 定义日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //记账日期赋值为当前日期 PostingDate_TextView.setText(sdf.format(currentDate)); //返回事件 backbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); //返回事件 backtext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); // 记账日期点击事件 PostingDateWorker.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isPostingDateSelected = true; initDate(); mTimePickerInfo.show(new Date(timeMillis)); } }); // 送货日期点击事件 DeliveryDateWorker.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isDeliveryDateSelected = true; initDate(); mTimePickerInfo.show(new Date(timeMillis)); } }); // 查询按钮点击事件 select_Button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //加载转圈 ProcessDialogUtils.showProcessDialog(DeliveryNoteInquiryActivity.this); //发货单信息查询 QueryInformation(); } }); // 撤销按钮点击事件 revoke_Button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //加载转圈 ProcessDialogUtils.showProcessDialog(DeliveryNoteInquiryActivity.this); // 锁 Boolean lock = true; // 过滤出多选选中数据 List Wherelist = steamfilter(); // 总单id数据集合 List ementy = new ArrayList<>(); // 遍历数据 for (DeliveryNoteInquiryItemModel item : Wherelist) { ementy.add(item.getSenddoutgoodsLogID()); // 当同步状态不为1时 if (!item.getSyncstatusState().equals("1")) { lock = false; // 跳出循环 break; } } if (!lock) { Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", "选中含有未同步成功数据,不可以撤销"); m.setData(b); exceptionHandler.sendMessage(m); return; } try { JSONObject js = new JSONObject(); js.put("accountCode", accountCode); js.put("userCode", barcode_print_userCode); js.put("userPassword", password); js.put("sessionKey", sessionkey); js.put("ementy", ementy.toString()); String API = "http://" + ServerAddress_ip + ":" + ServerAddress_Port + Constants.serverAction + "/RevokeInvoice"; thread = new HandlerThread("barcodeThread", 5); thread.start(); mHandler = new Handler(thread.getLooper()); ButtonAPIRunnable Data = new ButtonAPIRunnable(js, API, 4); mHandler.post(Data); } catch (Exception e) { Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", "网络连接异常"); m.setData(b); exceptionHandler.sendMessage(m); e.printStackTrace(); } } }); // 补推按钮点击事件 SupplementaryPush_Button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //加载转圈 ProcessDialogUtils.showProcessDialog(DeliveryNoteInquiryActivity.this); // 锁 Boolean lock = true; // 过滤出多选选中数据 List Wherelist = steamfilter(); // 总单id数据集合 List ementy = new ArrayList<>(); // 遍历数据 for (DeliveryNoteInquiryItemModel item : Wherelist) { ementy.add(item.getSenddoutgoodsLogID()); // 当同步状态为1时 if (item.getSyncstatusState().equals("1")) { lock = false; // 跳出循环 break; } } if (!lock) { Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", "选中含有同步成功数据,不可以补推"); m.setData(b); exceptionHandler.sendMessage(m); return; } try { JSONObject js = new JSONObject(); js.put("accountCode", accountCode); js.put("userCode", barcode_print_userCode); js.put("userPassword", password); js.put("sessionKey", sessionkey); js.put("ementy", ementy.toString()); String API = "http://" + ServerAddress_ip + ":" + ServerAddress_Port + Constants.serverAction + "/SupplementaryPush"; thread = new HandlerThread("barcodeThread", 5); thread.start(); mHandler = new Handler(thread.getLooper()); ButtonAPIRunnable Data = new ButtonAPIRunnable(js, API, 5); mHandler.post(Data); } catch (Exception e) { Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", "网络连接异常"); m.setData(b); exceptionHandler.sendMessage(m); e.printStackTrace(); } } }); // 删除按钮点击事件 Delete_Button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //加载转圈 ProcessDialogUtils.showProcessDialog(DeliveryNoteInquiryActivity.this); // 锁 Boolean lock = true; // 过滤出多选选中数据 List Wherelist = steamfilter(); // 总单id数据集合 List ementy = new ArrayList<>(); // 遍历数据 for (DeliveryNoteInquiryItemModel item : Wherelist) { ementy.add(item.getSenddoutgoodsLogID()); // 当同步状态为1时 if (item.getSyncstatusState().equals("1")) { lock = false; // 跳出循环 break; } } if (!lock) { Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", "选中含有同步成功数据,不可以删除"); m.setData(b); exceptionHandler.sendMessage(m); return; } try { JSONObject js = new JSONObject(); js.put("accountCode", accountCode); js.put("userCode", barcode_print_userCode); js.put("userPassword", password); js.put("sessionKey", sessionkey); js.put("ementy", ementy.toString()); String API = "http://" + ServerAddress_ip + ":" + ServerAddress_Port + Constants.serverAction + "/DestroyInvoice"; thread = new HandlerThread("barcodeThread", 5); thread.start(); mHandler = new Handler(thread.getLooper()); ButtonAPIRunnable Data = new ButtonAPIRunnable(js, API, 4); mHandler.post(Data); } catch (Exception e) { Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", "网络连接异常"); m.setData(b); exceptionHandler.sendMessage(m); e.printStackTrace(); } } }); } /**创建线程*/ Handler handler = new Handler() { @Override public void handleMessage(Message msg) { //关闭转圈 ProcessDialogUtils.closeProgressDilog(); switch (msg.what) { // 车牌号 case 0: List orderList0 = new ArrayList(); Order order0 = new Order(); order0.setOrderId(0); order0.setOrderNo("请选择"); orderList0.add(order0); Bundle b0 = msg.getData(); String result0 = b0.getString("result"); ObjectAssignment(result0, orderList0); LicensePlateNumber.setAdapter(orderspinnerAdapter); break; // 发出仓库 case 1: List orderList1 = new ArrayList(); Order order1 = new Order(); order1.setOrderId(0); order1.setOrderNo("请选择"); orderList1.add(order1); Bundle b1 = msg.getData(); String result1 = b1.getString("result"); ObjectAssignment(result1, orderList1); SendOutWarehouse.setAdapter(orderspinnerAdapter); break; //接收仓库 case 2: List orderList2 = new ArrayList(); Order order2 = new Order(); order2.setOrderId(0); order2.setOrderNo("请选择"); orderList2.add(order2); Bundle b2 = msg.getData(); String result2 = b2.getString("result"); ObjectAssignment(result2, orderList2); ReceivingWarehouse.setAdapter(orderspinnerAdapter); break; // 发货单信息 case 3: Bundle b3 = msg.getData(); String result3 = b3.getString("result"); detailList = ListObjectAssignment(result3); adapter = new DeliveryNoteInquiryItemAdapter(DeliveryNoteInquiryActivity.this, detailList); lstView.setAdapter(adapter); break; // 删除 撤销 case 4: try { Bundle b4 = msg.getData(); String result4 = b4.getString("result"); JSONObject jo = new JSONObject(result4); JSONObject jobj = jo.optJSONObject("d"); int status = jobj.optInt("Status"); String message = jobj.optString("Message"); Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", message); m.setData(b); exceptionHandler.sendMessage(m); //重新查询发货单信息 QueryInformation(); } catch (Exception e) { e.printStackTrace(); } break; // 补推 case 5: try { Bundle b5 = msg.getData(); String result5 = b5.getString("result"); JSONObject jo = new JSONObject(result5); JSONObject jobj = jo.optJSONObject("d"); int status = jobj.optInt("Status"); String message = jobj.optString("Message"); Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", message); m.setData(b); exceptionHandler.sendMessage(m); //重新查询发货单信息 QueryInformation(); } catch (Exception e) { e.printStackTrace(); } break; } } }; /** 过滤多选框选中 */ public List steamfilter() { List Wherelist = new ArrayList(); for (DeliveryNoteInquiryItemModel item : detailList) { if (item.CheckBoxFlag.booleanValue()) { Wherelist.add(item); } } return Wherelist; } /** 初始化日期变量 */ private void initDate() { timeMillis = System.currentTimeMillis(); mTimePickerInfo = new TimePickerInfo(DeliveryNoteInquiryActivity.this, TimePickerInfo.Type.YEAR_MONTH_DAY); mTimePickerInfo.setCyclic(true); mTimePickerInfo.setCancelable(true); mTimePickerInfo.setOnTimeSelectListener(new TimePickerInfo.OnTimeSelectListener() { @SuppressLint("SimpleDateFormat") @Override public void onTimeSelect(Date date) { // 存储当前选中的date SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd"); Date mSelectedDate = date; String selectedDate = dateFormater.format(mSelectedDate); if (isPostingDateSelected) { PostingDate_TextView.setText(selectedDate); isPostingDateSelected = false; } if (isDeliveryDateSelected) { DeliveryDate_TextView.setText(selectedDate); isDeliveryDateSelected = false; } } }); } /** 按钮点击API */ public class ButtonAPIRunnable implements Runnable { JSONObject js; String API; int what; public ButtonAPIRunnable(JSONObject js, String API, int what) { this.js = js; this.API = API; this.what = what; } @Override public void run() { Bundle b = new Bundle(); try { String result = client.doPost(API, js.toString(), "application/json"); Message m = new Message(); m.what = what; b.putString("result", result); m.setData(b); handler.sendMessage(m); } catch (Exception e) { Message m = new Message(); m.what = 0; b.putString("message", "网络异常"); m.setData(b); exceptionHandler.sendMessage(m); e.printStackTrace(); } } } /**发货单信息查询*/ public void QueryInformation() { try { JSONObject js = new JSONObject(); js.put("accountCode", accountCode); js.put("userCode", barcode_print_userCode); js.put("userPassword", password); js.put("sessionKey", sessionkey); JSONObject ementy = new JSONObject(); // 生产工号 ementy.put("ProductionID", edt_barcode.getText().toString()); // 发出仓库 Order SendOutWarehouseInfo = (Order) SendOutWarehouse.getSelectedItem(); ementy.put("SendOutWarehouse", String.valueOf(SendOutWarehouseInfo.getOrderId())); // 接受仓库 Order ReceivingWarehouseInfo = (Order) ReceivingWarehouse.getSelectedItem(); ementy.put("ReceivingWarehouse", String.valueOf(ReceivingWarehouseInfo.getOrderId())); // 车牌号 Order LicensePlateNumberInfo = (Order) LicensePlateNumber.getSelectedItem(); ementy.put("LicensePlateNumber", String.valueOf(LicensePlateNumberInfo.getOrderId())); // 记账日期 ementy.put("PostingDate", PostingDate_TextView.getText().toString()); // 送货日期 ementy.put("DeliveryDate", DeliveryDate_TextView.getText().toString()); // 同步状态 Order classifyInfo = (Order) spinnerSynchronizationStatus.getSelectedItem(); ementy.put("SynchronizationStatus", String.valueOf(classifyInfo.getOrderId())); // 撤销状态 Order revokeInfo = (Order) revoke.getSelectedItem(); ementy.put("Revoke", String.valueOf(revokeInfo.getOrderId())); js.put("ementy", ementy); String API = "http://" + ServerAddress_ip + ":" + ServerAddress_Port + Constants.serverAction + "/SelectDeliveryNoteInquiry"; thread = new HandlerThread("barcodeThread", 5); thread.start(); mHandler = new Handler(thread.getLooper()); ButtonAPIRunnable Data = new ButtonAPIRunnable(js, API, 3); mHandler.post(Data); } catch (Exception e) { Message m = new Message(); m.what = 0; Bundle b = new Bundle(); b.putString("message", "网络连接异常"); m.setData(b); exceptionHandler.sendMessage(m); e.printStackTrace(); } } /**信息提示 */ Handler exceptionHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: //关闭转圈 ProcessDialogUtils.closeProgressDilog(); if (mHandler != null) { mHandler.removeCallbacksAndMessages(null); mHandler.getLooper().quit(); } Bundle b1 = msg.getData(); String message1 = b1.getString("message"); CommonUtil.showRepeatDialog(message1, DeliveryNoteInquiryActivity.this); break; } } }; }