MrShi
2025-05-21 f5ab83dfad01c87828232af8cd18c676e69fd917
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已修改22个文件
293 ■■■■■ 文件已修改
admin/src/components/business/OperaCarUseBookWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaVisitsDesWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalMember.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/relativeMember.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/reportRecord.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/retention.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visits.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/operation/serviceCar/apprRecord.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/MeetingCloudController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/admin/request/BusinessOverDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCarUseBookWindow.vue
@@ -71,7 +71,7 @@
            <div class="info">
              <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" />
              <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" />
              <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 3" />
              <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 4 || item.status == 3" />
              <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" />
              <div style="display: inline" v-if="item.approveType != 1">
                <img v-if="item.faceImg != null && item.faceImg != ''" :src="item.faceImg" class="avatar" alt="" />
@@ -234,7 +234,7 @@
    agreeOpen() {
      this.isShowProblem = true
      this.$set(this.dealForm, 'driverId', this.model.driverId)
      this.$set(this.dealForm, 'checkInfo', '')
      this.loadMemberList()
    },
admin/src/components/business/OperaVisitsDesWindow.vue
@@ -70,7 +70,7 @@
                <span v-if="row.status === 4">取消</span>
                <span v-if="row.status === 5">预约成功</span>
                <span v-if="row.status === 6">预约失败</span>
                <span v-if="row.status === 7">拜访中</span>
                <span v-if="row.status === 7">已登记</span>
                <span v-if="row.status === 8">已签离</span>
                <span v-if="row.status === 9">已失效</span>
              </template>
admin/src/views/business/internalMember.vue
@@ -43,6 +43,9 @@
            <el-option label="同步失败" value="2"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="" prop="idcardNo">
          <el-input v-model="searchForm.idcardNo" placeholder="身份证号" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <section>
          <el-button type="primary" @click="search">搜索</el-button>
          <el-button @click="reset">重置</el-button>
@@ -240,7 +243,8 @@
        positionId: '',
        companyId: '',
        hasFace: '',
        authStatus: ''
        authStatus: '',
        idcardNo: ''
      },
      loading: false,
      heading: false,
admin/src/views/business/relativeMember.vue
@@ -42,6 +42,9 @@
            <el-option label="同步成功" value="1"></el-option>
            <el-option label="同步失败" value="2"></el-option>
          </el-select>
          <el-form-item label="" prop="idcardNo">
            <el-input v-model="searchForm.idcardNo" placeholder="身份证号" @keypress.enter.native="search"></el-input>
          </el-form-item>
        </el-form-item>
        <!--      <el-form-item label="">
        <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1">是否包含下级组织</el-checkbox>
@@ -254,7 +257,8 @@
        workStatus: '',
        positionId: '',
        companyId: '',
        hasFace: ''
        hasFace: '',
        idcardNo:''
      },
      loading: false,
      heading: false,
admin/src/views/business/reportRecord.vue
@@ -77,7 +77,7 @@
          <span v-if="row.status === 4" style="color: gray">取消</span>
          <span v-if="row.status === 5" style="color: green">下发成功</span>
          <span v-if="row.status === 6" style="color: gray">下发失败</span>
          <span v-if="row.status === 7" style="color: green">拜访中</span>
          <span v-if="row.status === 7" style="color: green">已登记</span>
          <span v-if="row.status === 8" style="color: red">已签离</span>
          <span v-if="row.status === 9" style="color: gray">已失效</span>
        </template>
