Преглед изворни кода

refactor(更新)
- 新增联网版的仓储层

周文健 пре 4 месеци
родитељ
комит
f8014c0ccf
63 измењених фајлова са 1794 додато и 83 уклоњено
  1. BIN
      app/src/main/assets/data.db
  2. 23 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionDetailFragment.kt
  3. 18 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionJobFragment.kt
  4. 59 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionManageFragment.kt
  5. 18 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionReportFragment.kt
  6. 0 1
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/common/SelectPointViewModel.kt
  7. 1 1
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/RoleManageViewModel.kt
  8. 0 1
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/WorkstationManageViewModel.kt
  9. 55 0
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/exception_manage/ExceptionViewModel.kt
  10. 0 2
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/hardware_manage/CardManageViewModel.kt
  11. 0 1
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobManageViewModel.kt
  12. 0 1
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/LockedPointsViewModel.kt
  13. 0 1
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/SopManageViewModel.kt
  14. 0 3
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/SopViewModel.kt
  15. 5 0
      app/src/main/res/drawable/icon_info.xml
  16. 8 0
      app/src/main/res/drawable/table_border.xml
  17. 8 0
      app/src/main/res/drawable/table_row_border.xml
  18. 1 0
      app/src/main/res/layout-land/fragment_create_job.xml
  19. 195 0
      app/src/main/res/layout/fragment_exception_detail.xml
  20. 4 0
      app/src/main/res/layout/fragment_exception_job.xml
  21. 107 0
      app/src/main/res/layout/fragment_exception_manage.xml
  22. 4 0
      app/src/main/res/layout/fragment_exception_report.xml
  23. 40 0
      app/src/main/res/layout/item_exception_manage.xml
  24. 14 0
      app/src/main/res/values-en/strings.xml
  25. 14 0
      app/src/main/res/values-zh/strings.xml
  26. 1 0
      app/src/main/res/values/colors.xml
  27. 14 0
      app/src/main/res/values/strings.xml
  28. 23 0
      app/src/main/res/values/styles.xml
  29. 10 0
      data/src/main/java/com/grkj/data/dao/ExceptionDao.kt
  30. 0 1
      data/src/main/java/com/grkj/data/dao/IsSopDao.kt
  31. 16 0
      data/src/main/java/com/grkj/data/data/DictConstants.kt
  32. 6 1
      data/src/main/java/com/grkj/data/database/ISCSDatabase.kt
  33. 2 0
      data/src/main/java/com/grkj/data/di/AppEntryPoint.kt
  34. 3 0
      data/src/main/java/com/grkj/data/di/RepositoryManager.kt
  35. 98 53
      data/src/main/java/com/grkj/data/di/RepositoryModule.kt
  36. 19 1
      data/src/main/java/com/grkj/data/enums/CommonDictDataEnum.kt
  37. 18 0
      data/src/main/java/com/grkj/data/model/dos/IsExceptionSourceStandard.kt
  38. 24 0
      data/src/main/java/com/grkj/data/model/dos/IsExceptionStandard.kt
  39. 3 0
      data/src/main/java/com/grkj/data/model/dos/IsJobTicket.kt
  40. 37 0
      data/src/main/java/com/grkj/data/model/vo/IsExceptionStandardVo.kt
  41. 7 0
      data/src/main/java/com/grkj/data/repository/IExceptionRepository.kt
  42. 12 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkExceptionRepository.kt
  43. 289 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkHardwareRepository.kt
  44. 39 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkIsolationPointRepository.kt
  45. 209 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkJobTicketRepository.kt
  46. 16 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkRfidTokenRepository.kt
  47. 51 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkRoleRepository.kt
  48. 73 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkSopRepository.kt
  49. 24 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkSysMenuRepository.kt
  50. 106 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkUserRepository.kt
  51. 49 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkWorkflowRepository.kt
  52. 48 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkWorkstationRepository.kt
  53. 12 0
      data/src/main/java/com/grkj/data/repository/impl/standard/ExceptionRepository.kt
  54. 1 2
      data/src/main/java/com/grkj/data/repository/impl/standard/HardwareRepository.kt
  55. 1 1
      data/src/main/java/com/grkj/data/repository/impl/standard/IsolationPointRepository.kt
  56. 1 2
      data/src/main/java/com/grkj/data/repository/impl/standard/JobTicketRepository.kt
  57. 1 3
      data/src/main/java/com/grkj/data/repository/impl/standard/RfidTokenRepository.kt
  58. 1 1
      data/src/main/java/com/grkj/data/repository/impl/standard/RoleRepository.kt
  59. 1 1
      data/src/main/java/com/grkj/data/repository/impl/standard/SopRepository.kt
  60. 1 1
      data/src/main/java/com/grkj/data/repository/impl/standard/SysMenuRepository.kt
  61. 1 2
      data/src/main/java/com/grkj/data/repository/impl/standard/UserRepository.kt
  62. 1 1
      data/src/main/java/com/grkj/data/repository/impl/standard/WorkflowRepository.kt
  63. 2 2
      data/src/main/java/com/grkj/data/repository/impl/standard/WorkstationRepository.kt

BIN
app/src/main/assets/data.db


+ 23 - 0
app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionDetailFragment.kt

@@ -0,0 +1,23 @@
+package com.grkj.iscs.features.main.fragment.exception_manage
+
+import androidx.fragment.app.viewModels
+import com.grkj.iscs.R
+import com.grkj.iscs.databinding.FragmentExceptionDetailBinding
+import com.grkj.iscs.features.main.viewmodel.exception_manage.ExceptionViewModel
+import com.grkj.ui_base.base.BaseFragment
+import dagger.hilt.android.AndroidEntryPoint
+
+/**
+ * 异常详情
+ */
+@AndroidEntryPoint
+class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
+    private val viewModel: ExceptionViewModel by viewModels()
+    override fun getLayoutId(): Int {
+        return R.layout.fragment_exception_detail
+    }
+
+    override fun initView() {
+
+    }
+}

+ 18 - 0
app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionJobFragment.kt

@@ -0,0 +1,18 @@
+package com.grkj.iscs.features.main.fragment.exception_manage
+
+import com.grkj.iscs.R
+import com.grkj.iscs.databinding.FragmentExceptionJobBinding
+import com.grkj.ui_base.base.BaseFragment
+
+/**
+ * 异常作业界面
+ */
+class ExceptionJobFragment : BaseFragment<FragmentExceptionJobBinding>() {
+    override fun getLayoutId(): Int {
+        return R.layout.fragment_exception_job
+    }
+
+    override fun initView() {
+
+    }
+}

+ 59 - 0
app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionManageFragment.kt

@@ -0,0 +1,59 @@
+package com.grkj.iscs.features.main.fragment.exception_manage
+
+import android.graphics.Color
+import androidx.fragment.app.viewModels
+import com.drake.brv.BindingAdapter
+import com.drake.brv.annotaion.DividerOrientation
+import com.drake.brv.utils.divider
+import com.drake.brv.utils.linear
+import com.drake.brv.utils.setup
+import com.grkj.data.data.DictConstants
+import com.grkj.data.model.vo.IsExceptionStandardVo
+import com.grkj.iscs.R
+import com.grkj.iscs.databinding.FragmentExceptionManageBinding
+import com.grkj.iscs.databinding.ItemExceptionManageBinding
+import com.grkj.iscs.features.main.viewmodel.exception_manage.ExceptionViewModel
+import com.grkj.ui_base.base.BaseFragment
+import com.grkj.ui_base.business.DataBusiness
+
+/**
+ * 异常管理界面
+ */
+class ExceptionManageFragment : BaseFragment<FragmentExceptionManageBinding>() {
+    private val viewModel: ExceptionViewModel by viewModels()
+    override fun getLayoutId(): Int {
+        return R.layout.fragment_exception_manage
+    }
+
+    override fun initView() {
+        binding.listRv.linear().divider {
+            this.setColor(Color.BLACK)
+            this.startVisible = false
+            this.endVisible = true
+            this.orientation = DividerOrientation.GRID
+        }.setup {
+            addType<IsExceptionStandardVo>(R.layout.item_exception_manage)
+            onBind {
+                onRVListBinding(this)
+            }
+        }
+    }
+
+    override fun initData() {
+        super.initData()
+
+    }
+
+    private fun getData() {
+
+    }
+
+    private fun onRVListBinding(holder: BindingAdapter.BindingViewHolder) {
+        val itemBinding = holder.getBinding<ItemExceptionManageBinding>()
+        val item = holder.getModel<IsExceptionStandardVo>()
+        itemBinding.exceptionType.text = DataBusiness.fetchDict(DictConstants.KEY_EXCEPTION_TYPE)
+            .find { it.dictValue == item.exceptionType.toString() }?.dictLabel
+
+
+    }
+}

