Browse Source

Merge branch 'master' of http://121.40.253.172:3000/pengyue/jsh_erp into master_huangjunjie

huang 1 tháng trước cách đây
mục cha
commit
d990d4829a
38 tập tin đã thay đổi với 277 bổ sung49 xóa
  1. 4 0
      jshERP-web/src/api/api.js
  2. 6 0
      jshERP-web/src/components/jeecgbiz/modal/JSelectMaterialModal.vue
  3. 5 0
      jshERP-web/src/views/bill/dialog/BillDetail.vue
  4. 9 0
      jshERP-web/src/views/bill/mixins/BillModalMixin.js
  5. 17 1
      jshERP-web/src/views/bill/modules/AllocationOutModal.vue
  6. 17 1
      jshERP-web/src/views/bill/modules/OtherInModal.vue
  7. 18 2
      jshERP-web/src/views/bill/modules/OtherOutModal.vue
  8. 17 1
      jshERP-web/src/views/bill/modules/PurchaseInModal.vue
  9. 3 8
      jshERP-web/src/views/bill/modules/SaleOrderModal.vue
  10. 20 4
      jshERP-web/src/views/bill/modules/SaleOutModal.vue
  11. 2 2
      jshERP-web/src/views/stock/CheckList.vue
  12. 15 1
      jshERP-web/src/views/stock/TaskList.vue
  13. 3 3
      jshERP-web/src/views/stock/components/FilterForm.vue
  14. 9 9
      jshERP-web/src/views/stock/components/checkModal.vue
  15. 8 1
      jshERP-web/src/views/stock/components/editForm.vue
  16. 2 2
      jshERP-web/src/views/stock/components/stockModal.vue
  17. 2 2
      jshERP-web/src/views/stock/utils/table.js
  18. 1 1
      jshERP-web/src/views/system/UserList.vue
  19. 5 4
      jshERP-web/src/views/system/modules/RoleFunctionModal.vue
  20. 1 1
      jshERP-web/src/views/system/modules/UserCustomerModal.vue
  21. 1 1
      jshERP-web/src/views/system/modules/UserDepotModal.vue
  22. 1 1
      jshERP-web/src/views/system/modules/userSupplierModal.vue
  23. 16 0
      src/main/java/com/jsh/erp/controller/SupplierController.java
  24. 1 4
      src/main/java/com/jsh/erp/controller/pda/PdaController.java
  25. 7 0
      src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapper.java
  26. 3 0
      src/main/java/com/jsh/erp/datasource/pda/dto/PDATaskStocktakingItemDTO.java
  27. 4 0
      src/main/java/com/jsh/erp/datasource/pda/vo/PDADepotHeadVO.java
  28. 3 0
      src/main/java/com/jsh/erp/datasource/pda/vo/PDATaskStocktakingItemVO.java
  29. 7 0
      src/main/java/com/jsh/erp/service/DepotHeadService.java
  30. 2 0
      src/main/java/com/jsh/erp/service/SupplierService.java
  31. 9 0
      src/main/java/com/jsh/erp/service/SyncTescoSystemService.java
  32. 5 0
      src/main/java/com/jsh/erp/service/impl/DepotHeadServiceImpl.java
  33. 14 0
      src/main/java/com/jsh/erp/service/impl/SupplierServiceImpl.java
  34. 4 0
      src/main/resources/application-dev.yml
  35. 5 0
      src/main/resources/application-pro.yml
  36. 5 0
      src/main/resources/application-test.yml
  37. 20 0
      src/main/resources/mapper_xml/DepotHeadMapper.xml
  38. 6 0
      src/main/resources/mapper_xml/TaskStocktakingItemMapper.xml

+ 4 - 0
jshERP-web/src/api/api.js