admin/src/views/business/retention.vue
@@ -54,26 +54,36 @@
        <el-table-column prop="idcardDecode" label="身份证号" min-width="130px"></el-table-column>
        <el-table-column prop="companyName" label="组织" min-width="100px">
          <template slot-scope="{ row }">
            <span v-if="row.type === 2 || row.type === 0">{{
            <span v-if="row.type === 2 || row.type === 4 || row.type === 0">{{
              row.companyName
              }}</span>
            <span v-else>{{ row.visitCompanyName }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="type" label="人员类型" min-width="100px">
          <template slot-scope="{row}">
            <span  v-if="row.type ==1">访客</span>
            <span  v-else-if="row.type ==2">内部人员</span>
            <span  v-else-if="row.type ==4">相关方人员</span>
            <span  v-else-if="row.type ==5">货运司机</span>
            <span  v-else ></span>
          </template>
        </el-table-column>
<!--        <el-table-column prop="type" label="人员类型" min-width="100px">
          <template slot-scope="{ row }">
            <span v-if="row.companyType == 0">相关方组织</span>
            <span v-else-if="row.companyType == 1">内部员工</span>
            <span v-else>访客</span>
          </template>
        </el-table-column>
        <el-table-column label="进场门禁" min-width="100px">
        </el-table-column>-->
        <el-table-column label="进场门禁" min-width="150px">
          <template slot-scope="{ row }">
            <!-- <span v-if="row.type === 1">-</span> -->
            <span>{{ row.deviceName || '-' }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="eventDate" label="最后进场时间" min-width="140px"></el-table-column>
        <el-table-column label="备注" prop="remark"  min-width="100px"></el-table-column>
        <el-table-column label="人脸照片" min-width="100px">
          <template slot-scope="{ row }">
            <el-image v-if="row.faceImgFull != null" style="width: 80px; height: 80px" :src="row.faceImgFull"
@@ -81,12 +91,14 @@
            </el-image>
          </template>
        </el-table-column>
        <el-table-column label="操作" min-width="120" fixed="right">
          <template slot-scope="{ row }">
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
              v-permissions="['business:retention:delete']">标记离场</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
      </pagination>
admin/src/views/business/visits.vue
@@ -37,7 +37,7 @@
            <el-option label="取消" value="4"></el-option>
            <el-option label="下发成功" value="5"></el-option>
            <el-option label="下发失败" value="6"></el-option>
            <el-option label="拜访中" value="7"></el-option>
            <el-option label="已登记" value="7"></el-option>
            <el-option label="已签离" value="8"></el-option>
            <el-option label="已失效" value="9"></el-option>
          </el-select>
@@ -92,7 +92,7 @@
            <span v-if="row.status === 4" style="color: gray">取消</span>
            <span v-if="row.status === 5" style="color: green">下发成功</span>
            <span v-if="row.status === 6" style="color: gray">下发失败</span>
            <span v-if="row.status === 7" style="color: green">拜访中</span>
            <span v-if="row.status === 7" style="color: green">已登记</span>
            <span v-if="row.status === 8" style="color: red">已签离</span>
            <span v-if="row.status === 9" style="color: gray">已失效</span>
          </template>
admin/src/views/operation/serviceCar/apprRecord.vue
@@ -101,7 +101,7 @@
        <el-table-column prop="createDate" label="申请时间" min-width="150px"></el-table-column>
        <el-table-column prop="editDate" label="操作时间" min-width="150px"></el-table-column>
        <el-table-column label="操作" min-width="180" align="center" fixed="right">
        <el-table-column label="操作" min-width="240" align="center" fixed="right">
          <template slot-scope="{ row }">
            <el-button type="text" icon="el-icon-edit"
              @click="$refs.OperaDetailsWindow.open('公务车申请详情', row)">查看详情</el-button>
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/MeetingCloudController.java
@@ -139,6 +139,7 @@
    public ApiResponse reservationCancel(@RequestBody BusinessOverDTO businessOverDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        businessOverDTO.setUserId(user.getId());
        businessOverDTO.setLoginUser(user);
        bookingsService.reservationCancel(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
server/meeting/meeting_service/src/main/java/com/doumee/dao/admin/request/BusinessOverDTO.java
@@ -4,6 +4,7 @@
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.DESUtil;
import com.doumee.dao.admin.response.DevWgResponseParam;
import com.doumee.service.business.third.model.LoginUserInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -21,4 +22,6 @@
    @ApiModelProperty(value = "开始类型 0 提前开始 1 正常开始",required = true)
    private  Integer startType  ;
    private LoginUserInfo loginUser ;
}
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -644,11 +644,11 @@
            s.setSysList(userrelList);
            //会议室管理员
            MPJLambdaWrapper<UserRel> param = new MPJLambdaWrapper<>();
            urquery.selectAll(UserRel.class);
            urquery.eq(UserRel::getObjType, MeetConstants.ZERO);
            urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
            urquery.eq(UserRel::getObjId, s.getRoomId());
            List<UserRel> adminList = userRelJoinMapper.selectJoinList(UserRel.class, urquery);
            param.selectAll(UserRel.class);
            param.eq(UserRel::getObjType, MeetConstants.ZERO);
            param.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
            param.eq(UserRel::getObjId, s.getRoomId());
            List<UserRel> adminList = userRelJoinMapper.selectJoinList(UserRel.class, param);
            s.setAdminList(adminList);
            //查询是否有权限
@@ -674,7 +674,7 @@
        if(Constants.equalsInteger(userInfo.getId(),s.getCreator())  ){
              return 1;
        }
        if(adminList!=null){
        if(adminList!=null && userInfo!=null){
            for(UserRel u : adminList){
                if(Constants.equalsInteger(userInfo.getId(),u.getUserId())  ){
                    return 1;
@@ -1210,8 +1210,20 @@
        if (Objects.isNull(bookings)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "未查询到预约记录");
        }
        if (!bookings.getCreator().equals(businessOverDTO.getUserId())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非你的预约记录,无法进行取消");
//        LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        //会议室管理员
        MPJLambdaWrapper<UserRel> param = new MPJLambdaWrapper<>();
        param.selectAll(UserRel.class);
        param.eq(UserRel::getObjType, MeetConstants.ZERO);
        param.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
        param.eq(UserRel::getObjId, bookings.getRoomId());
        List<UserRel> adminList = userRelJoinMapper.selectJoinList(UserRel.class, param);
        Integer hasRole =getHasRoleByParam(bookings,businessOverDTO.getLoginUser(),adminList);
//        if (!bookings.getCreator().equals(businessOverDTO.getUserId())) {
        if (!Constants.equalsInteger(hasRole,Constants.ONE)) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,只有会议室管理员和申请人才能进行该操作哦!");
        }
        if (Objects.nonNull(bookings.getStartTimeReal()) && System.currentTimeMillis() > bookings.getStartTimeReal().getTime()) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议已开始,无法进行取消");
server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -447,16 +447,19 @@
                List<String> rowList = dataList.get(i);
                for (int j = 0; j < rowList.size(); j++) {
                    Cell cell = row.createCell(j);
                    if(i==0&&j==0){
                        cell.setCellValue("数据日期");
                    }else{
                        cell.setCellValue(rowList.get(j));
                    }
                    cell.setCellValue(rowList.get(j));
//                    if(i==0&&j==0){
//                        cell.setCellValue("数据日期");
//                    }else{
//                        cell.setCellValue(rowList.get(j));
//                    }
                    if(i==0){
                        sheet.setColumnWidth(i, rowList.get(i).length() * 2 * 256);
                        sheet.setColumnWidth(i, (rowList.get(j).length() + 2 )  * 2 * 256);
//                        cell.setCellStyle(hstyle);
                    }
                    if(i==0 || j==0){
                        cell.setCellStyle(hstyle);
                    }else if(j==0){
                    }else{
                        cell.setCellStyle(rowStyle);
                    }
                }
@@ -502,8 +505,8 @@
        configDataCellStyle.setAlignment(HorizontalAlignment.CENTER);
        configDataCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        // 设置背景
        configDataCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        configDataCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
//        configDataCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//        configDataCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        // 字体
        Font font = workbook.createFont();
        font.setFontHeightInPoints((short) 10);
@@ -512,7 +515,6 @@
        // 边框
        configCellBorder(configDataCellStyle);
        configDataCellStyle.setWrapText(true);
        return configDataCellStyle;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java
@@ -144,4 +144,9 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    @TableField(exist = false)
    private String createDateStr;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -1206,8 +1206,10 @@
                || Objects.isNull(approveDTO.getLoginUserInfo())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(approveDTO.getStatus().equals(Constants.THREE)&&StringUtils.isBlank(approveDTO.getCheckInfo())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请输入拒绝说明");
        if(!(Constants.equalsInteger(approveDTO.getObjType(),Constants.THREE)||Constants.equalsInteger(approveDTO.getObjType(),Constants.FOUR))){
            if(approveDTO.getStatus().equals(Constants.THREE)&&StringUtils.isBlank(approveDTO.getCheckInfo())){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请输入拒绝说明");
            }
        }
        Approve approve = approveMapper.selectOne(new QueryWrapper<Approve>()
                .lambda()
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -569,7 +569,7 @@
                .set(Approve::getStatus,Constants.FOUR)
                .set(Approve::getCheckInfo,"用车申请取消")
                .in(Approve::getStatus,Constants.ZERO,Constants.ONE)
               .in(Approve::getObjType,Constants.approveObjectType.cityUseCar,Constants.approveObjectType.unCityUseCar)
                .in(Approve::getObjType,Constants.approveObjectType.cityUseCar,Constants.approveObjectType.unCityUseCar)
                .eq(Approve::getObjId,id)
        );
@@ -617,19 +617,20 @@
            //申请人可以撤销自己申请中的申请记录
            return  Constants.ONE;
        }
        if(Constants.equalsInteger(carUseBook.getStatus(),Constants.TWO) && carUseBook.getStartTime()!=null
        if(Constants.equalsInteger(carUseBook.getStatus(),Constants.TWO)
                 && carUseBook.getStartTime()!=null
                 && System.currentTimeMillis() >= carUseBook.getStartTime().getTime()){
            //审批通过,但是 已到发车时间,不可以撤销
            return Constants.ZERO;
        }
        if(!(Constants.equalsInteger(carUseBook.getStatus(),Constants.ZERO))
        if((Constants.equalsInteger(carUseBook.getStatus(),Constants.ZERO))
                ||Constants.equalsInteger(carUseBook.getStatus(),Constants.ONE)
                ||Constants.equalsInteger(carUseBook.getStatus(),Constants.TWO)){
            //审批人可以撤销 自己审批的申请记录
            Approve approve = approveJoinMapper.selectOne(new QueryWrapper<Approve>().lambda()
                    .eq(Approve::getIsdeleted,Constants.ZERO)
                    .ge(Approve::getLevel,Constants.ZERO)
                    .eq(Approve::getChekorId,loginUserInfo.getId())
                    .eq(Approve::getChekorId,loginUserInfo.getMemberId())
                    .eq(Approve::getObjId,carUseBook.getId())
                    .eq(Approve::getObjType,carUseBook.getType()==0?3:4)
                    .last("limit 1"));
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java
@@ -331,21 +331,60 @@
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<InoutRecord> allList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>()
                .selectAll(InoutRecord.class)
                .eq(InoutRecord::getIsdeleted,Constants.ZERO)
        List<InoutRecord> allList = new ArrayList<>();
        MPJLambdaWrapper mpjLambdaWrapper = new MPJLambdaWrapper<InoutRecord>().eq(InoutRecord::getIsdeleted,Constants.ZERO)
                .eq(InoutRecord::getInOrOut,Constants.ZERO)
                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode)
                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone)
                .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') =  '"+inParkDataDTO.getDateStr()+"' ) ")
                .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') =  '"+inParkDataDTO.getDateStr()+"' ) ")
        );
                .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') =  '"+inParkDataDTO.getDateStr()+"' ) ");
        if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){
             mpjLambdaWrapper.groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),
                            "car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m')")
                    .groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),
                            "car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d')")
                    .groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),
                            "member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m')")
                    .groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),
                            "member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d')");
            if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){
                mpjLambdaWrapper.select("car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr ");
            }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){
                mpjLambdaWrapper.select("car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr ");
            }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){
                mpjLambdaWrapper.select("member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr");
            }else{
                mpjLambdaWrapper.select("member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr ");
            }
        }else{
            mpjLambdaWrapper.selectAll(InoutRecord.class);
            if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){
                mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr ");
            }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){
                mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr ");
            }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){
                mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr");
            }else{
                mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr ");
            }
