commit 4669b3a3d6d78ae564325b30c02d564119fa7b55 Author: wanghao Date: Tue Jan 21 15:11:12 2025 +0800 页面 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..4f89d88 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +haiwei-mom \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..a058051 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0f86676 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..9667468 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,59 @@ +plugins { + id 'com.android.application' +} + +android { + namespace 'com.example.haiwei_mom' + compileSdk 33 + + defaultConfig { + applicationId "com.example.haiwei_mom" + minSdk 26 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + buildFeatures { + viewBinding true + dataBinding true + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + +} + +dependencies { + implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0")) + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'com.google.android.material:material:1.8.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.annotation:annotation:1.6.0' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + implementation 'com.lzy.net:okgo:3.0.4' + // https://mvnrepository.com/artifact/com.google.code.gson/gson + implementation 'com.google.code.gson:gson:2.10.1' + // https://mvnrepository.com/artifact/com.contrarywind/Android-PickerView +// implementation 'com.contrarywind:Android-PickerView:4.1.9' + // https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 + implementation 'com.alibaba.fastjson2:fastjson2:2.0.45' + + // https://mvnrepository.com/artifact/com.github.bumptech.glide/glide + implementation 'com.github.bumptech.glide:glide:4.16.0' + implementation 'io.github.scwang90:refresh-layout-kernel:2.0.6' //核心必须依赖 + implementation 'io.github.scwang90:refresh-footer-classics:2.0.6' //经典加载 +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/haiwei_mom/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/haiwei_mom/ExampleInstrumentedTest.java new file mode 100644 index 0000000..3e0c6f3 --- /dev/null +++ b/app/src/androidTest/java/com/example/haiwei_mom/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.haiwei_mom; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.haiwei_mom", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..da2881d --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/HomePageActivity.java b/app/src/main/java/com/example/haiwei_mom/HomePageActivity.java new file mode 100644 index 0000000..e5b4a30 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/HomePageActivity.java @@ -0,0 +1,106 @@ +package com.example.haiwei_mom; + +import android.content.Intent; +import android.os.Bundle; + +import androidx.databinding.DataBindingUtil; + +import com.example.haiwei_mom.adapter.HomeMenuAdapter; +import com.example.haiwei_mom.adapter.ItemClickCall; +import com.example.haiwei_mom.base.BaseActivity; +import com.example.haiwei_mom.base.MyRecultCall; +import com.example.haiwei_mom.base.MyResult; +import com.example.haiwei_mom.data.MenuBeen; +import com.example.haiwei_mom.data.PdaRouters; +import com.example.haiwei_mom.databinding.ActivityHomePageBinding; +import com.example.haiwei_mom.uitls.SharedPreferencesUtils; +import com.example.haiwei_mom.wms.product.BindVehicleActivity; +import com.example.haiwei_mom.wms.product.ProductInActivity; +import com.example.haiwei_mom.wms.product.ProductOutActivity; +import com.example.haiwei_mom.wms.raw.RawReturnActivity; +import com.example.haiwei_mom.wms.semi.SemiInActivity; +import com.example.haiwei_mom.wms.semi.SemiOutActivity; +import com.google.gson.reflect.TypeToken; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class HomePageActivity extends BaseActivity implements ItemClickCall { + private List menuList; + private HomeMenuAdapter adapter; + private Map map; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActivityHomePageBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_home_page); + adapter = new HomeMenuAdapter(this, this); + binding.setAdapter(adapter); + initRequest(); + initMenuMap(); + + + } + + private void initMenuMap() { + map = new HashMap<>(); + map.put("半成品入库", SemiInActivity.class); + map.put("半成品出库", SemiOutActivity.class); + map.put("入库工装绑定", BindVehicleActivity.class); + map.put("成品批量入库", ProductInActivity.class); + map.put("成品出库", ProductOutActivity.class); + map.put("原材料入库", RawReturnActivity.class); + map.put("原材料出库", RawReturnActivity.class); + map.put("原材料盘点", RawReturnActivity.class); + map.put("原材料退库", RawReturnActivity.class); + } + + private void initRequest() { + menuList = new ArrayList<>(); + OkGo.get(url + "/system/menu/getPdaRouters").tag(this) + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode() == 200) { + List list = gson.fromJson(body.getDataJson(), new TypeToken>() { + }.getType()); + list.forEach(t -> { + MenuBeen menuBeen = new MenuBeen(); + menuBeen.setMenuName(t.getMenuName()); + menuBeen.setType(true); + menuList.add(menuBeen); + var children = t.getChildren(); + if (children != null) { + children.forEach(t1 -> { + MenuBeen menuBeen1 = new MenuBeen(); + menuBeen1.setMenuName(t1.getMenuName()); + menuBeen1.setType(false); + menuList.add(menuBeen1); + }); + } + }); + adapter.setDataList(menuList); + adapter.notifyDataSetChanged(); + } else { + myToastUitls.show(body.getMsg()); + } + } + }); + } + + + @Override + public void onClick(int position) { + var menuName = menuList.get(position).getMenuName(); + var cls = map.get(menuName); + if (cls == null) return; + var intent = new Intent(this, cls); + startActivity(intent); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/MainActivity.java b/app/src/main/java/com/example/haiwei_mom/MainActivity.java new file mode 100644 index 0000000..3075128 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/MainActivity.java @@ -0,0 +1,100 @@ +package com.example.haiwei_mom; + +import androidx.databinding.DataBindingUtil; + +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.example.haiwei_mom.base.BaseActivity; +import com.example.haiwei_mom.base.MyApplication; +import com.example.haiwei_mom.base.MyRecultCall; +import com.example.haiwei_mom.base.MyResult; +import com.example.haiwei_mom.data.LoginTenantVo; +import com.example.haiwei_mom.data.LoginVm; +import com.example.haiwei_mom.databinding.ActivityMainBinding; +import com.example.haiwei_mom.uitls.SharedPreferencesUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +import java.util.List; + +import okhttp3.RequestBody; + +public class MainActivity extends BaseActivity { + private LoginVm loginVm; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); + loginVm = new LoginVm(); + boolean isRemember = SharedPreferencesUtils.getboolean("isRemember", true); + if (isRemember) { + loginVm.setUsername(SharedPreferencesUtils.getstring("user", "admin")); + loginVm.setPassword(SharedPreferencesUtils.getstring("pass", "admin123")); + loginVm.setRemember(isRemember); + } + binding.setUser(loginVm); + + } + + private void getTenantList() { + OkGo.get(url + "/auth/tenant/list") + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode()==200){ + LoginTenantVo loginTenantVo = gson.fromJson(body.getDataJson(), LoginTenantVo.class); + var voList = loginTenantVo.getVoList(); + loginVm.setVoList(voList); + } + } + + }); + } + + @Override + protected void onResume() { + super.onResume(); + getTenantList(); + } + + public void login_click(View view) { + + + String pass = loginVm.getPassword(); + String name = loginVm.getUsername(); + if (pass == null || name == null || pass.isEmpty() || name.isEmpty()) return; + OkGo.post(url + "/auth/pdaLogin") + .upRequestBody(RequestBody.create(JSON, gson.toJson(loginVm))) + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode() == 200) { + String accessToken = JSONObject.parseObject(body.getDataJson()).get("access_token").toString(); + // SharedPreferencesUtils.putstring("access_token", "Bearer "+accessToken); + MyApplication.getApplication().setAccessToken("Bearer "+accessToken); + boolean remember = loginVm.isRemember(); + if (remember) { + SharedPreferencesUtils.putboolean("isRemember", remember); + SharedPreferencesUtils.putstring("user", name); + SharedPreferencesUtils.putstring("pass", pass); + } + Intent intent = new Intent(MainActivity.this, HomePageActivity.class); + startActivity(intent); + finish(); + } + + + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/adapter/BindVehicleAdapter.java b/app/src/main/java/com/example/haiwei_mom/adapter/BindVehicleAdapter.java new file mode 100644 index 0000000..4a900e9 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/adapter/BindVehicleAdapter.java @@ -0,0 +1,66 @@ +package com.example.haiwei_mom.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.haiwei_mom.R; +import com.example.haiwei_mom.databinding.ItemBindVehicleBinding; + +import java.util.List; + +public class BindVehicleAdapter extends RecyclerView.Adapter { + private Context context; + private LayoutInflater inflater; + private ItemClickCall itemClickCall; + + public BindVehicleAdapter(Context context, ItemClickCall itemClickCall) { + this.context = context; + this.itemClickCall = itemClickCall; + inflater=LayoutInflater.from(context); + } + + private List list; + + public void setList(List list) { + this.list = list; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemBindVehicleBinding binding=DataBindingUtil.inflate(inflater, R.layout.item_bind_vehicle,parent,false); + return new MyViewHolder(binding); + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + var binding = holder.binding; + binding.setIndex(String.valueOf(position+1)); + binding.setItem(list.get(position)); + + } + + @Override + public int getItemCount() { + return list==null?0:list.size(); + } + + public class MyViewHolder extends RecyclerView.ViewHolder{ + private ItemBindVehicleBinding binding; + + public MyViewHolder(ItemBindVehicleBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + } + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/adapter/HomeMenuAdapter.java b/app/src/main/java/com/example/haiwei_mom/adapter/HomeMenuAdapter.java new file mode 100644 index 0000000..1e783ec --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/adapter/HomeMenuAdapter.java @@ -0,0 +1,98 @@ +package com.example.haiwei_mom.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.haiwei_mom.R; +import com.example.haiwei_mom.databinding.ItemMenuBinding; +import com.example.haiwei_mom.databinding.ItemMenuPBinding; +import com.example.haiwei_mom.data.MenuBeen; + +import java.util.List; + +/** + * @author wanghao + * @date 2024/2/18 16:06 + */ +public class HomeMenuAdapter extends RecyclerView.Adapter { + private List dataList; + private LayoutInflater inflater; + private Context context; + private ItemClickCall clickCall; + + public HomeMenuAdapter(Context context,ItemClickCall clickCall) { + this.context = context; + inflater=LayoutInflater.from(context); + this.clickCall=clickCall; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + + if (viewType == 1) { + ItemMenuPBinding binding = DataBindingUtil.inflate(inflater, R.layout.item_menu_p, parent, false); + return new ViewHolder1(binding); + } else { + ItemMenuBinding binding = DataBindingUtil.inflate(inflater, R.layout.item_menu, parent, false); + return new ViewHolder2(binding); + } + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + var data = dataList.get(position); + var menuName = data.getMenuName(); + if (holder instanceof ViewHolder1) { + ViewHolder1 viewHolder1 = (ViewHolder1) holder; + viewHolder1.binding.setName(menuName); + viewHolder1.binding.executePendingBindings(); + } else if (holder instanceof ViewHolder2) { + ViewHolder2 viewHolder2 = (ViewHolder2) holder; + viewHolder2.binding.itemMenu.setOnClickListener(v -> { + clickCall.onClick(position); + }); + viewHolder2.binding.setName(menuName); + viewHolder2.binding.executePendingBindings(); + } + } + + @Override + public int getItemCount() { + return dataList==null?0:dataList.size(); + } + + @Override + public int getItemViewType(int position) { + var data = dataList.get(position); + return data.isType()? 1 :2 ; + + } + + public static class ViewHolder1 extends RecyclerView.ViewHolder { + private ItemMenuPBinding binding; + + public ViewHolder1(ItemMenuPBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } + + public static class ViewHolder2 extends RecyclerView.ViewHolder { + private ItemMenuBinding binding; + + public ViewHolder2(ItemMenuBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/adapter/ItemClickCall.java b/app/src/main/java/com/example/haiwei_mom/adapter/ItemClickCall.java new file mode 100644 index 0000000..58e72c4 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/adapter/ItemClickCall.java @@ -0,0 +1,9 @@ +package com.example.haiwei_mom.adapter; + +/** + * @author wanghao + * @date 2024/1/31 16:27 + */ +public interface ItemClickCall { + void onClick(int position); +} diff --git a/app/src/main/java/com/example/haiwei_mom/base/BaseActivity.java b/app/src/main/java/com/example/haiwei_mom/base/BaseActivity.java new file mode 100644 index 0000000..191015f --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/base/BaseActivity.java @@ -0,0 +1,158 @@ +package com.example.haiwei_mom.base; + +import android.Manifest; +import android.annotation.SuppressLint; +import android.app.ProgressDialog; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.provider.MediaStore; +import android.util.Log; +import android.view.View; +import android.view.Window; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import androidx.core.content.FileProvider; + +import com.example.haiwei_mom.broadcast.MyScannerCall; +import com.example.haiwei_mom.broadcast.MyScannerReceiver; +import com.example.haiwei_mom.uitls.MyToastUitls; +import com.google.gson.Gson; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import okhttp3.MediaType; + +public class BaseActivity extends AppCompatActivity implements MyScannerCall { + + public static final int CAMERA_PHOTO = 1; + public static String url = "http://10.11.180.67:6080"; + public ProgressDialog dialog; + public Gson gson; + public MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + private MyScannerReceiver myReceiver; + public Context context; + public MyToastUitls myToastUitls; + @SuppressLint("SimpleDateFormat") + public SimpleDateFormat format= new SimpleDateFormat( "yyyyMMdd_HHmmss"); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.e("TAG", this.getLocalClassName() ); + gson = new Gson(); + this.context=this; + initDialog(); + initSan(); + myToastUitls=new MyToastUitls(this); + } + + + private void initDialog() { + dialog = new ProgressDialog(this); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setCanceledOnTouchOutside(false); + dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + dialog.setMessage("请求网络中..."); + } + + private void initSan() { + myReceiver = new MyScannerReceiver(this); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction("com.rfid.SCAN"); + registerReceiver(myReceiver, intentFilter); + + } + + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(myReceiver); + } + + public void titleToolClick(View view) { + finish(); + } + + + + // 拍照 + private Uri img_uri; + private File outputImage; + public void teke_photo() throws IOException { + outputImage = new File(getExternalCacheDir(), "output_imgage" + format.format(new Date()) + ".jpg"); + outputImage.createNewFile(); + if (Build.VERSION.SDK_INT >= 24) { + img_uri = FileProvider.getUriForFile(this, "com.example.haiwei_mom", outputImage); + } else { + img_uri = Uri.fromFile(outputImage); + } + if (PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)) { + Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); + intent.putExtra(MediaStore.EXTRA_OUTPUT, img_uri); + startActivityForResult(intent, CAMERA_PHOTO); + } else { + // 提示用户开户权限 拍照和读写sd卡权限 + String[] perms = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; + ActivityCompat.requestPermissions(this, perms, CAMERA_PHOTO); + } + } + // 拍照的回调 + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + + Bitmap compressedImageBitmap = BitmapFactory.decodeFile(outputImage.getPath()); + // 选择压缩质量 + int quality = 10; + // 创建一个字节数组输出流 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + // 将Bitmap压缩成JPEG格式,并将压缩后的数据保存到字节数组输出流中 + compressedImageBitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos); + // 将字节数组输出流中的数据转换为字节数组 + byte[] compressedImageData = baos.toByteArray(); + // 清空字节数组输出流 + baos.reset(); + // 将压缩后的字节数组保存到文件中 + FileOutputStream fos = null; + try { + fos = new FileOutputStream(outputImage); + fos.write(compressedImageData); + fos.flush(); + fos.close(); + + tekePhotoResult( img_uri.toString(),outputImage); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + } + public void tekePhotoResult(String fileUrl,File file){ + + } + + + @Override + public void getScannerData(String data) { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/base/MyApplication.java b/app/src/main/java/com/example/haiwei_mom/base/MyApplication.java new file mode 100644 index 0000000..b614dc6 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/base/MyApplication.java @@ -0,0 +1,75 @@ +package com.example.haiwei_mom.base; + +import android.app.Application; + + +import com.example.haiwei_mom.uitls.SharedPreferencesUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.cache.CacheEntity; +import com.lzy.okgo.cache.CacheMode; +import com.lzy.okgo.cookie.CookieJarImpl; +import com.lzy.okgo.cookie.store.MemoryCookieStore; +import com.lzy.okgo.https.HttpsUtils; +import com.lzy.okgo.interceptor.HttpLoggingInterceptor; +import com.lzy.okgo.model.HttpHeaders; + +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; + +import okhttp3.OkHttpClient; + + +/** + * @author: wangh + * @description: + * @date: 2019/06/11-13:01 + */ +public class MyApplication extends Application { + + public static MyApplication application; + // access_token + private String accessToken; + + @Override + public void onCreate() { + super.onCreate(); + application = this; + SharedPreferencesUtils.init(getApplicationContext(), "myapp"); + + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + okGoBase(); + } + + public static MyApplication getApplication() { + return application; + } + + // OKGO 初始化 + private void okGoBase() { + HttpHeaders headers = new HttpHeaders(); + headers.put("Authorization", accessToken); + headers.put("clientid", "428a8310cd442757ae699df5d894f051"); + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo"); + loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY); // log打印级别,决定了log显示的详细程度 + loggingInterceptor.setColorLevel(Level.SEVERE); // log颜色级别,决定了log在控制台显示的颜色 + HttpsUtils.SSLParams sslParams1 = HttpsUtils.getSslSocketFactory(); // 方法一:信任所有证书,不安全有风险 + builder.sslSocketFactory(sslParams1.sSLSocketFactory, sslParams1.trustManager); + builder.addInterceptor(loggingInterceptor); + builder.readTimeout(3000, TimeUnit.MILLISECONDS); // 全局的读取超时时间 + builder.writeTimeout(3000, TimeUnit.MILLISECONDS); // 全局的写入超时时间 + builder.connectTimeout(3000, TimeUnit.MILLISECONDS); // 全局的连接超时时间 + builder.cookieJar(new CookieJarImpl(new MemoryCookieStore())); // 使用内存保持cookie,app退出后,cookie消失 + OkGo.getInstance().init(this).setOkHttpClient(builder.build()) // 建议设置OkHttpClient,不设置将使用默认的 + .setCacheMode(CacheMode.NO_CACHE) // 全局统一缓存模式,默认不使用缓存,可以不传 + .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) // 全局统一缓存时间,默认永不过期,可以不传 + .setRetryCount(3) + .addCommonHeaders(headers); + + + } + +} diff --git a/app/src/main/java/com/example/haiwei_mom/base/MyRecultCall.java b/app/src/main/java/com/example/haiwei_mom/base/MyRecultCall.java new file mode 100644 index 0000000..8e7163b --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/base/MyRecultCall.java @@ -0,0 +1,68 @@ +package com.example.haiwei_mom.base; + +import android.app.ProgressDialog; +import android.content.Context; +import android.util.Log; +import android.widget.Toast; + +import com.google.gson.Gson; +import com.lzy.okgo.callback.AbsCallback; +import com.lzy.okgo.model.Response; +import com.lzy.okgo.request.base.Request; + +import okhttp3.ResponseBody; + +/** + * @author wanghao + * @date 2023/11/20 14:27 + */ +public abstract class MyRecultCall extends AbsCallback { + private ProgressDialog dialog; + private Context context; + + public MyRecultCall(ProgressDialog dialog, Context context) { + this.dialog = dialog; + this.context = context; + } + @Override + public void onSuccess(Response response) { + dialog.dismiss(); + // Log.e("网络请求情况", "onSuccess:"); + } + @Override + public MyResult convertResponse(okhttp3.Response response) throws Throwable { + ResponseBody body = response.body(); + if (body == null) return null; + Gson gson = new Gson(); + MyResult resust = gson.fromJson(body.string(), MyResult.class); + resust.setDataJson(gson.toJson(resust.getData())); + return resust; + } + + + + + + @Override + public void onError(Response response) { + super.onError(response); + dialog.dismiss(); + Log.e("网络请求情况", "onError:" ); + Toast.makeText(context, "网络连接错误", Toast.LENGTH_LONG).show(); + + } + + @Override + public void onStart(Request request) { + super.onStart(request); + dialog.show(); + // Log.e("网络请求情况", "onStart:" ); + } + + @Override + public void onFinish() { + super.onFinish(); + dialog.dismiss(); + Log.e("网络请求情况", "onFinish:" ); + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/base/MyResult.java b/app/src/main/java/com/example/haiwei_mom/base/MyResult.java new file mode 100644 index 0000000..64dcc9d --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/base/MyResult.java @@ -0,0 +1,62 @@ +package com.example.haiwei_mom.base; + +/** + * @author wanghao + * @date 2023/12/21 15:31 + */ +public class MyResult { + private int code; + private String msg; + private Object data; + private String dataJson; + private Object rows; + private int total; + + public String getDataJson() { + return dataJson; + } + + public void setDataJson(String dataJson) { + this.dataJson = dataJson; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public Object getRows() { + return rows; + } + + public void setRows(Object rows) { + this.rows = rows; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/broadcast/MyScannerCall.java b/app/src/main/java/com/example/haiwei_mom/broadcast/MyScannerCall.java new file mode 100644 index 0000000..11e44b8 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/broadcast/MyScannerCall.java @@ -0,0 +1,5 @@ +package com.example.haiwei_mom.broadcast; + +public interface MyScannerCall { + void getScannerData(String data); +} diff --git a/app/src/main/java/com/example/haiwei_mom/broadcast/MyScannerReceiver.java b/app/src/main/java/com/example/haiwei_mom/broadcast/MyScannerReceiver.java new file mode 100644 index 0000000..8b7dbba --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/broadcast/MyScannerReceiver.java @@ -0,0 +1,20 @@ +package com.example.haiwei_mom.broadcast; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class MyScannerReceiver extends BroadcastReceiver { + private MyScannerCall myScannerCall; + + public MyScannerReceiver(MyScannerCall myScannerCall) { + this.myScannerCall = myScannerCall; + } + + @Override + public void onReceive(Context context, Intent intent) { + + String data = intent.getStringExtra("scannerdata"); + myScannerCall.getScannerData(data); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/data/LoginTenantVo.java b/app/src/main/java/com/example/haiwei_mom/data/LoginTenantVo.java new file mode 100644 index 0000000..0ff8f04 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/data/LoginTenantVo.java @@ -0,0 +1,88 @@ +package com.example.haiwei_mom.data; + + + +import java.util.List; + +/** + * 登录租户对象 + * + * @author Michelle.Chung + */ + +public class LoginTenantVo { + + /** + * 租户开关 + */ + private Boolean tenantEnabled; + + /** + * 租户对象列表 + */ + private List voList; + + public Boolean getTenantEnabled() { + return tenantEnabled; + } + + public void setTenantEnabled(Boolean tenantEnabled) { + this.tenantEnabled = tenantEnabled; + } + + public List getVoList() { + return voList; + } + + public void setVoList(List voList) { + this.voList = voList; + } + + /** + * 租户列表 + * + * @author zhujie + */ + + public static class TenantListVo { + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 企业名称 + */ + private String companyName; + + /** + * 域名 + */ + private String domain; + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/data/LoginVm.java b/app/src/main/java/com/example/haiwei_mom/data/LoginVm.java new file mode 100644 index 0000000..5d56bc7 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/data/LoginVm.java @@ -0,0 +1,75 @@ +package com.example.haiwei_mom.data; + +import android.view.View; +import android.widget.AdapterView; + +import androidx.databinding.BaseObservable; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wanghao + * @date 2023/12/21 14:00 + */ +public class LoginVm extends BaseObservable { + private String username; + private String password; + private boolean remember; + String clientId ="428a8310cd442757ae699df5d894f051"; + String grantType = "password"; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + notifyChange(); + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + notifyChange(); + } + + + public boolean isRemember() { + return remember; + } + + public void setRemember(boolean remember) { + this.remember = remember; + notifyChange(); + } + + + private List voList; + private List names; + + public List getVoList() { + return voList; + } + + public void setVoList(List voList) { + this.voList = voList; + names = new ArrayList<>(voList.size()); + voList.forEach(t -> names.add(t.getCompanyName())); + notifyChange(); + } + + public List getNames() { + return names; + } + + private String tenantId; + + public void onItemSelected(AdapterView parent, View view, int position, long id) { + + tenantId = voList.get(position).getTenantId(); + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/data/MenuBeen.java b/app/src/main/java/com/example/haiwei_mom/data/MenuBeen.java new file mode 100644 index 0000000..bb0dd51 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/data/MenuBeen.java @@ -0,0 +1,26 @@ +package com.example.haiwei_mom.data; + +/** + * @author wanghao + * @date 2024/2/18 15:41 + */ +public class MenuBeen { + private String menuName; + private boolean type; + + public String getMenuName() { + return menuName; + } + + public void setMenuName(String menuName) { + this.menuName = menuName; + } + + public boolean isType() { + return type; + } + + public void setType(boolean type) { + this.type = type; + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/data/PdaRouters.java b/app/src/main/java/com/example/haiwei_mom/data/PdaRouters.java new file mode 100644 index 0000000..127e1dc --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/data/PdaRouters.java @@ -0,0 +1,29 @@ +package com.example.haiwei_mom.data; + +import java.util.List; + +/** + * @author wanghao + * @date 2024/2/18 15:57 + */ +public class PdaRouters { + private String menuName; + + private List children; + + public String getMenuName() { + return menuName; + } + + public void setMenuName(String menuName) { + this.menuName = menuName; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/data/RawReturnSubmitBeen.java b/app/src/main/java/com/example/haiwei_mom/data/RawReturnSubmitBeen.java new file mode 100644 index 0000000..156e731 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/data/RawReturnSubmitBeen.java @@ -0,0 +1,78 @@ +package com.example.haiwei_mom.data; + + +import java.math.BigDecimal; + +/** + * 退库工单业务对象 wms_return_order + * + * @author LionLi + * @date 2025-01-09 + */ + +public class RawReturnSubmitBeen { + + + /** + * 物料ID + */ + private Long materialId; + + /** + * 物料大类 + */ + private String materialCategories; + + /** + * 批次条码 + */ + private String batchCode; + + /** + * 计划数量 + */ + private BigDecimal planAmount; + + /** + * 仓库ID + */ + private Long warehouseId; + + /** + * 计划退库库位 + */ + private String planLocationCode; + + private Long outstockRecordId;//修改表用 + + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public void setMaterialCategories(String materialCategories) { + this.materialCategories = materialCategories; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public void setPlanAmount(BigDecimal planAmount) { + this.planAmount = planAmount; + } + + public void setWarehouseId(Long warehouseId) { + this.warehouseId = warehouseId; + } + + public void setPlanLocationCode(String planLocationCode) { + this.planLocationCode = planLocationCode; + } + + public void setOutstockRecordId(Long outstockRecordId) { + this.outstockRecordId = outstockRecordId; + } + + +} diff --git a/app/src/main/java/com/example/haiwei_mom/data/RawReturnVo.java b/app/src/main/java/com/example/haiwei_mom/data/RawReturnVo.java new file mode 100644 index 0000000..d64c04e --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/data/RawReturnVo.java @@ -0,0 +1,99 @@ +package com.example.haiwei_mom.data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Observable; + +public class RawReturnVo extends Observable { + + private String batchCode; + private Long outstockRecordId; + /** + * 物料id + */ + + private Long materialId; + + /** + * 库位编码 + */ + + private String locationCode; + + /** + * 出库数量 + */ + + private double outstockQty; + + /** + * 物料信息 + */ + private String materialCode; + private String materialName; + private String materialUnit; + private String materialSpec; + private String returnFlag; + private String planAmount; + private String materialCategories; + private Long warehouseId; + public String getBatchCode() { + return batchCode; + } + + public Long getMaterialId() { + return materialId; + } + + public String getMaterialCategories() { + return materialCategories; + } + + public Long getOutstockRecordId() { + return outstockRecordId; + } + + public String getLocationCode() { + return locationCode; + } + + public double getOutstockQty() { + return outstockQty; + } + + public String getMaterialCode() { + return materialCode; + } + + public String getMaterialName() { + return materialName; + } + + public String getMaterialUnit() { + return materialUnit; + } + + public String getMaterialSpec() { + return materialSpec; + } + + public String getReturnFlag() { + return returnFlag; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getPlanAmount() { + return planAmount; + } + + public void setPlanAmount(String planAmount) { + this.planAmount = planAmount; + } + + public Long getWarehouseId() { + return warehouseId; + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/data/SemiInVo.java b/app/src/main/java/com/example/haiwei_mom/data/SemiInVo.java new file mode 100644 index 0000000..681466b --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/data/SemiInVo.java @@ -0,0 +1,7 @@ +package com.example.haiwei_mom.data; + +import java.util.Observable; + +public class SemiInVo extends Observable { + // private String +} diff --git a/app/src/main/java/com/example/haiwei_mom/uitls/MyToastUitls.java b/app/src/main/java/com/example/haiwei_mom/uitls/MyToastUitls.java new file mode 100644 index 0000000..cff3ea7 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/uitls/MyToastUitls.java @@ -0,0 +1,34 @@ +package com.example.haiwei_mom.uitls; + + + +import android.content.Context; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.haiwei_mom.R; + + +public class MyToastUitls { + private Context context; + private TextView textView; + private Toast toast; + public MyToastUitls(Context context) { + this.context = context; + + toast = new Toast(context); + View view= LayoutInflater.from(context).inflate(R.layout.my_toast,null,false); + textView=view.findViewById(R.id.ErrorTips); + toast.setView(view); + toast.setDuration(Toast.LENGTH_SHORT); + toast.setGravity(Gravity.CENTER,0,0); + } + + public void show(String msg){ + textView.setText(msg); + toast.show(); + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/uitls/SharedPreferencesUtils.java b/app/src/main/java/com/example/haiwei_mom/uitls/SharedPreferencesUtils.java new file mode 100644 index 0000000..de0858f --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/uitls/SharedPreferencesUtils.java @@ -0,0 +1,86 @@ +package com.example.haiwei_mom.uitls; + +import android.content.Context; +import android.content.SharedPreferences; + +/** + * Created by wang 18/7/5 + */ + +public class SharedPreferencesUtils { + private static SharedPreferences sharedPreferences; + private static SharedPreferences.Editor edit; + + public static void init(Context context, String name) { + sharedPreferences = context.getSharedPreferences(name, context.MODE_PRIVATE); + edit = sharedPreferences.edit(); + edit.commit(); + } + + public static void putstring(String key, String value) { + if (edit != null) { + edit.putString(key, value); + edit.commit(); + } + } + public static void putInt(String key, int value) { + if (edit != null) { + edit.putInt(key, value); + edit.commit(); + } + } + + public static int getInt(String key, int value) { + if (sharedPreferences != null) { + return sharedPreferences.getInt(key,value); + } + return 0; + } + + + public static void putboolean(String key, boolean value) { + if (edit != null) { + edit.putBoolean(key, value); + edit.commit(); + } + } + + /** + * 取得方法 + */ + + public static String getstring(String key, String deaflut) { + if (sharedPreferences != null) { + return sharedPreferences.getString(key, deaflut); + } + return ""; + } + + public static boolean getboolean(String key, boolean aaa) { + if (sharedPreferences != null) { + boolean aBoolean = sharedPreferences.getBoolean(key, aaa); + return aBoolean; + } + return aaa; + } + + /** + * remo + */ + public static void removeKey(String key) { + if (edit != null) { + edit.remove(key); + edit.commit(); + } + } + public static void Clean() { + //清空数据 + try { + edit.clear(); + edit.commit(); + }catch (Exception e){ + e.printStackTrace(); + } + + } +} diff --git a/app/src/main/java/com/example/haiwei_mom/wms/product/BindVehicleActivity.java b/app/src/main/java/com/example/haiwei_mom/wms/product/BindVehicleActivity.java new file mode 100644 index 0000000..91ea100 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/wms/product/BindVehicleActivity.java @@ -0,0 +1,87 @@ +package com.example.haiwei_mom.wms.product; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableInt; + +import android.annotation.SuppressLint; +import android.os.Bundle; +import android.util.Log; +import android.view.View; + +import com.example.haiwei_mom.R; +import com.example.haiwei_mom.adapter.BindVehicleAdapter; +import com.example.haiwei_mom.adapter.ItemClickCall; +import com.example.haiwei_mom.base.BaseActivity; +import com.example.haiwei_mom.base.MyRecultCall; +import com.example.haiwei_mom.base.MyResult; +import com.example.haiwei_mom.databinding.ActivityBindVehicleBinding; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +import java.util.ArrayList; +import java.util.List; + +public class BindVehicleActivity extends BaseActivity implements ItemClickCall { + private ActivityBindVehicleBinding binding; + private ArrayList list; + private BindVehicleAdapter adapter; + private ObservableInt listSize; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = DataBindingUtil.setContentView(this, R.layout.activity_bind_vehicle); + list = new ArrayList<>(); + listSize = new ObservableInt(); + binding.setSize(listSize); + adapter = new BindVehicleAdapter(this, this); + adapter.setList(list); + binding.setAdapter(adapter); + + } + + @SuppressLint("NotifyDataSetChanged") + @Override + public void getScannerData(String data) { + super.getScannerData(data); + var text = binding.bindVehicleCode.getText().toString(); + if (text.isEmpty()) { + binding.bindVehicleCode.setText(data); + return; + } + if (list.contains(data)) { + return; + } + Log.e("TAG", "getScannerData:" + listSize.get()); + list.add(data); + adapter.notifyDataSetChanged(); + listSize.set(list.size()); + } + + @SuppressLint("NotifyDataSetChanged") + @Override + public void onClick(int position) { + list.remove(position); + adapter.notifyDataSetChanged(); + listSize.set(list.size()); + } + + public void bindVehicleSubmit(View view) { + OkGo.post(url + "/wms/pda/product/bindVehicleSubmit") + .params("vehicleCode", binding.bindVehicleCode.getText().toString()) + .addUrlParams("productList", list) + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode() == 200) { + finish(); + return; + } + myToastUitls.show(body.getMsg()); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/wms/product/ProductInActivity.java b/app/src/main/java/com/example/haiwei_mom/wms/product/ProductInActivity.java new file mode 100644 index 0000000..84a40fa --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/wms/product/ProductInActivity.java @@ -0,0 +1,69 @@ +package com.example.haiwei_mom.wms.product; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; + +import android.annotation.SuppressLint; +import android.os.Bundle; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.widget.EditText; + +import com.example.haiwei_mom.R; +import com.example.haiwei_mom.base.BaseActivity; +import com.example.haiwei_mom.base.MyRecultCall; +import com.example.haiwei_mom.base.MyResult; +import com.example.haiwei_mom.databinding.ActivityProductInBinding; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +public class ProductInActivity extends BaseActivity { + + @SuppressLint("ClickableViewAccessibility") + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActivityProductInBinding binding; + binding = DataBindingUtil.setContentView(this, R.layout.activity_product_in); + var productInCode = binding.productInCode; + productInCode.setOnTouchListener((v, event) -> { + final int DRAWABLE_RIGHT = 2; + if (event.getAction() == MotionEvent.ACTION_UP) { + // 获取触摸的位置 + int x = (int) event.getX(); + // 获取图标的边界 + int drawableRightWidth = productInCode.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width(); + int drawableRightStart = (int) (productInCode.getWidth() - productInCode.getPaddingRight() - drawableRightWidth); + Log.e("TAG", "onCreate1:" + drawableRightWidth); + Log.e("TAG", "onCreate2:" + drawableRightStart); + // 判断是否点击了右侧图标 + if (x >= drawableRightStart && x <= (productInCode.getWidth() - productInCode.getPaddingRight())) { + + return true; + } + } + return false; + }); + } + + @Override + public void getScannerData(String data) { + super.getScannerData(data); + + } + private void selectVehicleInfo(){ + OkGo.post(url+"/wms/pda/product/selectVehicleInfo") + .params("code","") + .execute(new MyRecultCall(dialog,this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + + } + }); + } + public void productInSubmit(View view) { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/wms/product/ProductOutActivity.java b/app/src/main/java/com/example/haiwei_mom/wms/product/ProductOutActivity.java new file mode 100644 index 0000000..c175f92 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/wms/product/ProductOutActivity.java @@ -0,0 +1,16 @@ +package com.example.haiwei_mom.wms.product; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +import com.example.haiwei_mom.R; + +public class ProductOutActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_product_out); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/wms/raw/RawInActivity.java b/app/src/main/java/com/example/haiwei_mom/wms/raw/RawInActivity.java new file mode 100644 index 0000000..20cb555 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/wms/raw/RawInActivity.java @@ -0,0 +1,16 @@ +package com.example.haiwei_mom.wms.raw; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +import com.example.haiwei_mom.R; + +public class RawInActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_raw_in); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/wms/raw/RawReturnActivity.java b/app/src/main/java/com/example/haiwei_mom/wms/raw/RawReturnActivity.java new file mode 100644 index 0000000..c609057 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/wms/raw/RawReturnActivity.java @@ -0,0 +1,143 @@ +package com.example.haiwei_mom.wms.raw; + +import androidx.databinding.DataBindingUtil; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import com.example.haiwei_mom.R; +import com.example.haiwei_mom.base.BaseActivity; +import com.example.haiwei_mom.base.MyRecultCall; +import com.example.haiwei_mom.base.MyResult; +import com.example.haiwei_mom.data.RawReturnVo; +import com.example.haiwei_mom.data.RawReturnSubmitBeen; +import com.example.haiwei_mom.databinding.ActivityRawReturnBinding; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +import java.math.BigDecimal; + +import okhttp3.RequestBody; + +public class RawReturnActivity extends BaseActivity implements View.OnFocusChangeListener { + private RawReturnVo params; + ActivityRawReturnBinding binding; + + @SuppressLint("ClickableViewAccessibility") + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + binding = DataBindingUtil.setContentView(this, R.layout.activity_raw_return); + binding.rawReturnCode.setOnFocusChangeListener(this); + binding.rawReturnCode.setOnTouchListener((v, event) -> { + final int DRAWABLE_RIGHT = 2; + if (event.getAction() == MotionEvent.ACTION_UP) { + // 获取触摸的位置 + int x = (int) event.getX(); + // 获取图标的边界 + int drawableRightWidth = binding.rawReturnCode.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width(); + int drawableRightStart = (int) (binding.rawReturnCode.getWidth() - binding.rawReturnCode.getPaddingRight() - drawableRightWidth); + // 判断是否点击了右侧图标 + if (x >= drawableRightStart && x <= (binding.rawReturnCode.getWidth() - binding.rawReturnCode.getPaddingRight())) { + selectCode(); + return true; + } + } + return false; + }); + params = new RawReturnVo(); + binding.setVo(params); + } + + private void selectCode() { + OkGo.post(url + "/wms/pda/raw/returnSelectCode") + .params("code", params.getBatchCode()) + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode() == 200) { + params = gson.fromJson(body.getDataJson(), RawReturnVo.class); + binding.setVo(params); + return; + } + myToastUitls.show(body.getMsg()); + + } + }); + } + + public void rawReturnSubmit(View view) { + var planAmount = params.getPlanAmount(); + if (planAmount == null) { + return; + } + var val = Double.parseDouble(planAmount); + if (val > params.getOutstockQty()) { + myToastUitls.show("退库数量不能超过原数量"); + return; + } + RawReturnSubmitBeen sub = new RawReturnSubmitBeen(); + sub.setMaterialId(params.getMaterialId()); + sub.setBatchCode(params.getBatchCode()); + sub.setPlanAmount(BigDecimal.valueOf(val)); + sub.setPlanLocationCode(params.getLocationCode()); + sub.setMaterialCategories(params.getMaterialCategories()); + sub.setWarehouseId(params.getWarehouseId()); + Log.e("TAG", "rawReturnSubmit:" + params.getOutstockRecordId()); + sub.setOutstockRecordId(params.getOutstockRecordId()); + // 修改出库 + sub.setOutstockRecordId(params.getOutstockRecordId()); + + OkGo.post(url + "/wms/pda/raw/returnSubmit") + .upRequestBody(RequestBody.create(JSON, gson.toJson(sub))) + .execute(new MyRecultCall(dialog, context) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode() == 200) { + finish(); + // return; + } + myToastUitls.show(body.getMsg()); + } + }); + } + + private EditText focusedView; + + @Override + public void getScannerData(String data) { + super.getScannerData(data); + Log.e("TAG", "getScannerData:" + data); + if (focusedView!=null){ + EditText editText = focusedView; + // 将接收到的数据添加到 EditText 中 + editText.append(data); + if (editText==binding.rawReturnCode){ + selectCode(); + } + } + + + + } + + @Override + public void onFocusChange(View v, boolean hasFocus) { + if (hasFocus) { + Log.e("TAG", "onFocusChange:" + v.getId()); + focusedView = (EditText) v; + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/wms/semi/SemiInActivity.java b/app/src/main/java/com/example/haiwei_mom/wms/semi/SemiInActivity.java new file mode 100644 index 0000000..9727367 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/wms/semi/SemiInActivity.java @@ -0,0 +1,41 @@ +package com.example.haiwei_mom.wms.semi; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; + +import android.os.Bundle; +import android.view.View; + +import com.example.haiwei_mom.R; +import com.example.haiwei_mom.base.BaseActivity; +import com.example.haiwei_mom.base.MyRecultCall; +import com.example.haiwei_mom.base.MyResult; +import com.example.haiwei_mom.data.SemiInVo; +import com.example.haiwei_mom.databinding.ActivitySemiInBinding; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +import okhttp3.RequestBody; + +public class SemiInActivity extends BaseActivity { + private SemiInVo semi; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActivitySemiInBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_semi_in); + + } + + public void semiInSubmit(View view) { + OkGo.post(url + "") + .upRequestBody(RequestBody.create(JSON, gson.toJson(semi))) + .execute(new MyRecultCall(dialog,this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + } + }); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/haiwei_mom/wms/semi/SemiOutActivity.java b/app/src/main/java/com/example/haiwei_mom/wms/semi/SemiOutActivity.java new file mode 100644 index 0000000..c3eed34 --- /dev/null +++ b/app/src/main/java/com/example/haiwei_mom/wms/semi/SemiOutActivity.java @@ -0,0 +1,41 @@ +package com.example.haiwei_mom.wms.semi; + +import android.os.Bundle; +import android.view.View; + +import androidx.databinding.DataBindingUtil; + +import com.example.haiwei_mom.R; +import com.example.haiwei_mom.base.BaseActivity; +import com.example.haiwei_mom.base.MyRecultCall; +import com.example.haiwei_mom.base.MyResult; +import com.example.haiwei_mom.data.SemiInVo; +import com.example.haiwei_mom.databinding.ActivitySemiInBinding; +import com.example.haiwei_mom.databinding.ActivitySemiOutBinding; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +import okhttp3.RequestBody; + +public class SemiOutActivity extends BaseActivity { + private SemiInVo semi; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActivitySemiOutBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_semi_out); + + } + + public void semiInSubmit(View view) { + OkGo.post(url + "") + .upRequestBody(RequestBody.create(JSON, gson.toJson(semi))) + .execute(new MyRecultCall(dialog,this) { + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + } + }); + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/san_text_bg.xml b/app/src/main/res/drawable/san_text_bg.xml new file mode 100644 index 0000000..25671e0 --- /dev/null +++ b/app/src/main/res/drawable/san_text_bg.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/text_bg.xml b/app/src/main/res/drawable/text_bg.xml new file mode 100644 index 0000000..4632687 --- /dev/null +++ b/app/src/main/res/drawable/text_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/text_edit.xml b/app/src/main/res/drawable/text_edit.xml new file mode 100644 index 0000000..552a1f0 --- /dev/null +++ b/app/src/main/res/drawable/text_edit.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/text_san.xml b/app/src/main/res/drawable/text_san.xml new file mode 100644 index 0000000..977b425 --- /dev/null +++ b/app/src/main/res/drawable/text_san.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/toast_bg.xml b/app/src/main/res/drawable/toast_bg.xml new file mode 100644 index 0000000..f105a9d --- /dev/null +++ b/app/src/main/res/drawable/toast_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_bind_vehicle.xml b/app/src/main/res/layout/activity_bind_vehicle.xml new file mode 100644 index 0000000..328e441 --- /dev/null +++ b/app/src/main/res/layout/activity_bind_vehicle.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +