liukangdong
2024-10-12 9cf8c1d147e558c9a89b4ef14e79ea79902a7d9d
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已添加7个文件
已删除2个文件
已修改14个文件
1031 ■■■■ 文件已修改
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/system_service/src/main/java/com/doumee/dao/business/model/Company.java 4 ●●●● 补丁 | 查看 | 原始文档 | 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/HkInterfaceTestCloudController.java 7 ●●●● 补丁 | 查看 | 原始文档 | 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/core/haikang/model/HKConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/GetTodoListRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/GetTodoListResponse.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 24 ●●●● 补丁 | 查看 | 原始文档 | 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 7 ●●●● 补丁 | 查看 | 原始文档 | 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 | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/system_service/src/main/java/com/doumee/dao/business/model/Company.java
@@ -76,8 +76,8 @@
    @ExcelColumn(name="图标")
    private String imgurl;
    @ApiModelProperty(value = "类型 0劳务公司 1内部组织")
    @ExcelColumn(name="类型 0劳务公司 1内部组织")
    @ApiModelProperty(value = "类型 0相关方公司 1内部组织")
    @ExcelColumn(name="类型 0相关方公司 1内部组织")
    private Integer type;
    @ApiModelProperty(value = "分类编码(关联category)")
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/HkInterfaceTestCloudController.java
@@ -100,6 +100,12 @@
    public ApiResponse<BaseResponse> testBroadcast(@RequestBody CustomBroadcastRequest request, HttpServletResponse response) {
        return ApiResponse.success(  HKService.customBroadcast(request));
    }
    @ApiOperation("【海康】获取代办列表")
    @PostMapping("/getTodoListPage")
    @LoginNoRequired
    public ApiResponse<BaseResponse> getTodoListPage(@RequestBody GetTodoListRequest request, HttpServletResponse response) {
        return ApiResponse.success(  HKService.getTodoListPage(request));
    }
    @ApiOperation("【海康】测试人脸图片下载")
    @PostMapping("/testDonwLoadMemberImg")
    @LoginNoRequired
