浏览代码

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

QuYueTing 6 月之前
父节点
当前提交
812b6f1e86
共有 20 个文件被更改,包括 313 次插入381 次删除
  1. 29 33
      fhKeeper/formulahousekeeper/customerBuler-crm/package-lock.json
  2. 2 0
      fhKeeper/formulahousekeeper/customerBuler-crm/package.json
  3. 0 0
      fhKeeper/formulahousekeeper/customerBuler-crm/src/components/translationComponent/personnelSearch/data.ts
  4. 128 16
      fhKeeper/formulahousekeeper/customerBuler-crm/src/components/translationComponent/personnelSearch/personnelSearch.vue
  5. 10 4
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/index.vue
  6. 3 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/home.vue
  7. 1 0
      fhKeeper/formulahousekeeper/customerBuler-crm/src/store/Store.d.ts
  8. 2 0
      fhKeeper/formulahousekeeper/customerBuler-crm/src/store/index.ts
  9. 3 1
      fhKeeper/formulahousekeeper/customerBuler-crm/vite.config.ts
  10. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java
  11. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ClueController.java
  12. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/CustomController.java
  13. 40 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  14. 3 6
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ContactsServiceImpl.java
  15. 2 2
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  16. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  17. 62 5
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  18. 2 2
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/SalesOrderServiceImpl.java
  19. 5 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  20. 17 307
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

+ 29 - 33
fhKeeper/formulahousekeeper/customerBuler-crm/package-lock.json

@@ -12,6 +12,8 @@
         "@zmjs/form-design": "file:../plugIn/form-design-master/update",
         "animate.css": "^4.1.1",
         "axios": "^1.6.7",
+        "browserslist": "^4.24.2",
+        "caniuse-lite": "^1.0.30001680",
         "echarts": "^5.5.0",
         "element-plus": "^2.5.6",
         "pinia": "^2.1.7",
