jiangping
2024-02-28 de21f15d5b96a714b012337cf8c5d6a53548590f
整理
已修改10个文件
114 ■■■■ 文件已修改
admin/package-lock.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaVisitsDesWindow.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visits.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_screen/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/DeviceEventDTO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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",
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",
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)
              })
            }
          })
        })
    }
  }
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>
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:
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:
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;
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);
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);
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;