@@ -126,7 +132,6 @@
    public ApiResponse<BaseResponse> nhEventPageList(@RequestBody NhEventPageListRequest param, HttpServletResponse response) {
        return ApiResponse.success(  HKService.nhEventPageList(param));
    }
    @ApiOperation("【海康】分页查询消防传感器部件状态")
    @PostMapping("/sensorStatusSearch")
    @LoginNoRequired
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/core/haikang/model/HKConstants.java
@@ -136,6 +136,7 @@
        String[] sensorStatusSearch= new String[]{"/api/fpnms/v2/sensor/status/search","分页查询消防传感器部件状态"};//分页查询消防传感器部件状态
        String[] fireDeviceStatusSearch= new String[]{"/api/fpnms/v2/device/status/search","查询消防设备部件状态"};//查询消防设备部件状态
        String[] findDeviceAlarmPage= new String[]{"/api/v1/alarm/findDeviceAlarmPage","分页查询设备下的所有报警记录"};//分页查询设备下的所有报警记录
        String[] getTodoListPage= new String[]{"/api/v3/todo/getTodoListPage","分页获取待办列表"};//1.10.1分页获取待办列表
    }
    /**
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -299,6 +299,14 @@
        }
    }
    /**
     * åˆ†é¡µèŽ·å–å¾…åŠžåˆ—è¡¨
     * @param body
     * @return
     */
    public static String getTodoListPage(Map<String, String> body)  throws  Exception{
        return startDoGetStringArtemis(HKConstants.InterfacePath.getTodoListPage,body);
    }
    /**
     *    èŽ·å–é—¨ç¦ç‚¹åˆ—è¡¨
     * @param body
     * @return
@@ -364,15 +372,7 @@
        return  startDoPostStringArtemis(HKConstants.InterfacePath.visitCancel,body);
    }
    public static String startDoGetStringArtemis(String[] pathStr,Map<String,String> body ){
        Map<String, String> path = getPath(pathStr[0]);
        Map<String, String> header = new HashMap<>();
        header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
        String result = ArtemisHttpUtil.doGetArtemis(path, body, null,  "application/json", header);// post请求application/json类型参数
        saveInterfaceLog(JSONObject.toJSONString(body),result,path,pathStr[1]);
        return result;
    }
    public static String startDoPostStringArtemis(String[] pathStr,String body ){
        Map<String, String> path = getPath(pathStr[0]);
        Map<String, String> header = new HashMap<>();
@@ -380,7 +380,14 @@
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", header);// post请求application/json类型参数
        saveInterfaceLog(body,result,path,pathStr[1]);
        return result;
    }
    public static String startDoGetStringArtemis(String[] pathStr,Map<String,String> body ){
        Map<String, String> path = getPath(pathStr[0]);
        Map<String, String> header = new HashMap<>();
        header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
        String result = ArtemisHttpUtil.doGetArtemis(path, body, null, null,  header);
        saveInterfaceLog(JSONObject.toJSONString(body),result,path,pathStr[1]);
        return result;
    }
    public static String startDoPostStringArtemis(String[] pathStr,String param,String body ){
        Map<String, String> path = getPath(pathStr[0]+StringUtils.defaultString(param,""));
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/GetTodoListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class GetTodoListRequest {
    private String  comId;//        Query    String    false    ç»„ä»¶id
    private int  pageSize    ;//    Query    Number    false    åˆ†é¡µå¤§å°ï¼ˆ1~999)
    private int cascade    ;//    Query    Number    false    çº§è”数据来源0:下级平台来源;1:非下级平台来源,为空默认查询所有数据来源
    private String  messageId;//        Query    String    false    messageId
    private int  pageNo;//        Query    Number    false    å½“前页码(1~100000)
    private String  localeType;//        Query    String    false    è¯­è¨€ç±»åž‹zh_CN:中文en_US:英文
    private int status;//        Query    Number    false    ä¸šåŠ¡çŠ¶æ€ç±»åž‹,1-待处理,2-审批中,3-已完成,4-抄送我,5-我审批,默认待处理
    private String userId;//        Query    String    false    ç”¨æˆ·id
    private String clientType;//        Query    String    false    è°ƒç”¨æ–¹ç±»åž‹0:其他;1:APP,为空时默认为1;2:门户
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/GetTodoListResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
@Data
public class GetTodoListResponse {
      private String tid;//    String    false    ä¸»é”®id
      private String msgId    ;//String    false    å¾…办id
      private String userId    ;//String    false    ç”¨æˆ·id
      private String comId;//    String    false    ç»„件标识
      private String moduleId;//    String    false    æ¨¡å—标识
      private String msgTitle;//    String    false    ä¿¡æ¯æ ‡é¢˜
      private String msgStatus    ;//String    false    ä¿¡æ¯çŠ¶æ€
      private String msgStatusStr;//    String    false    ä¿¡æ¯çŠ¶æ€åç§°
      private String msgCreateTime;//    String    false    æ¶ˆæ¯åˆ›å»ºæ—¶é—´,优先使用msgCreateTimeIso
      private String msgCreateTimeIso;//    String    false    æ¶ˆæ¯åˆ›å»ºæ—¶é—´,ISO时间
      private String serverTime;//    Number    false    æŽ¥å£è°ƒç”¨æ—¶æœåŠ¡æ—¶é—´æˆ³ï¼Œæ¯«ç§’
      private String menuCode;//    String    false    èœå•code
      private String picUrl    ;//String    false    å›¾ç‰‡url,不为空则展示
      private String extendJson    ;//String    false    æ‰©å±•字段Json,不为空则展示
      private String extendNoShow;//    String    false    ä¸ä½œå±•示的扩展字段Json
      private String extendParam;//    String    false    æ‰©å±•样式字段
      private String extendCascade;//    String    false    è·³è½¬ä¿¡æ¯å­—段
      private String moduleName;//    String    false    æ¨¡å—名称,即消息类型
      private String targetComId    ;//String    false    è·³è½¬ç›®æ ‡ç»„ä»¶ID
      private String createUser;//    String    false    è¿™æ¡å¾…办的申请人
      private String webCascadeUrl;//    String    false    è¿™æ¡å¾…办的申请人
      private String h5CascadeUrl;//    String    false    h5端跳转地址(级联平台使用)
      private String cascadeTodoOpenType    ;//String    false    çº§è”待办的打开方式  1:浏览器新打开窗口,2:iam打开iportal的伪菜单,3:iam打开待办的空菜单
      private String cascadeSourceConfigId    ;//String    false    çº§è”配置id
      private String h5Url;//    String    false    æ¨¡å—配置的H5跳转URL
      private String segmentId    ;//String    false    æ®µæ ‡è¯†ï¼Œç”¨äºŽç»„件寻址用
      private String lastUsers    ;//String    false    ä¸Šä¸€å¤„理人
      private String currentUsers    ;//String    false    å½“前处理人
      private String todoTypeCode;//    String    false    å¾…办分类编码
      private String currentUserIds    ;//String    false    å½“前处理人的id
      private String lastUserIds    ;//String    false    ä¸Šä¸€å¤„理人的id
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -902,13 +902,13 @@
     *根据配置微信公众号编号查询微信公众号信息
     * @return
     */
    public  static  BaseResponse<BaseListPageResponse<WxConfigInfoResponse>>   getWxConfig(WxConfigInfoRequest param){
    public  static  BaseResponse< WxConfigInfoResponse>  getWxConfig(WxConfigInfoRequest param){
        log.info("【海康根据配置微信公众号编号查询微信公众号信息】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.getWxConfig(toMap(param));
            TypeReference typeReference =
                    new TypeReference<BaseResponse<BaseListPageResponse<WxConfigInfoResponse>>>(){};
            BaseResponse<BaseListPageResponse<WxConfigInfoResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
                    new TypeReference<BaseResponse<WxConfigInfoResponse>>(){};
            BaseResponse<WxConfigInfoResponse>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康根据配置微信公众号编号查询微信公众号信息");
            return  result;
        }catch (Exception e){
@@ -916,6 +916,24 @@
        }
        return  null;
    }
    /**
     *分页获取待办列表
     * @return
     */
    public  static  BaseResponse<BaseListPageResponse<GetTodoListResponse>>   getTodoListPage(GetTodoListRequest param){
        log.info("【海康分页获取待办列表】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.getTodoListPage(toMap(param));
            TypeReference typeReference =
                    new TypeReference<BaseResponse<BaseListPageResponse<GetTodoListResponse>>>(){};
            BaseResponse<BaseListPageResponse<GetTodoListResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康分页获取待办列表");
            return  result;
        }catch (Exception e){
            log.error("【海康分页获取待办列表】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *分页查询消防设备部件状态
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 signinVisitorNum;
    @ApiModelProperty(value = "访客签离人次", example = "1")
    @ExcelColumn(name="访客签离人次")
    private Integer leaveVisitorNum;
    @ApiModelProperty(value = "相关方入园人次", example = "1")
    @ExcelColumn(name="相关方入园人次")
    private Integer inOtherMemberNum;
    @ApiModelProperty(value = "相关方出园人次", example = "1")
    @ExcelColumn(name="相关方出园人次")
    private Integer outOtherMemberNum;
    @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
@@ -83,7 +83,6 @@
    @ApiModelProperty(value = "海康门禁名称")
    @ExcelColumn(name="进厂门禁" ,index = 6,width = 12)
    @TableField(exist = false)
    private String deviceName;
    @ApiModelProperty(value = "海康门禁编码")
@@ -96,6 +95,8 @@
    @ApiModelProperty(value = "访客ID(关联member)")
    private Integer memberId;
    @ApiModelProperty(value = "访客1门禁事件2车辆事件")
    private String accessType;
    @ApiModelProperty(value = "事件类型码")
    private String eventCode;
@@ -116,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;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -17,6 +17,7 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
@@ -43,6 +44,8 @@
@Slf4j
public class HkSyncPushServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private InoutDayCountMapper inoutDayCountMapper;
    @Autowired
    private InterfaceLogMapper interfaceLogMapper;
    @Autowired
@@ -102,13 +105,14 @@
            List<DeviceEvent> list = new ArrayList<>();
            List<Integer> delRetentionLis = new ArrayList<>();
            List<Retention> retentionList = new ArrayList<>();
            InoutDayCount inoutDayCount = new InoutDayCount();
            for(EventAcsInfoRequest request : events){
                EventDeviceDataRequest model = request.getData();
                if(model ==null){
                    continue;
                }
                //根据推送人员编码,处理在场、离场人员数据记录
                dealMemberDataByRequest(request,delRetentionLis,retentionList);
                dealMemberDataByRequest(request,delRetentionLis,retentionList,inoutDayCount);
                //封装门禁事件信息表对象
                list.add(getDeviceEventModelByRequest(request));
            }
@@ -126,6 +130,7 @@
                //再插入最新的在厂人员
                retentionMapper.insert(retentionList);
            }
            dealInoutDayCountBiz(inoutDayCount);
            log.info("【海康门禁事件推送】========成功=======");
        }catch (Exception e) {
            log.error("【海康门禁事件推送】========失败=======:\n" + e.getMessage());
@@ -136,27 +141,80 @@
    }
    private void dealInoutDayCountBiz(InoutDayCount param) {
        param.setTimeInfo(Utils.Date.getStart(new Date()));
        InoutDayCount model = inoutDayCountMapper.selectOne(new QueryWrapper<InoutDayCount>().lambda()
                .eq(InoutDayCount::getTimeInfo,param.getTimeInfo())
                .eq(InoutDayCount::getIsdeleted,Constants.ZERO)
                .last("limit 1"));
        if(model == null){
            param.setIsdeleted(Constants.ZERO);
            param.setCreateDate(new Date());
            param.setEditDate(new Date());
            inoutDayCountMapper.insert(param);
        }else{
            inoutDayCountMapper.update(null,new UpdateWrapper<InoutDayCount>().lambda()
                    .eq(InoutDayCount::getId,model.getId() )
                    .set(InoutDayCount::getEditDate,new Date() )
                    .setSql(param.getInCarNum()!=null,"IN_CAR_NUM = ifnull(IN_CAR_NUM)"+param.getInCarNum() )
                    .setSql(param.getOutCarNum()!=null,"OUT_CAR_NUM = ifnull(OUT_CAR_NUM)"+param.getOutCarNum() )
                    .setSql(param.getInMemberNum()!=null,"IN_MEMBER_NUM = ifnull(IN_MEMBER_NUM)"+param.getInMemberNum() )
                    .setSql(param.getOutMemberNum()!=null,"OUT_MEMBER_NUM = ifnull(OUT_MEMBER_NUM)"+param.getOutMemberNum() )
                    .setSql(param.getInVisitorNum()!=null,"IN_VISITOR_NUM = ifnull(IN_VISITOR_NUM)"+param.getInVisitorNum() )
                    .setSql(param.getOutVisitorNum()!=null,"OUT_VISITOR_NUM = ifnull(OUT_VISITOR_NUM)"+param.getOutVisitorNum() )
                    .setSql(param.getSigninVisitorNum()!=null,"SIGNIN_VISITOR_NUM = ifnull(SIGNIN_VISITOR_NUM)"+param.getSigninVisitorNum() )
                    .setSql(param.getLeaveVisitorNum()!=null,"LEAVE_VISITOR_NUM = ifnull(LEAVE_VISITOR_NUM)"+param.getLeaveVisitorNum() )
                    .setSql(param.getInOtherMemberNum()!=null,"IN_OTHER_MEMBER_NUM = ifnull(IN_OTHER_MEMBER_NUM)"+param.getInOtherMemberNum() )
                    .setSql(param.getOutOtherMemberNum()!=null,"OUT_OTHER_MEMBER_NUM = ifnull(OUT_OTHER_MEMBER_NUM)"+param.getOutOtherMemberNum() )
                    .setSql(param.getInSelfMemberNum()!=null,"IN_SELF_MEMBER_NUM = ifnull(IN_SELF_MEMBER_NUM)"+param.getInSelfMemberNum() )
                    .setSql(param.getOutSelfMemberNum()!=null,"OUT_SELF_MEMBER_NUM = ifnull(OUT_SELF_MEMBER_NUM)"+param.getOutSelfMemberNum() )
            );
        }
    }
    /**
     * æ ¹æ®æŽ¨é€äººå‘˜ç¼–码,处理在场、离场人员数据记录
     * @param request
     * @param delRetentionLis
     * @param retentionList
     */
    private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList) {
    private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,InoutDayCount inoutDayCount) {
        //海康人员编码
        String userNo = request.getData().getExtEventPersonNo();
        if(StringUtils.isNotBlank(userNo)){
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,userNo).last("limit 1"));
            Member member = memberMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>()
                    .selectAll(Member.class)
                    .selectAs(Member::getCompanyType,Company::getType)
                    .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                    .eq(Member::getHkId,userNo)
                    .last("limit 1"));
            //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件)
            Device d = deviceMapper.selectOne(new QueryWrapper<Device>().lambda()
                    .eq(Device::getDoorId,request.getSrcIndex())
                    .eq(Device::getIsdeleted,Constants.ZERO)
                    .last("limit 1" ));
            if(d!=null && !(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){
                //如果是进门,录入人员的在场数据记录
                inoutDayCount.setInMemberNum(Constants.formatIntegerNum(inoutDayCount.getInMemberNum())+1);//入场人次
            }else{
                inoutDayCount.setOutMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutMemberNum())+1);//离场人次
            }
            if(member !=null){
                //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件)
                Device d = deviceMapper.selectOne(new QueryWrapper<Device>().lambda()
                        .eq(Device::getDoorId,request.getSrcIndex())
                        .eq(Device::getIsdeleted,Constants.ZERO)
                        .last("limit 1" ));
                delRetentionLis.add(member.getId());
                if(d!=null && !(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){
                    //如果是进门,录入人员的在场数据记录
                    retentionList.add(getRetentionModelByRequest(member,request));
                    if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                        inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1);//内部人员入场人次
                    }else{
                        inoutDayCount.setInOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getInOtherMemberNum())+1);//相关方入场人次
                    }
                }else{
                    if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                        inoutDayCount.setOutSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutSelfMemberNum())+1);//内部人员出场人次
                    }else{
                        inoutDayCount.setOutOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutOtherMemberNum())+1);//相关方出场人次
                    }
                }
            }
        }