//           allList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>()
//                    .selectAll(InoutRecord.class)
//                    .eq(InoutRecord::getIsdeleted,Constants.ZERO)
//                    .eq(InoutRecord::getInOrOut,Constants.ZERO)
//                    .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode)
//                    .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone)
//                    .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') =  '"+inParkDataDTO.getDateStr()+"' ) ")
//                    .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') =  '"+inParkDataDTO.getDateStr()+"' ) ")
//            );
        }
        allList = inoutRecordMapper.selectJoinList(InoutRecord.class,mpjLambdaWrapper);
        List<List<String>>  resultList = new ArrayList<>();
        if(CollectionUtils.isEmpty(allList)){
            return resultList;
        }
        if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){
            allList = this.getListByType(allList,inParkDataDTO.getType());
        }
        List<String> dateList = new ArrayList<>();
@@ -384,7 +423,7 @@
    public List<List<String>> dealResultData(List<InoutRecord> allList,List<String> dataList ,Integer type,String dateStr){
        List<List<String>>  resultList = new ArrayList<>();
        List<String> totalString = new ArrayList<>();
        totalString.add("日期");
        totalString.add("数据日期");
        if(Constants.equalsInteger(type,Constants.ZERO)){
            List<String> categoryNameList = allList.stream().filter(j-> StringUtils.isNotBlank(j.getCategoryName())).map(j->j.getCategoryName()).collect(Collectors.toList());
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(categoryNameList)){
@@ -403,14 +442,14 @@
                for (String categoryName:setList) {
                    if(Constants.equalsInteger(dateStr.length(),4)){
                        Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName())
                                && DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(str)).collect(Collectors.toList()).size();
                                && i.getCreateDateStr().equals(str)).collect(Collectors.toList()).size();
                        dataChildList.add(
                                Integer.toString(childNum)
                        );
                        total = total + childNum;
                    }else if(Constants.equalsInteger(dateStr.length(),7)){
                        Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName())
                                &&DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(str)).collect(Collectors.toList()).size();
                                &&i.getCreateDateStr().equals(str)).collect(Collectors.toList()).size();
                        dataChildList.add(
                                Integer.toString(childNum)
                        );