+ 18 - 0
app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionReportFragment.kt

@@ -0,0 +1,18 @@
+package com.grkj.iscs.features.main.fragment.exception_manage
+
+import com.grkj.iscs.R
+import com.grkj.iscs.databinding.FragmentExceptionReportBinding
+import com.grkj.ui_base.base.BaseFragment
+
+/**
+ * 异常上报界面
+ */
+class ExceptionReportFragment : BaseFragment<FragmentExceptionReportBinding>() {
+    override fun getLayoutId(): Int {
+        return R.layout.fragment_exception_report
+    }
+
+    override fun initView() {
+
+    }
+}

+ 0 - 1
app/src/main/java/com/grkj/iscs/features/main/viewmodel/common/SelectPointViewModel.kt

@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.model.vo.PointManageVo
 import com.grkj.data.repository.IIsolationPointRepository
-import com.grkj.data.repository.impl.IsolationPointRepository
 import com.grkj.ui_base.base.BaseViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import javax.inject.Inject

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/RoleManageViewModel.kt

@@ -7,7 +7,7 @@ import com.grkj.data.model.vo.RoleManageFilterVo
 import com.grkj.data.model.vo.RoleManageVo
 import com.grkj.data.model.vo.UpdateRoleDo
 import com.grkj.data.repository.IRoleRepository
-import com.grkj.data.repository.impl.SysMenuRepository
+import com.grkj.data.repository.impl.standard.SysMenuRepository
 import com.grkj.iscs.features.main.entity.AddRoleDataEntity
 import com.grkj.iscs.features.main.entity.RoleManageFunctionalPermissionsEntity
 import com.grkj.iscs.features.main.entity.UpdateRoleDataEntity

+ 0 - 1
app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/WorkstationManageViewModel.kt

@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.model.vo.WorkstationManageVo
 import com.grkj.data.repository.IWorkstationRepository
-import com.grkj.data.repository.impl.WorkstationRepository
 import com.grkj.ui_base.base.BaseViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import javax.inject.Inject

+ 55 - 0
app/src/main/java/com/grkj/iscs/features/main/viewmodel/exception_manage/ExceptionViewModel.kt

@@ -0,0 +1,55 @@
+package com.grkj.iscs.features.main.viewmodel.exception_manage
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.liveData
+import com.grkj.data.data.DictConstants
+import com.grkj.data.model.res.CommonDictRes
+import com.grkj.data.model.vo.IsExceptionStandardVo
+import com.grkj.ui_base.base.BaseViewModel
+import com.grkj.ui_base.business.DataBusiness
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.Dispatchers
+import javax.inject.Inject
+
+/**
+ * 异常处理ViewModel
+ */
+@HiltViewModel
+class ExceptionViewModel @Inject constructor(
+
+) : BaseViewModel() {
+    /**
+     * 异常类型
+     */
+    var exceptionType: List<CommonDictRes> = mutableListOf()
+
+    /**
+     * 异常状态
+     */
+    var exceptionStatus: List<CommonDictRes> = mutableListOf()
+
+    /**
+     * 异常数据
+     */
+    var exceptionDataList: List<IsExceptionStandardVo> = listOf()
+
+    /**
+     * 获取字典数据
+     */
+    fun getDictData(): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            exceptionType = DataBusiness.fetchDict(DictConstants.KEY_EXCEPTION_TYPE)
+            exceptionStatus = DataBusiness.fetchDict(DictConstants.KEY_EXCEPTION_STATUS)
+            emit(true)
+        }
+    }
+
+    /**
+     * 获取异常数据
+     */
+    fun getExceptionData(): LiveData<Boolean>{
+        return liveData(Dispatchers.IO){
+
+        }
+    }
+}

+ 0 - 2
app/src/main/java/com/grkj/iscs/features/main/viewmodel/hardware_manage/CardManageViewModel.kt

@@ -4,13 +4,11 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.enums.CommonDictDataEnum
 import com.grkj.data.model.dos.IsJobCard
-import com.grkj.data.model.dos.SysUserDo
 import com.grkj.data.model.vo.AddCardDataVo
 import com.grkj.data.model.vo.CardManageFilterVo
 import com.grkj.data.model.vo.UpdateCardDataVo
 import com.grkj.data.repository.IHardwareRepository
 import com.grkj.data.repository.IUserRepository
-import com.grkj.data.repository.impl.UserRepository
 import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.ui_base.base.BaseViewModel
 import com.sik.sikcore.data.BeanUtils

+ 0 - 1
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobManageViewModel.kt

@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.model.vo.JobTicketManageVo
 import com.grkj.data.repository.IJobTicketRepository
-import com.grkj.data.repository.impl.JobTicketRepository
 import com.grkj.ui_base.base.BaseViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import javax.inject.Inject

+ 0 - 1
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/LockedPointsViewModel.kt

@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.model.vo.PointManageVo
 import com.grkj.data.repository.IJobTicketRepository
-import com.grkj.data.repository.impl.JobTicketRepository
 import com.grkj.ui_base.base.BaseViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import kotlinx.coroutines.Dispatchers

+ 0 - 1
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/SopManageViewModel.kt

@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.model.vo.SopManageVo
 import com.grkj.data.repository.ISopRepository
-import com.grkj.data.repository.impl.SopRepository
 import com.grkj.ui_base.base.BaseViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import javax.inject.Inject

+ 0 - 3
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/SopViewModel.kt

@@ -11,9 +11,6 @@ import com.grkj.data.model.vo.UserManageVo
 import com.grkj.data.repository.ISopRepository
 import com.grkj.data.repository.IWorkflowRepository
 import com.grkj.data.repository.IWorkstationRepository
-import com.grkj.data.repository.impl.SopRepository
-import com.grkj.data.repository.impl.WorkflowRepository
-import com.grkj.data.repository.impl.WorkstationRepository
 import com.grkj.ui_base.base.BaseViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import javax.inject.Inject

+ 5 - 0
app/src/main/res/drawable/icon_info.xml

@@ -0,0 +1,5 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
+      
+    <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
+    
+</vector>

+ 8 - 0
app/src/main/res/drawable/table_border.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@android:color/white" />
+    <stroke
+        android:width="2dp"
+        android:color="#000000" />
+</shape>

+ 8 - 0
app/src/main/res/drawable/table_row_border.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@android:color/white" />
+    <stroke
+        android:width="1dp"
+        android:color="#000000" />
+</shape>

+ 1 - 0
app/src/main/res/layout-land/fragment_create_job.xml

@@ -500,6 +500,7 @@
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:paddingVertical="@dimen/common_spacing"
             android:orientation="horizontal">
 
             <CheckBox

+ 195 - 0
app/src/main/res/layout/fragment_exception_detail.xml