@@ -1270,10 +1272,9 @@
       }
     },
     "node_modules/browserslist": {
-      "version": "4.23.0",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
-      "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
-      "dev": true,
+      "version": "4.24.2",
+      "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz",
+      "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
       "funding": [
         {
           "type": "opencollective",
@@ -1289,10 +1290,10 @@
         }
       ],
       "dependencies": {
-        "caniuse-lite": "^1.0.30001587",
-        "electron-to-chromium": "^1.4.668",
-        "node-releases": "^2.0.14",
-        "update-browserslist-db": "^1.0.13"
+        "caniuse-lite": "^1.0.30001669",
+        "electron-to-chromium": "^1.5.41",
+        "node-releases": "^2.0.18",
+        "update-browserslist-db": "^1.1.1"
       },
       "bin": {
         "browserslist": "cli.js"
@@ -1311,10 +1312,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001616",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz",
-      "integrity": "sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==",
-      "dev": true,
+      "version": "1.0.30001680",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
+      "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
       "funding": [
         {
           "type": "opencollective",
@@ -1476,10 +1476,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.756",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.756.tgz",
-      "integrity": "sha512-RJKZ9+vEBMeiPAvKNWyZjuYyUqMndcP1f335oHqn3BEQbs2NFtVrnK5+6Xg5wSM9TknNNpWghGDUCKGYF+xWXw==",
-      "dev": true
+      "version": "1.5.63",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.63.tgz",
+      "integrity": "sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA=="
     },
     "node_modules/element-plus": {
       "version": "2.7.2",
@@ -1562,10 +1561,9 @@
       }
     },
     "node_modules/escalade": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
-      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
-      "dev": true,
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
       "engines": {
         "node": ">=6"
       }
@@ -2021,10 +2019,9 @@
       "dev": true
     },
     "node_modules/node-releases": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
-      "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
-      "dev": true
+      "version": "2.0.18",
+      "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz",
+      "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="
     },
     "node_modules/normalize-path": {
       "version": "3.0.0",
@@ -2105,9 +2102,9 @@
       }
     },
     "node_modules/picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
     },
     "node_modules/picomatch": {
       "version": "2.3.1",
@@ -2844,10 +2841,9 @@
       "dev": true
     },
     "node_modules/update-browserslist-db": {
-      "version": "1.0.15",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz",
-      "integrity": "sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==",
-      "dev": true,
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+      "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
       "funding": [
         {
           "type": "opencollective",
@@ -2863,8 +2859,8 @@
         }
       ],
       "dependencies": {
-        "escalade": "^3.1.2",
-        "picocolors": "^1.0.0"
+        "escalade": "^3.2.0",
+        "picocolors": "^1.1.0"
       },
       "bin": {
         "update-browserslist-db": "cli.js"

+ 2 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/package.json

@@ -15,6 +15,8 @@
     "@zmjs/form-design": "file:../plugIn/form-design-master/update",
     "animate.css": "^4.1.1",
     "axios": "^1.6.7",
+    "browserslist": "^4.24.2",
+    "caniuse-lite": "^1.0.30001680",
     "echarts": "^5.5.0",
     "element-plus": "^2.5.6",
     "pinia": "^2.1.7",

+ 0 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/components/translationComponent/personnelSearch/data.ts


+ 128 - 16
fhKeeper/formulahousekeeper/customerBuler-crm/src/components/translationComponent/personnelSearch/personnelSearch.vue

@@ -1,5 +1,6 @@
 <script lang="ts" setup>
 import { ref, reactive, onMounted, inject, watchEffect, computed } from 'vue';
+import { debounce } from 'lodash';
 import { storeToRefs } from 'pinia';
 import { Emits, optionsType } from './type';
 import { useStore } from '@/store/index'
@@ -10,46 +11,157 @@ const props = defineProps({
   modelValue: { type: [String, Number, Array, Object, Boolean], required: true },
   multiple: { type: Boolean, required: false, default: false },
   size: { type: String as () => assemblySize, required: true, default: () => 'small' },
-  placeholder: { type: String, required: false, default: () => '请填写' },
+  placeholder: { type: String, required: false, default: () => '请选择' },
   disabled: { type: Boolean, required: false, default: false },
   options: { type: Array as () => optionsType, required: false, default: () => [] },
+  width: { type: String, required: false, default: () => '100%' },
 });
 const emit = defineEmits<Emits>();
-const { userInfo } = storeToRefs(useStore());
+const personnelArray = ref<optionsType>([]);
+const { userInfo, personnelList } = storeToRefs(useStore());
+const { setValue } = useStore()
 
 const timeRef = generateUniqueId()
+const selectLoading = ref(false);
 const controlTranslation = reactive({
-  visibleFlag: false
+  visibleFlag: false // 下拉框出现隐藏
 })
 
 const selectedValue = ref(props.modelValue); // 响应式绑定 v-model 的值
 
-// function getUserList(keyword: string = '', flag: boolean = true) {
-//   post(`/user/getEmployeeList`, {
-//     keyword,
-//     status: 3,
-//     matchingType: 0,
-//   })
-// }
+const getSelectedLabel = computed(() => {
+  if (!props.multiple) {
+    const item = getPersonnelListItems(selectedValue.value);
+    return item ? item.label : props.placeholder
+  }
+
+  if(props.multiple) {
+    if(Array.isArray(selectedValue.value)) {
+      if(selectedValue.value.length <= 0) {
+        return props.placeholder
+      }
+      const item = getPersonnelListItems(selectedValue.value);
+      return item ? item.label : props.placeholder
+    } else {
+      return props.placeholder
+    }
+  }
+
+  return props.placeholder
+})
+
+function tagClose(_evt: MouseEvent) {
+  if(Array.isArray(selectedValue.value)) {
+    selectedValue.value.shift()
+    updateValue(selectedValue.value)
+  }
+}
+function getPersonnelListItems(val: any) {
+  let value = val;
+  if (Array.isArray(val) && val.length > 0) {
+    value = val[0]
+  }
+  return personnelList.value.find((item: any) => item.value == value)
+}
+
+function getUserList(keyword: string = '') {
+  post(`/user/getSimpleActiveUserListNew`, { keyword }).then(res => {
+    personnelArray.value = res.data
+    if (!keyword) {
+      setValue((res.data || []), 'personnelList')
+    }
+  }).finally(() => {
+    selectLoading.value = false
+  })
+}
 
 function visibleChange(visible: boolean) { // 下拉框出现/隐藏时触发
-  console.log(visible, '<==== visible')
   controlTranslation.visibleFlag = visible
 }
+
+const filterMethod = debounce(filterMethods, 500)
+function filterMethods(val: string) {
+  if (val == '') {
+    personnelArray.value = personnelList.value
+    selectLoading.value = false
+    return
+  }
+  getUserList(val)
+}
+
 function updateValue(val: any) { // 值改变的时候触发
   emit('update:modelValue', selectedValue.value)
   emit('change', val)
 }
 
-console.log(props, userInfo, '<==== 看看数据')
+onMounted(() => {
+  if (personnelList.value.length == 0) {
+    getUserList()
+  } else {
+    personnelArray.value = personnelList.value
+  }
+})
+
+console.log(props, userInfo.value, '<==== 看看数据')
 </script>
 
 <template>
   <el-select v-model="selectedValue" :ref="`selectRef${timeRef}`" :multiple="multiple" :size="size"
-    :placeholder="placeholder" :disabled="disabled" clearable collapse-tags @change="updateValue"
-    @visible-change="visibleChange">
-    <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
+    :loading="selectLoading" :placeholder="placeholder" :disabled="disabled" clearable filterable collapse-tags
+    :style="`width: ${width}`"
+    :class="`custom-select ${userInfo.userNameNeedTranslate != 1 && !controlTranslation.visibleFlag ? 'setUpInput' : ''}`"
+    @change="updateValue" @visible-change="visibleChange"
+    :filter-method="(val: string) => { selectLoading = true, filterMethod(val) }">
+    <!-- 搜索内容显示 -->
+    <template #prefix v-if="!multiple">
+      <div style="height: 100%;display: flex;align-items: center;">
+        <!-- 单选 -->
+        <div v-if="!controlTranslation.visibleFlag" class="selectSingleChoice">
+          <template v-if="getSelectedLabel == placeholder">
+            {{ placeholder }}
+          </template>
+          <template v-else>
+            <span style="color: #303133;">
+              <TextTranslation translationTypes="userName" :translationValue="getSelectedLabel"></TextTranslation>
+            </span>
+          </template>
+        </div>
+      </div>
+    </template>
+    <template #tag v-if="multiple">
+      <!-- 多选 -->
+      <template v-if="Array.isArray(selectedValue) && selectedValue.length > 0">
+        <el-tag type="info" :size="size" closable @close="tagClose">
+          <TextTranslation translationTypes="userName" :translationValue="getSelectedLabel"></TextTranslation>
+        </el-tag>
+        <el-tag type="info" :size="size" v-if="selectedValue.length > 1">+{{ selectedValue.length }}</el-tag>
+      </template>
+      <template v-else>
+        <span style="color: #A8ABB2">{{ placeholder }}</span> 
+      </template>
+    </template>
+    <!-- 主题内容显示 -->
+    <el-option v-for="item in personnelArray" :key="item.value" :label="item.label" :value="item.value"></el-option>
   </el-select>
+  <span class="aabbcc">aabbcc</span>
 </template>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.custom-select {
+  :deep(.el-select__placeholder.is-transparent) {
+    color: transparent !important;
+  }
+  :deep(.el-select__placeholder) {
+    span {
+      display: none;
+    }
+  }
+}
+
+.setUpInput :deep(.el-input__inner) {
+  color: #fff !important;
+}
+.aabbcc {
+  color: $modena;
+}
+</style>

+ 10 - 4
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/index.vue

@@ -17,10 +17,15 @@ import {
   SummaryData
 } from './api';
 
-const selectVal = ref<string | number>('')
+const selectVal = ref<Array<string | number>>([])
+const selectVals = ref<string | number>('')
 const selectChange = (val: any) => {
-  console.log(val, '<===== 当前的数据')
-  console.log(selectVal.value, '<===== 双向绑定的数据')
+  console.log(val, '<===== 当前的数据 selectVal')
+  console.log(selectVal.value, '<===== 双向绑定的数据 selectVal')
+}
+const selectChange2 = (val: any) => {
+  console.log(val, '<===== 当前的数据 selectVals')
+  console.log(selectVals.value, '<===== 双向绑定的数据 selectVals')
 }
 const permissionOptions = [
   {
@@ -187,7 +192,8 @@ watchEffect(() => {
           </el-select>
         </div>
         <div class="w-40">
-          <personnel-search v-model="selectVal" disabled multiple placeholder="你好世界" @change="selectChange"></personnel-search>
+          <personnel-search v-model="selectVal" :size="'small'" multiple placeholder="你好世界" @change="selectChange"></personnel-search>
+          <personnel-search v-model="selectVals" :size="'small'" placeholder="你好世界" @change="selectChange2"></personnel-search>
           <el-select
             ref="select1"
             size="small"

+ 3 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/home.vue

@@ -82,7 +82,9 @@ const agentConfig = () => {
 onMounted(async () => {
   await nextTick();
   isLoading.value = false;
-  agentConfig()
+  if (userInfo.value.userNameNeedTranslate == 1) {
+    agentConfig()
+  }
 });
 </script>
 

+ 1 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/store/Store.d.ts

@@ -2,6 +2,7 @@ type SotreState = {
   userInfo: any;
   routers: RouteRecordRaw[];
   asyncRoutesMark: boolean;
+  personnelList: any[]
 };
 type SoreGetters = {
   getRoutersList: () => RouteRecordRaw[];

+ 2 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/store/index.ts

@@ -10,6 +10,7 @@ export const useStore = defineStore<
     userInfo: {}, // 当前的用户信息
     routers: [], // 返回的所有路由
     asyncRoutesMark: false, // 是否添加过路由
+    personnelList: [], // 人员列表
   }),
   getters: {
     getRoutersList() {
@@ -48,6 +49,7 @@ export const useStore = defineStore<
       sessionStorage.clear();
       this.userInfo = {};
       this.routers = [];
+      this.personnelList = [];
       this.asyncRoutesMark = false;
     },
   },

+ 3 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/vite.config.ts

@@ -33,7 +33,9 @@ export default defineConfig({
   css: {
     preprocessorOptions: {
       scss: {
-        additionalData: '@import "@/styles/global.scss";'
+        // additionalData: '@import "@/styles/global.scss";'
+        additionalData: '@use "@/styles/global.scss" as *;', // 使用 @use 语法
+        api: "modern-compiler"
       }
     }
   },

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java

@@ -138,7 +138,7 @@ public class BusinessOpportunityController {
 
                 if(model.equals("inchargerId")){
                     if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(data))+"$";
+                        value = "$userName="+String.valueOf(aClass.getMethod("getInchargerName").invoke(data))+"$";
                     }else {
                         value = String.valueOf(aClass.getMethod("getInchargerName").invoke(data)).equals("null") ? "" :String.valueOf(aClass.getMethod("getInchargerName").invoke(data));
                     }

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ClueController.java

@@ -238,7 +238,7 @@ public class ClueController {
 
                 if(model.equals("inchargerId")){
                     if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(data))+"$";
+                        value = "$userName="+String.valueOf(aClass.getMethod("getInchargerName").invoke(data))+"$";
                     }else {
                         value = String.valueOf(aClass.getMethod("getInchargerName").invoke(data)).equals("null") ? "" :String.valueOf(aClass.getMethod("getInchargerName").invoke(data));
                     }

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/CustomController.java

@@ -152,7 +152,7 @@ public class CustomController {
 
                 if(model.equals("inchargerId")){
                     if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(data))+"$";
+                        value = "$userName="+String.valueOf(aClass.getMethod("getInchargerName").invoke(data))+"$";
                     }else {
                         value = String.valueOf(aClass.getMethod("getInchargerName").invoke(data)).equals("null") ? "" :String.valueOf(aClass.getMethod("getInchargerName").invoke(data));
                     }

文件差异内容过多而无法显示
+ 40 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WeiXinCorpController.java


+ 3 - 6
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ContactsServiceImpl.java

@@ -688,6 +688,7 @@ public class ContactsServiceImpl extends ServiceImpl<ContactsMapper, Contacts> i
         map.put("ownerName", ownerName);
         map.put("email", email);
         map.put("creatorName", creatorName);
+        map.put("companyId",user.getCompanyId());
         Page<ContactsVo> pageContacts = contactsMapper.pageContacts(new Page<>(-1,-1), map);
         List<ContactsVo> records = pageContacts.getRecords();
 
@@ -701,11 +702,7 @@ public class ContactsServiceImpl extends ServiceImpl<ContactsMapper, Contacts> i
                 String value = "";
 
                 if(model.equals("customId")){
-                    if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        value = "$userName"+String.valueOf(aClass.getMethod("getCustomName").invoke(contactsVo))+"$";
-                    }else {
-                        value = String.valueOf(aClass.getMethod("getCustomName").invoke(contactsVo)).equals("null") ?"" :String.valueOf(aClass.getMethod("getCustomName").invoke(contactsVo));
-                    }
+                    value = String.valueOf(aClass.getMethod("getCustomName").invoke(contactsVo)).equals("null") ?"" :String.valueOf(aClass.getMethod("getCustomName").invoke(contactsVo));
                 }
                 else if(model.equals("sex")){
                     value = String.valueOf(aClass.getMethod("getSex").invoke(contactsVo)).equals("null") ?"":String.valueOf(aClass.getMethod("getSex").invoke(contactsVo));
@@ -720,7 +717,7 @@ public class ContactsServiceImpl extends ServiceImpl<ContactsMapper, Contacts> i
                 }
                 else if(model.equals("ownerId")){
                     if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        value = "$userName"+String.valueOf(aClass.getMethod("getOwnerName").invoke(contactsVo))+"$";
+                        value = "$userName="+String.valueOf(aClass.getMethod("getOwnerName").invoke(contactsVo))+"$";
                     }else {
                         value = String.valueOf(aClass.getMethod("getOwnerName").invoke(contactsVo)).equals("null") ? "" :String.valueOf(aClass.getMethod("getOwnerName").invoke(contactsVo));
                     }

+ 2 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -456,7 +456,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                             String value = String.valueOf(aClass.getMethod("get" + targetName).invoke(product)==null?"":aClass.getMethod("get" + targetName).invoke(product));
                             if(model.equals("inchargerId")){
                                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                                    value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(product))+"$";
+                                    value = "$userName="+String.valueOf(aClass.getMethod("getInchargerName").invoke(product))+"$";
                                 }else {
                                     value = String.valueOf(aClass.getMethod("getInchargerName").invoke(product));
                                 }
@@ -480,7 +480,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                     String value = String.valueOf(aClass.getMethod("get" + targetName).invoke(product)==null?"":aClass.getMethod("get" + targetName).invoke(product));
                     if(model.equals("inchargerId")){
                         if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                            value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(product))+"$";
+                            value = "$userName="+String.valueOf(aClass.getMethod("getInchargerName").invoke(product))+"$";
                         }else {
                             value = String.valueOf(aClass.getMethod("getInchargerName").invoke(product));
                         }

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -7692,7 +7692,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Map<String, Object>> mapList = membList.stream().filter(mb -> mb.get("creatorId").equals(user.getId())).collect(Collectors.toList());
                     List<String> membRowData=new ArrayList<>();
                     if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        membRowData.add("$userName"+(user.getCorpwxUserid()==null?"":user.getCorpwxUserid())+"$");
+                        membRowData.add("$userName="+(user.getCorpwxUserid()==null?"":user.getCorpwxUserid())+"$");
                     }else {
                         membRowData.add(user.getName());
                     }

+ 62 - 5
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -8764,7 +8764,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     public HttpRespMsg exportCustomerTotalCount(String startDate, String endDate, String userId, Integer departmentId, Integer exportType, HttpServletRequest request) throws Exception {
         User user = userMapper.selectById(request.getHeader("token"));
         WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));
-
+        List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
 
         List<List<String>> dataList = new ArrayList<>();
         List<String> titleList = new ArrayList<>();
@@ -8780,7 +8780,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             List<UserVO> userVOList = (List<UserVO>) respMsg.getData();
             for (UserVO userVO : userVOList) {
                 List<String> item = new ArrayList<>();
-                item.add(userVO.getName());
+                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                    item.add("$userName="+userVO.getName()+"$");
+                }else{
+                    item.add(userVO.getName());
+                }
                 item.add((userVO.getCustomertotal() == null ? 0 : userVO.getCustomertotal()) + "");
                 item.add((userVO.getCustomerDeal() == null ? 0 : userVO.getCustomerDeal()) + "");
                 item.add((userVO.getDealRate() == null ? 0 : userVO.getDealRate()) + "");
@@ -8793,7 +8797,22 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             List<DepartmentVO> departmentVOList = (List<DepartmentVO>) respMsg.getData();
             for (DepartmentVO departmentVO : departmentVOList) {
                 List<String> item = new ArrayList<>();
-                item.add(departmentVO.getDepartmentName());
+                //取部门名
+                for (Department department : deptName) {
+                    if (departmentVO.getId().toString().equals(department.getDepartmentId().toString())){
+                        if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
+                            item.add(exportWxDepartment(department));
+                        }else {
+                            item.add(getSupDepartment(department));
+                        }
+                        break;
+                    }
+                }
+                /*if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                    item.add("$departmentName="+departmentVO.getDepartmentName()+"$");
+                }else{
+                    item.add(departmentVO.getDepartmentName());
+                }*/
                 item.add((departmentVO.getCustomertotal() == null ? 0 : departmentVO.getCustomertotal()) + "");
                 item.add((departmentVO.getCustomerDeal() == null ? 0 : departmentVO.getCustomerDeal()) + "");
                 item.add((departmentVO.getDealRate() == null ? 0 : departmentVO.getDealRate()) + "");
@@ -8805,12 +8824,40 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
         return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo, fileName, dataList, path);
     }
+    private String exportWxDepartment(Department department) {
+        if(department == null || department.getCorpwxDeptid() == null){
+            return "";
+        }
+        String depHierarchy = "$departmentName="+department.getCorpwxDeptid()+"$";
+        //搜到父部门进行添加
+        if (department.getCorpwxDeptpid()==null || department.getCorpwxDeptpid()==1) {
+            return depHierarchy;
+        }else{
+            Department supDep = departmentMapper.selectOne(new QueryWrapper<Department>().eq("corpwx_deptid", department.getCorpwxDeptpid()).eq("company_id", department.getCompanyId()));
+            return exportWxDepartment(supDep) + "/" + depHierarchy;
+        }
+    }
+
+    //递归获取所有上级部门字符串,格式:"上级部门/上级部门/部门"
+    private String getSupDepartment(Department department) {
+        if (department == null){
+            return "";
+        }
+        String depHierarchy = department.getDepartmentName();
+        //搜到父部门进行添加
+        if (department.getSuperiorId()==null) {
+            return depHierarchy;
+        } else {
+            Department supDep = departmentMapper.selectById(department.getSuperiorId());
+            return getSupDepartment(supDep) + "/" + depHierarchy;
+        }
+    }
 
     @Override
     public HttpRespMsg exportCustomerTransferRate(String startDate, String endDate, String userId, Integer departmentId, Integer exportType, HttpServletRequest request) throws Exception {
         User user = userMapper.selectById(request.getHeader("token"));
         WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));
