From c845254d8e0d83bb9458d0236a1da201bfbeae42 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 06 六月 2025 19:18:23 +0800
Subject: [PATCH] 开发更新
---
server/system_service/src/main/java/com/doumee/core/utils/Constants.java | 16 ++
server/visits/dmvisit_service/src/main/resources/application-dev.yml | 6
admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue | 9 -
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml | 2
admin/src/api/Inspection/ywPatrolPoint.js | 10 ++
server/system_service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java | 8 +
server/system_gateway/src/main/resources/bootstrap.yml | 2
admin/package-lock.json | 2
admin/src/views/Inspection/dot.vue | 44 ++++++--
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java | 5
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java | 156 +++++++++++++++++++++++++++++-
server/system_service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java | 2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java | 3
server/system_gateway/src/main/resources/application-dev.yml | 6
admin/src/components/base/BaseTable.vue | 2
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java | 9 +
16 files changed, 244 insertions(+), 38 deletions(-)
diff --git a/admin/package-lock.json b/admin/package-lock.json
index 2a619e8..240cbab 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -6,7 +6,7 @@
"dependencies": {
"@amap/amap-jsapi-loader": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
+ "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
"integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
},
"@babel/code-frame": {
diff --git a/admin/src/api/Inspection/ywPatrolPoint.js b/admin/src/api/Inspection/ywPatrolPoint.js
index 13709e9..00d3dea 100644
--- a/admin/src/api/Inspection/ywPatrolPoint.js
+++ b/admin/src/api/Inspection/ywPatrolPoint.js
@@ -12,6 +12,16 @@
trim: true
})
}
+
+
+// 浜岀淮鐮佸垪琛�
+export function exportQrcodes (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/exportQrcodes',data, {
+ trim: true,
+ download: true
+ })
+
+}
// 瀵煎嚭Excel
export function exportExcel (data) {
return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/exportExcel', data, {
diff --git a/admin/src/components/base/BaseTable.vue b/admin/src/components/base/BaseTable.vue
index 7aea229..06c3ed3 100644
--- a/admin/src/components/base/BaseTable.vue
+++ b/admin/src/components/base/BaseTable.vue
@@ -182,7 +182,7 @@
containChildrenRows.push(row[this.configData['field.main']])
}
}
- if (containChildrenRows.length > 0) {
+ if (containChildrenRows.length > 0) {鎴�
message = '鏈灏嗗垹闄よ鏁版嵁鍙婂叾瀛愭暟鎹紝纭鍒犻櫎鍚楋紵'
}
}
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
index d17b360..2f22cd9 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
@@ -1,8 +1,8 @@
<template>
<GlobalWindow :title="title" :visible.sync="visible" width="620px" :confirm-working="isWorking" @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
- <el-form-item label="宸℃鐐圭紪鐮�" prop="code">
- <el-input v-model="form.code" placeholder="璇疯緭鍏ュ悕绉�" v-trim />
+ <el-form-item label="宸℃鐐圭紪鐮�" required >
+ <el-input v-model="form.code" disabled readonly placeholder="绯荤粺鑷姩鐢熸垚" v-trim />
</el-form-item>
<el-form-item label="宸℃鐐瑰悕绉�" prop="name">
<el-input v-model="form.name" placeholder="璇疯緭鍏ュ贰妫�鐐瑰悕绉�" v-trim />
@@ -67,7 +67,6 @@
// 楠岃瘉瑙勫垯
rules: {
name: [{ required: true, message: '璇疯緭鍏�' }],
- code: [{ required: true, message: '璇疯緭鍏�' }],
},
isUploading: false,
}
@@ -87,7 +86,7 @@
this.$nextTick(() => {
this.form = {
name: '',
- code: '',
+ // code: '',
content: '',
imgurl: '',
areaId: 0,
@@ -182,4 +181,4 @@
margin-bottom: 20px;
float: left;
}
-</style>
\ No newline at end of file
+</style>
diff --git a/admin/src/views/Inspection/dot.vue b/admin/src/views/Inspection/dot.vue
index 943bb51..d23746f 100644
--- a/admin/src/views/Inspection/dot.vue
+++ b/admin/src/views/Inspection/dot.vue
@@ -20,9 +20,11 @@
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:ywpatrolpoint:create', 'business:ywpatrolpoint:delete']">
+ <ul class="toolbar" v-permissions="['business:ywpatrolpoint:create', 'business:ywpatrolpoint:qrcode', 'business:ywpatrolpoint:delete']">
<li><el-button type="primary" @click="editClick()" icon="el-icon-plus"
v-permissions="['business:ywpatrolpoint:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="exportQrcodes()" icon="el-icon-download"
+ v-permissions="['business:ywpatrolpoint:qrcode']">瀵煎嚭鍏ㄩ噺浜岀淮鐮�</el-button></li>
<!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
v-permissions="['business:ywpatrolpoint:delete']">鍒犻櫎</el-button></li> -->
</ul>
@@ -32,9 +34,11 @@
<el-table-column prop="name" label="宸℃鐐瑰悕绉�" min-width="100px"></el-table-column>
<el-table-column prop="deviceName" label="鍏宠仈璁惧" min-width="100px"></el-table-column>
<el-table-column prop="areaName" label="宸℃鍖哄煙" min-width="100px"></el-table-column>
- <el-table-column v-if="containPermissions(['business:ywpatrolpoint:update', 'business:ywpatrolpoint:delete'])"
- label="鎿嶄綔" min-width="120" fixed="right">
+ <el-table-column v-if="containPermissions(['business:ywpatrolpoint:update','business:ywpatrolpoint:qrcode', 'business:ywpatrolpoint:delete'])"
+ label="鎿嶄綔" min-width="160" fixed="right">
<template slot-scope="{row}">
+ <el-button type="text" @click="exportQrcodes(row.id)" icon="el-icon-download"
+ v-permissions="['business:ywpatrolpoint:qrcode']">涓嬭浇浜岀淮鐮�</el-button>
<el-button type="text" @click="editClick(row)" icon="el-icon-edit"
v-permissions="['business:ywpatrolpoint:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
@@ -56,11 +60,12 @@
import Pagination from '@/components/common/Pagination'
import OperaYwPatrolPointWindow from './components/OperaYwPatrolPointWindow'
import { fetchList } from '@/api/business/category'
+import { exportQrcodes } from '@/api/Inspection/ywPatrolPoint'
export default {
name: 'YwPatrolPoint',
extends: BaseTable,
components: { TableLayout, Pagination, OperaYwPatrolPointWindow },
- data() {
+ data () {
return {
// 鎼滅储
searchForm: {
@@ -71,7 +76,7 @@
areaList: []
}
},
- created() {
+ created () {
this.config({
module: '杩愮淮宸℃鐐逛俊鎭〃',
api: '/Inspection/ywPatrolPoint',
@@ -82,7 +87,24 @@
this.getProject()
},
methods: {
- reset() {
+
+ exportQrcodes (id) {
+ this.$dialog.actionConfirm( '鎮ㄧ‘璁よ繘琛岃鎿嶄綔鍚楋紵','涓嬭浇鎿嶄綔鎻愮ず')
+ .then(() => {
+ exportQrcodes({id:id})
+ .then(response => {
+ this.download(response)
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking.export = false
+ })
+ })
+ .catch(() => {})
+ },
+ reset () {
this.searchForm = {
name: '',
areaId: '',
@@ -90,16 +112,16 @@
}
this.search()
},
- getProject() {
+ getProject () {
fetchList({
model: { type: 4 },
capacity: 1000,
- page: 1,
+ page: 1
}).then(res => {
this.areaList = res.records || []
})
},
- editClick(row) {
+ editClick (row) {
if (row && row.id) {
this.$refs.operaYwPatrolPointWindow.open('缂栬緫宸℃鐐�', row)
} else {
@@ -107,7 +129,7 @@
}
// this.$refs.operaYwPatrolPointWindow.initData()
},
- changeSel(e) {
+ changeSel (e) {
if (e && e.length == 1) {
} else if (e && e.length == 2) {
this.$set(this.searchForm, 'areaId', e[1])
@@ -115,7 +137,7 @@
}
this.search()
- },
+ }
}
}
</script>
diff --git a/server/system_gateway/src/main/resources/application-dev.yml b/server/system_gateway/src/main/resources/application-dev.yml
index f119388..ce8c115 100644
--- a/server/system_gateway/src/main/resources/application-dev.yml
+++ b/server/system_gateway/src/main/resources/application-dev.yml
@@ -1,9 +1,9 @@
spring:
# 鏁版嵁婧愰厤缃�
datasource:
- url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/funingyunwei?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
- username: doumee
- password: rtjgfEr@&0c0m
+ url: jdbc:mysql://112.26.66.25:3306/funingyunwei?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: Doumee@168&QWERT
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
diff --git a/server/system_gateway/src/main/resources/bootstrap.yml b/server/system_gateway/src/main/resources/bootstrap.yml
index bbb8fb4..1375e72 100644
--- a/server/system_gateway/src/main/resources/bootstrap.yml
+++ b/server/system_gateway/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
profiles:
- active: pro
+ active: dev
application:
name: system_gateway
# 瀹夊叏閰嶇疆
diff --git a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java
index 33b987b..934227f 100644
--- a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java
+++ b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java
@@ -22,6 +22,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import java.util.ArrayList;
import java.util.List;
@Service
@@ -94,14 +95,16 @@
SystemRolePermission deleteDto = new SystemRolePermission();
deleteDto.setRoleId(dto.getRoleId());
systemRolePermissionService.delete(deleteDto);
+ List<SystemRolePermission> newList = new ArrayList<>();
// 鏂板鏂扮殑鏉冮檺
for (Integer permissionId : dto.getPermissionIds()) {
SystemRolePermission newRolePermission = new SystemRolePermission();
newRolePermission.setRoleId(dto.getRoleId());
newRolePermission.setPermissionId(permissionId);
newRolePermission.setCreateUser(dto.getCreateUser());
- systemRolePermissionService.create(newRolePermission);
+ newList.add(newRolePermission);
}
+ systemRolePermissionService.createList(newList);
}
@Override
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 29ead0a..500de9d 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -159,6 +159,11 @@
public static final String EVENT_FILES_PRIVATE_DOMAIN ="EVENT_FILES_PRIVATE_DOMAIN" ;
public static final String EVENT_FILES_PUBLIC_DOMAIN ="EVENT_FILES_PUBLIC_DOMAIN" ;
public static final String YW_CONTRACT_FILE = "YW_CONTRACT_FILE";
+ public static final String XUNJIAN ="XUNJIAN" ;
+ public static final String XJ_POINT_PREFIX ="XJ_POINT_PREFIX" ;
+ public static final String XJ_POINT_CODE_LENGTH ="XJ_POINT_CODE_LENGTH" ;
+ public static final String XJ_POINT_QRCODE_URL ="XJ_POINT_QRCODE_URL" ;
+ public static final String XJ_RERIRECT_URI ="XJ_RERIRECT_URI" ;
public static boolean DEALING_HK_SYNCPRIVILEGE= false;
public static boolean DEALING_HK_SYNCDEVICE = false;
public static boolean DEALING_HK_SYNCPLATFORM = false;
@@ -250,6 +255,12 @@
return sb.toString();
}
+
+ public static String formartNumString(int length, long l) {
+
+ return String.format("%0"+length+"d",l );
+ }
+
public interface VisitIccmStatus{
//璁垮鐘舵��(0:鏈鍒�,1:宸茬鍒�,2:宸茬閫�,3:婊炵暀,4:鏈闂�,5:鑷姩绛剧,6:鏈閫�)
int waitSign = 0;
@@ -508,6 +519,7 @@
public static final String WX_PLATFORM = "WX_PLATFORM";
public static final String WX_PLATFORM_ACCESS_TOKEN = "WX_PLATFORM_ACCESS_TOKEN";
+ public static final String WX_AUTH_URL = "WX_AUTH_URL";
public static final String WX_PLATFORM_APPID = "WX_PLATFORM_APPID";
public static final String WX_PLATFORM_SECRET = "WX_PLATFORM_SECRET";
public static final String WX_PLATFORM_AUDIT_VISIT = "WX_PLATFORM_AUDIT_VISIT";
@@ -809,8 +821,8 @@
}
public static void main(String[] args) {
- System.out.println(Constants.checkCarNo("鐨朅10991"));
- System.out.println(Constants.checkCarNo("鐨朅A10991"));
+ System.out.println(Constants.formartNumString(8,1023492384023480l));
+// System.out.println(Constants.checkCarNo("鐨朅A10991"));
// System.out.println(Constants.getVehiclePlateNo("婀楤140D17").getDescription());
// System.out.println(Constants.getVehiclePlateNo("瀹緼P0637").getDescription());
diff --git a/server/system_service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java b/server/system_service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java
index b3fcb94..3eea8fc 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java
@@ -88,4 +88,6 @@
* @date 2023/03/21 14:49
*/
long count(SystemRolePermission systemRolePermission);
+
+ Integer createList(List<SystemRolePermission> newList);
}
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java
index da0131d..8f6bee6 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java
@@ -34,6 +34,14 @@
systemRolePermissionMapper.insert(systemRolePermission);
return systemRolePermission.getId();
}
+ @Override
+ public Integer createList(List<SystemRolePermission> list) {
+ if(list ==null || list.size() == 0){
+ return null;
+ }
+ systemRolePermissionMapper.insert(list);
+ return list.size();
+ }
@Override
public void deleteById(Integer id) {
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java
index af02236..94e9c2c 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java
@@ -12,6 +12,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.doumee.config.annotation.CloudRequiredPermission;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -70,6 +71,14 @@
return ApiResponse.success(null);
}
+ @ApiOperation("鎵归噺瀵煎嚭浜岀淮鐮�")
+ @PostMapping("/exportQrcodes")
+ @CloudRequiredPermission("business:ywpatrolpoint:qrcode")
+ public void exportQrcodes(@RequestBody YwPatrolPoint ywPatrolPoint,HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+ ywPatrolPointService.exportQrcodes(ywPatrolPoint.getId(),response);
+ }
+
+
@ApiOperation("鍒嗛〉鏌ヨ")
@PostMapping("/page")
@CloudRequiredPermission("business:ywpatrolpoint:query")
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
index 86e11a3..2df12af 100644
--- a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
profiles:
- active: test
+ active: pro
application:
name: visitsAdmin
# 瀹夊叏閰嶇疆
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java
index 8be507c..261536e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java
@@ -4,6 +4,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwPatrolPoint;
+
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -48,6 +50,7 @@
* @param ywPatrolPoint 瀹炰綋瀵硅薄
*/
void updateById(YwPatrolPoint ywPatrolPoint);
+ void exportQrcodes(Integer id, HttpServletResponse ywPatrolPoint);
/**
* 鎵归噺涓婚敭鏇存柊
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java
index 548644c..12799da 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java
@@ -22,14 +22,32 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.client.j2se.MatrixToImageWriter;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import com.google.zxing.qrcode.encoder.ByteMatrix;
+import com.google.zxing.qrcode.encoder.Encoder;
+import com.google.zxing.qrcode.encoder.QRCode;
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+import java.util.*;
/**
* 杩愮淮宸℃鐐逛俊鎭〃Service瀹炵幇
@@ -49,15 +67,21 @@
@Override
public Integer create(YwPatrolPoint ywPatrolPoint) {
if(Objects.isNull(ywPatrolPoint)
- || Objects.isNull(ywPatrolPoint.getCode())
+// || Objects.isNull(ywPatrolPoint.getCode())
|| Objects.isNull(ywPatrolPoint.getName())
){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
- if(ywPatrolPointMapper.selectCount(new QueryWrapper<YwPatrolPoint>().lambda().eq(YwPatrolPoint::getIsdeleted,Constants.ZERO)
- .eq(YwPatrolPoint::getCode,ywPatrolPoint.getCode()))>Constants.ZERO){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸℃鐐圭紪鐮侀噸澶�!");
+
+ String pre = systemDictDataBiz.queryByCode(Constants.XUNJIAN,Constants.XJ_POINT_PREFIX).getCode();
+ int length = 8;
+ try {
+ length = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.XUNJIAN,Constants.XJ_POINT_CODE_LENGTH).getCode());
+ }catch (Exception e){
}
+ long num = ywPatrolPointMapper.selectCount(new QueryWrapper<YwPatrolPoint>());
+
+ ywPatrolPoint.setCode(pre+Constants.formartNumString (length,(num+1)));
LoginUserInfo loginUserInfo = ywPatrolPoint.getLoginUserInfo();
ywPatrolPoint.setCreateDate(new Date());
ywPatrolPoint.setCreator(loginUserInfo.getId());
@@ -82,10 +106,11 @@
@Override
public void deleteById(Integer id, LoginUserInfo user) {
- ywPatrolPointMapper.update(new UpdateWrapper<YwPatrolPoint>().lambda().set(YwPatrolPoint::getIsdeleted,Constants.ONE)
+ ywPatrolPointMapper.update(new UpdateWrapper<YwPatrolPoint>().lambda()
+ .set(YwPatrolPoint::getIsdeleted,Constants.ONE)
.set(YwPatrolPoint::getEditDate, DateUtil.getCurrDateTime())
.set(YwPatrolPoint::getEditor,user.getId())
- .eq(YwPatrolPoint::getId,user.getId())
+ .eq(YwPatrolPoint::getId,id)
);
}
@@ -94,7 +119,120 @@
UpdateWrapper<YwPatrolPoint> deleteWrapper = new UpdateWrapper<>(ywPatrolPoint);
ywPatrolPointMapper.delete(deleteWrapper);
}
+ @Override
+ public void exportQrcodes(Integer id, HttpServletResponse response){
+ try {
+ List<File> fileList = new ArrayList<>();
+ List<YwPatrolPoint> bikesList = ywPatrolPointMapper.selectList(new QueryWrapper<YwPatrolPoint>().lambda()
+ .eq(YwPatrolPoint::getIsdeleted,Constants.ZERO)
+ .eq(id!=null,YwPatrolPoint::getId,id)
+ );
+ if(bikesList== null || bikesList.size() == 0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ // 鍒涘缓涓存椂鏂囦欢鐨勫墠缂�鍜屽悗缂�
+ String path = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_AUTH_URL).getCode();
+ String uri = systemDictDataBiz.queryByCode(Constants.XUNJIAN,Constants.XJ_RERIRECT_URI).getCode();
+ String appId = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_APPID).getCode() ;
+ // 鍒涘缓涓存椂鏂囦欢
+ for(YwPatrolPoint l : bikesList){
+ if(StringUtils.isNotBlank(l.getCode())){
+ String redirectUri = uri.replace("${ywid}",l.getCode());
+ String url = path.replace("${url}",URLEncoder.encode(redirectUri)).replace("${appid}",appId);
+ File file = generateQRCodeImage(url,100,100,l.getCode()+".png");
+ if(file!=null && file.isFile()){
+ fileList.add(file);
+ }
+ }
+ }
+ if(fileList == null || fileList.size() == 0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝涓嬭浇鍐呭涓虹┖锛屾搷浣滃け璐ワ紒");
+ }
+ String fileName = "宸℃鐐逛簩缁寸爜瀵煎嚭_"+System.currentTimeMillis()+".zip" ;
+ String encodeFileName =URLEncoder.encode(fileName, Charset.forName("UTF-8").toString())+".zip";
+ response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+ response.setContentType("application/octet-stream");
+ response.setHeader("eva-opera-type", "download");
+ response.setHeader("eva-download-filename", encodeFileName);
+ packFilesToZip(fileList,response.getOutputStream());
+ } catch (IOException e) {
+ throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+ }
+ }
+ public static File generateQRCodeImage(String text, int width, int height, String fileName) {
+ try {
+ // 鍒涘缓浜岀淮鐮佹暟鎹煩闃�
+ Map<EncodeHintType, Object> hints = new HashMap<>();
+ hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 璁剧疆瀛楃缂栫爜涓篣TF-8
+ hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 璁剧疆绾犻敊绛夌骇涓篐
+ hints.put(EncodeHintType.MARGIN, 0); // 璁剧疆鐧借竟涓�0
+ BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE , width, height, hints);
+ // 淇濆瓨浜岀淮鐮佸浘鐗囧埌鏂囦欢绯荤粺
+ File f = new File("temp/");
+ if(!f.exists()){
+ f.mkdirs();
+ }
+// bitMatrix = renderResult(bitMatrix,width,height);
+ Path path = FileSystems.getDefault().getPath("temp/"+fileName);
+ MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); // 淇濆瓨涓篜NG鏍煎紡鐨勫浘鐗�
+ return path.toFile();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static void main(String[] args) {
+ File f =generateQRCodeImage("dj灏戞椂璇佃瘲涔﹀皯鏃惰璇椾功鏄拻鏄拻鏄拻",100,100,UUID.randomUUID().toString()+".png");
+ System.out.println(f.getAbsolutePath());
+ }
+
+ private static BitMatrix renderResult(BitMatrix input, int width, int height) {
+ if (input == null) {
+ return null;
+ }
+ int inputWidth = input.getWidth();
+ int inputHeight = input.getHeight();
+ // 渚濇嵁鐢ㄦ埛鐨勮緭鍏ュ楂橈紝璁$畻鏈�鍚庣殑杈撳嚭瀹介珮
+ int outputWidth = Math.max(width, inputWidth);
+ int outputHeight = Math.max(height, inputHeight);
+
+ //璁$畻缂╂斁姣斾緥
+ int multiple = Math.min(outputWidth / inputWidth, outputHeight / inputHeight);
+
+ BitMatrix output = new BitMatrix(outputWidth, outputHeight);
+ int inputY = 0;
+ // 宓屽寰幆锛屽皢ByteMatrix鐨勫唴瀹硅绠梡adding鍚庤浆鎹㈡垚BitMatrix
+ for (int outputY = 0; inputY < inputHeight; outputY += multiple) {
+ int inputX = 0;
+ for (int outputX = 0; inputX < inputWidth; outputX += multiple) {
+ if (input.get(inputX, inputY)) {
+ output.setRegion(outputX, outputY, multiple, multiple);
+ }
+ inputX++;
+ }
+ inputY++;
+ }
+
+ return output;
+ }
+ public static void packFilesToZip(List<File> files, ServletOutputStream os) throws IOException {
+ try (ZipArchiveOutputStream zipOutputStream = new ZipArchiveOutputStream(os)) {
+ for (File file : files) {
+ ZipArchiveEntry entry = new ZipArchiveEntry(file.getName());
+ zipOutputStream.putArchiveEntry(entry);
+ try (FileInputStream fileInputStream = new FileInputStream(file)) {
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = fileInputStream.read(buffer)) > 0) {
+ zipOutputStream.write(buffer, 0, length);
+ }
+ }
+ zipOutputStream.closeArchiveEntry();
+ }
+ }
+ }
@Override
public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
if (CollectionUtils.isEmpty(ids)) {
diff --git a/server/visits/dmvisit_service/src/main/resources/application-dev.yml b/server/visits/dmvisit_service/src/main/resources/application-dev.yml
index b3984c7..7e535db 100644
--- a/server/visits/dmvisit_service/src/main/resources/application-dev.yml
+++ b/server/visits/dmvisit_service/src/main/resources/application-dev.yml
@@ -1,9 +1,9 @@
spring:
# 鏁版嵁婧愰厤缃�
datasource:
- url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/funingyunwei?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
- username: doumee
- password: rtjgfEr@&0c0m
+ url: jdbc:mysql://112.26.66.25:3306/funingyunwei?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: Doumee@168&QWERT
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
redis:
--
Gitblit v1.9.3