From de21f15d5b96a714b012337cf8c5d6a53548590f Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 28 二月 2024 10:23:53 +0800 Subject: [PATCH] 整理 --- server/dmvisit_admin/src/main/resources/application.yml | 4 +- server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/DeviceEventDTO.java | 3 + server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java | 44 +++++++++++++++++++++ admin/src/components/business/OperaVisitsDesWindow.vue | 44 ++++++++++++++++++++-- server/dmvisit_screen/src/main/resources/application.yml | 2 admin/src/views/business/visits.vue | 3 + admin/package-lock.json | 5 ++ server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java | 4 + admin/package.json | 1 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java | 4 + 10 files changed, 102 insertions(+), 12 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index 09a1716..697ba46 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -10969,6 +10969,11 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, + "qrcodejs2": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/qrcodejs2/-/qrcodejs2-0.0.2.tgz", + "integrity": "sha512-+Y4HA+cb6qUzdgvI3KML8GYpMFwB24dFwzMkS/yXq6hwtUGNUnZQdUnksrV1XGMc2mid5ROw5SAuY9XhI3ValA==" + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1616385328325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz", diff --git a/admin/package.json b/admin/package.json index b66161d..8a4a61b 100644 --- a/admin/package.json +++ b/admin/package.json @@ -18,6 +18,7 @@ "element-ui": "^2.3.6", "js-cookie": "^2.2.1", "js-file-download": "^0.4.12", + "qrcodejs2": "0.0.2", "vue": "^2.6.11", "vue-clipboard2": "^0.3.1", "vue-router": "^3.5.1", diff --git a/admin/src/components/business/OperaVisitsDesWindow.vue b/admin/src/components/business/OperaVisitsDesWindow.vue index 706aa05..abe4ef6 100644 --- a/admin/src/components/business/OperaVisitsDesWindow.vue +++ b/admin/src/components/business/OperaVisitsDesWindow.vue @@ -1,15 +1,16 @@ <template> <GlobalWindow :title="title" - width="60%" + width="70%" :visible.sync="visible" + append-to-body :confirm-working="isWorking" @confirm="confirm" > <div class="list"> <div class="list_item"> <div class="list_item_label">鎷滆淇℃伅</div> - <div class="list_item_val" v-if="info"> + <div class="list_item_val" v-if="info" style="display: inline-block"> <div class="list_item_val_item">鎷滆瀵规柟锛歿{info.receptMemberName}} - {{info.receptMemberDepartment}}</div> <div class="list_item_val_item">鎷滆鏃堕棿锛歿{info.starttime}} 鑷� {{info.endtime}}</div> <div class="list_item_val_item">鎷滆浜嬬敱锛歿{info.reason}}</div> @@ -17,7 +18,10 @@ <div class="list_item_val_item">鐢宠闂ㄧ锛歿{info.deviceRoleList ? info.deviceRoleList.map(item => item.name).join(' | ') : ''}}</div> <div class="list_item_val_item">鍒涘缓鏃堕棿锛歿{info.createDate}}</div> </div> - </div> + <div class="list_item_val" v-if="info" style="display: inline-block;float: right"> + <div class="list_item_val_item" id="qrcode2" ref="qrcode2"></div> + </div> + </div> <div class="list_item"> <div class="list_item_label">璁垮淇℃伅</div> <div class="list_item_table" v-if="info"> @@ -92,6 +96,13 @@ </el-table-column> <el-table-column width="150" + label="璁垮浜岀淮鐮�"> + <template slot-scope="{row}"> + <div :id="`qrcode${row.id}`" :ref="`qrcode${row.id}`"></div> + </template> + </el-table-column> + <el-table-column + width="150" label="浜鸿劯鐓х墖"> <template slot-scope="{row}"> <el-image @@ -139,6 +150,7 @@ import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' import { queryById } from '@/api/business/visits' +import QRCode from "qrcodejs2"; export default { name: 'OperaVisitsWindow', extends: BaseOpera, @@ -146,8 +158,11 @@ data () { return { list: [], - info: null + info: null, + innerVisible:false } + }, + created () { }, methods: { getAge (val) { @@ -163,6 +178,17 @@ return calculationAge - 1 } }, + crateQrcodeShow (div,qrcode1) { + if(qrcode1 ==null ||qrcode1 ==''){ + return; + } + this.qr = new QRCode(div, { + width: 90, + height: 90, + text: qrcode1 + }) + }, + open (title, id) { this.title = title this.visible = true @@ -170,6 +196,16 @@ .then(res => { console.log(res) this.info = res + this.$nextTick(() => { + // this.$refs.qrcode2.innerHTML = '' + // this.crateQrcodeShow('qrcode2',res.qrcode) + if(this.info.withUserList ){ + this.info.withUserList.forEach(row => { + this.$refs['qrcode'+row.id].innerHTML = '' + this.crateQrcodeShow('qrcode'+row.id,row.qrcode) + }) + } + }) }) } } diff --git a/admin/src/views/business/visits.vue b/admin/src/views/business/visits.vue index 231b220..7b03f38 100644 --- a/admin/src/views/business/visits.vue +++ b/admin/src/views/business/visits.vue @@ -108,6 +108,7 @@ import TableLayout from '@/layouts/TableLayout' import Pagination from '@/components/common/Pagination' import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow' + export default { name: 'Visits', extends: BaseTable, @@ -131,6 +132,6 @@ 'field.main': 'id' }) this.search() - } + }, } </script> diff --git a/server/dmvisit_admin/src/main/resources/application.yml b/server/dmvisit_admin/src/main/resources/application.yml index a91f8c2..07c8e2d 100644 --- a/server/dmvisit_admin/src/main/resources/application.yml +++ b/server/dmvisit_admin/src/main/resources/application.yml @@ -10,7 +10,7 @@ # application: # name: doumeemes profiles: - active: devYL + active: dev # JSON杩斿洖閰嶇疆 jackson: @@ -67,7 +67,7 @@ compression: enabled: true mime-types: application/json - port: 10028 + port: 10033 tomcat: max-swallow-size: -1 servlet: diff --git a/server/dmvisit_screen/src/main/resources/application.yml b/server/dmvisit_screen/src/main/resources/application.yml index d27c0e8..cb40363 100644 --- a/server/dmvisit_screen/src/main/resources/application.yml +++ b/server/dmvisit_screen/src/main/resources/application.yml @@ -70,7 +70,7 @@ enabled: true mime-types: application/json - port: 10029 + port: 10032 tomcat: max-swallow-size: -1 servlet: diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/DeviceEventDTO.java b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/DeviceEventDTO.java index 35b60fb..7dc0ece 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/DeviceEventDTO.java +++ b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/DeviceEventDTO.java @@ -115,7 +115,8 @@ @ApiModelProperty(value = "浜哄憳鍚嶇О") private String personName; - + @ApiModelProperty(value = "浜哄憳缂栫爜") + private String memberId; @ApiModelProperty(value = "璇诲崱鍣ㄧ被鍒�0-鏃犳晥1-IC璇诲崱鍣�2-韬唤璇佽鍗″櫒3-浜岀淮鐮佽鍗″櫒4-鎸囩汗澶�") private Integer extEventReaderKind; diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java index 6aa8bcf..ed3919c 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java @@ -368,6 +368,7 @@ .leftJoin(Device.class,Device::getHkId,DeviceEvent::getSrcParentIndex) .selectAll(DeviceEvent.class) .selectAs(Member::getName,DeviceEventDTO::getPersonName) + .selectAs(Member::getId,DeviceEventDTO::getMemberId) .selectAs(Member::getType,DeviceEventDTO::getPersonType) .selectAs(Member::getPhone,DeviceEventDTO::getPersonPhone) .selectAs(Member::getIdcardDecode,DeviceEventDTO::getPersonIdcardDecode) @@ -375,7 +376,7 @@ .selectAs(Company::getName,DeviceEventDTO::getPersonCompanyName); queryWrapper.like(number, Member::getPhone, pageWrap.getModel().getKeyWords()) .like((b||hasWord),Member::getName, pageWrap.getModel().getKeyWords()) - .eq(StringUtils.isNotBlank(pageWrap.getModel().getPersonType()), + .eq(StringUtils.equals(pageWrap.getModel().getPersonType(),Constants.TWO+""), Member::getType, pageWrap.getModel().getPersonType()) .eq(Objects.nonNull(pageWrap.getModel().getEventType()), @@ -387,6 +388,7 @@ .le(Objects.nonNull(pageWrap.getModel().getEndTime()), DeviceEvent::getCreateDate, pageWrap.getModel().getEndTime()) + .isNull(!StringUtils.isNotBlank(pageWrap.getModel().getPersonType()) && !StringUtils.equals(pageWrap.getModel().getPersonType(),Constants.TWO+""),Member::getId)//闄や簡鍐呴儴浜哄憳閮芥槸澶栨潵璁垮 .orderByDesc(DeviceEvent::getCreateDate); queryWrapper.orderByDesc(DeviceEvent::getHappenTime); IPage<DeviceEventDTO> deviceEventDTOIPage = deviceEventJoinMapper.selectJoinPage(page, DeviceEventDTO.class, queryWrapper); diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java index 252bf9e..c12d4e2 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java @@ -145,7 +145,9 @@ // .eq(ParkBook::getIsdeleted, Constants.ZERO) .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getPhone,pageWrap.getModel().getMemberName()) .or().like(Member::getName,pageWrap.getModel().getMemberName())); - queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getCarCode()),ParkBook::getCarCode,pageWrap.getModel().getCarCode()); + queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCarCode()),ParkBook::getCarCode,pageWrap.getModel().getCarCode()); + queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName()); + queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getParksName()),Parks::getName,pageWrap.getModel().getParksName()); queryWrapper.orderByDesc(ParkBook::getCreateDate); IPage<ParkBook> result = parkBookJoinMapper.selectJoinPage(page, ParkBook.class,queryWrapper); diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java index da073fe..63d2d81 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java @@ -1,6 +1,7 @@ package com.doumee.service.business.impl.hksync; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; @@ -8,6 +9,7 @@ import com.doumee.core.haikang.model.param.BaseListPageResponse; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.*; +import com.doumee.core.haikang.model.param.request.event.visit.EventVisitInfoRequest; import com.doumee.core.haikang.model.param.respose.*; import com.doumee.core.haikang.service.HKService; import com.doumee.core.utils.Constants; @@ -16,9 +18,11 @@ import com.doumee.core.utils.ImageBase64Util; import com.doumee.core.wx.wxPlat.WxPlatNotice; import com.doumee.dao.business.DeviceRoleMapper; +import com.doumee.dao.business.RetentionMapper; import com.doumee.dao.business.join.VisitsJoinMapper; import com.doumee.dao.business.model.DeviceRole; import com.doumee.dao.business.model.Member; +import com.doumee.dao.business.model.Retention; import com.doumee.dao.business.model.Visits; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; @@ -38,6 +42,8 @@ public class HkSyncVisitServiceImpl extends HkSyncBaseServiceImpl { @Autowired private VisitsJoinMapper visitsMapper; + @Autowired + private RetentionMapper retentionMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired @@ -112,6 +118,11 @@ update.setOutDate(DateUtil.getISO8601DateByStr2(model.getVisitEndTime())); update.setRemark("宸茬绂�"); visitsMapper.updateById(update); + + //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級 + retentionMapper.delete(new UpdateWrapper<Retention>().lambda() + .eq(Retention::getType,Constants.memberType.visitor) + .eq(Retention::getMemberId,c.getMemberId())); } } if (model.getVisitorStatus()!=null&& "7,8".contains( model.getVisitorStatus()+"")){ @@ -126,6 +137,12 @@ update.setOutDate(DateUtil.getISO8601DateByStr2(model.getVisitEndTime())); update.setRemark("瓒呮椂鏈鍒�"); visitsMapper.updateById(update); + //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級 + retentionMapper.delete(new UpdateWrapper<Retention>().lambda() + .eq(Retention::getType,Constants.memberType.visitor) + .eq(Retention::getMemberId,c.getMemberId())); + //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳 + retentionMapper.insert(getRetentionModelByVisitRequest(c,update.getInDate())); } } } @@ -135,6 +152,29 @@ Constants.DEALING_HK_VISIT_EXPIRE =false; } } + + private Retention getRetentionModelByVisitRequest(Visits visits,Date date) { + Retention retention = new Retention(); + retention.setIsdeleted(Constants.ZERO); + retention.setCreateDate(date); + retention.setClasses(visits.getClasses()); + retention.setCode(visits.getCode()); + retention.setIdcardNo(visits.getIdcardNo()); + retention.setIdcardDecode(visits.getIdcardDecode()); + retention.setName(visits.getName()); + retention.setBirthday(visits.getBirthday()); + retention.setType(visits.getMemberType()); + retention.setCompanyId(visits.getCompanyId()); + retention.setCompanyName(visits.getCompanyName()); + retention.setEventDate(retention.getCreateDate()); + retention.setFaceImg(visits.getFaceImg()); + retention.setImgurl(visits.getImgurl()); + retention.setPhone(visits.getPhone()); + retention.setMemberId(visits.getMemberId()); + + return retention; + } + public AppointmentInfoResponse getVisitRecord(String orderId){ //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹� if(StringUtils.isBlank(orderId)){ @@ -411,7 +451,9 @@ } private List<Visits> getExpireVisitList() { MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); - queryWrapper.selectAll(Visits.class); + queryWrapper.selectAll(Visits.class) + .selectAs(Member::getType,Visits::getMemberType) + .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId); queryWrapper.in(Visits::getStatus, Arrays.asList(new Integer[]{Constants.VisitStatus.xfSuccess,Constants.VisitStatus.signin}) ); List<Visits> list = visitsMapper.selectJoinList(Visits.class,queryWrapper); return list; -- Gitblit v1.9.3