@@ -345,6 +403,7 @@
            List<VisitEvent> list = new ArrayList<>();
            List<Integer> delRetentionLis = new ArrayList<>();
            List<Retention> retentionList = new ArrayList<>();
            InoutDayCount inoutDayCount = new InoutDayCount();
            for(EventVisitIccmInfoRequest request : events){
                if(request.getData() ==null || request.getData().getVisitorInvoices() ==null){
                    continue;
@@ -353,7 +412,7 @@
                    continue;
                }
                //海康访客记录编码
                dealVisitDataByRequstIccm(request,delRetentionLis,retentionList);
                dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,inoutDayCount);
                list.add(getVisitEventModelByRequestIccm(request,request.getData().getVisitorInformationList().get(0)));
            }
            if(list.size()>0){
@@ -370,6 +429,7 @@
                //再插入最新的在厂人员
                retentionMapper.insert(retentionList);
            }
            dealInoutDayCountBiz(inoutDayCount);
            log.info("【海康访客事件推送】========成功=======");
        }catch (Exception e){
            log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage());
@@ -382,7 +442,7 @@
    /**
     *  æ ¹æ®è®¿å®¢æŽ¨é€è®¿å®¢è®°å½•编码,处理访客记录、在场人员等信息
     */
    private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList ) {
    private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,  InoutDayCount inoutDayCount) {
        EventVisitIccmDataRequest model = request.getData();
        EventVisitIccmInvoiceParamRequest data =  request.getData().getVisitorInvoices();
@@ -394,8 +454,6 @@
        queryWrapper.last("limit 1");
        Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper);
        if(visits !=null){
            //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件)
            delRetentionLis.add(visits.getMemberId());
            if(dataSyncConfig.getOrgUserDataOrigin() == DataSyncConfig.origin.hk){
                //如果是伊利大屏项目,不做处理
                return;
@@ -404,8 +462,9 @@
            updateVistis.setId(visits.getId());
            if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey()) {
                //如果是访客登记,录入人员的在场数据记录
                retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()));