@@ -441,14 +480,14 @@
                    int finalI = i;
                    if(Constants.equalsInteger(dateStr.length(),4)){
                        Integer childNum = allList.stream().filter(j->Constants.equalsInteger(j.getMemberType(), finalI)
                                && DateUtil.formatDate(j.getCreateDate(),"yyyy-MM").equals(str)).collect(Collectors.toList()).size();
                                && j.getCreateDateStr().equals(str)).collect(Collectors.toList()).size();
                        dataChildList.add(
                                Integer.toString(childNum)
                        );
                        total = total + childNum;
                    }else if(Constants.equalsInteger(dateStr.length(),7)){
                        Integer childNum = allList.stream().filter(j->Constants.equalsInteger(j.getMemberType(), finalI)
                                &&DateUtil.formatDate(j.getCreateDate(),"yyyy-MM-dd").equals(str)).collect(Collectors.toList()).size();
                                &&j.getCreateDateStr().equals(str)).collect(Collectors.toList()).size();
                        dataChildList.add(
                                Integer.toString(childNum)
                        );
@@ -461,10 +500,6 @@
        }
        return resultList;
    }
    public List<InoutRecord> getListByType(List<InoutRecord> list,Integer type){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1491,6 +1491,9 @@
                        .like(Member::getPhone,pageWrap.getModel().getKeyword())
                        .or().like(Member::getName,pageWrap.getModel().getKeyword())
                        .or().like(Member::getCode,pageWrap.getModel().getKeyword()))
                .eq(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,
                        DESUtil.encrypt(Constants.EDS_PWD, pageWrap.getModel().getIdcardNo())
                )
                .isNull(pageWrap.getModel().getHasFace()!=null&& Constants.equalsInteger(pageWrap.getModel().getHasFace(),Constants.ZERO),Member::getFaceId)
                .isNotNull(pageWrap.getModel().getHasFace()!=null&& Constants.equalsInteger(pageWrap.getModel().getHasFace(),Constants.ONE),Member::getFaceId)
                .eq(Objects.nonNull(pageWrap.getModel().getCanVisit()),Member::getCanVisit,pageWrap.getModel().getCanVisit())