@@ -120,6 +120,9 @@ const findStockByDepotAndBarCode = (params) => getAction('/depotItem/findStockBy
 const getBatchNumberList = (params) => getAction('/depotItem/getBatchNumberList', params)
 const findFinancialDetailByNumber = (params) => getAction('/accountHead/getDetailByNumber', params)
 
+//出入库人
+const creatorSpinnerList = (params) => getAction('/stocktaking/creatorSpinnerList', params)
+
 export {
   getBuyAndSaleStatistics,
   buyOrSalePrice,
@@ -215,4 +218,5 @@ export {
   findFinancialDetailByNumber,
   getMaterialById,
   getUnitInfo,
+  creatorSpinnerList,
 }

+ 6 - 0
jshERP-web/src/components/jeecgbiz/modal/JSelectMaterialModal.vue

@@ -93,6 +93,11 @@
                     </a-select>
                   </a-form-item>
                 </a-col>
+                <a-col :md="6" :sm="24">
+                  <a-form-item label="仓库货架" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input placeholder="请输入制造商" v-model="queryParam.position"></a-input>
+                  </a-form-item>
+                </a-col>
                 <!-- <a-col :md="6" :sm="24">
                   <a-form-item label="批号" :labelCol="{ span: 5 }" :wrapperCol="{ span: 18, offset: 1 }">
                     <a-select placeholder="有无批号" v-model="queryParam.enableBatchNumber">
@@ -178,6 +183,7 @@ export default {
         mfrs: '',
         enableSerialNumber: undefined,
         enableBatchNumber: undefined,
+        position: '',
       },
       labelCol: {
         xs: { span: 24 },

+ 5 - 0
jshERP-web/src/views/bill/dialog/BillDetail.vue

@@ -916,6 +916,11 @@
               </a-form-item>
             </a-col>
             <a-col :span="6">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="二维码">
+                <vue-qr :text="model.number" :size="200" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="6">
               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="本次欠款">
                 {{ model.debt }}
               </a-form-item>

+ 9 - 0
jshERP-web/src/views/bill/mixins/BillModalMixin.js

@@ -11,6 +11,7 @@ import {
   getPersonByNumType,
   getPlatformConfigByKey,
   getUnitInfo,
+  creatorSpinnerList,
 } from '@/api/api'
 import { getAction } from '@/api/manage'
 import { getCheckFlag, getMpListShort, getNowFormatDateTime } from '@/utils/util'
@@ -71,6 +72,7 @@ export const BillModalMixin = {
         labelCol6: { span: 12 },
         wrapperCol6: { span: 12 },
       },
+      currentUserList: [],
     }
   },
   created() {
@@ -80,6 +82,7 @@ export const BillModalMixin = {
   },
   mounted() {
     document.getElementById(this.prefixNo).addEventListener('keydown', this.handleOkKey)
+    this.getCreatorSpinnerList()
   },
   beforeDestroy() {
     document.getElementById(this.prefixNo).removeEventListener('keydown', this.handleOkKey)
@@ -1220,5 +1223,11 @@ export const BillModalMixin = {
         }
       }
     },
+    //获取出入库人
+    getCreatorSpinnerList() {
+      creatorSpinnerList().then((res) => {
+        this.currentUserList = res.data
+      })
+    },
   },
 }

+ 17 - 1
jshERP-web/src/views/bill/modules/AllocationOutModal.vue

@@ -104,6 +104,21 @@
               </a-select-option>
             </a-select>
           </template>
+          <template #warehousingUser="{ handleChange, value }">
+            <a-select
+              placeholder="请选择"
+              v-decorator="['warehousingUser']"
+              :dropdownMatchSelectWidth="false"
+              showSearch
+              :allowClear="false"
+              optionFilterProp="children"
+              :value="value"
+              :options="currentUserList"
+              @change="($event) => handleChange($event)"
+              @focus="($event) => handleFocus($event)"
+            >
+            </a-select>
+          </template>
         </j-editable-table>
         <a-row class="form-row" :gutter="24">
           <a-col :lg="24" :md="24" :sm="24">
@@ -264,7 +279,8 @@ export default {
             title: '出库人',
             key: 'warehousingUser',
             width: '9%',
-            type: FormTypes.input,
+            type: FormTypes.slot,
+            slotName: 'warehousingUser',
             validateRules: [{ required: true, message: '出库人不能为空' }],
           },
           { title: '出库时间', key: 'warehousingTime', width: '9%', type: FormTypes.date },

+ 17 - 1
jshERP-web/src/views/bill/modules/OtherInModal.vue

@@ -149,6 +149,21 @@
               </a-select-option>
             </a-select>
           </template>
+          <template #warehousingUser="{ handleChange, value }">
+            <a-select
+              placeholder="请选择"
+              v-decorator="['warehousingUser']"
+              :dropdownMatchSelectWidth="false"
+              showSearch
+              :allowClear="false"
+              optionFilterProp="children"
+              :value="value"
+              :options="currentUserList"
+              @change="($event) => handleChange($event)"
+              @focus="($event) => handleFocus($event)"
+            >
+            </a-select>
+          </template>
         </j-editable-table>
         <a-row class="form-row" :gutter="24">
           <a-col :lg="24" :md="24" :sm="24">
@@ -332,7 +347,8 @@ export default {
             title: '入库人',
             key: 'warehousingUser',
             width: '9%',
-            type: FormTypes.input,
+            type: FormTypes.slot,
+            slotName: 'warehousingUser',
             validateRules: [{ required: true, message: '入库人不能为空' }],
           },
           { title: '入库时间', key: 'warehousingTime', width: '9%', type: FormTypes.date },

+ 18 - 2
jshERP-web/src/views/bill/modules/OtherOutModal.vue

@@ -150,6 +150,21 @@
               </a-select-option>
             </a-select>
           </template>
+          <template #warehousingUser="{ handleChange, value }">
+            <a-select
+              placeholder="请选择"
+              v-decorator="['warehousingUser']"
+              :dropdownMatchSelectWidth="false"
+              showSearch
+              :allowClear="false"
+              optionFilterProp="children"
+              :value="value"
+              :options="currentUserList"
+              @change="($event) => handleChange($event)"
+              @focus="($event) => handleFocus($event)"
+            >
+            </a-select>
+          </template>
         </j-editable-table>
         <a-row class="form-row" :gutter="24">
           <a-col :lg="24" :md="24" :sm="24">
