From 1465eb9dc666715143d75a6ffcac4312f923e947 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 17 一月 2025 18:05:11 +0800
Subject: [PATCH] 最新版本541200007
---
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/RetentionCloudController.java | 13 +
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java | 58 +++++++
h5_meeting/utils/config.js | 4
admin/src/api/business/retentionCars.js | 20 ++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/RetentionService.java | 3
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java | 54 +++++
admin/src/views/meeting/rooms.vue | 13 -
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java | 3
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java | 2
h5_meeting/package-lock.json | 7
server/system_service/src/main/java/com/doumee/service/business/third/model/response/TmsOutQtyAndVehicleQtyResponse.java | 2
h5_meeting/pages/index/index.vue | 75 ++++++--
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java | 6
admin/src/views/business/retentionCars.vue | 154 +++++++++++++++++++
h5_meeting/.hbuilderx/launch.json | 17 +
h5_meeting/package.json | 1
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 10
admin/src/views/meeting/components/OperaRoomsWindow.vue | 6
h5_meeting/manifest.json | 7
19 files changed, 394 insertions(+), 61 deletions(-)
diff --git a/admin/src/api/business/retentionCars.js b/admin/src/api/business/retentionCars.js
new file mode 100644
index 0000000..10c85a2
--- /dev/null
+++ b/admin/src/api/business/retentionCars.js
@@ -0,0 +1,20 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/visitsAdmin/cloudService/business/retention/pageCars', data, {
+ trim: true
+ })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+ return request.post('/visitsAdmin/cloudService/business/retention/exportExcelCars', data, {
+ trim: true,
+ download: true
+ })
+}
+// 鍒犻櫎
+export function deleteById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/retention/delete/${id}`)
+}
diff --git a/admin/src/views/business/retentionCars.vue b/admin/src/views/business/retentionCars.vue
new file mode 100644
index 0000000..227f7f0
--- /dev/null
+++ b/admin/src/views/business/retentionCars.vue
@@ -0,0 +1,154 @@
+<template>
+ <TableLayout :permissions="['business:retention:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="杞︾墝鍙�" prop="carNo">
+ <el-input v-model="searchForm.carNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords">
+ <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="缁勭粐" prop="companyName">
+ <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="杞﹁締绫诲瀷" prop="carType">
+ <el-select v-model="searchForm.carType" placeholder="璇烽�夋嫨">
+ <el-option label="鍐呴儴杞﹁締" value="0"></el-option>
+ <el-option label="鐩稿叧鏂硅溅杈�" value="1"></el-option>
+ <el-option label="璁垮杞﹁締" value="2"></el-option>
+ <el-option label="鍐呰繍鐗╂祦杞�" value="3"></el-option>
+ <el-option label="澶栧崗杞﹁締" value="4"></el-option>
+ <el-option label="甯傚叕鍙稿嵏璐ц溅" value="5"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璧锋鏃堕棿" prop="startTime">
+ <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss"
+ value-format="yyyy-MM-dd HH:mm:ss" range-separator="鑷�" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿">
+ </el-date-picker>
+ </el-form-item>
+ <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+ <el-radio-button label="0">褰撳ぉ</el-radio-button>
+ <el-radio-button label="1">杩�7澶�</el-radio-button>
+ <el-radio-button label="2">杩�30澶�</el-radio-button>
+ </el-radio-group>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:retention:exportExcel']">
+ <li>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:retention:exportExcel']"
+ @click="exportExcel">瀵煎嚭</el-button>
+ </li>
+ </ul>
+ <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="createDate" label="杩涘満鏃堕棿" min-width="150px"></el-table-column>
+ <el-table-column prop="carNo" label="杞︾墝鍙�" min-width="100px"></el-table-column>
+ <el-table-column prop="companyName" label="缁勭粐" min-width="250px">
+ <template slot-scope="{ row }">
+ <span>{{row.companyName || row.visitCompanyName || '' }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="carType" label="杞﹁締绫诲瀷" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.carType == 0">鍐呴儴杞﹁締</span>
+ <span v-else-if="row.carType == 1">鐩稿叧鏂硅溅杈�</span>
+ <span v-else-if="row.carType == 2">璁垮杞﹁締</span>
+ <span v-else-if="row.carType == 3">鍐呰繍鐗╂祦杞�</span>
+ <span v-else-if="row.carType == 4">澶栧崗杞﹁締</span>
+ <span v-else-if="row.carType == 5">甯傚叕鍙稿嵏璐ц溅</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
+ <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
+<!-- <el-table-column label="杩涘満闂ㄧ" min-width="100px">
+ <template slot-scope="{ row }">
+ <!– <span v-if="row.type === 1">-</span> –>
+ <span>{{ row.deviceName || '-' }}</span>
+ </template>
+ </el-table-column>-->
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{ row }">
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:retention:delete']">鏍囪绂诲満</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+ </pagination>
+ </template>
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import { timeForMat } from '@/utils/util'
+export default {
+ name: 'Retention',
+ extends: BaseTable,
+ components: { TableLayout, Pagination },
+ data() {
+ return {
+ // 鎼滅储
+ searchForm: {
+ carNo: '',
+ carType: '',
+ keyWords: '',
+ startTime: '',
+ endTime: '',
+ radio: 0
+ },
+ time: []
+ }
+ },
+ created() {
+ this.config({
+ module: '鍦ㄥ洯浜哄憳淇℃伅 琛紙婊炵暀锛�',
+ api: '/business/retentionCars',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.changeRadio('0')
+ },
+ methods: {
+ changeRadio(e) {
+ if (e === '0') {
+ this.searchForm.startTime = timeForMat(0)[0]
+ this.searchForm.endTime = timeForMat(0)[1]
+ this.time = timeForMat(0)
+ } else if (e === '1') {
+ this.searchForm.startTime = timeForMat(6)[0]
+ this.searchForm.endTime = timeForMat(6)[1]
+ this.time = timeForMat(6)
+ } else if (e === '2') {
+ this.searchForm.startTime = timeForMat(29)[0]
+ this.searchForm.endTime = timeForMat(29)[1]
+ this.time = timeForMat(29)
+ }
+ this.search()
+ },
+ reset() {
+ this.$refs.searchForm.resetFields()
+ this.searchForm.startTime = ''
+ this.searchForm.radio = '0'
+ this.searchForm.endTime = ''
+ this.time = []
+ this.search()
+ },
+ seleTime(e) {
+ if(e && e.length >2){
+ this.searchForm.startTime = e[0]
+ this.searchForm.endTime = e[1]
+ this.searchForm.radio = null
+ }
+
+ }
+ }
+}
+</script>
diff --git a/admin/src/views/meeting/components/OperaRoomsWindow.vue b/admin/src/views/meeting/components/OperaRoomsWindow.vue
index ebe13ac..a9a6d58 100644
--- a/admin/src/views/meeting/components/OperaRoomsWindow.vue
+++ b/admin/src/views/meeting/components/OperaRoomsWindow.vue
@@ -16,10 +16,10 @@
<el-input v-model="form.limitNum" type="number" placeholder="璇疯緭鍏ュ绾充汉鏁�" v-trim />
</el-form-item>
<el-form-item label="绠$悊鍛�" prop="sysList">
- <el-select v-model="form.sysList" filterable multiple clearable placeholder="璇烽�夋嫨閮ㄩ棬">
+ <el-select style="width: 100%" v-model="form.sysList" filterable multiple clearable placeholder="璇烽�夋嫨閮ㄩ棬">
<!-- :label="`${item.department.name}-${item.realname}`" -->
<el-option v-for="item in userList()" :key="item.id" :value="item.id"
- :label="item.companyId ? `${item.companyName}-${item.companyName}` : item.realname" />
+ :label="item.companyId ? `${item.realname}-${item.companyName}` : item.realname" />
</el-select>
</el-form-item>
<el-form-item label="鎻愪緵鏈嶅姟椤圭洰" prop="projectList">
@@ -373,4 +373,4 @@
max-height: 90px;
display: block;
}
-</style>
\ No newline at end of file
+</style>
diff --git a/admin/src/views/meeting/rooms.vue b/admin/src/views/meeting/rooms.vue
index 5380f67..9742cab 100644
--- a/admin/src/views/meeting/rooms.vue
+++ b/admin/src/views/meeting/rooms.vue
@@ -18,7 +18,7 @@
v-for="item in userList"
:key="item.id"
:value="item.id"
- :label="item.companyId?`${item.companyName}-${item.companyName}`:item.realname"
+ :label="item.companyId?`${item.realname}-${item.companyName}`:item.realname"
></el-option>
<!-- :label="`${item.department.name}-${item.realname}`" -->
<!-- <el-option :key="1" :value="1" label="绂佺敤" /> -->
@@ -125,7 +125,7 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaRoomsWindow from '@/views/meeting/components/OperaRoomsWindow'
-import { fetchList as userList } from '@/api/system/user'
+import { findAllList as userList } from '@/api/system/user'
// import selectMember from '@/components/meeting/selectMember'
import { updateStatusById } from '@/api/meeting/rooms'
export default {
@@ -168,14 +168,9 @@
'field.id': 'id',
'field.main': 'id'
})
- userList({
- page: 1,
- capacity: 9999,
- memberType: 2,
- model: { realname: this.filterText }
- })
+ userList({ queryParam: this.filterText ,workStatus:0,type:2} )
.then(res => {
- this.userList = res.records
+ this.userList = res
})
this.search()
},
diff --git a/h5_meeting/.hbuilderx/launch.json b/h5_meeting/.hbuilderx/launch.json
index 8e2b38a..e5fe1ea 100644
--- a/h5_meeting/.hbuilderx/launch.json
+++ b/h5_meeting/.hbuilderx/launch.json
@@ -5,12 +5,15 @@
"openVueDevtools" : false,
"type" : "uni-app:h5"
},
- {
- "app-plus" :
- {
- "launchtype" : "local"
- },
- "type" : "uniCloud"
- }
+ {
+ "app-plus" : {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ },
+ {
+ "playground" : "standard",
+ "type" : "uni-app:app-android"
+ }
]
}
diff --git a/h5_meeting/manifest.json b/h5_meeting/manifest.json
index 89ba255..6167242 100644
--- a/h5_meeting/manifest.json
+++ b/h5_meeting/manifest.json
@@ -1,6 +1,6 @@
{
"name" : "瀹夋嘲浼氳瀹�",
- "appid" : "__UNI__EF8BAA7",
+ "appid" : "__UNI__C77DAC4",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
@@ -96,9 +96,10 @@
"disableHostCheck" : true,
"proxy" : {
"/gateway_interface" : {
- // "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+
// "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- "target" : "https://atwl.ahzyssl.com/zhyq_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ // "target" : "https://atwl.ahzyssl.com/zhyq_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin" : true, // 鍏佽璺ㄥ煙
"pathRewrite" : {
"^/gateway_interface" : ""
diff --git a/h5_meeting/package-lock.json b/h5_meeting/package-lock.json
index 8b1c85c..4dc2f47 100644
--- a/h5_meeting/package-lock.json
+++ b/h5_meeting/package-lock.json
@@ -4,9 +4,14 @@
"dependencies": {
"dayjs": {
"version": "1.11.13",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
},
+ "qrcodejs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/qrcodejs/-/qrcodejs-1.0.0.tgz",
+ "integrity": "sha512-67rj3mMBhSBepaD57qENnltO+r8rSYlqM7HGThks/BiyDAkc86sLvkKqjkqPS5v13f7tvnt6dbEf3qt7zq+BCg=="
+ },
"uqrcodejs": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/uqrcodejs/-/uqrcodejs-4.0.7.tgz",
diff --git a/h5_meeting/package.json b/h5_meeting/package.json
index 2728378..21d28d7 100644
--- a/h5_meeting/package.json
+++ b/h5_meeting/package.json
@@ -1,6 +1,7 @@
{
"dependencies": {
"dayjs": "^1.11.13",
+ "qrcodejs": "^1.0.0",
"uqrcodejs": "^4.0.7"
}
}
diff --git a/h5_meeting/pages/index/index.vue b/h5_meeting/pages/index/index.vue
index 70b9d44..2b0a0a5 100644
--- a/h5_meeting/pages/index/index.vue
+++ b/h5_meeting/pages/index/index.vue
@@ -21,7 +21,7 @@
<text
v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 5">宸叉挙閿�</text>
</view>
- <view v-if="meetingInfo.meetingName" class="meeting_name">{{meetingInfo.meetingName}}</view>
+ <view v-if="meetingInfo.meetingName" class="meeting_name_box"><view class="meeting_name">{{meetingInfo.meetingName}}</view></view>
<view class="">
<view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser" class="meeting_con">
<view class="content">
@@ -57,7 +57,9 @@
</view>
<view class="list">
<view class="item" v-for="item in info.meetingListResponseList">
- <view class="name">{{item.meetingName}}</view>
+ <view class="nameBox">
+ <view class="name">{{item.meetingName}}</view>
+ </view>
<view class="line">棰勭害浜猴細{{item.bookingUser}}</view>
<view class="line">{{item.meetingTime}}锛坽{statusMap[item.meetingStatus]}}锛�</view>
<image src="@/static/ic_meeting@2x.png" class="item_bg"></image>
@@ -148,6 +150,9 @@
roomId: this.param.code
}).then(res => {
this.info = res.data
+ /* if(this.info.title && this.info.title.length>0){
+ this.info.title = this.info.title.slice(0,20)+"..."
+ } */
if (this.info.meetingListResponseList && this.info.meetingListResponseList.length > 0) {
this.meetingInfo = this.info.meetingListResponseList[0]
this.$nextTick(() => {
@@ -171,7 +176,7 @@
qr.data =
"https://atwl.ahzyssl.com/zhyq_h5/#/pages/login/login/?type=2&yw=1&ywid=" + this.meetingInfo.id
// 璁剧疆浜岀淮鐮佸ぇ灏忥紝蹇呴』涓巆anvas璁剧疆鐨勫楂樹竴鑷�
- qr.size = 104;
+ qr.size = this.rpxToPx(208);
// 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
qr.make();
// 鑾峰彇canvas涓婁笅鏂�
@@ -195,6 +200,17 @@
}
this.touchNum = 0
}, 250)
+ },
+
+ //rpx杞琾x
+ rpxToPx(rpx) {
+ const screenWidth = uni.getSystemInfoSync().screenWidth
+ return (screenWidth * Number.parseInt(rpx)) / 750
+ },
+ //px杞瑀px
+ pxToRpx(px) {
+ const screenWidth = uni.getSystemInfoSync().screenWidth
+ return (750 * Number.parseInt(px)) / screenWidth
},
initDatetime() {
let weeks = ['鍛ㄦ棩', '鍛ㄤ竴', '鍛ㄤ簩', '鍛ㄤ笁', '鍛ㄥ洓', '鍛ㄤ簲', '鍛ㄥ叚']
@@ -263,8 +279,10 @@
.meeting_wrap {
margin-left: 42rpx;
- // margin-top: 60rpx;
-
+ // margin-top: 60rpx;
+ .titleBox{
+ height: 124rpx;
+ }
.title {
font-weight: 500;
font-size: 42rpx;
@@ -309,17 +327,23 @@
bottom: 0;
// z-index: -1;
}
-
- .name {
- flex: 1;
- font-weight: bold;
- font-size: 39rpx;
+ .nameBox{
+ flex: 1;
width: 100%;
+ }
+ .name {
+
+ font-weight: bold;
+ line-height: 40rpx;
+ max-height: 120rpx;
+ font-size: 39rpx;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
- -webkit-line-clamp: 3;
+ -webkit-line-clamp: 3;
+ overflow: hidden;
+ white-space: normal; /* 淇濊瘉鏂囨湰姝e父鎹㈣ */
/* 瓒呭嚭鍑犺鐪佺暐 */
}
@@ -360,16 +384,16 @@
.qrcode_wrap {
- width: 110px;
- height: 110px;
+ width: 208rpx;
+ height: 208rpx;
display: flex;
align-items: center;
justify-content: center;
background-color: #fff;
.qrcode {
- width: 104px;
- height: 104px;
+ width: 200rpx;
+ height: 200rpx;
}
}
@@ -380,22 +404,33 @@
display: flex;
justify-content: flex-end;
color: rgba(255, 255, 255, 0.6);
- padding-right: 64rpx;
+ padding-right: 65rpx;
margin-top: 18rpx;
.text {
- width: 110px;
- text-align: center;
- font-size: 22rpx;
+ width: 200rpx;
+ text-align: right;
+ padding-right: 8rpx;
+ font-size: 21rpx;
// transform: scale(.84);
}
}
-
+ .meeting_name_box {
+ // max-height: 150rpx;
+ }
.meeting_name {
margin-bottom: 12rpx;
font-weight: bold;
font-size: 49rpx;
+ // height: 150rpx;
padding-left: 42rpx;
padding-right: 64rpx;
+ word-break: break-all;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+ white-space: normal; /* 淇濊瘉鏂囨湰姝e父鎹㈣ */
}
.home_status {
diff --git a/h5_meeting/utils/config.js b/h5_meeting/utils/config.js
index 3d94dee..b060ee4 100644
--- a/h5_meeting/utils/config.js
+++ b/h5_meeting/utils/config.js
@@ -1,7 +1,7 @@
// export const baseUrl = 'gateway_interface/'
-// export const baseUrl = 'http://192.168.5.13/gateway_interface/'
-export const baseUrl = 'http://192.168.0.173/gateway_interface/'
+export const baseUrl = 'http://192.168.5.13/gateway_interface/'
+// export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/'
// export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/'
export const statusMap = {
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
index 015b024..82efd00 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
@@ -383,6 +383,8 @@
roomsMapper.update(rooms, Wrappers.<Rooms>lambdaUpdate()
.set(Rooms::getFileType, rooms.getFileType())
+// .set(Rooms::getEndTime, rooms.getEndTime())
+// .set(Rooms::getStartTime, rooms.getStartTime())
.set(Rooms::getLimitNum, rooms.getLimitNum())
.set(Rooms::getTips, rooms.getTips())
.set(Rooms::getImgurl, rooms.getImgurl())
diff --git a/server/system_service/src/main/java/com/doumee/service/business/third/model/response/TmsOutQtyAndVehicleQtyResponse.java b/server/system_service/src/main/java/com/doumee/service/business/third/model/response/TmsOutQtyAndVehicleQtyResponse.java
index 64e29f3..0ddeedc 100644
--- a/server/system_service/src/main/java/com/doumee/service/business/third/model/response/TmsOutQtyAndVehicleQtyResponse.java
+++ b/server/system_service/src/main/java/com/doumee/service/business/third/model/response/TmsOutQtyAndVehicleQtyResponse.java
@@ -16,7 +16,7 @@
public class TmsOutQtyAndVehicleQtyResponse {
@ApiModelProperty(value = "绱鍑哄簱閲� 绱鍊�")
- private BigDecimal totalOutQty;//鏁板瓧 绱鍑哄簱閲�(totalOutT01Qty+totalOutT03Qty)
+ private BigDecimal totalOutQty;//鏁板瓧
@ApiModelProperty(value = "鐪佸绱鍑哄簱閲� 绱鍊�")
private BigDecimal outSideProvinceOutQty;// 鏁板瓧 鐪佸绱鍑哄簱閲�
@ApiModelProperty(value = "鐪佸唴绱鍑哄簱閲� 绱鍊�")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/RetentionCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/RetentionCloudController.java
index 82c7397..ee6d5ed 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/RetentionCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/RetentionCloudController.java
@@ -4,6 +4,7 @@
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.dao.business.vo.RetentionCarsVO;
import com.doumee.service.business.third.model.ApiResponse;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
@@ -73,7 +74,19 @@
public ApiResponse<PageData<Retention>> findPage (@RequestBody PageWrap<Retention> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
return ApiResponse.success(retentionService.findTrainTimePage(pageWrap));
}
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ @PostMapping("/pageCars")
+ @CloudRequiredPermission("business:retention:query")
+ public ApiResponse<PageData<RetentionCarsVO>> findPageForCars (@RequestBody PageWrap<RetentionCarsVO> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+ return ApiResponse.success(retentionService.findPageForCars(pageWrap));
+ }
+ @ApiOperation("瀵煎嚭杞﹁締Excel")
+ @PostMapping("/exportExcelCars")
+ @CloudRequiredPermission("business:retention:exportExcel")
+ public void exportExcelCars (@RequestBody PageWrap<RetentionCarsVO> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+ ExcelExporter.build(RetentionCarsVO.class).export(retentionService.findPageForCars(pageWrap).getRecords(), "瀹炴椂鍦ㄥ満杞﹁締", response);
+ }
@ApiOperation("瀵煎嚭Excel")
@PostMapping("/exportExcel")
@CloudRequiredPermission("business:retention:exportExcel")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java
new file mode 100644
index 0000000..ca80d7d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java
@@ -0,0 +1,58 @@
+package com.doumee.dao.business.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.service.business.third.model.LoginUserModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鍦ㄥ巶浜哄憳淇℃伅 琛紙婊炵暀锛�
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Data
+@ApiModel("鍦ㄥ巶浜哄憳淇℃伅 琛紙杞﹁締锛�")
+public class RetentionCarsVO extends LoginUserModel {
+
+ @ApiModelProperty(value = "涓婚敭")
+ private Integer id;
+ @ApiModelProperty(value = "杩涘満鏃堕棿")
+ @ExcelColumn(name="杩涘満鏃堕棿" ,index = 1,width = 12,dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date createDate;
+ @ApiModelProperty(value = "杞︾墝鍙� ")
+ @ExcelColumn(name="杞︾墝鍙�" ,index = 2,width = 8)
+ private String carNo;
+ @ApiModelProperty(value = "璁垮ID(鍏宠仈member)")
+ private Integer memberId;
+ @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 ")
+ @ExcelColumn(name="杞﹁締绫诲瀷" ,index = 3, valueMapping="0=鍐呴儴杞﹁締;1=鐩稿叧鏂硅溅杈�;2=璁垮杞﹁締;3=鍐呰繍鐗╂祦杞�;4=澶栧崗杞﹁締;5=甯傚叕鍙稿嵏璐ц溅;",width = 8)
+ private Integer carType ;
+ @ApiModelProperty(value = "鍏徃缁勭粐")
+ @ExcelColumn(name="鍏徃缁勭粐" ,index = 4,width = 12)
+ public String companyName;
+ @ApiModelProperty(value = "浜哄憳濮撳悕")
+ @ExcelColumn(name="浜哄憳濮撳悕" ,index = 5,width = 8)
+ public String name;
+ @ApiModelProperty(value = "浜哄憳鎵嬫満鍙�")
+ @ExcelColumn(name="浜哄憳鎵嬫満鍙�" ,index = 6,width = 12)
+ public String phone;
+ @ApiModelProperty(value = "娴峰悍闂ㄧ鍚嶇О")
+// @ExcelColumn(name="杩涘巶闂ㄧ" ,index = 7,width = 12)
+ private String deviceName;
+ @ApiModelProperty(value = "濮撳悕/鎵嬫満鍙�")
+ private String keyWords;
+ @ApiModelProperty(value = "寮�濮嬫椂闂�")
+ private Date startTime;
+ @ApiModelProperty(value = "缁撴潫鏃堕棿")
+ private Date endTime;
+ @ApiModelProperty(value = "璁垮鍏徃鍚嶇О")
+ private String visitCompanyName;
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/RetentionService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/RetentionService.java
index 85db39b..90c5fc6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/RetentionService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/RetentionService.java
@@ -1,5 +1,6 @@
package com.doumee.service.business;
+import com.doumee.dao.business.vo.RetentionCarsVO;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.dao.business.model.Retention;
@@ -111,4 +112,6 @@
* @return PageData<RetentionVo>
*/
List<RetentionVo> findPageExcel(PageWrap<Retention> pageWrap);
+
+ PageData<RetentionCarsVO> findPageForCars(PageWrap<RetentionCarsVO> pageWrap);
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
index b095a33..cfdece5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
@@ -3,6 +3,7 @@
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ReUtil;
+import com.doumee.dao.business.vo.RetentionCarsVO;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -216,6 +217,44 @@
}
return PageData.from(retentionIPage);
}
+ @Override
+ public PageData<RetentionCarsVO> findPageForCars(PageWrap<RetentionCarsVO> pageWrap) {
+ IPage<RetentionCarsVO> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ MPJLambdaWrapper<Retention> queryWrapper = new MPJLambdaWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ queryWrapper.select(Retention::getId,Retention::getCarNo,Retention::getCreateDate,Retention::getCarType,Retention::getType)
+ .leftJoin(Member.class,Member::getId,Retention::getMemberId)
+ .leftJoin(Member.class,Member::getId,Retention::getMemberId)
+ .leftJoin(Company.class,Company::getId,Member::getCompanyId)
+ .selectAs(Company::getCompanyNamePath,Retention::getCompanyName)
+ .selectAs(Member::getName,Retention::getName)
+ .selectAs(Member::getPhone,Retention::getPhone)
+ .selectAs(Member::getVisitCompanyName,Retention::getVisitCompanyName)
+ .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),w->{
+ w.like( Retention::getPhone,pageWrap.getModel().getKeyWords())
+ .or().like( Retention::getName,pageWrap.getModel().getKeyWords()); })
+ .eq(Retention::getType,3)
+ .eq(Retention::getIsdeleted,Constants.ZERO)
+ .and(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),
+ p-> p.like(Company::getName, pageWrap.getModel().getCompanyName())
+ .or().like(Member::getVisitCompanyName, pageWrap.getModel().getCompanyName()))
+ .eq(Objects.nonNull(pageWrap.getModel().getCarType()),
+ Retention::getCarType,pageWrap.getModel().getCarType())
+ .like(Objects.nonNull(pageWrap.getModel().getCarNo()),
+ Retention::getCarNo,pageWrap.getModel().getCarNo())
+ .ge(Objects.nonNull(pageWrap.getModel().getStartTime()),
+ Retention::getCreateDate,pageWrap.getModel().getStartTime())
+ .le(Objects.nonNull(pageWrap.getModel().getEndTime()),
+ Retention::getCreateDate,pageWrap.getModel().getEndTime());
+ queryWrapper.orderByDesc(Retention::getCreateDate);
+ IPage<RetentionCarsVO> retentionIPage = retentionJoinMapper.selectJoinPage(page, RetentionCarsVO.class, queryWrapper);
+ if(retentionIPage!=null && retentionIPage.getRecords()!=null){
+ for(RetentionCarsVO model : retentionIPage.getRecords()){
+ model.setCompanyName(StringUtils.defaultString(model.getCompanyName(),model.getVisitCompanyName()));
+ }
+ }
+ return PageData.from(retentionIPage);
+ }
@Override
@@ -250,11 +289,11 @@
private IPage<Retention> getDataInfo(PageWrap<Retention> pageWrap) {
//鏄惁鏄暟瀛�
- boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords());
- //鏄惁鍖呭惈涓枃
- boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords());
- //鏄惁鍖呭惈鑻辨枃
- boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords());
+// boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords());
+// //鏄惁鍖呭惈涓枃
+// boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords());
+// //鏄惁鍖呭惈鑻辨枃
+// boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords());
IPage<Retention> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<Retention> queryWrapper = new MPJLambdaWrapper<>();
@@ -265,8 +304,9 @@
.selectAs(Company::getType,Retention::getCompanyType)
.select(" ( SELECT v.company_name FROM visits v WHERE v.member_id = t.member_id and v.status = "+Constants.VisitStatus.signin+" ORDER BY create_date DESC limit 1 ) as visitCompanyName ");
queryWrapper.eq(Retention::getIsdeleted,Constants.ZERO)
- .like(number,Retention::getPhone,pageWrap.getModel().getKeyWords())
- .like((b||hasWord),Retention::getName,pageWrap.getModel().getKeyWords())
+ .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),w->{
+ w.like( Retention::getPhone,pageWrap.getModel().getKeyWords())
+ .or().like( Retention::getName,pageWrap.getModel().getKeyWords()); })
.eq(Objects.nonNull(pageWrap.getModel().getType()),
Retention::getType,
pageWrap.getModel().getType())
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
index b5bb4a2..b86035c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -316,7 +316,7 @@
List<SmsEmail> smsEmails = smsEmailMapper.selectList(wrapper);
if(smsEmails!=null && smsEmails.size()>0){
for(SmsEmail model : smsEmails){
- if(Constants.equalsInteger(model.getType(),Constants.ONE)){
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
if(model.getPhone() == null){
model.setStatus(Constants.THREE);//鍙戦�佸け璐�
model.setRemark("鎵嬫満鍙蜂负绌猴紝鍙栨秷浠诲姟鍙戦�侊紒");
@@ -348,7 +348,6 @@
}
}
}
-
/**
* 璁垮鐢宠涓氬姟鐭俊閫氱煡
* @param systemDictDataBiz
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 6e2f02b..65579fe 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1722,10 +1722,12 @@
);
for (Company company:companyList) {
Integer count = retentionList.stream().filter(i->Constants.equalsInteger(i.getCompanyId(),company.getId())).collect(Collectors.toList()).size();
- InterestedListVO lw = new InterestedListVO();
- lw.setNum(count);
- lw.setName(company.getName());
- lwList.add(lw);
+ if(count>0){
+ InterestedListVO lw = new InterestedListVO();
+ lw.setNum(count);
+ lw.setName(company.getName());
+ lwList.add(lw);
+ }
}
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index 5a06a00..168daf3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -2448,8 +2448,10 @@
data.setCurrentOutNum(data.getCurrentOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty())));
data.setCurrentInNum(data.getCurrentInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty())));
data.setTotalCarNum(data.getTotalCarNum()+Constants.formatIntegerNum(model.getVehicleQty()));//绱杞︽
- data.setCurrentProvinceNum(data.getCurrentProvinceNum().add(model.getOutSideProvinceOutQty()).add(model.getInSideProvinceOutT01Qty()));//鐪佸唴鐪佸閿�鍞噺
- data.setCurrentOtherNum(data.getCurrentOtherNum().add(model.getOutSideProvinceOutT03Qty()).add(model.getInSideProvinceOutT03Qty()));//鐪佸唴鐪佸鍏朵粬鍑哄簱閲�
+ data.setCurrentProvinceNum(data.getCurrentProvinceNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty()))
+ .add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//鐪佸唴鐪佸閿�鍞噺
+ data.setCurrentOtherNum(data.getCurrentOtherNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()))
+ .add(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty())));//鐪佸唴鐪佸鍏朵粬鍑哄簱閲�
}
}
param.setDateEnd(DateUtil.getShortTime(lastEnd));
--
Gitblit v1.9.3