@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="@dimen/common_spacing_2x"
+        android:background="@drawable/home_card_bg"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/title_layout"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/common_status_red_title"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingHorizontal="@dimen/common_spacing">
+
+            <ImageView
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@drawable/icon_info"
+                android:tint="@color/common_status_red" />
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:layout_weight="1"
+                android:text="@string/exception_detail_title"
+                android:textColor="@color/white"
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="5dp"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn"
+                android:drawableLeft="@mipmap/icon_back"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/back"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_btn_text_size" />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_line_space"
+            android:background="@color/black" />
+
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:padding="@dimen/common_spacing_2x">
+
+            <TableLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/table_border"
+                android:shrinkColumns="1"
+                android:stretchColumns="1">
+
+                <TableRow>
+
+                    <TextView
+                        style="@style/TableCellKey"
+                        android:text="@string/exception_type" />
+
+                    <TextView
+                        android:id="@+id/exception_type"
+                        style="@style/TableCellValue"
+                        tools:text="仓位异常" />
+                </TableRow>
+
+                <TableRow android:background="">
+
+                    <TextView
+                        style="@style/TableCellKey"
+                        android:text="@string/exception_source" />
+
+                    <TextView
+                        android:id="@+id/exception_source"
+                        style="@style/TableCellValue"
+                        tools:text="仓位2-7" />
+                </TableRow>
+
+                <TableRow>
+
+                    <TextView
+                        style="@style/TableCellKey"
+                        android:text="@string/exception_status" />
+
+                    <TextView
+                        android:id="@+id/exception_status"
+                        style="@style/TableCellValue"
+                        tools:text="待处理" />
+                </TableRow>
+
+                <TableRow>
+
+                    <TextView
+                        style="@style/TableCellKey"
+                        android:text="@string/exception_reporter" />
+
+                    <TextView
+                        android:id="@+id/exception_reporter"
+                        style="@style/TableCellValue"
+                        tools:text="张天乐" />
+                </TableRow>
+
+                <TableRow>
+
+                    <TextView
+                        style="@style/TableCellKey"
+                        android:text="@string/exception_occurrence_time" />
+
+                    <TextView
+                        android:id="@+id/exception_occurrence_time"
+                        style="@style/TableCellValue"
+                        tools:text="2025-03-04 17:00:20" />
+                </TableRow>
+
+                <TableRow>
+
+                    <TextView
+                        style="@style/TableCellKey"
+                        android:text="@string/exception_release_time" />
+
+                    <TextView
+                        android:id="@+id/exception_release_time"
+                        style="@style/TableCellValue"
+                        tools:text="" />
+                </TableRow>
+
+                <TableRow>
+
+                    <TextView
+                        style="@style/TableCellKey"
+                        android:text="@string/exception_description" />
+
+                    <TextView
+                        android:id="@+id/exception_description"
+                        style="@style/TableCellValue"
+                        tools:text="仓位卡扣无法打开仓" />
+                </TableRow>
+
+            </TableLayout>
+        </ScrollView>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="right"
+            android:orientation="horizontal"
+            android:padding="@dimen/common_spacing">
+
+            <TextView
+                android:id="@+id/cancel_exception"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn_confirm"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/cancel_exception"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_btn_text_size" />
+
+            <TextView
+                android:id="@+id/handle_exception"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn_cancel"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/handle_exception"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_btn_text_size" />
+        </LinearLayout>
+    </LinearLayout>
+</layout>

+ 4 - 0
app/src/main/res/layout/fragment_exception_job.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+</layout>

+ 107 - 0
app/src/main/res/layout/fragment_exception_manage.xml

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="@dimen/common_spacing_2x"
+        android:background="@drawable/home_card_bg"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/title_layout"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingHorizontal="@dimen/common_spacing">
+
+            <ImageView
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:layout_weight="1"
+                android:text="@string/exception_manage_title"
+                android:textColor="@color/black"
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="5dp"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn"
+                android:drawableLeft="@mipmap/icon_back"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/back"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_btn_text_size" />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_line_space"
+            android:background="@color/black" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginHorizontal="@dimen/common_spacing_2x"
+            android:layout_marginTop="@dimen/common_spacing"
+            android:background="@drawable/common_card_bg"
+            android:divider="@drawable/divider_table"
+            android:showDividers="middle">
+
+            <CheckBox
+                android:id="@+id/select_all"
+                android:layout_width="30dp"
+                android:layout_height="30dp"
+                android:layout_gravity="center"
+                android:layout_margin="@dimen/common_spacing" />
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="@string/exception_type_header"
+                android:textSize="@dimen/common_text_size" />
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="@string/exception_status_header"
+                android:textSize="@dimen/common_text_size" />
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="@string/exception_occurrence_time_header"
+                android:textSize="@dimen/common_text_size" />
+        </LinearLayout>
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/list_rv"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginHorizontal="@dimen/common_spacing_2x"
+            android:layout_marginBottom="@dimen/common_spacing_2x"
+            android:background="@drawable/common_card_bg"
+            tools:listitem="@layout/item_exception_manage" />
+    </LinearLayout>
+</layout>

+ 4 - 0
app/src/main/res/layout/fragment_exception_report.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+</layout>

+ 40 - 0
app/src/main/res/layout/item_exception_manage.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:divider="@drawable/divider_table"
+        android:showDividers="middle">
+
+        <CheckBox
+            android:id="@+id/select"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:layout_gravity="center"
+            android:layout_margin="@dimen/common_spacing" />
+
+        <TextView
+            android:id="@+id/exception_type"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:textSize="@dimen/common_text_size" />
+
+        <TextView
+            android:id="@+id/exception_status"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:textSize="@dimen/common_text_size" />
+
+        <TextView
+            android:id="@+id/exception_occurrence_time"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:textSize="@dimen/common_text_size" />
+    </LinearLayout>
+</layout>

+ 14 - 0
app/src/main/res/values-en/strings.xml

@@ -410,5 +410,19 @@
     <string name="start_scan_key_mac">Start scanning key information</string>
     <string name="do_you_want_to_remove_exception">Are you sure to remove and modify the exception</string>
     <string name="check_device_info">Detected %1$d keys and %2$d padlocks</string>
+    <string name="exception_type">Exception type:</string>
+    <string name="exception_source">Exception source:</string>
+    <string name="exception_status">Exception status:</string>
+    <string name="exception_reporter">Reporter:</string>
+    <string name="exception_occurrence_time">Exception occurrence time:</string>
+    <string name="exception_release_time">Exception release time:</string>
+    <string name="exception_description">Exception description:</string>
+    <string name="exception_detail_title">Exception detail</string>
+    <string name="cancel_exception">Cancel exception</string>
+    <string name="handle_exception">Handle exception</string>
+    <string name="exception_manage_title">Exception manage</string>
+    <string name="exception_type_header">Exception type</string>
+    <string name="exception_status_header">Exception status</string>
+    <string name="exception_occurrence_time_header">Occurrence time</string>
 
 </resources>

+ 14 - 0
app/src/main/res/values-zh/strings.xml

@@ -410,5 +410,19 @@
     <string name="start_scan_key_mac">开始扫描钥匙信息</string>
     <string name="do_you_want_to_remove_exception">是否确认移除改异常</string>
     <string name="check_device_info">检测到钥匙%1$d把,挂锁%2$d把</string>
+    <string name="exception_type">异常类型:</string>
+    <string name="exception_source">异常源:</string>
+    <string name="exception_status">状态:</string>
+    <string name="exception_reporter">上报人:</string>
+    <string name="exception_occurrence_time">异常发生时间:</string>
+    <string name="exception_release_time">异常解除时间:</string>
+    <string name="exception_description">异常描述:</string>
+    <string name="exception_detail_title">异常详情</string>
+    <string name="cancel_exception">取消异常</string>
+    <string name="handle_exception">处理异常</string>
+    <string name="exception_manage_title">异常管理</string>
+    <string name="exception_type_header">异常类型</string>
+    <string name="exception_status_header">异常状态</string>
+    <string name="exception_occurrence_time_header">发生时间</string>
 
 </resources>

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -17,4 +17,5 @@
     <color name="color_303132">#303132</color>
     <color name="color_black50">#80000000</color>
     <color name="color_black80">#cc000000</color>
+    <color name="common_status_red_title">#e03131</color>
 </resources>

+ 14 - 0
app/src/main/res/values/strings.xml

@@ -413,5 +413,19 @@
     <string name="start_scan_key_mac">开始扫描钥匙信息</string>
     <string name="do_you_want_to_remove_exception">是否确认移除改异常</string>
     <string name="check_device_info">检测到钥匙%1$d把,挂锁%2$d把</string>
+    <string name="exception_type">异常类型:</string>
+    <string name="exception_source">异常源:</string>
+    <string name="exception_status">状态:</string>
+    <string name="exception_reporter">上报人:</string>
+    <string name="exception_occurrence_time">异常发生时间:</string>
+    <string name="exception_release_time">异常解除时间:</string>
+    <string name="exception_description">异常描述:</string>
+    <string name="exception_detail_title">异常详情</string>
+    <string name="cancel_exception">取消异常</string>
+    <string name="handle_exception">处理异常</string>
+    <string name="exception_manage_title">异常管理</string>
+    <string name="exception_type_header">异常类型</string>
+    <string name="exception_status_header">异常状态</string>
+    <string name="exception_occurrence_time_header">发生时间</string>
 
 </resources>