@@ -282,7 +297,7 @@ export default {
           { title: '生产日期', key: 'productionDate', width: '9%', type: FormTypes.normal },
           { title: '保质期', key: 'expiryNum', width: '6%', type: FormTypes.normal },
           { title: '商品条码', key: 'barCode', width: '6%', type: FormTypes.normal },
-          { title: '仓库名', key: 'depotName', width: '6%', type: FormTypes.normal },
+          { title: '仓库名', key: 'depotId', width: '6%', type: FormTypes.select, disabled: true },
           { title: '仓库货架', key: 'position', width: '6%', type: FormTypes.normal },
           { title: '包装规格', key: 'unitName', width: '6%', type: FormTypes.normal },
 
@@ -332,7 +347,8 @@ export default {
             title: '出库人',
             key: 'warehousingUser',
             width: '9%',
-            type: FormTypes.input,
+            type: FormTypes.slot,
+            slotName: 'warehousingUser',
             validateRules: [{ required: true, message: '出库人不能为空' }],
           },
           { title: '出库时间', key: 'warehousingTime', width: '9%', type: FormTypes.date },

+ 17 - 1
jshERP-web/src/views/bill/modules/PurchaseInModal.vue

@@ -174,6 +174,21 @@
               </a-select-option>
             </a-select>
           </template>
+          <template #warehousingUser="{ handleChange, value }">
+            <a-select
+              placeholder="请选择"
+              v-decorator="['warehousingUser']"
+              :dropdownMatchSelectWidth="false"
+              showSearch
+              :allowClear="false"
+              optionFilterProp="children"
+              :value="value"
+              :options="currentUserList"
+              @change="($event) => handleChange($event)"
+              @focus="($event) => handleFocus($event)"
+            >
+            </a-select>
+          </template>
         </j-editable-table>
         <a-row class="form-row" :gutter="24">
           <a-col :lg="24" :md="24" :sm="24">
@@ -523,7 +538,8 @@ export default {
             title: '入库人',
             key: 'warehousingUser',
             width: '9%',
-            type: FormTypes.input,
+            type: FormTypes.slot,
+            slotName: 'warehousingUser',
             validateRules: [{ required: true, message: '入库人不能为空' }],
           },
           { title: '入库时间', key: 'warehousingTime', width: '9%', type: FormTypes.date },

+ 3 - 8
jshERP-web/src/views/bill/modules/SaleOrderModal.vue

@@ -284,22 +284,17 @@
           </a-col>
           <a-col :lg="6" :md="12" :sm="24">
             <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="收货人" data-step="10">
-              <a-input placeholder="请输入收货人" v-decorator.trim="['receiverName']" :readOnly="true" />
+              <a-input placeholder="请输入收货人" v-decorator.trim="['receiverName']" />
             </a-form-item>
           </a-col>
           <a-col :lg="6" :md="12" :sm="24">
             <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="收货人电话" data-step="10">
-              <a-input placeholder="请输入收货人电话" v-decorator.trim="['receiverPhone']" :readOnly="true" />
+              <a-input placeholder="请输入收货人电话" v-decorator.trim="['receiverPhone']" />
             </a-form-item>
           </a-col>
           <a-col :lg="6" :md="12" :sm="24">
             <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="收货地址" data-step="8">
-              <a-input
-                style="width: 80%"
-                placeholder="请输入收货地址"
-                v-decorator.trim="['receiverAddress']"
-                :readOnly="true"
-              />
+              <a-input style="width: 80%" placeholder="请输入收货地址" v-decorator.trim="['receiverAddress']" />
             </a-form-item>
           </a-col>
         </a-row>

+ 20 - 4
jshERP-web/src/views/bill/modules/SaleOutModal.vue

@@ -176,6 +176,21 @@
               </a-select-option>
             </a-select>
           </template>
+          <template #warehousingUser="{ handleChange, value }">
+            <a-select
+              placeholder="请选择"
+              v-decorator="['warehousingUser']"
+              :dropdownMatchSelectWidth="false"
+              showSearch
+              :allowClear="false"
+              optionFilterProp="children"
+              :value="value"
+              :options="currentUserList"
+              @change="($event) => handleChange($event)"
+              @focus="($event) => handleFocus($event)"
+            >
+            </a-select>
+          </template>
         </j-editable-table>
         <a-row class="form-row" :gutter="24">
           <a-col :lg="24" :md="24" :sm="24">
@@ -341,17 +356,17 @@
           </a-col>
           <a-col :lg="6" :md="12" :sm="24">
             <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="收货人" data-step="10">
-              <a-input placeholder="请输入收货人" v-decorator="['receiverName']" :readOnly="true" />
+              <a-input placeholder="请输入收货人" v-decorator="['receiverName']" />
             </a-form-item>
           </a-col>
           <a-col :lg="6" :md="12" :sm="24">
             <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="收货人电话" data-step="10">
-              <a-input placeholder="请输入收货人电话" v-decorator="['receiverPhone']" :readOnly="true" />
+              <a-input placeholder="请输入收货人电话" v-decorator="['receiverPhone']" />
             </a-form-item>
           </a-col>
           <a-col :lg="6" :md="12" :sm="24">
             <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="收货地址" data-step="10">
-              <a-input placeholder="请输入收货地址" v-decorator="['receiverAddress']" :readOnly="true" />
+              <a-input placeholder="请输入收货地址" v-decorator="['receiverAddress']" />
             </a-form-item>
           </a-col>
         </a-row>
@@ -546,7 +561,8 @@ export default {
             title: '出库人',
             key: 'warehousingUser',
             width: '9%',
-            type: FormTypes.input,
+            type: FormTypes.slot,
+            slotName: 'warehousingUser',
             validateRules: [{ required: true, message: '出库人不能为空' }],
           },
           { title: '出库时间', key: 'warehousingTime', width: '9%', type: FormTypes.date },

+ 2 - 2
jshERP-web/src/views/stock/CheckList.vue

@@ -49,9 +49,9 @@
             <a-divider type="vertical" />
             <a :disabled="record.taskStatus !== 1" @click="addTask('edit', record)">编辑</a>
             <a-divider type="vertical" />
-            <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+            <!-- <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
               <a :disabled="record.taskStatus !== 1 || record.taskStatus !== 4">删除</a>
-            </a-popconfirm>
+            </a-popconfirm> -->
           </span>
         </a-table>
       </a-card>

+ 15 - 1
jshERP-web/src/views/stock/TaskList.vue

@@ -43,7 +43,6 @@
           :rowSelection="{
             selectedRowKeys: selectedRowKeys,
             onChange: onSelectChange,
-            getCheckboxProps: getTaskkboxProps,
           }"
           @change="handleTableChange"
         >