//                retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()));
                //来访时间
                inoutDayCount.setSigninVisitorNum(Constants.formatIntegerNum(inoutDayCount.getSigninVisitorNum())+1);
                updateVistis.setStatus(Constants.VisitStatus.signin);
                updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime()));
                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime()));
@@ -416,13 +475,31 @@
                memberMapper.updateById(member);
            }else if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey())  {
                //如果是访客签离事件
                inoutDayCount.setLeaveVisitorNum(Constants.formatIntegerNum(inoutDayCount.getLeaveVisitorNum())+1);
                updateVistis.setStatus(Constants.VisitStatus.signout);
                updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime()));
                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime()));
                updateVistis.setOutType(Constants.ZERO);
                updateVistis.setOutInfo("访客正常签离");
            }else{
                //如果人员信息存在,切是访客通行,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件)
                delRetentionLis.add(visits.getMemberId());
                //如果是访客通行
                if(request.getData()!=null&&request.getData().getParamValues()!=null &&
                        StringUtils.equals(request.getData().getParamValues().getInOrOut(),"1")){
                    //如果是访客登记,录入人员的在场数据记录
                    Retention r = getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType());
                    r.setCarNo(request.getData().getParamValues().getPlateNos());
                    r.setAccessType(request.getData().getParamValues().getAccessType());
                    r.setDeviceName(request.getData().getParamValues().getSrcName());
                    r.setDeviceIndex(request.getData().getParamValues().getSrcIndex());
                    retentionList.add(r);
                    inoutDayCount.setInVisitorNum(Constants.formatIntegerNum(inoutDayCount.getInVisitorNum())+1);
                }
                if(request.getData()!=null&&request.getData().getParamValues()!=null &&
                         StringUtils.equals(request.getData().getParamValues().getInOrOut(),"2")){
                    inoutDayCount.setOutVisitorNum(Constants.formatIntegerNum(inoutDayCount.getOutVisitorNum())+1);
                }
            }
            updateVistis.setEditDate(new Date());
            //更新访客来访或者签离时间信息