+ 23 - 0
app/src/main/res/values/styles.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <style name="TableCellKey">
+        <item name="android:padding">@dimen/common_spacing</item>
+        <item name="android:textStyle">bold</item>
+        <item name="android:textColor">@color/black</item>
+        <item name="android:textSize">@dimen/common_text_size</item>
+        <item name="android:gravity">center_vertical|right</item>
+        <item name="android:layout_height">match_parent</item>
+        <item name="android:background">@drawable/table_row_border</item>
+    </style>
+
+    <style name="TableCellValue">
+        <item name="android:padding">@dimen/common_spacing</item>
+        <item name="android:textColor">@color/black</item>
+        <item name="android:textSize">@dimen/common_text_size</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:layout_height">match_parent</item>
+        <item name="android:background">@drawable/table_row_border</item>
+    </style>
+
+</resources>

+ 10 - 0
data/src/main/java/com/grkj/data/dao/ExceptionDao.kt

@@ -0,0 +1,10 @@
+package com.grkj.data.dao
+
+import androidx.room.Dao
+
+/**
+ * 异常数据库
+ */
+@Dao
+interface ExceptionDao {
+}

+ 0 - 1
data/src/main/java/com/grkj/data/dao/IsSopDao.kt

@@ -17,7 +17,6 @@ import com.grkj.data.model.vo.UserManageVo
  * sop数据库操作
  */
 @Dao
-@TypeConverters(Converters::class)    // 注册下面要写的 Converters
 interface IsSopDao {
     /**
      * 保存sop

+ 16 - 0
data/src/main/java/com/grkj/data/data/DictConstants.kt

@@ -23,6 +23,7 @@ object DictConstants {
      * 硬件工卡异常状态
      */
     const val KEY_JOB_CARD_STATUS = "job_card_status"
+
     /**
      * 硬件RFID标签异常状态
      */
@@ -57,4 +58,19 @@ object DictConstants {
      * 锁仓类型
      */
     const val KEY_SLOT_TYPE = "slot_type"
+
+    /**
+     * 作业状态
+     */
+    const val KEY_JOB_TICKET_STATUS = "job_ticket_status"
+
+    /**
+     * 异常类型
+     */
+    const val KEY_EXCEPTION_STATUS = "exception_status"
+
+    /**
+     * 异常类型
+     */
+    const val KEY_EXCEPTION_TYPE = "exception_type"
 }

+ 6 - 1
data/src/main/java/com/grkj/data/database/ISCSDatabase.kt

@@ -1,9 +1,11 @@
 package com.grkj.data.database
 
-import androidx.room.AutoMigration
 import androidx.room.Database
 import androidx.room.Room
 import androidx.room.RoomDatabase
+import androidx.room.TypeConverters
+import com.grkj.data.converters.Converters
+import com.grkj.data.dao.ExceptionDao
 import com.grkj.data.dao.HardwareDao
 import com.grkj.data.dao.IsSopDao
 import com.grkj.data.dao.IsolationPointDao
@@ -64,6 +66,7 @@ import org.slf4j.LoggerFactory
     version = ISCSMigrations.VERSION,
     exportSchema = true
 )