@@ -2194,7 +2197,7 @@
        String candNo = DESUtil.encrypt(Constants.EDS_PWD, model.getIdcardNo());
        if(StringUtils.isNotBlank(model.getIdcardNo())){
            if(findMemberFromListByIdcard(candNo,memberList ) !=null){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行身份证号【"+model.getIdcardNo()+"】已存在,请检查表格内容!");
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行身份证号【"+model.getIdcardNo()+"】已存在,请确认【访客管理】【内部人员】以及【相关方人员】中无该身份证存在,请检查表格内容!");
            }
        }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -1154,14 +1154,12 @@
        }
    }
    @Override
    public void cancelInPark(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
                || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
                || StringUtils.isBlank(platformJob.getCarCodeFront())
                || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            List<VisitPark> visitParkList = visitParkMapper.selectList(new QueryWrapper<VisitPark>().lambda()
                    .eq(VisitPark::getCarCode,platformJob.getCarCodeFront())
                    .eq(VisitPark::getObjType,Constants.ONE)
@@ -1186,7 +1184,6 @@
            }
        }
    }
    /**
     * 月台叫号
     */
@@ -2457,7 +2454,7 @@
                platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                        .set(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())
                        .set(PlatformJob::getDoneDate,new Date())
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getId,platformJobList.stream().map(i->i.getId()).collect(Collectors.toList())));
            }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