@@ -146,6 +145,18 @@ export default {
       }
     },
   },
+  computed: {
+    isDel() {
+      return this.selectionRows.filter((item) => item.taskStatus !== 1 && item.taskStatus !== 4).length > 0
+        ? true
+        : false
+    },
+    isStock() {
+      return this.selectionRows.filter((item) => item.taskStatus !== 1 && item.taskStatus !== 2).length > 0
+        ? true
+        : false
+    },
+  },
 
   created() {
     this.getList()
@@ -199,6 +210,8 @@ export default {
     },
 
     handleDelete(id) {
+      if (this.isDel) return this.$message.error('只能删除未开始或已取消的盘点任务,请重新选择!')
+
       const ids = id || this.selectedRowKeys
       const url = this.url.delete + ids
       getAction(url)
@@ -211,6 +224,7 @@ export default {
         })
     },
     cancelTask() {
+      if (this.isStock) return this.$message.error('只能取消未开始或进行中的盘点任务,请重新选择!')
       const ids = this.selectedRowKeys
       const url = this.url.cancel + ids
       getAction(url)

+ 3 - 3
jshERP-web/src/views/stock/components/FilterForm.vue

@@ -3,7 +3,7 @@
     <!-- 搜索区域 -->
     <a-form layout="inline" :form="queryParam" ref="form" @keyup.enter.native="searchQuery">
       <a-row :gutter="24">
-        <a-col :md="5" :sm="24">
+        <a-col :md="4" :sm="24">
           <a-form-item label="盘点状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
             <a-select placeholder="请选择供应商" showSearch :options="taskStatusList" v-model="queryParam.taskStatus">
             </a-select>
@@ -11,7 +11,7 @@
         </a-col>
         <a-col :md="5" :sm="24">
           <a-form-item label="盘点单号" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <a-input placeholder="请输入条码、名称、助记码、规格、型号等信息" v-model="queryParam.number"></a-input>
+            <a-input placeholder="请输入条码、名称" v-model="queryParam.number"></a-input>
           </a-form-item>
         </a-col>
         <a-col :md="5" :sm="24">
@@ -20,7 +20,7 @@
             </a-select>
           </a-form-item>
         </a-col>
-        <a-col :md="5" :sm="24">
+        <a-col :md="4" :sm="24">
           <a-form-item label="创建人" :labelCol="labelCol" :wrapperCol="wrapperCol">
             <a-select placeholder="请选择创建人" showSearch :options="spinnerList" v-model="queryParam.createBy">
             </a-select>

+ 9 - 9
jshERP-web/src/views/stock/components/checkModal.vue

@@ -18,17 +18,17 @@
         <a-divider />
         <div>
           <div>
-            <a-form :form="queryParams" ref="form">
+            <a-form :form="queryParam" ref="form">
               <a-row class="form-row" :gutter="24">
                 <a-col :lg="6" :md="12" :sm="24" class="form-col">
                   <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="商品类别">
-                    <!-- <a-input disabled placeholder="请输入" v-model="queryParams.categoryId" /> -->
+                    <!-- <a-input disabled placeholder="请输入" v-model="queryParam.categoryId" /> -->
                     <a-tree-select
                       style="width: 100%"
                       :dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }"
                       allow-clear
                       :treeData="categoryTree"
