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