admin/src/api/business/jkCabinet.js
@@ -35,9 +35,19 @@ return request.post('/visitsAdmin/cloudService/business/jkCabinet/updateStatusById', data) } // æ´æ°é ç²¾æ£æµé ç½® export function updateCabinetConfig (data) { return request.post('/visitsAdmin/cloudService/business/jkCabinet/updateCabinetConfig', data) } // å é¤ export function deleteById (id) { return request.get(`/business/jkCabinet/delete/${id}`) return request.get(`/visitsAdmin/cloudService/business/jkCabinet/delete/${id}`) } // è·åé ç²¾æ£æµé ç½® export function getCabinetConfig () { return request.get(`/visitsAdmin/cloudService/business/jkCabinet/getCabinetConfig`) } // æ¹éå é¤ admin/src/api/business/jkCabinetGrid.js
@@ -30,6 +30,11 @@ return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/updateStatusById', data) } // è§£ç»é¥å export function unBindKeys (data) { return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/unBindKeys', data) } // å é¤ export function deleteById (id) { return request.get(`/business/jkCabinetGrid/delete/${id}`) admin/src/api/business/jkKeys.js
@@ -20,6 +20,11 @@ return request.post('/visitsAdmin/cloudService/business/jkKeys/create', data) } // å表æ¥è¯¢ export function list (data) { return request.post('/visitsAdmin/cloudService/business/jkKeys/list', data) } // ä¿®æ¹ export function updateById (data) { return request.post('/visitsAdmin/cloudService/business/jkKeys/updateById', data) admin/src/components/business/OperaJkCabinetWindow.vue
@@ -85,11 +85,11 @@ <h3 style="margin: 20px 0;">æç»ä¿¡æ¯</h3> <el-form-item label="æå" prop="rowNum"> <div style="width: 100%; display: flex; align-items: center;"> <el-input v-model="form.rowNum" type="number" placeholder="请è¾å ¥ææ°" v-trim> <el-input v-model="form.rowNum" :disabled="form.id" type="number" placeholder="请è¾å ¥ææ°" v-trim> <template slot="append">æ</template> </el-input> <span style="margin: 0 20px;">x</span> <el-input v-model="form.columnNum" type="number" placeholder="请è¾å ¥åæ°" v-trim> <el-input v-model="form.columnNum" :disabled="form.id" type="number" placeholder="请è¾å ¥åæ°" v-trim> <template slot="append">å</template> </el-input> </div> @@ -110,7 +110,7 @@ </div> </el-form-item> <el-form-item label="æå顺åº" prop="sortType" v-if="form.noType === 1"> <el-radio-group v-model="form.sortType"> <el-radio-group v-model="form.sortType" :disabled="form.id"> <el-radio :label="0">ä»å·¦å¾å³</el-radio> <el-radio :label="1">ä»ä¸åä¸</el-radio> </el-radio-group> admin/src/components/business/alcoholTest.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,112 @@ <template> <GlobalWindow width="50%" :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" > <el-form :model="form" ref="form" :rules="rules"> <el-form-item label="广°æ¶é¿" prop="blowTime"> <el-input v-model="form.blowTime" placeholder="请è¾å ¥å¹æ°æ¶é¿ï¼ç§ï¼" v-trim/> </el-form-item> <el-form-item label="ååå¼" prop="pressure"> <el-input v-model="form.pressure" placeholder="请è¾å ¥ååå¼" v-trim/> </el-form-item> <el-form-item label="é ç²¾æµåº¦éå¼" prop="concentration"> <div style="width: 100%; display: flex; align-items: center;"> <el-input v-model="form.concentration" placeholder="请è¾å ¥é ç²¾æµåº¦é¢è¦å¼" style="flex: 1;" v-trim/> <el-select v-model="form.threshold" placeholder="è¯·éæ©" style="flex-shrink: 0; margin-left: 15px;"> <el-option label="mg/100ml" value="1"></el-option> <el-option label="mg/L" value="2"></el-option> <el-option label="%BAC" value="3"></el-option> </el-select> </div> </el-form-item> </el-form> </GlobalWindow> </template> <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' import { updateCabinetConfig } from '@/api/business/jkCabinet' export default { name: 'alcoholTest', extends: BaseOpera, components: { GlobalWindow }, data () { return { // è¡¨åæ°æ® form: { id: null, blowTime: '', pressure: '', concentration: '', threshold: '' }, // éªè¯è§å rules: { blowTime: [ { required: true, message: '请è¾å ¥å¹æ°æ¶é¿', trigger: 'blur' } ], pressure: [ { required: true, message: '请è¾å ¥ååå¼', trigger: 'blur' } ], concentration: [ { required: true, message: 'è¯·éæ©é ç²¾æµåº¦é¢è¦å¼', trigger: 'blur' } ], } } }, created () { this.config({ api: '/business/jkCabinet', 'field.id': 'id' }) }, methods: { open (title, target) { this.title = title this.form.threshold = '' this.visible = true // æ°å»º if (target == null) { this.$nextTick(() => { this.$refs.form.resetFields() this.form[this.configData['field.id']] = null }) return } // ç¼è¾ this.$nextTick(() => { for (const key in this.form) { this.form[key] = target[key] } }) }, // 确认æ°å»º __confirmCreate () { this.$refs.form.validate((valid) => { if (!valid) { return } // è°ç¨æ°å»ºæ¥å£ this.isWorking = true updateCabinetConfig(this.form) .then(() => { this.visible = false this.$tip.apiSuccess('æä½æå') this.$emit('success') }) .catch(e => { // this.$tip.apiFailed(e) }) .finally(() => { this.isWorking = false }) }) }, } } </script> admin/src/components/business/cabinetDetails.vue
@@ -6,8 +6,8 @@ :withFooter="false" > <el-form ref="searchForm" :model="searchForm" label-width="100px" inline> <el-form-item label="é¥å" prop="keyId"> <el-input v-model="searchForm.keyId" placeholder="请è¾å ¥é¥åç¼ç æåç§°" @keypress.enter.native="getList"></el-input> <el-form-item label="é¥å" prop="keyCode"> <el-input v-model="searchForm.keyCode" placeholder="请è¾å ¥é¥åç¼ç æåç§°" @keypress.enter.native="getList"></el-input> </el-form-item> <el-form-item label="ç¶æ" prop="status"> <el-select v-model="searchForm.status" placeholder="è¯·éæ©" @change="getList"> @@ -31,7 +31,7 @@ </el-form-item> </el-form> <ul class="toolbar"> <li><el-button type="primary">æ¹éè§£ç»</el-button></li> <li><el-button type="primary" @click="bathUnBindKeys">æ¹éè§£ç»</el-button></li> </ul> <el-table v-loading="loading" @@ -42,24 +42,25 @@ <el-table-column prop="cabinetName" label="æå±é¥åæ" min-width="100px"></el-table-column> <el-table-column prop="keyId" label="ç»å®é¥å" min-width="100px"> <template slot-scope="{row}"> <el-select v-model="row.keyId" placeholder="è¯·éæ©"> <el-select v-model="row.keyId" placeholder="è¯·éæ©" @change="blurFunc($event, row, 1)"> <el-option v-for="item in keysAll" :key="item.id" :label="item.name" :value="item.id"> :label="item.code" :value="item.id" :disabled="item.isBinding === 1"> </el-option> </el-select> </template> </el-table-column> <el-table-column label="æ¿å·" min-width="100px"> <template slot-scope="{row}"> <el-input v-model="row.boardCode" placeholder="请è¾å ¥æ¿å·"></el-input> <el-input v-model="row.boardCode" @blur="blurFunc($event, row, 2)" placeholder="请è¾å ¥æ¿å·"></el-input> </template> </el-table-column> <el-table-column label="ééå·" min-width="100px"> <template slot-scope="{row}"> <el-input v-model="row.channelCode" placeholder="请è¾å ¥ééå·"></el-input> <el-input v-model="row.channelCode" @blur="blurFunc($event, row, 3)" placeholder="请è¾å ¥ééå·"></el-input> </template> </el-table-column> <el-table-column label="ç¶æ" min-width="100px"> @@ -93,7 +94,8 @@ <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' import { fetchList, updateStatusById } from '@/api/business/jkCabinetGrid' import { fetchList, updateStatusById, unBindKeys, updateById } from '@/api/business/jkCabinetGrid' import { list } from '@/api/business/jkKeys' export default { name: 'cabinetDetails', extends: BaseOpera, @@ -103,7 +105,7 @@ id: null, info: null, searchForm: { keyId: '', keyCode: '', status: '', bindStatus: '' }, @@ -117,8 +119,48 @@ this.title = title this.id = id this.getList() this.getKeysAll() this.visible = true }, getKeysAll() { list({ }) .then(res => { this.keysAll = res }) }, blurFunc(e, row, type) { let obj = { id: row.id } if (type === 1) { obj.keyId = row.keyId } else if (type === 2) { obj.boardCode = row.boardCode } else if (type === 3) { obj.channelCode = row.channelCode } updateById(obj) .then(res => { this.getList() if (type === 1) { this.getKeysAll() } }) }, bathUnBindKeys() { this.$confirm('确认æ¹éè§£ç»å?', 'æç¤º', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', type: 'warning' }).then(() => { unBindKeys(this.list.map(item => item.id)) .then(res => { this.getList() }) }).catch(() => { }); }, changeStatus(status, id) { updateStatusById({ id, status }) .then(res => { admin/src/views/business/jkCabinet.vue
@@ -31,7 +31,7 @@ <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['business:jkcabinet:create', 'business:jkcabinet:delete']"> <li><el-button type="primary" @click="$refs.operaJkCabinetWindow.open('æ°å»ºè®¾å¤')" icon="el-icon-plus" v-permissions="['business:jkcabinet:create']">æ°å»º</el-button></li> <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkcabinet:delete']">å é¤</el-button></li> <li><el-button type="warning" @click="$refs.alcoholTest.open('æ°å»ºé ç²¾æ£æµé ç½®', form)">é ç²¾æ£æµé ç½®</el-button></li> </ul> <el-table :height="tableHeightNew" @@ -52,8 +52,8 @@ </el-table-column> <el-table-column label="è¿è¡ç¶æ" min-width="100px"> <template slot-scope="{row}"> <el-link type="success" v-if="row.runStatus === 0">å¨çº¿</el-link> <el-link type="danger" v-if="row.runStatus === 1">离线</el-link> <el-link type="success" :underline="false" v-if="row.runStatus === 0">å¨çº¿</el-link> <el-link type="danger" :underline="false" v-if="row.runStatus === 1">离线</el-link> </template> </el-table-column> <el-table-column label="ç¶æ" min-width="100px"> @@ -75,8 +75,7 @@ fixed="right" > <template slot-scope="{row}"> <el-button type="text">æ¥å¿</el-button> <el-button type="text">ç»å®é¥å</el-button> <el-button type="text" @click="$refs.cabinetDetails.open(row.name + '-ææ ¼ä¿¡æ¯', row.id)">ç»å®é¥å</el-button> <el-button type="text" @click="$refs.operaJkCabinetWindow.open('ç¼è¾é¥åæåºæ¬ä¿¡æ¯è¡¨', row)" v-permissions="['business:jkcabinet:update']">ç¼è¾</el-button> <el-button type="text" @click="deleteById(row)" v-permissions="['business:jkcabinet:delete']">å é¤</el-button> </template> @@ -93,6 +92,8 @@ <OperaJkCabinetWindow ref="operaJkCabinetWindow" @success="handlePageChange"/> <!-- æå详æ --> <CabinetDetails ref="cabinetDetails" /> <!-- æ°å¢é ç²¾æ£æµ --> <AlcoholTest ref="alcoholTest" @success="GetCabinetConfig" /> </TableLayout> </template> @@ -102,11 +103,12 @@ import Pagination from '@/components/common/Pagination' import OperaJkCabinetWindow from '@/components/business/OperaJkCabinetWindow' import CabinetDetails from '@/components/business/cabinetDetails' import { updateStatusById } from '@/api/business/jkCabinet' import AlcoholTest from '@/components/business/alcoholTest' import { updateStatusById, getCabinetConfig } from '@/api/business/jkCabinet' export default { name: 'JkCabinet', extends: BaseTable, components: { TableLayout, Pagination, OperaJkCabinetWindow, CabinetDetails }, components: { TableLayout, Pagination, OperaJkCabinetWindow, CabinetDetails, AlcoholTest}, data () { return { // æç´¢ @@ -115,7 +117,8 @@ name: '', status: '', rumStatus: '' } }, form: null } }, created () { @@ -126,6 +129,7 @@ 'field.main': 'id' }) this.search() this.GetCabinetConfig() }, methods: { changeStatus(status, id) { @@ -133,6 +137,12 @@ .then(res => { this.search() }) }, GetCabinetConfig() { getCabinetConfig() .then(res => { this.form = res }) } } } server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java
@@ -5,6 +5,7 @@ import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.utils.Constants; import com.doumee.dao.business.model.JkCabinet; import com.doumee.dao.business.model.JkKeys; import com.doumee.service.business.JkKeysService; import com.doumee.service.business.third.model.ApiResponse; @@ -77,6 +78,14 @@ return ApiResponse.success(jkKeysService.findPage(pageWrap)); } @ApiOperation("å表æ¥è¯¢") @PostMapping("/list") @CloudRequiredPermission("business:jkkeys:query") public ApiResponse<List<JkKeys>> findList (@RequestBody JkKeys jkKeys, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { return ApiResponse.success(jkKeysService.findList(jkKeys)); } @ApiOperation("导åºExcel") @PostMapping("/exportExcel") @CloudRequiredPermission("business:jkkeys:exportExcel") server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.doumee.dao.business.dto; import com.doumee.service.business.third.model.LoginUserModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/10/11 16:01 */ @Data public class CloseGridDTO{ @ApiModelProperty(value = "é¥åæä¸»é®") private Integer cabinetId; @ApiModelProperty(value = "éªè¯æ¹å¼ 0å·è¸ 1å·å¡ 2管çåæä½") private Integer authType; @ApiModelProperty(value = "ææ ¼ä¸»é®") private Integer gridId; @ApiModelProperty(value = "ç¨æ·ä¸»é®") private Integer memberId; @ApiModelProperty(value = "é¥åç¶æï¼1å¨ä½ 2ååº") private Integer keyStatus; } server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.doumee.dao.business.dto; import com.doumee.service.business.third.model.LoginUserModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/10/11 16:01 */ @Data public class GetDriverGridDTO{ @ApiModelProperty(value = "é¥åæä¸»é®") private Integer cabinetId; @ApiModelProperty(value = "0=å 1=è¿") private Integer type; @ApiModelProperty(value = "ç¨æ·ä¸»é®") private Integer memberId; } server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.doumee.dao.business.dto; import com.doumee.service.business.third.model.LoginUserModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/10/11 16:01 */ @Data public class OpenGridDriverDTO extends LoginUserModel { @ApiModelProperty(value = "é¥åæä¸»é®") private Integer cabinetId; @ApiModelProperty(value = "éªè¯æ¹å¼ 0å·è¸ 1å·å¡") private Integer authType; @ApiModelProperty(value = "ææ ¼ä¸»é®") private Integer gridId; } server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.doumee.dao.business.dto; import com.doumee.service.business.third.model.LoginUserModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/10/11 16:01 */ @Data public class OptGridDTO extends LoginUserModel { @ApiModelProperty(value = "é¥åæä¸»é®") private Integer cabinetId; @ApiModelProperty(value = "ææ ¼ä¸»é®å表") private List<Integer> gridIdList; } server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
@@ -86,8 +86,6 @@ private String channelCode; @ApiModelProperty(value = "ç»å®ç¶æ 0æªç»å®ï¼1å·²ç»å®", example = "1") @TableField(exist = false) private Integer bindStatus; @@ -99,4 +97,17 @@ @ApiModelProperty(value = "é¥åç¼ç ", example = "1") @TableField(exist = false) private String keyCode; @ApiModelProperty(value = "车çå·", example = "1") @TableField(exist = false) private String carCode; @ApiModelProperty(value = "车è¾ä¸»é®", example = "1") @TableField(exist = false) private Integer carId; @ApiModelProperty(value = "é¥åç¶æ 0æªç»å® 1å¨ä½ 2ååº 3ç»´ä¿®ä¿å »", example = "1") @TableField(exist = false) private Integer keyStatus; } server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
@@ -77,6 +77,9 @@ @ExcelColumn(name="ç¶æ",index = 6,width = 10,valueMapping = "0=æå;1=失败;") private Integer status; @ApiModelProperty(value = "æä½ç±»åï¼0=å¼é¨;1=å ³é¨;", example = "1") private Integer type; @ApiModelProperty(value = "æä½äººé¨é¨", example = "1",hidden = true) @TableField(exist = false) private String companyName; server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.doumee.dao.business.vo; import com.doumee.core.annotation.excel.ExcelColumn; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2024/5/23 14:56 */ @Data public class AdminCabinetVO { @ApiModelProperty(value = "设å¤ä¸»é®ï¼ç³»ç»å ï¼") private Integer id; @ApiModelProperty(value = "设å¤ç¼å·") private String code; @ApiModelProperty(value = "设å¤åç§°") private String name; @ApiModelProperty(value = "设å¤ID") private String devId; } server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ package com.doumee.dao.business.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2024/5/23 14:56 */ @Data public class CabinetDetailVO { @ApiModelProperty(value = "设å¤ä¸»é®ï¼ç³»ç»å ï¼") private Integer id; @ApiModelProperty(value = "设å¤ç¼å·") private String code; @ApiModelProperty(value = "设å¤åç§°") private String name; @ApiModelProperty(value = "设å¤ID") private String devId; @ApiModelProperty(value = "ææ ¼æ»æ°") private Integer gridNum; @ApiModelProperty(value = "å¨ä½é¥åæ°") private Integer onlineKeyNum; @ApiModelProperty(value = "ååºé¥åæ°") private Integer outKeyNum; @ApiModelProperty(value = "ç»´ä¿®ä¿å »é¥åæ°") private Integer serviceKeyNum; @ApiModelProperty(value = "æ éæä½æ°é") private Integer errGridNum; @ApiModelProperty(value = "æªç»å®æä½æ°é") private Integer unBindGridNum; @ApiModelProperty(value = "ææ ¼ä¿¡æ¯") private List<CabinetGridInfoVO> cabinetGridInfoVOList; } server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,50 @@ 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.doumee.core.annotation.excel.ExcelColumn; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2024/5/23 14:56 */ @Data public class CabinetGridInfoVO { @ApiModelProperty(value = "主é®", example = "1") private Integer id; @ApiModelProperty(value = "ç¼ç ") private String code; @ApiModelProperty(value = "é¥åç¼ç ï¼å ³èjk_keys)", example = "1") private Integer keyId; @ApiModelProperty(value = "æä½è¿è¡ç¶æ 0æ£å¸¸ 1æ é ", example = "1") private Integer workingStatus; @ApiModelProperty(value = "ç»å®ç¶æ 0æªç»å®ï¼1å·²ç»å®", example = "1") private Integer bindStatus; @ApiModelProperty(value = "é¥åç¶æ 0æªç»å® 1å¨ä½ 2ååº 3ç»´ä¿®ä¿å »", example = "1") private Integer keyStatus; @ApiModelProperty(value = "æ¿å·") private String boardCode; @ApiModelProperty(value = "ééå·") private String channelCode; @ApiModelProperty(value = "车çå·", example = "1") private String carCode; } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
@@ -1,6 +1,11 @@ package com.doumee.service.business; import com.doumee.dao.business.dto.OptGridDTO; import com.doumee.dao.business.dto.CloseGridDTO; import com.doumee.dao.business.dto.GetDriverGridDTO; import com.doumee.dao.business.dto.OpenGridDriverDTO; import com.doumee.dao.business.model.JkCabinetGrid; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; @@ -99,4 +104,39 @@ void updateStatusById(JkCabinetGrid jkCabinetGrid); void unBindKeys(List<Integer> idList); /** * æ è®°ææ ¼æ é * @param loginUserInfo * @param cabinetId * @param gridIdList */ void markFault(OptGridDTO dto); /** * æ è®°ææ ¼æ£å¸¸ * @param loginUserInfo * @param cabinetId * @param gridIdList */ void cancelFault(OptGridDTO dto); /** * æ¹éå¼é¨ - 管çå */ void batchOpenGridAdmin(OptGridDTO dto); /** * æ è®°ç»´ä¿®ä¿å » - 管çå * @param loginUserInfo * @param cabinetId * @param gridIdList */ void markRepair(OptGridDTO dto); void closeGrid(CloseGridDTO dto); List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO getDriverGridDTO); void openGridDriver(OpenGridDriverDTO openGridDriverDTO); } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
@@ -1,6 +1,9 @@ package com.doumee.service.business; import com.doumee.dao.business.vo.AdminCabinetVO; import com.doumee.dao.business.vo.CabinetConfigDataVO; import com.doumee.dao.business.vo.CabinetDetailVO; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; import com.doumee.dao.business.model.JkCabinet; @@ -102,4 +105,19 @@ CabinetConfigDataVO getCabinetConfigDataVO(); void updCabinetConfig(CabinetConfigDataVO cabinetConfigDataVO); /** * é¥åæç®¡çå è·åå¯ç®¡ççé¥åæå表 * @param loginUserInfo * @return */ List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo); /** * è·åé¥åæè¯¦æ * @param cabinetId * @return */ CabinetDetailVO getCabinetDetail(Integer cabinetId); } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -1,26 +1,24 @@ package com.doumee.service.business.impl; import com.alibaba.druid.sql.visitor.functions.Concat; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.dao.business.JkKeysMapper; import com.doumee.dao.business.model.Cars; import com.doumee.dao.business.model.JkCabinet; import com.doumee.dao.business.model.JkKeys; import com.doumee.dao.business.*; import com.doumee.dao.business.dto.OptGridDTO; import com.doumee.dao.business.dto.CloseGridDTO; import com.doumee.dao.business.dto.GetDriverGridDTO; import com.doumee.dao.business.dto.OpenGridDriverDTO; import com.doumee.dao.business.model.*; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.core.utils.Utils; import com.doumee.dao.business.JkCabinetGridMapper; import com.doumee.dao.business.model.JkCabinetGrid; import com.doumee.service.business.JkCabinetGridService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.business.third.model.PageWrap; import com.github.yulichang.toolkit.MPJWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -28,8 +26,7 @@ import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; import java.util.*; import java.util.stream.Collectors; /** @@ -45,6 +42,13 @@ @Autowired private JkKeysMapper jkKeysMapper; @Autowired private JkCabinetMapper jkCabinetMapper; @Autowired private JkCabinetLogMapper jkCabinetLogMapper; @Override public Integer create(JkCabinetGrid jkCabinetGrid) { @@ -237,7 +241,267 @@ } /** * æ è®°æ é */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void markFault(OptGridDTO dto){ if(Objects.isNull(dto) || Objects.isNull(dto.getCabinetId()) || CollectionUtils.isEmpty(dto.getGridIdList())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO) .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) .in(JkCabinetGrid::getId,dto.getGridIdList()) ); if(CollectionUtils.isEmpty(jkCabinetGridList)){ return; } LoginUserInfo loginUserInfo = dto.getLoginUserInfo(); for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { jkCabinetGrid.setEditor(loginUserInfo.getId()); jkCabinetGrid.setEditDate(new Date()); jkCabinetGrid.setWorkingStatus(Constants.ONE); jkCabinetGridMapper.updateById(jkCabinetGrid); } } /** * æ è®°ç»´ä¿®ä¿å » */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void markRepair(OptGridDTO dto){ if(Objects.isNull(dto) || Objects.isNull(dto.getCabinetId()) || CollectionUtils.isEmpty(dto.getGridIdList())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class) .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode) .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode) .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId) .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkKeys::getStatus,Constants.ONE) .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO) .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) .isNotNull(JkCabinetGrid::getKeyId) .in(JkCabinetGrid::getId,dto.getGridIdList()) ); if(CollectionUtils.isEmpty(jkCabinetGridList)){ return; } for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda() .set(JkKeys::getEditDate,DateUtil.getCurrDateTime()) .set(JkKeys::getStatus,Constants.TWO) .eq(JkKeys::getId,jkCabinetGrid.getKeyId()) ); } } /** * åæ¶æ é */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void cancelFault(OptGridDTO dto){ if(Objects.isNull(dto) || Objects.isNull(dto.getCabinetId()) || CollectionUtils.isEmpty(dto.getGridIdList())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkCabinetGrid::getWorkingStatus,Constants.ONE) .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) .in(JkCabinetGrid::getId,dto.getGridIdList()) ); if(CollectionUtils.isEmpty(jkCabinetGridList)){ return; } LoginUserInfo loginUserInfo = dto.getLoginUserInfo(); for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { jkCabinetGrid.setEditor(loginUserInfo.getId()); jkCabinetGrid.setEditDate(new Date()); jkCabinetGrid.setWorkingStatus(Constants.ZERO); jkCabinetGridMapper.updateById(jkCabinetGrid); } } /** * 设å¤ç®¡çåæ¹éå¼é */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void batchOpenGridAdmin(OptGridDTO dto){ if(Objects.isNull(dto) || Objects.isNull(dto.getCabinetId()) || CollectionUtils.isEmpty(dto.getGridIdList())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) .in(JkCabinetGrid::getId,dto.getGridIdList()) ); if(CollectionUtils.isEmpty(jkCabinetGridList)){ return; } LoginUserInfo loginUserInfo = dto.getLoginUserInfo(); if(org.apache.commons.collections.CollectionUtils.isNotEmpty(jkCabinetGridList)){ List<JkCabinetLog> jkCabinetLogs = new ArrayList<>(); for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { JkCabinetLog jkCabinetLog = new JkCabinetLog(); jkCabinetLog.setCreateDate(new Date()); jkCabinetLog.setCreator(loginUserInfo.getId()); jkCabinetLog.setIsdeleted(Constants.ZERO); jkCabinetLog.setCabinetId(dto.getCabinetId()); jkCabinetLog.setGridId(jkCabinetGrid.getId()); jkCabinetLog.setAuthType(Constants.TWO); jkCabinetLog.setMemberId(loginUserInfo.getMemberId()); if(Objects.nonNull(jkCabinetGrid.getKeyId())){ JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId()); if(Objects.nonNull(jkKeys)){ if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){ jkCabinetLog.setCarId(jkKeys.getCarId()); jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() ); } jkCabinetLog.setRoleType(jkKeys.getRoleType()); } } jkCabinetLog.setType(Constants.ZERO); jkCabinetLogs.add(jkCabinetLog); } jkCabinetLogMapper.insert(jkCabinetLogs); } } /** * é¥åæå ³é¨ */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void closeGrid(CloseGridDTO dto){ if(Objects.isNull(dto) || Objects.isNull(dto.getGridId()) || Objects.isNull(dto.getCabinetId()) || Objects.isNull(dto.getKeyStatus()) || Objects.isNull(dto.getAuthType()) || Objects.isNull(dto.getMemberId()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) .eq(JkCabinetGrid::getId,dto.getGridId()) .last(" limit 1 ") ); if(Objects.isNull(jkCabinetGrid)){ return; } JkCabinetLog jkCabinetLog = new JkCabinetLog(); jkCabinetLog.setCreateDate(new Date()); jkCabinetLog.setIsdeleted(Constants.ZERO); jkCabinetLog.setCabinetId(dto.getCabinetId()); jkCabinetLog.setGridId(jkCabinetGrid.getId()); jkCabinetLog.setAuthType(dto.getAuthType()); jkCabinetLog.setMemberId(dto.getMemberId()); if(Objects.nonNull(jkCabinetGrid.getKeyId())){ //åªæé¥åæç»å®äºé¥åä¿¡æ¯ æä¼æ´æ°é¥åçä¿¡æ¯ JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId()); if(Objects.nonNull(jkKeys)){ if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){ jkCabinetLog.setCarId(jkKeys.getCarId()); jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() ); } jkCabinetLog.setRoleType(jkKeys.getRoleType()); //é¥åç¶æä¸å½åæä½ç¶æä¸ä¸è´ï¼åè¿è¡æ´æ°é¥åç¶æ if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())){ jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda() .set(JkKeys::getEditDate,DateUtil.getCurrDateTime()) .set(JkKeys::getStatus,dto.getKeyStatus()) .eq(JkKeys::getId,jkKeys.getId()) ); } } } jkCabinetLog.setType(Constants.ONE); jkCabinetLogMapper.insert(jkCabinetLog); } /** * 叿ºè·å坿ä½çé¥åæææ ¼ */ @Override public List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO dto){ if(Objects.isNull(dto.getCabinetId()) || Objects.isNull(dto.getCabinetId()) || Objects.isNull(dto.getMemberId()) || Objects.isNull(dto.getType())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class) .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode) .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode) .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId) .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO) .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) .in(Constants.equalsInteger(dto.getType(),Constants.ONE),JkKeys::getStatus,Constants.TWO,Constants.THREE) .in(Constants.equalsInteger(dto.getType(),Constants.ZERO),JkKeys::getStatus,Constants.ONE) .isNotNull(JkCabinetGrid::getKeyId) .apply(" t1.car_id in ( select c.CAR_ID from car_driver c left join cars c1 on c.car_id = c1.id where c.ISDELETED = 0 and c.TYPE != 0 and c.MEMBER_ID = "+dto.getMemberId()+" ) ") ); return jkCabinetGridList; } /** * 叿ºå¼å¯ææ ¼ * @param openGridDriverDTO */ @Override public void openGridDriver(OpenGridDriverDTO openGridDriverDTO){ JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkCabinetGrid::getCabinetId,openGridDriverDTO.getCabinetId()) .eq(JkCabinetGrid::getId,openGridDriverDTO.getGridId()) .last(" limit 1 ") ); if(Objects.isNull(jkCabinetGrid)){ return; } LoginUserInfo loginUserInfo = openGridDriverDTO.getLoginUserInfo(); List<JkCabinetLog> jkCabinetLogs = new ArrayList<>(); JkCabinetLog jkCabinetLog = new JkCabinetLog(); jkCabinetLog.setCreateDate(new Date()); jkCabinetLog.setCreator(loginUserInfo.getId()); jkCabinetLog.setIsdeleted(Constants.ZERO); jkCabinetLog.setCabinetId(openGridDriverDTO.getCabinetId()); jkCabinetLog.setGridId(jkCabinetGrid.getId()); jkCabinetLog.setAuthType(openGridDriverDTO.getAuthType()); jkCabinetLog.setMemberId(loginUserInfo.getMemberId()); jkCabinetLog.setType(Constants.ZERO); if(Objects.nonNull(jkCabinetGrid.getKeyId())){ JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId()); if(Objects.nonNull(jkKeys)){ if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){ jkCabinetLog.setCarId(jkKeys.getCarId()); jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() ); } jkCabinetLog.setRoleType(jkKeys.getRoleType()); } } jkCabinetLogMapper.insert(jkCabinetLogs); } } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -1,5 +1,6 @@ package com.doumee.service.business.impl; import cn.hutool.core.bean.BeanUtil; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; @@ -9,7 +10,10 @@ import com.doumee.dao.business.JkKeysMapper; import com.doumee.dao.business.model.JkCabinetGrid; import com.doumee.dao.business.model.JkKeys; import com.doumee.dao.business.vo.AdminCabinetVO; import com.doumee.dao.business.vo.CabinetConfigDataVO; import com.doumee.dao.business.vo.CabinetDetailVO; import com.doumee.dao.business.vo.CabinetGridInfoVO; import com.doumee.dao.system.model.SystemDictData; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; @@ -22,11 +26,14 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.java.Log; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import java.math.BigDecimal; import java.util.*; @@ -340,8 +347,89 @@ systemDictData.setCode(cabinetConfigDataVO.getThreshold()); systemDictDataBiz.updateByIdNew(systemDictData); } } @Override public List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo){ List<AdminCabinetVO> adminCabinetVOList = new ArrayList<>(); List<JkCabinet> jkCabinetList = jkCabinetMapper.selectList(new QueryWrapper<JkCabinet>() .lambda() .eq(JkCabinet::getIsdeleted,Constants.ZERO) .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ") .orderByAsc(JkCabinet::getCreateDate) ); if(CollectionUtils.isNotEmpty(jkCabinetList)){ for (JkCabinet jkCabinet:jkCabinetList) { AdminCabinetVO adminCabinetVO = new AdminCabinetVO(); BeanUtil.copyProperties(jkCabinet,adminCabinetVO); adminCabinetVOList.add(adminCabinetVO); } } return adminCabinetVOList; } @Override public CabinetDetailVO getCabinetDetail(Integer cabinetId){ CabinetDetailVO cabinetDetailVO = new CabinetDetailVO(); JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>() .lambda() .eq(JkCabinet::getIsdeleted,Constants.ZERO) .eq(JkCabinet::getId,cabinetId) .last(" limit 1") ); if(Objects.isNull(cabinet)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对ä¸èµ·ï¼æªæ¥è¯¢å°é¥åæä¿¡æ¯"); } BeanUtil.copyProperties(cabinet,cabinetDetailVO); cabinetDetailVO.setGridNum(Constants.ZERO); cabinetDetailVO.setErrGridNum(Constants.ZERO); cabinetDetailVO.setOnlineKeyNum(Constants.ZERO); cabinetDetailVO.setServiceKeyNum(Constants.ZERO); cabinetDetailVO.setOutKeyNum(Constants.ZERO); cabinetDetailVO.setUnBindGridNum(Constants.ZERO); //ææææ ¼ä¿¡æ¯ List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>() .selectAll(JkCabinetGrid.class) .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode) .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus) .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(JkCabinetGrid::getCabinetId,cabinet.getId()) .orderByDesc(JkCabinetGrid::getCode) ); List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>(); if(CollectionUtils.isNotEmpty(jkCabinetGridList)){ cabinetDetailVO.setGridNum(jkCabinetGridList.size()); for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { CabinetGridInfoVO cabinetGridInfoVO = new CabinetGridInfoVO(); BeanUtil.copyProperties(jkCabinetGrid,cabinetGridInfoVO); cabinetGridInfoVO.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE); cabinetGridInfoVOList.add(cabinetGridInfoVO); } cabinetDetailVO.setErrGridNum( cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getWorkingStatus(),Constants.ONE)).collect(Collectors.toList()).size() ); cabinetDetailVO.setOnlineKeyNum( cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)).collect(Collectors.toList()).size() ); cabinetDetailVO.setOutKeyNum( cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)).collect(Collectors.toList()).size() ); cabinetDetailVO.setServiceKeyNum( cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.THREE)).collect(Collectors.toList()).size() ); cabinetDetailVO.setUnBindGridNum( cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getBindStatus(),Constants.ZERO)).collect(Collectors.toList()).size() ); } return cabinetDetailVO; } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
@@ -164,6 +164,8 @@ @Override public List<JkKeys> findList(JkKeys jkKeys) { jkKeys.setIsdeleted(Constants.ZERO); jkKeys.setStatus(Constants.ZERO); QueryWrapper<JkKeys> wrapper = new QueryWrapper<>(jkKeys); return jkKeysMapper.selectList(wrapper); }