@@ -30,10 +30,8 @@
 */
@Service
public class HkSyncDeviceServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private DeviceMapper deviceMapper;
    /**
     * 同步海康门禁设备数据
     * @param param
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -146,7 +146,7 @@
            if(delRetentionLis.size()>0){
                //先删除原有的在场人员(内部人员)
                retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                        .eq(Retention::getType,Constants.memberType.internal)
//                        .eq(Retention::getType,Constants.memberType.internal)
                        .in(Retention::getMemberId,delRetentionLis));
            }
            if(retentionList.size()>0){
@@ -263,7 +263,6 @@
                    delRetentionLis.add(member.getId());
                    if( Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){
                        //如果是进门,录入人员的在场数据记录
                        retentionList.add(getRetentionModelByRequest(member,request));
                        if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                            record.setMemberType(Constants.RetentionMemberType.internalMember);
                            inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1);//内部人员入场人次
@@ -271,6 +270,7 @@
                            record.setMemberType(Constants.RetentionMemberType.relMember);
                            inoutDayCount.setInOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getInOtherMemberNum())+1);//相关方入场人次
                        }
                        retentionList.add(getRetentionModelByRequest(member,request,record.getMemberType()));
                    }else{
                        if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                            record.setMemberType(Constants.RetentionMemberType.internalMember);
@@ -372,7 +372,7 @@
     * @param request
     * @return
     */
    private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) {
    private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request,int memberType) {
        Retention retention = new Retention();
        retention.setIsdeleted(Constants.ZERO);
        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
@@ -382,7 +382,7 @@
        retention.setIdcardDecode(member.getIdcardDecode());
        retention.setName(member.getName());
        retention.setBirthday(member.getBirthday());
        retention.setType(member.getType());
        retention.setType(memberType);
        retention.setCompanyId(member.getCompanyId());
        retention.setCompanyName(member.getCompanyName());
        retention.setEventCode(request.getData().getExtEventCode()+"");
@@ -871,7 +871,7 @@
            List<CarEvent> list = new ArrayList<>();
            List<Retention> retentionList = new ArrayList<>();
            List<String> delRetentionList = new ArrayList<>();
            List<Integer> delMemberRetentionList = new ArrayList<>();
            List<Retention> delMemberRetentionList = new ArrayList<>();
            InoutDayCount inoutDayCount = new InoutDayCount();
            List<InoutRecord> inoutRecordList = new ArrayList<>();
            for(EventParkInfoRequest request : events){
@@ -886,18 +886,34 @@
                carEventMapper.insert(list);
            }
            if(delRetentionList.size()>0){
                //先删除原有的在场人员(内部人员)
                //先删除原有的在场车辆人员(内部人员)
                retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                        .eq(Retention::getType,Constants.THREE)
                        .in(Retention::getCarNo,delRetentionList));
            }
            if(delMemberRetentionList.size()>0){
                //先删除原有的在场人员(内部人员、相关方和访客)
                retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                        .in(Retention::getType,Constants.RetentionMemberType.internalMember
                                ,Constants.RetentionMemberType.relMember
                                ,Constants.RetentionMemberType.fk)
                        .in(Retention::getMemberId,delMemberRetentionList));
                List<Integer> memberList = new ArrayList<>();
                for(Retention m :delMemberRetentionList){
                    if(m.getMemberId()!=null){
                        //跟随车辆入场的member存在的数据立场
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .in(Retention::getType,Constants.RetentionMemberType.internalMember
                                        ,Constants.RetentionMemberType.relMember
                                        ,Constants.RetentionMemberType.fk
                                        ,Constants.RetentionMemberType.driver)
                                .eq(Retention::getMemberId,m.getMemberId()));
                    }else  if(m.getCarNo()!=null){
                        //跟随车辆入场的用户信息
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .in(Retention::getType,Constants.RetentionMemberType.internalMember
                                        ,Constants.RetentionMemberType.relMember
                                        ,Constants.RetentionMemberType.fk
                                        ,Constants.RetentionMemberType.driver)
                                .eq(Retention::getCarNo,m.getCarNo()));
                    }
                }
            }
            if(retentionList.size()>0){
                //再插入最新的在厂人员
@@ -925,7 +941,7 @@
    private CarEvent getParkEventModelByRequest(EventParkInfoRequest request
            , List<String> delRetentionList
            , List<Retention> retentionList
            , List<Integer> delMemberRetentionList
            , List<Retention> delMemberRetentionList
            , InoutDayCount inoutDayCount
            , List<InoutRecord> inoutRecordList) {
        CarEvent event =initCarEventModelByRequest(request);
@@ -1068,14 +1084,22 @@
            if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){
                //如果是入厂放行
                delRetentionList.add(event.getPlateNos());
                delMemberRetentionList.add(event.getMemberId());
                Retention dm = new Retention();
                dm.setMemberId(event.getMemberId());
                dm.setPhone(carrecord.getMemberPhone());
                dm.setCarNo(event.getPlateNos());
                delMemberRetentionList.add(dm);
                retentionList.add(getRetentionModelByParkRequest(request,event,carrecord));//在厂车辆信息
                inoutDayCount.setInCarNum(Constants.formatIntegerNum(inoutDayCount.getInCarNum())+1);
                carrecord.setInOrOut(Constants.ZERO);
            }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){
                //如果是出场放行
                delRetentionList.add(event.getPlateNos());
                delMemberRetentionList.add(event.getMemberId());
                Retention dm = new Retention();
                dm.setMemberId(event.getMemberId());
                dm.setPhone(carrecord.getMemberPhone());
                dm.setCarNo(event.getPlateNos());
                delMemberRetentionList.add(dm);
                inoutDayCount.setOutCarNum(Constants.formatIntegerNum(inoutDayCount.getOutCarNum())+1);
                carrecord.setInOrOut(Constants.ONE);
            }