+@TypeConverters(Converters::class)    // 注册下面要写的 Converters
 abstract class ISCSDatabase : RoomDatabase() {
     companion object {
         private val logger: Logger = LoggerFactory.getLogger(ISCSDatabase::class.java)
@@ -104,4 +107,6 @@ abstract class ISCSDatabase : RoomDatabase() {
     abstract fun sysMenuDao(): SysMenuDao
 
     abstract fun workflowStepDao(): WorkflowStepDao
+
+    abstract fun exceptionDao(): ExceptionDao
 }

+ 2 - 0
data/src/main/java/com/grkj/data/di/AppEntryPoint.kt

@@ -1,6 +1,7 @@
 package com.grkj.data.di
 
 import com.grkj.data.database.ISCSDatabase
+import com.grkj.data.repository.IExceptionRepository
 import com.grkj.data.repository.IHardwareRepository
 import com.grkj.data.repository.IIsolationPointRepository
 import com.grkj.data.repository.IJobTicketRepository
@@ -28,4 +29,5 @@ interface AppEntryPoint {
     fun workstationRepo(): IWorkstationRepository
     fun sysMenuRepo(): ISysMenuRepository
     fun workflowRepo(): IWorkflowRepository
+    fun exceptionRepo(): IExceptionRepository
 }

+ 3 - 0
data/src/main/java/com/grkj/data/di/RepositoryManager.kt

@@ -1,6 +1,7 @@
 package com.grkj.data.di
 
 import android.app.Application
+import com.grkj.data.repository.IExceptionRepository
 import com.grkj.data.repository.IHardwareRepository
 import com.grkj.data.repository.IIsolationPointRepository
 import com.grkj.data.repository.IJobTicketRepository
@@ -27,6 +28,7 @@ object RepositoryManager {
     lateinit var workstationRepo: IWorkstationRepository
     lateinit var sysMenuRepository: ISysMenuRepository
     lateinit var workflowRepository: IWorkflowRepository
+    lateinit var exceptionRepository: IExceptionRepository
 
     fun init(app: Application) {
         val ep = EntryPointAccessors.fromApplication(app, AppEntryPoint::class.java)
@@ -40,5 +42,6 @@ object RepositoryManager {
         workstationRepo = ep.workstationRepo()
         sysMenuRepository = ep.sysMenuRepo()
         workflowRepository = ep.workflowRepo()
+        exceptionRepository = ep.exceptionRepo()
     }
 }

+ 98 - 53
data/src/main/java/com/grkj/data/di/RepositoryModule.kt

@@ -1,5 +1,7 @@
 package com.grkj.data.di
 
+import com.grkj.data.data.MMKVConstants
+import com.grkj.data.repository.IExceptionRepository
 import com.grkj.data.repository.IHardwareRepository
 import com.grkj.data.repository.IIsolationPointRepository
 import com.grkj.data.repository.IJobTicketRepository
@@ -10,82 +12,125 @@ import com.grkj.data.repository.ISysMenuRepository
 import com.grkj.data.repository.IUserRepository
 import com.grkj.data.repository.IWorkflowRepository
 import com.grkj.data.repository.IWorkstationRepository
-import com.grkj.data.repository.impl.HardwareRepository
-import com.grkj.data.repository.impl.IsolationPointRepository
-import com.grkj.data.repository.impl.JobTicketRepository
-import com.grkj.data.repository.impl.RfidTokenRepository
-import com.grkj.data.repository.impl.RoleRepository
-import com.grkj.data.repository.impl.SopRepository
-import com.grkj.data.repository.impl.SysMenuRepository
-import com.grkj.data.repository.impl.UserRepository
-import com.grkj.data.repository.impl.WorkflowRepository
-import com.grkj.data.repository.impl.WorkstationRepository
-import dagger.Binds
+import com.grkj.data.repository.impl.*
+import com.grkj.data.repository.impl.network.NetworkExceptionRepository
+import com.grkj.data.repository.impl.network.NetworkHardwareRepository
+import com.grkj.data.repository.impl.network.NetworkIsolationPointRepository
+import com.grkj.data.repository.impl.network.NetworkJobTicketRepository
+import com.grkj.data.repository.impl.network.NetworkRfidTokenRepository
+import com.grkj.data.repository.impl.network.NetworkRoleRepository
+import com.grkj.data.repository.impl.network.NetworkSopRepository
+import com.grkj.data.repository.impl.network.NetworkSysMenuRepository
+import com.grkj.data.repository.impl.network.NetworkUserRepository
+import com.grkj.data.repository.impl.network.NetworkWorkflowRepository
+import com.grkj.data.repository.impl.network.NetworkWorkstationRepository
+import com.grkj.data.repository.impl.standard.ExceptionRepository
+import com.grkj.data.repository.impl.standard.HardwareRepository
+import com.grkj.data.repository.impl.standard.IsolationPointRepository
+import com.grkj.data.repository.impl.standard.JobTicketRepository
+import com.grkj.data.repository.impl.standard.RfidTokenRepository
+import com.grkj.data.repository.impl.standard.RoleRepository
+import com.grkj.data.repository.impl.standard.SopRepository
+import com.grkj.data.repository.impl.standard.SysMenuRepository
+import com.grkj.data.repository.impl.standard.UserRepository
+import com.grkj.data.repository.impl.standard.WorkflowRepository
+import com.grkj.data.repository.impl.standard.WorkstationRepository
+import com.sik.sikcore.extension.getMMKVData
 import dagger.Module
+import dagger.Provides
 import dagger.hilt.InstallIn
 import dagger.hilt.components.SingletonComponent
 import javax.inject.Singleton
 
 @Module
 @InstallIn(SingletonComponent::class)
-abstract class RepositoryModule {
-    @Binds
+object RepositoryModule {
+
+    @Provides
+    @Singleton
+    fun provideHardwareRepository(
+        standard: HardwareRepository,
+        network: NetworkHardwareRepository,
+    ): IHardwareRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
+
+    @Provides
     @Singleton
-    abstract fun bindHardwareRepository(
-        impl: HardwareRepository
-    ): IHardwareRepository
+    fun provideIsolationPointRepository(
+        standard: IsolationPointRepository,
+        network: NetworkIsolationPointRepository,
+    ): IIsolationPointRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindIsolationPointRepository(
-        impl: IsolationPointRepository
-    ): IIsolationPointRepository
+    fun provideJobTicketRepository(
+        standard: JobTicketRepository,
+        network: NetworkJobTicketRepository,
+    ): IJobTicketRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindJobTicketRepository(
-        impl: JobTicketRepository
-    ): IJobTicketRepository
+    fun provideRfidTokenRepository(
+        standard: RfidTokenRepository,
+        network: NetworkRfidTokenRepository,
+    ): IRfidTokenRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindRfidTokenRepository(
-        impl: RfidTokenRepository
-    ): IRfidTokenRepository
+    fun provideRoleRepository(
+        standard: RoleRepository,
+        network: NetworkRoleRepository,
+    ): IRoleRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindRoleRepository(
-        impl: RoleRepository
-    ): IRoleRepository
+    fun provideSopRepository(
+        standard: SopRepository,
+        network: NetworkSopRepository,
+    ): ISopRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindSopRepository(
-        impl: SopRepository
-    ): ISopRepository
+    fun provideUserRepository(
+        standard: UserRepository,
+        network: NetworkUserRepository,
+    ): IUserRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindUserRepository(
-        impl: UserRepository
-    ): IUserRepository
+    fun provideWorkstationRepository(
+        standard: WorkstationRepository,
+        network: NetworkWorkstationRepository,
+    ): IWorkstationRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindWorkstationRepository(
-        impl: WorkstationRepository
-    ): IWorkstationRepository
+    fun provideSysMenuRepository(
+        standard: SysMenuRepository,
+        network: NetworkSysMenuRepository,
+    ): ISysMenuRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindSysMenuRepository(
-        impl: SysMenuRepository
-    ): ISysMenuRepository
+    fun provideWorkflowRepository(
+        standard: WorkflowRepository,
+        network: NetworkWorkflowRepository,
+    ): IWorkflowRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
 
-    @Binds
+    @Provides
     @Singleton
-    abstract fun bindWorkflowRepository(
-        impl: WorkflowRepository
-    ): IWorkflowRepository
-}
+    fun provideExceptionRepository(
+        standard: ExceptionRepository,
+        network: NetworkExceptionRepository,
+    ): IExceptionRepository =
+        if (MMKVConstants.SERVER_ADDRESS.getMMKVData("").isNotEmpty()) network else standard
+}

+ 19 - 1
data/src/main/java/com/grkj/data/enums/CommonDictDataEnum.kt

@@ -71,11 +71,29 @@ enum class CommonDictDataEnum(val dictKey: String, val commonDictRes: List<Commo
         )
     ),
     SLOT_TYPE(
-        DictConstants.KEY_SLOT_TYPE,listOf(
+        DictConstants.KEY_SLOT_TYPE, listOf(
             SimpleCommonDictRes("钥匙", "0"),
             SimpleCommonDictRes("锁", "1"),
         )
     ),
+    JOB_TICKET_STATUS(
+        DictConstants.KEY_JOB_TICKET_STATUS, listOf(
+            SimpleCommonDictRes("异常", "0"),
+            SimpleCommonDictRes("正常", "1"),
+        )
+    ),
+    EXCEPTION_TYPE(
+        DictConstants.KEY_EXCEPTION_TYPE, listOf(
+            SimpleCommonDictRes("硬件异常", "0"),
+            SimpleCommonDictRes("作业异常", "1"),
+        )
+    ),
+    EXCEPTION_STATUS(
+        DictConstants.KEY_JOB_TICKET_STATUS, listOf(
+            SimpleCommonDictRes("待处理", "0"),
+            SimpleCommonDictRes("已处理", "1"),
+        )
+    ),
     ;
 
     companion object {

+ 18 - 0
data/src/main/java/com/grkj/data/model/dos/IsExceptionSourceStandard.kt

@@ -0,0 +1,18 @@
+package com.grkj.data.model.dos
+
+import androidx.room.*
+
+@Entity(tableName = "is_exception_source_standard")
+class IsExceptionSourceStandard : BaseBean() {
+
+    @PrimaryKey(autoGenerate = true)
+    @ColumnInfo(name = "source_id")
+    var sourceId: Int = 0
+
+    @ColumnInfo(name = "exception_id")
+    var exceptionId: Int? = null
+
+    @ColumnInfo(name = "source_ids")
+    var sourceIds: List<Long> = listOf()
+
+}

+ 24 - 0
data/src/main/java/com/grkj/data/model/dos/IsExceptionStandard.kt

@@ -0,0 +1,24 @@
+package com.grkj.data.model.dos
+
+import androidx.room.*
+
+@Entity(tableName = "is_exception_standard")
+class IsExceptionStandard : BaseBean() {
+
+    @PrimaryKey(autoGenerate = true)
+    @ColumnInfo(name = "exception_id")
+    var exceptionId: Int = 0
+
+    @ColumnInfo(name = "exception_type")
+    var exceptionType: Int = 0
+
+    @ColumnInfo(name = "exception_status")
+    var exceptionStatus: Int? = null
+
+    @ColumnInfo(name = "exception_description")
+    var exceptionDescription: String? = null
+
+    @ColumnInfo(name = "process_application")
+    var processApplication: String? = null
+
+}

+ 3 - 0
data/src/main/java/com/grkj/data/model/dos/IsJobTicket.kt

@@ -54,6 +54,9 @@ open class IsJobTicket : BaseBean() {
     @ColumnInfo("ticket_end_time")
     var ticketEndTime: String? = null
 
+    @ColumnInfo("ex_status")
+    var exStatus: Int?=null
+
     @ColumnInfo("del_flag")
     var delFlag: String? = "0"
 }

+ 37 - 0
data/src/main/java/com/grkj/data/model/vo/IsExceptionStandardVo.kt

@@ -0,0 +1,37 @@
+package com.grkj.data.model.vo
+
+import androidx.room.ColumnInfo
+import androidx.room.Ignore
+import androidx.room.Relation
+import com.grkj.data.model.dos.IsExceptionSourceStandard
+import com.grkj.data.model.dos.WorkflowStep
+
+/**
+ * 异常数据
+ */
+class IsExceptionStandardVo {
+    @ColumnInfo(name = "exception_id")
+    var exceptionId: Int = 0
+
+    @ColumnInfo(name = "exception_type")
+    var exceptionType: Int = 0
+
+    @ColumnInfo(name = "exception_status")
+    var exceptionStatus: Int? = null
+
+    @ColumnInfo(name = "exception_description")
+    var exceptionDescription: String? = null
+
+    @ColumnInfo(name = "process_application")
+    var processApplication: String? = null
+
+
+    @Relation(
+        parentColumn = "exception_id",
+        entityColumn = "exception_id"
+    )
+    var sourceData: List<IsExceptionSourceStandard> = listOf()
+
+    @Ignore
+    var isSelected: Boolean = false
+}

+ 7 - 0
data/src/main/java/com/grkj/data/repository/IExceptionRepository.kt

@@ -0,0 +1,7 @@
+package com.grkj.data.repository
+
+/**
+ * 异常仓储层
+ */
+interface IExceptionRepository {
+}

+ 12 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkExceptionRepository.kt

@@ -0,0 +1,12 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IExceptionRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版异常管理仓储
+ */
+@Singleton
+class NetworkExceptionRepository : BaseRepository(), IExceptionRepository {
+}

+ 289 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkHardwareRepository.kt

@@ -0,0 +1,289 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.IsJobCard
+import com.grkj.data.model.dos.IsKey
+import com.grkj.data.model.dos.IsLock
+import com.grkj.data.model.dos.IsLockCabinetSlots
+import com.grkj.data.model.dos.IsRfidToken
+import com.grkj.data.model.local.LockData
+import com.grkj.data.model.local.PointData
+import com.grkj.data.model.req.LockPointUpdateReq
+import com.grkj.data.model.req.LockTakeUpdateReq
+import com.grkj.data.model.res.CabinetSlotsRes
+import com.grkj.data.model.res.CommonDictRes
+import com.grkj.data.model.res.KeyInfoRes
+import com.grkj.data.model.res.KeyPageRes
+import com.grkj.data.model.res.LockInfoRes
+import com.grkj.data.model.res.LockPageRes
+import com.grkj.data.model.vo.CardManageFilterVo
+import com.grkj.data.model.vo.KeyManageFilterVo
+import com.grkj.data.model.vo.LockManageFilterVo
+import com.grkj.data.model.vo.RfidTokenManageFilterVo
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IHardwareRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版硬件仓储
+ */
+@Singleton
+class NetworkHardwareRepository : BaseRepository(), IHardwareRepository {
+    override fun getLockInfo(
+        rfid: String,
+        callback: (LockInfoRes?) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getLockInfo(rfid: String): LockInfoRes? {
+        TODO("Not yet implemented")
+    }
+
+    override fun getKeyInfo(
+        rfid: String,
+        callback: (KeyInfoRes?) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getKeyInfo(rfid: String): KeyInfoRes? {
+        TODO("Not yet implemented")
+    }
+
+    override fun canReturn(): Boolean {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateLockPointBatch(
+        reqs: MutableList<LockPointUpdateReq>,
+        callback: (Boolean, String) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateLockTake(
+        lockTakeList: MutableList<LockTakeUpdateReq>,
+        callback: (Boolean) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getIsLockCabinetSlotsPage(callback: (CabinetSlotsRes?) -> Unit) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getIsLockPage(callback: (LockPageRes?) -> Unit) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getIsKeyPage(callback: (KeyPageRes?) -> Unit) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getDictData(
+        dictKey: String,
+        callback: (List<CommonDictRes>) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun addCardHardware(cardCode: List<String>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteCardByUserIdAndCardCode(userId: Long, cardCode: String) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getPointNfcDataByPointIds(pointIds: List<Long?>): List<PointData> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobTicketPointLockNfcDataListByPointId(pointId: Long): List<LockData> {
+        TODO("Not yet implemented")
+    }
+
+    override fun addRfidTokenHardware(pointRfid: List<String>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun saveKeyInfo(keyNfc: String, keyMacAddress: String) {
+        TODO("Not yet implemented")
+    }
+
+    override fun saveLockInfo(lockNfc: String) {
+        TODO("Not yet implemented")
+    }
+
+    override fun clearKeyAndLock() {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteKeyByKeyIds(keyIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteLockByLockIds(lockIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteCardByCardIds(cardIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteRfidTokenByRfidTokenIds(rfidTokenIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun addKeyInfo(isKey: IsKey) {
+        TODO("Not yet implemented")
+    }
+
+    override fun addLockInfo(isLock: IsLock) {
+        TODO("Not yet implemented")
+    }
+
+    override fun addCardInfo(isJobCard: IsJobCard) {
+        TODO("Not yet implemented")
+    }
+
+    override fun addRfidTokenInfo(isRfidToken: IsRfidToken) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateKeyInfo(isKey: IsKey) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateLockInfo(isLock: IsLock) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateCardInfo(isJobCard: IsJobCard) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateRfidTokenInfo(isRfidToken: IsRfidToken) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getKeyInfoPage(
+        filterVo: KeyManageFilterVo?,
+        size: Int,
+        offset: Int
+    ): List<IsKey> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getAllKeyInfo(): List<IsKey> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getLockInfoPage(
+        filterVo: LockManageFilterVo?,
+        size: Int,
+        offset: Int
+    ): List<IsLock> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getCardInfoPage(
+        filterVo: CardManageFilterVo?,
+        size: Int,
+        offset: Int
+    ): List<IsJobCard> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getRfidTokenInfoPage(
+        filterVo: RfidTokenManageFilterVo?,
+        size: Int,
+        offset: Int
+    ): List<IsRfidToken> {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteKeyTable() {
+        TODO("Not yet implemented")
+    }
+
+    override fun removeCardData() {
+        TODO("Not yet implemented")
+    }
+
+    override fun removeRfidTokenData() {
+        TODO("Not yet implemented")
+    }
+
+    override fun getDefaultCardNameCount(): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getDefaultRFIDNameCount(): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getDefaultKeyNameCount(): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getDefaultLockNameCount(): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobCardDataByUserId(userId: Long?): List<IsJobCard> {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateUserJobCard(rfidNo: String, userId: Long) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getExceptionKey(): List<IsKey> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getExceptionLock(): List<IsLock> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getExceptionSlots(): List<IsLockCabinetSlots> {
+        TODO("Not yet implemented")
+    }
+
+    override fun removeSlotsException(row: Int, col: Int) {
+        TODO("Not yet implemented")
+    }
+
+    override fun createCabinetData() {
+        TODO("Not yet implemented")
+    }
+
+    override fun saveCabinetSlots(isLockCabinetSlots: List<IsLockCabinetSlots>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun clearCabinetSlots() {
+        TODO("Not yet implemented")
+    }
+
+    override fun tagSlotsException(row: Int, col: Int, remark: String) {
+        TODO("Not yet implemented")
+    }
+
+    override fun tagKeyException(rfid: String?, remark: String) {
+        TODO("Not yet implemented")
+    }
+
+    override fun tagLockException(rfid: String?, remark: String) {
+        TODO("Not yet implemented")
+    }
+
+    override fun removeKeyException(rfid: String?) {
+        TODO("Not yet implemented")
+    }
+
+    override fun removeLockException(rfid: String?) {
+        TODO("Not yet implemented")
+    }
+}

+ 39 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkIsolationPointRepository.kt

@@ -0,0 +1,39 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.vo.AddPointManageVo
+import com.grkj.data.model.vo.PointManageFilterVo
+import com.grkj.data.model.vo.PointManageVo
+import com.grkj.data.model.vo.UpdatePointManageVo
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IIsolationPointRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版隔离点仓储
+ */
+@Singleton
+class NetworkIsolationPointRepository : BaseRepository(), IIsolationPointRepository {
+    override fun deletePointByPointIds(pointIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getPointManagerData(
+        filterData: PointManageFilterVo?,
+        current: Int,
+        size: Int
+    ): List<PointManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun addIsolationPoint(addPointManageVo: AddPointManageVo) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateIsolationPoint(updatePointManageVo: UpdatePointManageVo) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getAllPointManageDataWithWorkstationId(workstationId: Long): MutableList<PointManageVo> {
+        TODO("Not yet implemented")
+    }
+}

+ 209 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkJobTicketRepository.kt

@@ -0,0 +1,209 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.IsJobTicketStep
+import com.grkj.data.model.req.LockPointUpdateReq
+import com.grkj.data.model.res.StepDetailRes
+import com.grkj.data.model.res.TicketDetailRes
+import com.grkj.data.model.vo.IsJobTicketDataVo
+import com.grkj.data.model.vo.IsJobTicketKeyDataVo
+import com.grkj.data.model.vo.IsJobTicketLockDataVo
+import com.grkj.data.model.vo.IsJobTicketPointsDataVo
+import com.grkj.data.model.vo.IsJobTicketStepDataVo
+import com.grkj.data.model.vo.IsJobTicketUserDataVo
+import com.grkj.data.model.vo.JobTicketManageVo
+import com.grkj.data.model.vo.PointManageVo
+import com.grkj.data.model.vo.UserManageVo
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IJobTicketRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版作业票仓储
+ */
+@Singleton
+class NetworkJobTicketRepository : BaseRepository(), IJobTicketRepository{
+    override fun createJob(
+        selectedSopPoints: List<PointManageVo>,
+        selectedLockerData: List<UserManageVo>,
+        selectedColockerData: List<UserManageVo>,
+        modeId: Long,
+        sopId: Long?,
+        workstationId: Long,
+        jobName: String
+    ): Long {
+        TODO("Not yet implemented")
+    }
+
+    override fun saveJob(
+        selectedSopPoints: List<PointManageVo>,
+        selectedLockerData: List<UserManageVo>,
+        selectedColockerData: List<UserManageVo>,
+        modeId: Long,
+        sopId: Long?,
+        workstationId: Long,
+        jobName: String,
+        ticketId: Long
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getTicketDetail(
+        ticketId: Long,
+        callback: (TicketDetailRes?) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteTicketByTicketIds(ticketIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobDataPage(
+        current: Int,
+        size: Int
+    ): List<JobTicketManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun startJob(jobTicketId: Long?) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getTicketUsersByTicketId(ticketId: Long): List<UserManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getTicketDataByTicketId(ticketId: Long): JobTicketManageVo? {
+        TODO("Not yet implemented")
+    }
+
+    override fun getTicketPointsByTicketId(ticketId: Long): List<PointManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobTicketDataByTicketId(ticketId: Long): IsJobTicketDataVo? {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobTicketKeyDataByTicketId(ticketId: Long): List<IsJobTicketKeyDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobTicketLockDataByTicketId(ticketId: Long): List<IsJobTicketLockDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobTicketPointsDataByTicketId(ticketId: Long): List<IsJobTicketPointsDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobTicketStepDataByTicketId(ticketId: Long): List<IsJobTicketStepDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getJobTicketUserDataByTicketId(ticketId: Long): List<IsJobTicketUserDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateClockerAndColockerData(
+        ticketId: Long,
+        selectedLockerData: List<UserManageVo>,
+        selectedColockerData: List<UserManageVo>
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getStepDetail(
+        ticketId: Long,
+        callback: (List<StepDetailRes>?) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun cancelJob(ticketId: Long) {
+        TODO("Not yet implemented")
+    }
+
+    override fun finishJob(ticketId: Long) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateTicketDataStatus(ticketId: Long, ticketStatus: Int) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getInProgressJobSize(
+        workstationId: Long?,
+        modeId: Long?
+    ): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getInProgressJobSize(): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getAllJobSize(
+        workstationId: Long?,
+        startTime: String,
+        endTime: String
+    ): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getLockedPointsData(
+        current: Int,
+        size: Int
+    ): List<PointManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun colockerStatusChange(jobTicketUserDataVo: IsJobTicketUserDataVo) {
+        TODO("Not yet implemented")
+    }
+
+    override fun samePointLockingTicket(ticketId: Long): List<IsJobTicketDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateLockPointBatch(
+        lockPointsUpdateReq: List<LockPointUpdateReq>,
+        callback: (Boolean, String, Int) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateKeyReturn(
+        ticketId: Long,
+        keyNfc: String,
+        serialNo: String,
+        callback: (Boolean, String, Int) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateKeyTake(
+        ticketId: Long,
+        keyNfc: String,
+        serialNo: String,
+        callback: (Boolean) -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateLockReturn(
+        rfid: String,
+        serialNo: String,
+        callback: () -> Unit
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateTicketStepData(step: IsJobTicketStep) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getUserIdByCardRfid(rfid: String): Long? {
+        TODO("Not yet implemented")
+    }
+}

+ 16 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkRfidTokenRepository.kt

@@ -0,0 +1,16 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.IsRfidToken
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IRfidTokenRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版rfid标签
+ */
+@Singleton
+class NetworkRfidTokenRepository : BaseRepository(), IRfidTokenRepository{
+    override fun getRfidData(): List<IsRfidToken> {
+        TODO("Not yet implemented")
+    }
+}

+ 51 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkRoleRepository.kt

@@ -0,0 +1,51 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.SysRole
+import com.grkj.data.model.vo.AddRoleDo
+import com.grkj.data.model.vo.RoleManageFilterVo
+import com.grkj.data.model.vo.RoleManageVo
+import com.grkj.data.model.vo.UpdateRoleDo
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IRoleRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版角色仓储
+ */
+@Singleton
+class NetworkRoleRepository: BaseRepository(), IRoleRepository {
+    override fun getRoleData(): List<SysRole> {
+        TODO("Not yet implemented")
+    }
+
+    override fun addUserRoleData(
+        userId: Long,
+        roleIds: List<Long>
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteUserRoleByUserId(userIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteRoleByRoleIds(roles: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getRoleManagerData(
+        roleManageFilterVo: RoleManageFilterVo?,
+        current: Int,
+        size: Int
+    ): List<RoleManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun addRoleData(addRoleDo: AddRoleDo) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateRoleData(updateRoleDo: UpdateRoleDo) {
+        TODO("Not yet implemented")
+    }
+}

+ 73 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkSopRepository.kt

@@ -0,0 +1,73 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.vo.PointManageVo
+import com.grkj.data.model.vo.SopManageVo
+import com.grkj.data.model.vo.UserManageVo
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.ISopRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版sop仓储
+ */
+@Singleton
+class NetworkSopRepository : BaseRepository(), ISopRepository{
+    override fun saveSop(
+        sopId: Long,
+        sopName: String,
+        workstationId: Long,
+        workflowModeId: Long
+    ): Long {
+        TODO("Not yet implemented")
+    }
+
+    override fun saveSopPoint(
+        selectedSopPint: List<PointManageVo>,
+        sopId: Long
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun saveSopUser(
+        selectedLockerData: List<UserManageVo>,
+        selectedColockerData: List<UserManageVo>,
+        sopId: Long
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getSopDataByWorkstationId(workstationId: Long): List<SopManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getSopPointsBySopId(sopId: Long): List<PointManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getSopUsersBySopId(sopId: Long): List<UserManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteSopBySopId(sopIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getSopDataPage(
+        current: Int,
+        size: Int
+    ): List<SopManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getSopDataBySopId(sopId: Long): SopManageVo {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteSopPointsBySopId(sopIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteSopUsersBySopId(sopIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+}

+ 24 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkSysMenuRepository.kt

@@ -0,0 +1,24 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.SysMenu
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.ISysMenuRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版系统菜单
+ */
+@Singleton
+class NetworkSysMenuRepository : BaseRepository(), ISysMenuRepository{
+    override fun checkSysMenuAndRole() {
+        TODO("Not yet implemented")
+    }
+
+    override fun getSysMenus(): List<SysMenu> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getSysMenusByRoleId(roleId: Long): List<SysMenu> {
+        TODO("Not yet implemented")
+    }
+}

+ 106 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkUserRepository.kt

@@ -0,0 +1,106 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.SysUserCharacteristicDo
+import com.grkj.data.model.dos.SysUserDo
+import com.grkj.data.model.vo.AddUserDataVo
+import com.grkj.data.model.vo.SysBiometricDataVo
+import com.grkj.data.model.vo.SysUserVo
+import com.grkj.data.model.vo.UpdateUserDataVo
+import com.grkj.data.model.vo.UserManageFilterVo
+import com.grkj.data.model.vo.UserManageVo
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IUserRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版用户仓储
+ */
+@Singleton
+class NetworkUserRepository : BaseRepository(), IUserRepository{
+    override fun loginWithAccount(
+        username: String,
+        password: String
+    ): Boolean {
+        TODO("Not yet implemented")
+    }
+
+    override fun loginWithCard(cardNo: String): Boolean {
+        TODO("Not yet implemented")
+    }
+
+    override fun loginWithFingerprint(fingerprint: String): Boolean {
+        TODO("Not yet implemented")
+    }
+
+    override fun loginWithFace(face: String): Boolean {
+        TODO("Not yet implemented")
+    }
+
+    override fun logout(): Boolean {
+        TODO("Not yet implemented")
+    }
+
+    override fun getUserManagerData(
+        userManageFilterData: UserManageFilterVo?,
+        current: Int,
+        size: Int
+    ): List<UserManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getAllUserDataWithWorkstation(workstationId: Long): List<UserManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun addUserData(addUserDataVo: AddUserDataVo): Long {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteUserById(userIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateUserData(userDataVo: UpdateUserDataVo) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateUser(sysUserDo: SysUserDo) {
+        TODO("Not yet implemented")
+    }
+
+    override fun removeAdminUser() {
+        TODO("Not yet implemented")
+    }
+
+    override fun addAdminUser(username: String, password: String) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getAllUsers(): List<SysUserDo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getAllUsersWithRole(): List<SysUserVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getFingerprintDataByUserId(userId: Long?): MutableList<SysBiometricDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getFaceDataByUserId(userId: Long?): MutableList<SysBiometricDataVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteFingerprintByIds(fingerprintIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun saveUserCharacteristic(sysUserCharacteristicDo: SysUserCharacteristicDo) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteFaceDataByUserId(userId: Long) {
+        TODO("Not yet implemented")
+    }
+}

+ 49 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkWorkflowRepository.kt

@@ -0,0 +1,49 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.WorkflowMode
+import com.grkj.data.model.dos.WorkflowStep
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IWorkflowRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版工作流仓储
+ */
+@Singleton
+class NetworkWorkflowRepository : BaseRepository(), IWorkflowRepository{
+    override fun insertStep(step: WorkflowStep): Long {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateStep(step: WorkflowStep) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteStep(step: WorkflowStep) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getStepsByMode(modeId: Long): List<WorkflowStep> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getWorkflowModeByModeId(modeId: Long): WorkflowMode? {
+        TODO("Not yet implemented")
+    }
+
+    override fun getNextStepIndex(modeId: Long): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun getStepById(id: Long): WorkflowStep? {
+        TODO("Not yet implemented")
+    }
+
+    override fun isUnlockBeforeLock(modeId: Long): Boolean {
+        TODO("Not yet implemented")
+    }
+
+    override fun getWorkflowModes(): List<WorkflowMode> {
+        TODO("Not yet implemented")
+    }
+}

+ 48 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkWorkstationRepository.kt

@@ -0,0 +1,48 @@
+package com.grkj.data.repository.impl.network
+
+import com.grkj.data.model.dos.IsWorkstation
+import com.grkj.data.model.vo.WorkstationManageVo
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IWorkstationRepository
+import javax.inject.Singleton
+
+/**
+ * 联网版区域仓储
+ */
+@Singleton
+class NetworkWorkstationRepository : BaseRepository(), IWorkstationRepository{
+    override fun getWorkStationData(): List<IsWorkstation> {
+        TODO("Not yet implemented")
+    }
+
+    override fun addUserWorkstationData(
+        userId: Long,
+        workstationId: List<Long>
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteUserWorkstationByUserIds(userIds: List<Long>) {
+        TODO("Not yet implemented")
+    }
+
+    override fun getWorkstationManageData(): List<WorkstationManageVo> {
+        TODO("Not yet implemented")
+    }
+
+    override fun insertWorkstation(
+        workstationManageVo: WorkstationManageVo?,
+        orderNum: Int,
+        workstationName: String
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun deleteWorkstationByWorkstationId(workstationId: Long) {
+        TODO("Not yet implemented")
+    }
+
+    override fun updateWorkstationOrderNumById(workstationId: Long, orderNum: Int?) {
+        TODO("Not yet implemented")
+    }
+}

+ 12 - 0
data/src/main/java/com/grkj/data/repository/impl/standard/ExceptionRepository.kt

@@ -0,0 +1,12 @@
+package com.grkj.data.repository.impl.standard
+
+import com.grkj.data.repository.BaseRepository
+import com.grkj.data.repository.IExceptionRepository
+import javax.inject.Singleton
+
+/**
+ * 异常仓储实现
+ */
+@Singleton
+class ExceptionRepository : BaseRepository(), IExceptionRepository {
+}

+ 1 - 2
data/src/main/java/com/grkj/data/repository/impl/HardwareRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/HardwareRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.HardwareDao
 import com.grkj.data.dao.IsolationPointDao
@@ -34,7 +34,6 @@ import com.sik.sikcore.data.BeanUtils
 import com.sik.sikcore.extension.saveMMKVData
 import javax.inject.Inject
 import javax.inject.Singleton
-import kotlin.math.log
 
 /**
  * 硬件仓储

+ 1 - 1
data/src/main/java/com/grkj/data/repository/impl/IsolationPointRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/IsolationPointRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.IsolationPointDao
 import com.grkj.data.model.dos.IsIsolationPoint

+ 1 - 2
data/src/main/java/com/grkj/data/repository/impl/JobTicketRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/JobTicketRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.check_data.ICheckDataMode
 import com.grkj.data.dao.HardwareDao
@@ -32,7 +32,6 @@ import com.sik.sikcore.data.BeanUtils
 import com.sik.sikcore.date.TimeUtils
 import javax.inject.Inject
 import javax.inject.Singleton
-import kotlin.math.log
 
 /**
  * 作业票实现

+ 1 - 3
data/src/main/java/com/grkj/data/repository/impl/RfidTokenRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/RfidTokenRepository.kt

@@ -1,10 +1,8 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.RfidTokenDao
-import com.grkj.data.database.ISCSDatabase
 import com.grkj.data.model.dos.IsRfidToken
 import com.grkj.data.repository.BaseRepository
-import com.grkj.data.repository.IIsolationPointRepository
 import com.grkj.data.repository.IRfidTokenRepository
 import javax.inject.Inject
 import javax.inject.Singleton

+ 1 - 1
data/src/main/java/com/grkj/data/repository/impl/RoleRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/RoleRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.RoleDao
 import com.grkj.data.dao.SysMenuDao

+ 1 - 1
data/src/main/java/com/grkj/data/repository/impl/SopRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/SopRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.IsSopDao
 import com.grkj.data.enums.RoleEnum

+ 1 - 1
data/src/main/java/com/grkj/data/repository/impl/SysMenuRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/SysMenuRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.RoleDao
 import com.grkj.data.dao.SysMenuDao

+ 1 - 2
data/src/main/java/com/grkj/data/repository/impl/UserRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/UserRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.HardwareDao
 import com.grkj.data.dao.RoleDao
@@ -21,7 +21,6 @@ import com.grkj.data.repository.IUserRepository
 import com.grkj.shared.utils.BCryptUtils
 import com.grkj.shared.utils.BiometricVerifier
 import com.sik.sikcore.extension.file
-import com.sik.sikcore.file.FileUtils
 import javax.inject.Inject
 import javax.inject.Singleton
 

+ 1 - 1
data/src/main/java/com/grkj/data/repository/impl/WorkflowRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/WorkflowRepository.kt

@@ -1,4 +1,4 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.WorkflowStepDao
 import com.grkj.data.model.dos.WorkflowMode

+ 2 - 2
data/src/main/java/com/grkj/data/repository/impl/WorkstationRepository.kt → data/src/main/java/com/grkj/data/repository/impl/standard/WorkstationRepository.kt

@@ -1,7 +1,6 @@
-package com.grkj.data.repository.impl
+package com.grkj.data.repository.impl.standard
 
 import com.grkj.data.dao.WorkstationDao
-import com.grkj.data.database.ISCSDatabase
 import com.grkj.data.model.dos.IsUserWorkstation
 import com.grkj.data.model.dos.IsWorkstation
 import com.grkj.data.model.vo.WorkstationManageVo
@@ -9,6 +8,7 @@ import com.grkj.data.repository.BaseRepository
 import com.grkj.data.repository.IWorkstationRepository
 import javax.inject.Inject
 import javax.inject.Singleton
+import kotlin.collections.get
 
 /**
  * 岗位仓储