-                      v-model="queryParams.categoryId"
+                      v-model="queryParam.categoryId"
                       placeholder="请选择商品类别"
                     >
                     </a-tree-select>
@@ -36,17 +36,17 @@
                 </a-col>
                 <a-col :lg="6" :md="12" :sm="24" class="form-col">
                   <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="商品名称">
-                    <a-input placeholder="请输入" v-model="queryParams.name" />
+                    <a-input placeholder="请输入" v-model="queryParam.name" />
                   </a-form-item>
                 </a-col>
                 <a-col :lg="6" :md="12" :sm="24" class="form-col">
                   <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="批次号">
-                    <a-input placeholder="请输入" v-model="queryParams.batchNumber" />
+                    <a-input placeholder="请输入" v-model="queryParam.batchNumber" />
                   </a-form-item>
                 </a-col>
                 <a-col :lg="6" :md="12" :sm="24" class="form-col">
                   <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="仓位货架">
-                    <a-input placeholder="请输入" v-model="queryParams.position" />
+                    <a-input placeholder="请输入" v-model="queryParam.position" />
                   </a-form-item>
                 </a-col>
                 <a-col :lg="6" :md="12" :sm="24" class="form-col">
@@ -200,7 +200,7 @@ export default {
       form: {},
       isShow: false,
       stockType: 'check',
-      queryParams: { categoryId: '', materialName: '', batchNumber: '', position: '', isDifference: null },
+      queryParam: { categoryId: '', materialName: '', batchNumber: '', position: '', isDifference: null },
       isDifferenceData: [
         {
           label: '是',
@@ -244,7 +244,7 @@ export default {
     editVisible(val) {
       if (!val) {
         this.editForm = {}
-        this.form.resetFields()
+        // this.form.resetFields()
       }
     },
   },
@@ -361,7 +361,7 @@ export default {
       const url2 = '/stocktaking/detailByItemList'
       const form = this.$refs['editForm'].form
 
-      const params = { ...this.queryParams, taskStocktakingId: id }
+      const params = { ...this.queryParam, taskStocktakingId: id || this.taskId }
       const url = url2 + '?pageNum=' + this.ipagination.current + '&pageSize=' + this.ipagination.pageSize
       postAction(url, params).then((res) => {
         this.dataSource = res.data

+ 8 - 1
jshERP-web/src/views/stock/components/editForm.vue

@@ -200,4 +200,11 @@ export default {
 }
 </script>
 
-<style></style>
+<style lang="less">
+.ant-input-disabled {
+  background-color: rgb(255, 255, 255, 0.2) !important;
+}
+.ant-select-disabled {
+  background-color: rgba(255, 255, 255, 0.2) !important;
+}
+</style>

+ 2 - 2
jshERP-web/src/views/stock/components/stockModal.vue

@@ -32,8 +32,8 @@
             :pagination="false"
             @change="handleTableChange"
           >
-            <span v-if="form.taskType === 2" slot="action" slot-scope="text, record">
-              <a-divider type="vertical" />
+            <span v-if="isShowBtn" slot="action" slot-scope="text, record">
+              <!-- <a-divider type="vertical" /> -->
               <a-popconfirm @confirm="handleDelete(record)" title="确定删除吗?">
                 <a>删除</a>
               </a-popconfirm>

+ 2 - 2
jshERP-web/src/views/stock/utils/table.js

@@ -83,10 +83,10 @@ const table = {
   ],
   checkGoodsColumns: [
     { dataIndex: 'categoryName', title: '商品类别' },
-    { dataIndex: 'name', title: '商品名称' },
+    { dataIndex: 'materialName', title: '商品名称' },
     { dataIndex: 'systemSku', title: '系统SKU' },
     { dataIndex: 'batchNumber', title: '批次号' },
-    { dataIndex: 'unit', title: '单位' },
+    { dataIndex: 'commodityUnit', title: '单位' },
     { dataIndex: 'productionDate', title: '生产日期' },
     { dataIndex: 'supplierName', title: '供应商' },
     { dataIndex: 'barCode', title: '商品条码' },

+ 1 - 1
jshERP-web/src/views/system/UserList.vue

@@ -54,7 +54,7 @@
                 >分配客户</a
               >
               <a-divider v-if="btnEnableList.indexOf(1) > -1 && depotFlag === '1'" type="vertical" />
-              <a v-if="btnEnableList.indexOf(1) > -1 && customerFlag === '1'" @click="btnSetSupplier(record)"
+              <a v-if="btnEnableList.indexOf(1) > -1 && customerFlag === '1' && record.roleName === '供应商'" @click="btnSetSupplier(record)"
                 >分配供应商</a
               >
               <a-divider v-if="btnEnableList.indexOf(1) > -1 && customerFlag === '1'" type="vertical" />

+ 5 - 4
jshERP-web/src/views/system/modules/RoleFunctionModal.vue

@@ -109,7 +109,8 @@ export default {
           let formData = Object.assign(this.model, values)
           formData.type = 'RoleFunctions'
           formData.keyId = this.roleId
-          formData.value = this.checkedKeys
+          formData.value = this.checkedKeys.map((item) => Number(item))
+
           let obj
           checkUserBusiness({ type: 'RoleFunctions', keyId: this.roleId }).then((res) => {
             if (res.data && res.data.id) {
@@ -170,10 +171,10 @@ export default {
     },
     setThisExpandedKeys(node) {
       if (node.checked == true) {
-        this.checkedKeys.push(node.key)
+        this.checkedKeys.push(Number(node.key))
       }
       if (node.children && node.children.length > 0) {
-        this.iExpandedKeys.push(node.key)
+        this.iExpandedKeys.push(Number(node.key))
         for (let a = 0; a < node.children.length; a++) {
           this.setThisExpandedKeys(node.children[a])
         }
@@ -181,7 +182,7 @@ export default {
     },
     getAllKeys(node) {
       // console.log('node',node);
-      this.allTreeKeys.push(node.key)
+      this.allTreeKeys.push(Number(node.key))
       if (node.children && node.children.length > 0) {
         for (let a = 0; a < node.children.length; a++) {
           this.getAllKeys(node.children[a])

+ 1 - 1
jshERP-web/src/views/system/modules/UserCustomerModal.vue

@@ -108,7 +108,7 @@ export default {
           let formData = Object.assign(this.model, values)
           formData.type = 'UserCustomer'
           formData.keyId = this.roleId
-          formData.value = this.checkedKeys
+          formData.value = this.checkedKeys.map((item) => Number(item))
           let obj
           checkUserBusiness({ type: 'UserCustomer', keyId: this.roleId }).then((res) => {
             if (res.data && res.data.id) {

+ 1 - 1
jshERP-web/src/views/system/modules/UserDepotModal.vue

@@ -108,7 +108,7 @@ export default {
           let formData = Object.assign(this.model, values)
           formData.type = 'UserDepot'
           formData.keyId = this.roleId
-          formData.value = this.checkedKeys
+          formData.value = this.checkedKeys.map((item) => Number(item))
           let obj
           checkUserBusiness({ type: 'UserDepot', keyId: this.roleId }).then((res) => {
             if (res.data && res.data.id) {

+ 1 - 1
jshERP-web/src/views/system/modules/userSupplierModal.vue

@@ -108,7 +108,7 @@ export default {
           let formData = Object.assign(this.model, values)
           formData.type = 'UserSupplier'
           formData.keyId = this.roleId
-          formData.value = this.checkedKeys
+          formData.value = this.checkedKeys.map((item) => Number(item))
           let obj
           checkUserBusiness({ type: 'UserSupplier', keyId: this.roleId }).then((res) => {
             if (res.data && res.data.id) {

+ 16 - 0
src/main/java/com/jsh/erp/controller/SupplierController.java

@@ -137,6 +137,22 @@ public class SupplierController extends BaseController {
         return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
     }
 
+    @GetMapping(value = "/checkIsTelephoneAndTypeExist")
+    @ApiOperation(value = "检查手机号码和类型是否存在")
+    public String checkIsTelephoneAndTypeExist(@RequestParam Long id,
+                                          @RequestParam(value ="telephone", required = false) String telephone,
+                                          @RequestParam(value ="type") String type,
+                                          HttpServletRequest request){
+        Map<String, Object> objectMap = new HashMap<>();
+        int exist = supplierService.checkIsTelephoneAndTypeExist(id, telephone, type);
+        if (exist > 0) {
+            objectMap.put("status", true);
+        } else {
+            objectMap.put("status", false);
+        }
+        return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
+    }
+
     /**
      * 查找客户信息-下拉框
      * @param request

+ 1 - 4
src/main/java/com/jsh/erp/controller/pda/PdaController.java

@@ -9,7 +9,6 @@ import com.jsh.erp.base.AjaxResult;
 import com.jsh.erp.base.BaseController;
 import com.jsh.erp.base.TableDataInfo;
 import com.jsh.erp.datasource.entities.DepotHead;
-import com.jsh.erp.datasource.entities.MaterialVo4Unit;
 import com.jsh.erp.datasource.entities.Supplier;
 import com.jsh.erp.datasource.entities.*;
 import com.jsh.erp.datasource.pda.dto.PDADepotHeadDTO;
@@ -25,12 +24,9 @@ import com.jsh.erp.datasource.vo.TaskStocktakingVO;
 import com.jsh.erp.datasource.vo.TreeNode;
 import com.jsh.erp.query.LambdaQueryWrapperX;
 import com.jsh.erp.service.*;
-import com.jsh.erp.utils.FileUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -105,6 +101,7 @@ public class PdaController extends BaseController {
     public AjaxResult orderInfo(@PathVariable("id") Long id){
         DepotHead depotHead = depotHeadService.getOne(new LambdaQueryWrapperX<DepotHead>().eq(DepotHead::getId, id));
         depotHead.setSupplierName(supplierService.getOne(new LambdaQueryWrapperX<Supplier>().eq(Supplier::getId, depotHead.getOrganId())).getSupplier());
+//        depotHeadService.pdaDetail(id);
         return AjaxResult.success(depotHead);
     }
 

+ 7 - 0
src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapper.java

@@ -17,6 +17,13 @@ public interface DepotHeadMapper extends BaseMapperX<DepotHead> {
      */
     List<PDADepotHeadVO> pdaList(PDADepotHeadDTO pdaDepotHeadDTO);
 
+    /**
+     * PDA查询订单详情
+     * @param id 订单id
+     * @return
+     */
+    PDADepotHeadVO pdaDetail(@Param("id")Long id);
+
     long countByExample(DepotHeadExample example);
 
     int deleteByExample(DepotHeadExample example);

+ 3 - 0
src/main/java/com/jsh/erp/datasource/pda/dto/PDATaskStocktakingItemDTO.java

@@ -22,4 +22,7 @@ public class PDATaskStocktakingItemDTO {
 
     @ApiModelProperty("商品盘点类型:1.未盘,2.盘盈,3.盘亏 4.无差异 其余为全部")
     private List<String> statusList;
+
+    @ApiModelProperty("任务编号")
+    private String number;
 }

+ 4 - 0
src/main/java/com/jsh/erp/datasource/pda/vo/PDADepotHeadVO.java

@@ -23,6 +23,10 @@ public class PDADepotHeadVO {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
+    @ApiModelProperty("单据时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date operTime;
+
     @ApiModelProperty("商品总数量")
     private int goodsQuantity;
 

+ 3 - 0
src/main/java/com/jsh/erp/datasource/pda/vo/PDATaskStocktakingItemVO.java

@@ -51,4 +51,7 @@ public class PDATaskStocktakingItemVO {
     @ApiModelProperty("盘点状态:1.未盘,2.盘盈,3.盘亏 4.无差异 其余为全部")
     private Integer status;
 
+    @ApiModelProperty("图片地址")
+    private String imgName;
+
 }

+ 7 - 0
src/main/java/com/jsh/erp/service/DepotHeadService.java

@@ -28,6 +28,13 @@ public interface DepotHeadService extends IService<DepotHead> {
      */
     List<PDADepotHeadVO> pdaList(PDADepotHeadDTO pdaDepotHeadDTO);
 
+    /**
+     * PDA查询订单详情
+     * @param id
+     * @return
+     */
+    PDADepotHeadVO pdaDetail(Long id);
+
     DepotHead getDepotHead(long id)throws Exception;
 
     List<DepotHead> getDepotHead()throws Exception;

+ 2 - 0
src/main/java/com/jsh/erp/service/SupplierService.java

@@ -41,6 +41,8 @@ public interface SupplierService extends IService<Supplier> {
 
     int checkIsNameAndTypeExist(Long id, String name, String type)throws Exception;
 
+    int checkIsTelephoneAndTypeExist(Long id, String telephone, String type);
+
     @Transactional(value = "transactionManager", rollbackFor = Exception.class)
     void updateAdvanceIn(Long supplierId);
 

+ 9 - 0
src/main/java/com/jsh/erp/service/SyncTescoSystemService.java

@@ -60,6 +60,9 @@ public class SyncTescoSystemService {
     @Resource
     private MaterialCurrentStockMapperEx materialCurrentStockMapperEx;
 
+    @Value("${tesco.openSycn}")
+    private boolean openSycn;
+    
     @Value("${tesco.sycnErpMaterialStockUrl}")
     private String sycnErpMaterialStockUrl;
 
@@ -195,6 +198,9 @@ public class SyncTescoSystemService {
     }
 
     public String sycnTescoStock(List<Long> mIdList) {
+        if (!openSycn) {
+            return "tesco系统同步未开启";
+        }
         List<MaterialCurrentStock4SystemSku> stockList = materialCurrentStockMapperEx.getCurrentStockMapByMdIdList(mIdList);
         if (!CollectionUtils.isEmpty(stockList)) {
             try {
@@ -249,6 +255,9 @@ public class SyncTescoSystemService {
     }
 
     public String sycnTescoSalePrice(List<Long> mIdList) {
+        if (!openSycn) {
+            return "tesco系统同步未开启";
+        }
         try {
             List<MaterialCurrentStock4SystemSku> mList = materialService.getMaterialCurrentPriceByIdList(mIdList);
             if (!CollectionUtils.isEmpty(mList)) {

+ 5 - 0
src/main/java/com/jsh/erp/service/impl/DepotHeadServiceImpl.java

@@ -111,6 +111,11 @@ public class DepotHeadServiceImpl extends ServiceImpl<DepotHeadMapper, DepotHead
     }
 
     @Override
+    public PDADepotHeadVO pdaDetail(Long id) {
+        return depotHeadMapper.pdaDetail(id);
+    }
+
+    @Override
     public DepotHead getDepotHead(long id)throws Exception {
         DepotHead result=null;
         try{

+ 14 - 0
src/main/java/com/jsh/erp/service/impl/SupplierServiceImpl.java

@@ -282,6 +282,20 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
         return list==null?0:list.size();
     }
 
+    @Override
+    public int checkIsTelephoneAndTypeExist(Long id, String telephone, String type) {
+        telephone = (telephone == null) ? "" : telephone;
+        SupplierExample example = new SupplierExample();
+        example.createCriteria().andIdNotEqualTo(id).andTelephoneEqualTo(telephone).andTypeEqualTo(type).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
+        List<Supplier> list = null;
+        try {
+            list = supplierMapper.selectByExample(example);
+        } catch (Exception e) {
+            JshException.readFail(logger, e);
+        }
+        return list == null ? 0 : list.size();
+    }
+
     /**
      * 更新会员的预付款
      * @param supplierId

+ 4 - 0
src/main/resources/application-dev.yml

@@ -30,3 +30,7 @@ aliyun:
     bucketName: xiangli-erp
     miniProgramAppId: wxd716cb744e32271a
     linkUrl: https://xiangli-erp.oss-cn-hangzhou.aliyuncs.com
+tesco:
+  openSycn: false
+  sycnErpMaterialStockUrl: http://localhost:8088/no-auth/erp/sync-stock
+  sycnErpMaterialPriceUrl: http://localhost:8088/no-auth/erp/sync-saleprice

+ 5 - 0
src/main/resources/application-pro.yml

@@ -30,3 +30,8 @@ aliyun:
     bucketName: xiangli-erp
     miniProgramAppId: wxd716cb744e32271a
     linkUrl: https://xiangli-erp.oss-cn-hangzhou.aliyuncs.com
+
+tesco:
+  openSycn: true
+  sycnErpMaterialStockUrl: https://tesco.xianglitech.com.cn/prod-api/no-auth/erp/sync-stock
+  sycnErpMaterialPriceUrl: https://tesco.xianglitech.com.cn/prod-api/no-auth/erp/sync-saleprice

+ 5 - 0
src/main/resources/application-test.yml

@@ -30,3 +30,8 @@ aliyun:
     bucketName: xiangli-erp
     miniProgramAppId: wxd716cb744e32271a
     linkUrl: https://xiangli-erp.oss-cn-hangzhou.aliyuncs.com
+
+tesco:
+  openSycn: false
+  sycnErpMaterialStockUrl: https://test.xianglitech.com.cn/stage-api/no-auth/erp/sync-stock
+  sycnErpMaterialPriceUrl: https://test.xianglitech.com.cn/stage-api/no-auth/erp/sync-saleprice

+ 20 - 0
src/main/resources/mapper_xml/DepotHeadMapper.xml

@@ -764,6 +764,7 @@
       dh.create_time,
       dh.goods_quantity,
       dh.goods_type_count,
+      dh.oper_time,
       s.supplier AS supplier_name,
       dh.status
     FROM
@@ -784,6 +785,25 @@
       </if>
     </where>
       GROUP BY dh.id
+      ORDER BY dh.create_time DESC
+  </select>
+
+  <select id="pdaDetail" resultType="com.jsh.erp.datasource.pda.vo.PDADepotHeadVO">
+    SELECT
+      dh.id,
+      dh.number,
+      dh.create_time,
+      dh.goods_quantity,
+      dh.goods_type_count,
+      dh.oper_time,
+      s.supplier AS supplier_name,
+      dh.status
+    FROM
+      jsh_depot_head dh
+      LEFT JOIN jsh_supplier s ON dh.organ_id = s.id
+      LEFT JOIN jsh
+    WHERE
+      dh.id = #{id}
   </select>
 
   <select id="getDepotLastByMaterialId" resultType="com.jsh.erp.datasource.entities.DepotHead">

+ 6 - 0
src/main/resources/mapper_xml/TaskStocktakingItemMapper.xml

@@ -16,6 +16,7 @@
         me.commodity_unit AS commodity_unit,
         tsi.new_inventory AS new_inventory,
         tsi.new_position AS new_position,
+        m.img_name AS img_name,
         tsi.status AS status
         FROM
         task_stocktaking_item tsi
@@ -26,6 +27,11 @@
         <where>
             tsi.delete_flag = 0
             AND tsi.task_stocktaking_id = #{taskId}
+            <if test="number != null and number != ''">
+                m.name LIKE CONCAT('%',#{number},'%')
+                OR me.batch_number LIKE CONCAT('%',#{number},'%')
+                OR m.system_sku LIKE CONCAT('%',#{number},'%')
+            </if>
             <if test="userIdList != null and userIdList.size > 0">
                 AND tsi.creator IN
                 <foreach collection="userIdList" item="item" open="(" separator="," close=")">