@@ -1096,14 +1120,19 @@
                    event.setCarType(Constants.RetentionCarType.fkCar);
                    int index =0;
                    carrecord.setCarBizType(Constants.RetentionCarType.fkCar);
                    if(1==2){
                        Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList);
                        carrecord.setCategoryId(category.getId());
                        carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆"));
                        carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆"));
                        carrecord.setCategoryParentId(category.getParentId());
                        for(Visits v :visitsList){
                            delMemberRetentionList.add(event.getMemberId());
                    Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList);
                    carrecord.setCategoryId(category.getId());
                    carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆"));
                    carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆"));
                    carrecord.setCategoryParentId(category.getParentId());
                    for(Visits v :visitsList){
                        if(v.getEndtime()!=null && v.getEndtime().getTime() < System.currentTimeMillis()){
                            Retention dm = new Retention();
                            dm.setMemberId(event.getMemberId());
                            dm.setPhone(carrecord.getMemberPhone());
                            dm.setCarNo(event.getPlateNos());
                            delMemberRetentionList.add(dm);
//                            delMemberRetentionList.add(event.getMemberId());
                            InoutRecord copyObj = new InoutRecord();
                            BeanUtils.copyProperties(carrecord,copyObj);
                            copyObj.setMemberId(v.getMemberId());
@@ -1373,7 +1402,9 @@
        retention.setMemberId(inoutRecord.getMemberId());
        retention.setDeviceName(request.getSrcName());
        retention.setDeviceIndex(request.getSrcIndex());
        retention.setRemark("跟随车辆入园区");
        retention.setCarNo(inoutRecord.getCarCode());
        retention.setDeviceName(request.getData().getGateName()+request.getData().getRoadwayName());
        retention.setRemark("跟随车辆【"+inoutRecord.getCarCode()+"】入园区");
        return retention;
    }
    private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event ,InoutRecord carrecord ) {
@@ -1389,6 +1420,7 @@
        retention.setCategoryName(carrecord.getCategoryName());
        retention.setCategoryParentId(carrecord.getCategoryParentId());
        retention.setCategoryParentName(carrecord.getCategoryParentName());
        retention.setDeviceName(request.getData().getGateName()+request.getData().getRoadwayName());
//        retention.setDeviceName(request.getSrcName());
//        retention.setDeviceIndex(request.getSrcIndex());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -119,7 +119,7 @@
                        //先删除原有的在场人员(普通访客)
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .eq(Retention::getType,Constants.memberType.visitor)
                                .eq(Retention::getType,Constants.RetentionMemberType.fk)
                                .eq(Retention::getMemberId,c.getMemberId()));
                    }
                }