@@ -643,12 +720,13 @@
            List<CarEvent> list = new ArrayList<>();
            List<Retention> retentionList = new ArrayList<>();
            List<String> delRetentionList = new ArrayList<>();
            InoutDayCount inoutDayCount = new InoutDayCount();
            for(EventParkInfoRequest request : events){
                if(request.getData() ==null ||StringUtils.isBlank(request.getData().getPlateNo())){
                    continue;
                }
                //封装事件信息表对象
                list.add(getParkEventModelByRequest(request,delRetentionList,retentionList));
                list.add(getParkEventModelByRequest(request,delRetentionList,retentionList,inoutDayCount));
            }
            if(list.size()>0){
                //插入门禁记录
@@ -664,6 +742,7 @@
                //再插入最新的在厂人员
                retentionMapper.insert(retentionList);
            }
            dealInoutDayCountBiz(inoutDayCount);
            log.info("【海康停车场事件推送】========成功=======");
        }catch (Exception e){
@@ -678,7 +757,7 @@
     * @param request
     * @return
     */
    private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList ) {
    private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList,InoutDayCount inoutDayCount ) {
        CarEvent event = new CarEvent();
        event.setIsdeleted(Constants.ZERO);
        event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
@@ -754,9 +833,11 @@
                //如果是入厂放行
                delRetentionList.add(event.getPlateNos());
                retentionList.add(getRetentionModelByParkRequest(request));
                inoutDayCount.setInCarNum(Constants.formatIntegerNum(inoutDayCount.getInCarNum())+1);
            }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){
                //如果是出场放行
                delRetentionList.add(event.getPlateNos());
                inoutDayCount.setOutCarNum(Constants.formatIntegerNum(inoutDayCount.getOutCarNum())+1);
            }
        }
        return event;