jiangping
2024-10-12 9aa75d91eb3f854c9d2001b3e3ae1743a51dd476
Merge remote-tracking branch 'origin/master'
已添加5个文件
已删除2个文件
已修改15个文件
863 ■■■■ 文件已修改
admin/src/api/workbench/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/components/PlatformSign.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/queueUp.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/driverDetail.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/visSubDetail.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/config.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/core/wx/WxMiniConfig.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/core/wx/WxPayProperties.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutDayCountController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutDayCountMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutDayCount.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutDayCountService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutDayCountServiceImpl.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/workbench/index.js
@@ -23,4 +23,10 @@
// ä»»åŠ¡ä¸­å¿ƒå¤´éƒ¨
export function getWorkbenchTaskHead (data) {
  return request.post('/visitsAdmin/cloudService/business/staging/taskCenterHeadPC', data)
}
// pc工作台
export function getWorkbenchData (data) {
  return request.get('/visitsAdmin/cloudService/business/staging/pCWorkPlatformData', {
    params: {...data  }
  })
}
admin/src/views/index.vue
@@ -226,8 +226,7 @@
import * as echarts from 'echarts'
import { weeks } from '@/utils/config'
import {
  getWorkbenchBody,
  getWorkbenchHead,
  getWorkbenchData,
  getAppHeaderNav
} from '@/api'
const colors = ['#52a4f7', '#7678f7', '#5fc6d5']
@@ -283,10 +282,10 @@
      this.initEchart4()
    },
    getWorkBody() {
      getWorkbenchBody()
      getWorkbenchData({queryType: 2})
    },
    getWorkHead() {
      getWorkbenchHead()
      getWorkbenchData({queryType: 1})
    },
    initEchart1() {
      const myChart = echarts.init(document.getElementById('echart1'))
@@ -458,9 +457,9 @@
            symbol: 'circle',
            symbolSize: 10,
            itemStyle: {
              normal: {
                color: '#207FF7' // æŠ˜çº¿ç‚¹çš„颜色
              }
              borderWidth: 1,
              borderColor: '#fff',
              color: '#207FF7'
            },
            smooth: false
          }
@@ -557,9 +556,9 @@
            symbol: 'circle',
            symbolSize: 10,
            itemStyle: {
              normal: {
                color: '#42D49D' // æŠ˜çº¿ç‚¹çš„颜色
              }
              borderWidth: 1,
              borderColor: '#fff',
              color: '#42D49D' // æŠ˜çº¿ç‚¹çš„颜色
            },
            smooth: false
          }
admin/src/views/platform/components/PlatformSign.vue
@@ -45,8 +45,8 @@
            </div>
          </div>
          <div class="footer df_sb">
            <div @click="handleDetail(item)" v-if="item.type != 4" class="detail">运单详情</div>
            <div v-else></div>
            <div @click="handleDetail(item)" v-if="item.billCode" class="detail">运单详情</div>
            <div @click="subDetail(item)" v-else class="detail">预约详情</div>
            <el-button type="primary" @click="handleCall(item)">签到</el-button>
          </div>
        </div>
@@ -55,6 +55,7 @@
      </pagination>
    </div>
    <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
  </GlobalWindow>