@@ -137,7 +137,7 @@
                        visitsMapper.updateById(update);
                        //先删除原有的在场人员(普通访客)
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .eq(Retention::getType,Constants.memberType.visitor)
                                .eq(Retention::getType,Constants.RetentionMemberType.fk)
                                .eq(Retention::getMemberId,c.getMemberId()));
                        //再插入最新的在厂人员
                        retentionMapper.insert(getRetentionModelByVisitRequest(c,update.getInDate()));
@@ -206,7 +206,7 @@
                        //先删除原有的在场人员(普通访客)
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .eq(Retention::getType,Constants.memberType.visitor)
                                .eq(Retention::getType,Constants.RetentionMemberType.fk)
                                .eq(Retention::getMemberId,c.getMemberId()));
                    }
                }
@@ -224,7 +224,7 @@
                        visitsMapper.updateById(update);
                        //先删除原有的在场人员(普通访客)
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .eq(Retention::getType,Constants.memberType.visitor)
                                .eq(Retention::getType,Constants.RetentionMemberType.fk)
                                .eq(Retention::getMemberId,c.getMemberId()));
                        //再插入最新的在厂人员
                        retentionMapper.insert(getRetentionModelByVisitRequest(c,update.getInDate()));
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -1032,7 +1032,7 @@
                            .select(PlatformJob::getStatus,PlatformJob::getStatus)
                            .select(PlatformJob::getType,PlatformJob::getType)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
//                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),
                                Constants.PlatformJobStatus.LEAVED.getKey(),
                                Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
@@ -1077,7 +1077,7 @@
        data.setMonthLastOutTotal(getSumTotalByList(monthLastNum,null,null) );//上月出库量
        data.setYearOutTotal(getSumTotalByList(yearNum,null,null)  );//本年出库量
        data.setYearLastOutTotal(getSumTotalByList(yearLastNum,null,null) );//去年出库量
        data.setMonthOutTimes(monthNum!=null?monthNum.size():0);
        data.setMonthOutTimes(monthNum!=null?monthNum.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)||Constants.equalsInteger(i.getType(),Constants.THREE)).collect(Collectors.toList()).size():0);
        data.setYearOutTimes(yearNum!=null?yearNum.size():0);
        //==========今天之前未完成出入库任务
@@ -1130,7 +1130,7 @@
        data.setTodayOutRate(getDayTotalRata(data.getCurrentOutDoneNum(),DateUtil.getToday()));//当日出库效率
        data.setTodayInRate(getDayTotalRata(data.getCurrentInDoneNum(),DateUtil.getToday()));//当日入库效率
        data.setMonthOutRate(getMonthRata(monthNum,Constants.ZERO));//本月出库效率
        data.setMonthInRate(getMonthRata(monthNum,Constants.ONE));//本月出库效率
        data.setMonthInRate(getMonthRata(monthNum,Constants.ONE));//本月入库效率
        //------------今日出入库效率---------------- 
//        BigDecimal outHours = getTotalDoneTimes(currentDoneNum,0);//
//        BigDecimal inHours = getTotalDoneTimes(currentDoneNum,1);//