-
+        List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
 
         List<List<String>> dataList = new ArrayList<>();
         List<String> titleList = new ArrayList<>();
@@ -8836,7 +8883,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             List<DepartmentVO> departmentVOList = (List<DepartmentVO>) respMsg.getData();
             for (DepartmentVO departmentVO : departmentVOList) {
                 List<String> item = new ArrayList<>();
-                item.add(departmentVO.getDepartmentName());
+                //取部门名
+                for (Department department : deptName) {
+                    if (departmentVO.getId().toString().equals(department.getDepartmentId().toString())){
+                        if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
+                            item.add(exportWxDepartment(department));
+                        }else {
+                            item.add(getSupDepartment(department));
+                        }
+                        break;
+                    }
+                }
                 item.add(departmentVO.getDealRate() + "");
                 dataList.add(item);
             }

+ 2 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/SalesOrderServiceImpl.java

@@ -638,7 +638,7 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
                             String value = String.valueOf(aClass.getMethod("get" + targetName).invoke(salesOrder)==null?"":aClass.getMethod("get" + targetName).invoke(salesOrder));
                             if(model.equals("inchargerId")){
                                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                                    value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder))+"$";
+                                    value = "$userName="+String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder))+"$";
                                 }else {
                                     value = String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder));
                                 }
@@ -668,7 +668,7 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
                     String value = String.valueOf(aClass.getMethod("get" + targetName).invoke(salesOrder)==null?"":aClass.getMethod("get" + targetName).invoke(salesOrder));
                     if(model.equals("inchargerId")){
                         if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                            value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder))+"$";
+                            value = "$userName="+String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder))+"$";
                         }else {
                             value = String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder));
                         }

+ 5 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -914,6 +914,11 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
         WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));
         List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new LambdaQueryWrapper<TaskExecutor>().eq(TaskExecutor::getCompanyId,user.getCompanyId()));
         List<TaskLog> taskLogList = taskLogMapper.selectList(new LambdaQueryWrapper<TaskLog>().eq(TaskLog::getCompanyId,user.getCompanyId()));
+        if (sysForm==null){
+            HttpRespMsg httpRespMsg = new HttpRespMsg();
+            httpRespMsg.setError("该公司暂无配置自定义表单");
+            return httpRespMsg;
+        }
         String config = sysForm.getConfig();
         JSONObject configOb = JSON.parseObject(config);
         JSONArray configObJSONArray = configOb.getJSONArray("list");

文件差异内容过多而无法显示
+ 17 - 307
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserServiceImpl.java