</template>
@@ -62,6 +63,7 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import Pagination from '@/components/common/Pagination'
import WaybillDetailRef from "./WaybillDetail.vue"
import DriverDetail from "@/views/task/driverDetail.vue"
import { platformJobPage, platformJobSign } from '@/api'
import { statusMap } from '../config'
import { Message } from 'element-ui'
@@ -69,13 +71,15 @@
  components: {
    GlobalWindow,
    Pagination,
    WaybillDetailRef
    WaybillDetailRef,
    DriverDetail
  },
  data() {
    return {
      statusMap,
      isShowModal: false,
      isShowDetail: false,
      isShowDriver: false,
      subLoading: false,
      pagination: {
        total: 0,
@@ -108,6 +112,15 @@
        this.pagination.total = res.total
      })
    },
    subDetail(row) {
      this.isShowDriver = true
      this.$nextTick(() => {
        this.$refs.DriverDetailRef.id = row.bookId
        this.$refs.DriverDetailRef.type = row.objType
        this.$refs.DriverDetailRef.getDetail()
        this.$refs.DriverDetailRef.isShowModal = true
      })
    },
    handleDetail(row) {
      this.isShowDetail = true
      this.$nextTick(() => {
admin/src/views/platform/queueUp.vue
@@ -44,7 +44,9 @@
      <el-table-column prop="signDate" label="签到时间" min-width="150" />
      <el-table-column label="操作" align="center" width="100" fixed="right">
        <template slot-scope="{ row }">
          <el-button v-if="activeGroup.type == 2" type="text" @click="subDetail(row)">预约详情</el-button>
          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)"
            v-permissions="['business:company:update']">运单详情</el-button>
          <el-button v-else type="text" @click="subDetail(row)">预约详情</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -71,8 +73,9 @@
      <el-table-column prop="signDate" label="签到时间" min-width="150" />
      <el-table-column label="操作" align="center" width="100" fixed="right">
        <template slot-scope="{ row }">
          <el-button type="text" @click="handleDetail(row)"
          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)"
            v-permissions="['business:company:update']">运单详情</el-button>
          <el-button v-else type="text" @click="subDetail(row)">预约详情</el-button>
        </template>
      </el-table-column>
    </el-table>
admin/src/views/task/driverDetail.vue
@@ -69,7 +69,7 @@
            <div class="content">
              <div class="head">
                <div class="event">{{ item.title }}</div>
                <div class="time">{{ item.createDate }}</div>
                <div class="time">{{ item.checkDate }}</div>
              </div>
              <div class="name_wrap">
                <span>{{ item.memberName }}<span v-if="item.statusInfo" class="status">({{ item.statusInfo
@@ -134,7 +134,7 @@
      id: '',
      type: '',
      title: '访客预约详情',
      title: '物流车预约详情',
      isShowModal: false,
      info: {},
      isShowAppr: false,
admin/src/views/task/visSubDetail.vue
@@ -115,7 +115,7 @@
                  <div class="company">
                    {{ item.memberName }}
                    <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
                      ï¼ˆ<span class="status" :class="{ padding: item.statusInfo == '处理中' || item.status == '1' }">{{
                      ï¼ˆ<span :class="{ padding: item.statusInfo == '处理中' || item.status == '1' }">{{
                        item.statusInfo || ""
                        }}</span>)
                    </div>
@@ -130,7 +130,7 @@
            " class="remark">
              {{ item.checkInfo || "" }}
            </div>
            <div v-if="item.approveType == 1 || item.approveType == 0" class="childList">
            <div v-if="item.approveType == 1" class="childList">
              <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
                <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" />
                <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
h5/utils/config.js
@@ -1,5 +1,7 @@
export const baseUrl = 'admin_interface/'
// export const baseUrl = 'admin_interface/'
export const baseUrl = 'http://192.168.0.173/gateway_interface/'
export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`
server/meeting/meeting_service/src/main/java/com/doumee/core/wx/WxMiniConfig.java
ÎļþÒÑɾ³ý
server/meeting/meeting_service/src/main/java/com/doumee/core/wx/WxPayProperties.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutDayCountController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.doumee.api.business;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.InoutDayCount;
import com.doumee.service.business.InoutDayCountService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/12 16:19
 */
@Api(tags = "出入场人次车次每日统计表")
@RestController
@RequestMapping("/business/inoutDayCount")
public class InoutDayCountController extends BaseController {
    @Autowired
    private InoutDayCountService inoutDayCountService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:inoutdaycount:create")
    public ApiResponse create(@RequestBody InoutDayCount inoutDayCount) {
        return ApiResponse.success(inoutDayCountService.create(inoutDayCount));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:inoutdaycount:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        inoutDayCountService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:inoutdaycount:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        inoutDayCountService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:inoutdaycount:update")
    public ApiResponse updateById(@RequestBody InoutDayCount inoutDayCount) {
        inoutDayCountService.updateById(inoutDayCount);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:inoutdaycount:query")
    public ApiResponse<PageData<InoutDayCount>> findPage (@RequestBody PageWrap<InoutDayCount> pageWrap) {
        return ApiResponse.success(inoutDayCountService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:inoutdaycount:exportExcel")
    public void exportExcel (@RequestBody PageWrap<InoutDayCount> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(InoutDayCount.class).export(inoutDayCountService.findPage(pageWrap).getRecords(), "出入场人次车次每日统计表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:inoutdaycount:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(inoutDayCountService.findById(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
@@ -8,6 +8,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
import com.doumee.dao.admin.response.StagingDataVO;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.system.dto.NoticesDTO;
@@ -100,6 +101,7 @@
        return ApiResponse.success("查询成功",approveService.getHomeDataPC(noticesDTO));
    }
    @ApiOperation("任务中心分页")
    @PostMapping("/taskPage")
    public ApiResponse<PageData<Notices>> taskPage (@RequestBody PageWrap<NoticesDTO> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
@@ -107,6 +109,8 @@
        pageWrap.getModel().setMemberId(loginUserInfo.getMemberId());
        return ApiResponse.success(noticesService.taskCanterPage(pageWrap));
    }
    @ApiOperation("标记已读")
    @GetMapping("/signRead")
@@ -123,4 +127,15 @@
        }
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("PC工作台")
    @GetMapping("/pCWorkPlatformData")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "queryType", value = "查询类型:1=在园人数;2=报表数据;3=待办事项;4=超时预警", required = true),
    })
    public ApiResponse<PCWorkPlatformDataVO> pCWorkPlatformData (@RequestParam Integer queryType, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        PCWorkPlatformDataVO pcWorkPlatformDataVO = visitsService.getPcWorkPlatformData(queryType,getLoginUser(token));
        return ApiResponse.success("查询成功",pcWorkPlatformDataVO);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java
@@ -17,10 +17,10 @@
@ApiModel("工作台相关方数据")
public class InterestedListVO {
    @ApiModelProperty(value = "人数")
    private Long userNum;
    @ApiModelProperty(value = "数量")
    private Long num;
    @ApiModelProperty(value = "名称")
    private String interestedName;
    private String name;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java
@@ -1,5 +1,7 @@
package com.doumee.dao.admin.response;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.system.model.Notices;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -20,12 +22,11 @@
    @ApiModelProperty(value = "今日在园人数")
    private Long todayInParkUserNum;
    @ApiModelProperty(value = "今日入园人数")
    @ApiModelProperty(value = "今日入园人次")
    private Long todayInUserNum;
    @ApiModelProperty(value = "今日离园人数")
    @ApiModelProperty(value = "今日离园人次")
    private Long todayOutUserNum;
    @ApiModelProperty(value = "在园访客人数")
    private Long inParkVisitUserNum;
@@ -36,16 +37,14 @@
    @ApiModelProperty(value = "签离人次")
    private Long signLevelNum;
    @ApiModelProperty(value = "在园长期相关方人数")
    private Long inParkLwUserNum;
    @ApiModelProperty(value = "入园人次")
    @ApiModelProperty(value = "相关方入园人次")
    private Long lwUserInNum;
    @ApiModelProperty(value = "出园人次")
    @ApiModelProperty(value = "相关方出园人次")
    private Long lwUserOutNum;
    @ApiModelProperty(value = "今日在园车辆")
    private Long todayInParkCarNum;
@@ -56,33 +55,25 @@
    @ApiModelProperty(value = "出园车次")
    private Long todayOutCarNum;
    @ApiModelProperty(value = "相关方数据")
    private List<InterestedListVO> interestedListVOList;
    @ApiModelProperty(value = "长期相关方相关方分布 top 5")
    private List<InterestedListVO> lwList;
    @ApiModelProperty(value = "近七日访客统计")
    private List<InterestedListVO> weekVisitList;
    @ApiModelProperty(value = "近七日车辆统计")
    private List<InterestedListVO> weekCarList;
    @ApiModelProperty(value = "访客人员")
    private Long visitorCount;
    @ApiModelProperty(value = "待办事项数量")
    private Integer noticesNum;
    @ApiModelProperty(value = "劳务人员")
    private Long lwCount;
    @ApiModelProperty(value = "待办事项")
    private List<Notices> noticesList;
    @ApiModelProperty(value = "在场车辆")
    private Long presenceCarCount;
    @ApiModelProperty(value = "超时预警数量")
    private Integer timeOutVisitNum;
    @ApiModelProperty(value = "预约车辆")
    private Long visitorCarCount;
    @ApiModelProperty(value = "长期车辆")
    private Long longCarCount;
    @ApiModelProperty(value = "供应商数量")
    private Long supplierCount;
    @ApiModelProperty(value = "劳务公司人员数")
    private List<Map<String,Object>> companyUsers;
    @ApiModelProperty(value = "滞留人员数据")
    private List<Map<String,Object>> retentionUsers;
    @ApiModelProperty(value = "访客超时数据")
    private List<Visits> timeOutVisitList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutDayCountMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.InoutDayCount;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/12 16:19
 */
public interface InoutDayCountMapper extends BaseMapper<InoutDayCount> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Retention;
import com.github.yulichang.base.MPJBaseMapper;
import java.util.List;
@@ -9,5 +10,5 @@
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
public interface RetentionMapper extends BaseMapper<Retention> {
public interface RetentionMapper extends MPJBaseMapper<Retention> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutDayCount.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * å‡ºå…¥åœºäººæ¬¡è½¦æ¬¡æ¯æ—¥ç»Ÿè®¡è¡¨
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/12 16:19
 */
@Data
@ApiModel("出入场人次车次每日统计表")
@TableName("`inout_day_count`")
public class InoutDayCount {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "统计日期(2024-10-12 00:00:00)")
    @ExcelColumn(name="统计日期(2024-10-12 00:00:00)")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date timeInfo;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "入园总人次", example = "1")
    @ExcelColumn(name="入园总人次")
    private Integer inMemberNum;
    @ApiModelProperty(value = "出园总人次", example = "1")
    @ExcelColumn(name="出园总人次")
    private Integer outMemberNum;
    @ApiModelProperty(value = "访客入园人次", example = "1")
    @ExcelColumn(name="访客入园人次")
    private Integer inVisitorNum;
    @ApiModelProperty(value = "访客出园人次", example = "1")
    @ExcelColumn(name="访客出园人次")
    private Integer outVisitorNum;
    @ApiModelProperty(value = "访客登记人次", example = "1")
    @ExcelColumn(name="访客登记人次")
    private Integer singinVisitorNum;
    @ApiModelProperty(value = "访客签离人次", example = "1")
    @ExcelColumn(name="访客签离人次")
    private Integer leaveVisitorNum;
    @ApiModelProperty(value = "相关方入园人次", example = "1")
    @ExcelColumn(name="相关方入园人次")
    private Integer inOrtherMemberNum;
    @ApiModelProperty(value = "相关方出园人次", example = "1")
    @ExcelColumn(name="相关方出园人次")
    private Integer outOrtherMemberNum;
    @ApiModelProperty(value = "内部人员入园人次", example = "1")
    @ExcelColumn(name="内部人员入园人次")
    private Integer inSelfMemberNum;
    @ApiModelProperty(value = "内部人员出园人次", example = "1")
    @ExcelColumn(name="内部人员出园人次")
    private Integer outSelfMemberNum;
    @ApiModelProperty(value = "入园车次", example = "1")
    @ExcelColumn(name="入园车次")
    private Integer inCarNum;
    @ApiModelProperty(value = "出园车次", example = "1")
    @ExcelColumn(name="出园车次")
    private Integer outCarNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -137,7 +137,6 @@
    @ApiModelProperty(value = "通知入园等待时间")
    @ExcelColumn(name="通知入园等待时间")
    private Date inwaitDate;
    @ApiModelProperty(value = "通知入园等待操作人编码", example = "1")
@@ -147,8 +146,6 @@
    @ApiModelProperty(value = "叫号时间")
    @ExcelColumn(name="叫号时间")
    private Date callDate;
    @ApiModelProperty(value = "叫号人编码", example = "1")
@@ -197,7 +194,6 @@
    @ApiModelProperty(value = "车辆离厂时间")
    @ExcelColumn(name="车辆离厂时间")
    private Date outDate;
    @ApiModelProperty(value = "离厂方式 0自动离厂 1手动离场", example = "1")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
@@ -117,6 +117,10 @@
    @TableField(exist = false)
    private String keyWords;
    @ApiModelProperty(value = "类型 0劳务公司 1内部组织")
    @TableField(exist = false)
    private Integer companyType;
    @ApiModelProperty(value = "开始时间")
    @TableField(exist = false)
    private Date startTime;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutDayCountService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.InoutDayCount;
import java.util.List;
/**
 * å‡ºå…¥åœºäººæ¬¡è½¦æ¬¡æ¯æ—¥ç»Ÿè®¡è¡¨Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/12 16:19
 */
public interface InoutDayCountService {
    /**
     * åˆ›å»º
     *
     * @param inoutDayCount å®žä½“对象
     * @return Integer
     */
    Integer create(InoutDayCount inoutDayCount);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param inoutDayCount å®žä½“对象
     */
    void delete(InoutDayCount inoutDayCount);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param inoutDayCount å®žä½“对象
     */
    void updateById(InoutDayCount inoutDayCount);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param inoutDayCounts å®žä½“集
     */
    void updateByIdInBatch(List<InoutDayCount> inoutDayCounts);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return InoutDayCount
     */
    InoutDayCount findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param inoutDayCount å®žä½“对象
     * @return InoutDayCount
     */
    InoutDayCount findOne(InoutDayCount inoutDayCount);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param inoutDayCount å®žä½“对象
     * @return List<InoutDayCount>
     */
    List<InoutDayCount> findList(InoutDayCount inoutDayCount);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<InoutDayCount>
     */
    PageData<InoutDayCount> findPage(PageWrap<InoutDayCount> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param inoutDayCount å®žä½“对象
     * @return long
     */
    long count(InoutDayCount inoutDayCount);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -1,7 +1,9 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
import com.doumee.dao.business.dto.ResetPasswordDTO;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.web.reqeust.AuditApproveDTO;
@@ -143,4 +145,6 @@
    void resetPassword(ResetPasswordDTO resetPasswordDTO);
    void visitResend(Integer visitId);
    PCWorkPlatformDataVO getPcWorkPlatformData(Integer queryType ,LoginUserInfo loginUserInfo);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutDayCountServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,170 @@
package com.doumee.service.business.impl;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.InoutDayCountMapper;
import com.doumee.dao.business.model.InoutDayCount;
import com.doumee.service.business.InoutDayCountService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
 * å‡ºå…¥åœºäººæ¬¡è½¦æ¬¡æ¯æ—¥ç»Ÿè®¡è¡¨Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/12 16:19
 */
@Service
public class InoutDayCountServiceImpl implements InoutDayCountService {
    @Autowired
    private InoutDayCountMapper inoutDayCountMapper;
    @Override
    public Integer create(InoutDayCount inoutDayCount) {
        inoutDayCountMapper.insert(inoutDayCount);
        return inoutDayCount.getId();
    }
    @Override
    public void deleteById(Integer id) {
        inoutDayCountMapper.deleteById(id);
    }
    @Override
    public void delete(InoutDayCount inoutDayCount) {
        UpdateWrapper<InoutDayCount> deleteWrapper = new UpdateWrapper<>(inoutDayCount);
        inoutDayCountMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        inoutDayCountMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(InoutDayCount inoutDayCount) {
        inoutDayCountMapper.updateById(inoutDayCount);
    }
    @Override
    public void updateByIdInBatch(List<InoutDayCount> inoutDayCounts) {
        if (CollectionUtils.isEmpty(inoutDayCounts)) {
            return;
        }
        for (InoutDayCount inoutDayCount: inoutDayCounts) {
            this.updateById(inoutDayCount);
        }
    }
    @Override
    public InoutDayCount findById(Integer id) {
        return inoutDayCountMapper.selectById(id);
    }
    @Override
    public InoutDayCount findOne(InoutDayCount inoutDayCount) {
        QueryWrapper<InoutDayCount> wrapper = new QueryWrapper<>(inoutDayCount);
        return inoutDayCountMapper.selectOne(wrapper);
    }
    @Override
    public List<InoutDayCount> findList(InoutDayCount inoutDayCount) {
        QueryWrapper<InoutDayCount> wrapper = new QueryWrapper<>(inoutDayCount);
        return inoutDayCountMapper.selectList(wrapper);
    }
    @Override
    public PageData<InoutDayCount> findPage(PageWrap<InoutDayCount> pageWrap) {
        IPage<InoutDayCount> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<InoutDayCount> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(InoutDayCount::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(InoutDayCount::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(InoutDayCount::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(InoutDayCount::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getTimeInfo() != null) {
            queryWrapper.lambda().ge(InoutDayCount::getTimeInfo, Utils.Date.getStart(pageWrap.getModel().getTimeInfo()));
            queryWrapper.lambda().le(InoutDayCount::getTimeInfo, Utils.Date.getEnd(pageWrap.getModel().getTimeInfo()));
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getInMemberNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getInMemberNum, pageWrap.getModel().getInMemberNum());
        }
        if (pageWrap.getModel().getOutMemberNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getOutMemberNum, pageWrap.getModel().getOutMemberNum());
        }
        if (pageWrap.getModel().getInVisitorNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getInVisitorNum, pageWrap.getModel().getInVisitorNum());
        }
        if (pageWrap.getModel().getOutVisitorNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getOutVisitorNum, pageWrap.getModel().getOutVisitorNum());
        }
        if (pageWrap.getModel().getSinginVisitorNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getSinginVisitorNum, pageWrap.getModel().getSinginVisitorNum());
        }
        if (pageWrap.getModel().getLeaveVisitorNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getLeaveVisitorNum, pageWrap.getModel().getLeaveVisitorNum());
        }
        if (pageWrap.getModel().getInOrtherMemberNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getInOrtherMemberNum, pageWrap.getModel().getInOrtherMemberNum());
        }
        if (pageWrap.getModel().getOutOrtherMemberNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getOutOrtherMemberNum, pageWrap.getModel().getOutOrtherMemberNum());
        }
        if (pageWrap.getModel().getInSelfMemberNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getInSelfMemberNum, pageWrap.getModel().getInSelfMemberNum());
        }
        if (pageWrap.getModel().getOutSelfMemberNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getOutSelfMemberNum, pageWrap.getModel().getOutSelfMemberNum());
        }
        if (pageWrap.getModel().getInCarNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getInCarNum, pageWrap.getModel().getInCarNum());
        }
        if (pageWrap.getModel().getOutCarNum() != null) {
            queryWrapper.lambda().eq(InoutDayCount::getOutCarNum, pageWrap.getModel().getOutCarNum());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(inoutDayCountMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(InoutDayCount inoutDayCount) {
        QueryWrapper<InoutDayCount> wrapper = new QueryWrapper<>(inoutDayCount);
        return inoutDayCountMapper.selectCount(wrapper);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -17,6 +17,7 @@
import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest;
import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -24,6 +25,7 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.dto.ResetPasswordDTO;
@@ -31,7 +33,10 @@
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.dto.NoticesDTO;
import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Notices;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.AuditApproveDTO;
import com.doumee.dao.web.reqeust.ErpVisitDTO;
@@ -108,6 +113,8 @@
    private SystemUserMapper systemUserMapper;
    @Autowired
    private ApproveService approveService;
    @Autowired
    private NoticesJoinMapper noticesJoinMapper;
    @Override
@@ -1463,4 +1470,104 @@
        systemUserBiz.resetPwd(dto);
    }
    /**
     *
     * @param queryType æŸ¥è¯¢ç±»åž‹ï¼š1=在园人数;2=报表数据;3=待办事项;4=超时预警
     * @param loginUserInfo
     * @return
     */
    @Override
    public PCWorkPlatformDataVO getPcWorkPlatformData(Integer queryType ,LoginUserInfo loginUserInfo){
        PCWorkPlatformDataVO pcWorkPlatformDataVO = new PCWorkPlatformDataVO();
        if(Constants.equalsInteger(queryType,Constants.ONE)){
            List<Retention> retentionList = retentionMapper.selectJoinList(Retention.class,
                    new MPJLambdaWrapper<Retention>()
                            .selectAll(Retention.class)
                            .selectAs(Company::getType,Retention::getCompanyType)
                            .leftJoin(Company.class,Company::getId,Retention::getCompanyId)
            );
            //今日在园人数
            pcWorkPlatformDataVO.setTodayInParkUserNum(
                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).count()
            );
            pcWorkPlatformDataVO.setTodayInUserNum(0L);
            pcWorkPlatformDataVO.setTodayOutUserNum(0L);
            //在园长期相关方人数
            pcWorkPlatformDataVO.setInParkLwUserNum(
                    retentionList.stream().filter(i->Constants.equalsInteger(i.getCompanyType(),Constants.ONE)).count()
            );
            pcWorkPlatformDataVO.setLwUserInNum(0L);
            pcWorkPlatformDataVO.setLwUserOutNum(0L);
            //在园访客数量
            pcWorkPlatformDataVO.setInParkVisitUserNum(
                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)&&Objects.isNull(i.getCompanyType())).count()
            );
            pcWorkPlatformDataVO.setVisitUserNum(0L);
            pcWorkPlatformDataVO.setSignLevelNum(0L);
            //在园车辆
            pcWorkPlatformDataVO.setTodayInParkCarNum(
                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count()
            );
            pcWorkPlatformDataVO.setTodayInCarNum(0L);
            pcWorkPlatformDataVO.setTodayOutCarNum(0L);
        }else if(Constants.equalsInteger(queryType,Constants.TWO)){
        }else if(Constants.equalsInteger(queryType,Constants.THREE)) {
            MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
            queryWrapper.selectAll(Notices.class);
            if (Objects.isNull(loginUserInfo.getMemberId())) {
                queryWrapper.eq("1", "2");
            } else {
                queryWrapper.eq(Notices::getStatus, Constants.ZERO);
                queryWrapper.eq(Notices::getSendacopy, Constants.ZERO);
                queryWrapper.eq(Notices::getParam2, Constants.ZERO);
                queryWrapper.eq(Notices::getUserId, loginUserInfo.getMemberId());
            }
            queryWrapper.orderByDesc(Notices::getCreateDate);
            List<Notices> noticesList = noticesJoinMapper.selectList(queryWrapper);
            pcWorkPlatformDataVO.setNoticesList(noticesList);
            pcWorkPlatformDataVO.setNoticesNum(noticesList.size());
        }else{
            String code= systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_WARNING).getCode();
            MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
            queryWrapper.selectAll(Visits.class);
            queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName);
            queryWrapper.select("TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) AS timeOut");
            queryWrapper.selectAs(Member::getType,Visits::getMemberType);
            queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment);
            queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
            queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
            queryWrapper.leftJoin(" member m on m.id= t.MEMBER_ID");
            queryWrapper.eq(Visits::getStatus,Constants.VisitStatus.signin);
            queryWrapper.apply(" TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) <= "+code+"  ");
            queryWrapper.ne("m.type ",Constants.TWO);
            queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
            queryWrapper.orderByDesc(Visits::getEditDate);
            List<Visits> result = visitsJoinMapper.selectList(queryWrapper);
            if(result!=null&&result!=null){
                result.stream().forEach(s ->{
                    if(s.getStatus().equals(Constants.VisitStatus.signin)){
                        if(s.getTimeOut()<=Integer.valueOf(code)&&s.getTimeOut()>=0){
                            s.setOutStatus(Constants.TWO);
                        }else if(s.getTimeOut()>Constants.ZERO){
                            s.setOutStatus(Constants.ZERO);
                        }else{
                            s.setOutStatus(Constants.ONE);
                        }
                    }
                });
            }
            pcWorkPlatformDataVO.setTimeOutVisitList(result);
            pcWorkPlatformDataVO.setTimeOutVisitNum(result.size());
        }
        return pcWorkPlatformDataVO;
    }
}