Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
| | |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="岗位" min-width="200px"></el-table-column> |
| | | <el-table-column prop="memberNum" label="员工数" min-width="200px"></el-table-column> |
| | | <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column> |
| | | <el-table-column prop="editDate" label="操作时间" min-width="200px"></el-table-column> |
| | | <el-table-column |
| | |
| | | name: '', |
| | | status: '', |
| | | hkStatus: '', |
| | | includeChild: false, |
| | | includeChild: true, |
| | | canVisit: '', |
| | | keyword: '', |
| | | type: 2, |
| | |
| | | working: false, |
| | | canvisiting: false, |
| | | companyTree: [], |
| | | department: [], |
| | | positionList: [], |
| | | department: [] |
| | | } |
| | | }, |
| | | created () { |
| | |
| | | @Select(" select a.id , a.START_TIME , a.END_TIME , b.`NAME` as roomName , a.`NAME` as meetingName ,date_format(a.START_TIME,'%Y-%m-%d') as meetingDate , a.START_TIME as startTime, a.status ," + |
| | | " CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime, c.REALNAME as bookingUser ," + |
| | | //" CASE WHEN a.START_TIME > now() AND a.`STATUS` = 0 THEN 1 WHEN ( (a.END_TIME < now() AND a.`STATUS` = 0 ) or a.`STATUS` = 2 ) THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " CASE WHEN a.START_TIME_REAL IS NULL AND a.`STATUS` = 0 THEN 1 WHEN ( (a.END_TIME < now() AND a.`STATUS` = 0 ) or a.`STATUS` = 2 ) THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " CASE WHEN a.START_TIME_REAL IS NULL AND a.`STATUS` = 0 THEN 1 " + |
| | | // " WHEN ( (a.END_TIME < now() AND a.`STATUS` = 0 ) or a.`STATUS` = 2 ) THEN 3 " + |
| | | "WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " b.IMGURL as imgUrl ," + |
| | | " a.remark " + |
| | | " from meeting_book a inner join meeting_rooms b on a.ROOM_ID = b.ID " + |
| | |
| | | .eq("b.STATUS",MeetConstants.ZERO) |
| | | .eq("a.ISDELETED",MeetConstants.ZERO) |
| | | .eq("a.status",Constants.ZERO) |
| | | .ne("a.status",Constants.TWO) |
| | | .like("a.start_time",DateUtil.getCurrDate()) |
| | | .apply(" not exists ( select 1 from meeting_book mb where mb.END_TIME < now() and mb.id = a.id and START_TIME_REAL is null ) ") |
| | | .orderByAsc("a.start_time") |
| | | ); |
| | | this.dealMeetingStatus(meetingList); |
| | |
| | | public static String generateTokenToHk(String userName,Integer hour, RedisTemplate<String,Object> redisTemplate) { |
| | | long currentTimeMillis = System.currentTimeMillis() + 1000*60*60*hour; |
| | | String encrypt = DESUtil.encrypt("12345678",currentTimeMillis + "_" + userName ); |
| | | redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+encrypt, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS); |
| | | try{ |
| | | encrypt = URLEncoder.encode(encrypt,"UTF-8"); |
| | | }catch (Exception e){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"生成加密码失败!"); |
| | | } |
| | | redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+encrypt, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS); |
| | | return encrypt; |
| | | } |
| | | |
| | |
| | | */ |
| | | public interface platformBookContent{ |
| | | //短信通知模板(给处理人) |
| | | String platformBookWaitAudit = "platformBookContent"; |
| | | String platformBookWaitAudit = "platformBookWaitAudit"; |
| | | //物流车预约-审批通过通知(给申请人):。 |
| | | String platformBookAuditSuccess = "platformBookAuditSuccess"; |
| | | //物流车预约-审批驳回短信通知模板(给申请人) |
| | |
| | | package com.doumee.cloud.openapi; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.config.annotation.LoginNoRequired; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DESUtil; |
| | | import com.doumee.core.wms.model.response.WmsBaseResponse; |
| | | import com.doumee.dao.openapi.request.*; |
| | | import com.doumee.dao.openapi.response.*; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | |
| | | import com.doumee.service.system.SystemUserService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.net.URLDecoder; |
| | | import java.net.URLEncoder; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Api(tags = "提供安防平台对接接口(数据大屏基础数据等)") |
| | | @RestController |
| | | @Slf4j |
| | | @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/hk/api") |
| | | public class HkOpenApiController extends BaseController { |
| | | |
| | | @Autowired |
| | | private PlatformService platformService; |
| | | @Autowired |
| | | private InterfaceLogService interfaceLogService; |
| | | |
| | | @Autowired |
| | | private PlatformLogService platformLogService; |
| | |
| | | @ApiOperation("token解析") |
| | | @GetMapping("/water/decodeToken") |
| | | public Map<String,Object> decodeToken(@RequestParam String token) { |
| | | String token1 =token; |
| | | log.info("【安防平台单点登录token解析】================="+token1); |
| | | int success = Constants.ZERO; |
| | | Map<String,Object> result = new HashMap<>() ; |
| | | try { |
| | | token = URLDecoder.decode(token,"UTF-8"); |
| | | token = URLEncoder.encode(token1); |
| | | HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest(); |
| | | hkBaseTokenRequest.setToken(token); |
| | | result = this.decodeTokenForHk(hkBaseTokenRequest); |
| | | }catch (BusinessException e){ |
| | | log.error("【安防平台】单点登录token解===失败:"+e.getMessage()); |
| | | success = Constants.ONE; |
| | | }catch (Exception e){ |
| | | |
| | | log.error("【安防平台】单点登录token解析===失败:"+e.getMessage()); |
| | | e.printStackTrace(); |
| | | success = Constants.ONE; |
| | | }finally { |
| | | interfaceLogService.saveInterfaceLog("/hk/api/water/decodeToken", "【安防平台】单点登录token解析",token1, |
| | | success, JSONObject.toJSONString(result),Constants.ZERO); |
| | | } |
| | | HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest(); |
| | | hkBaseTokenRequest.setToken(token); |
| | | return this.decodeTokenForHk(hkBaseTokenRequest); |
| | | return result; |
| | | } |
| | | |
| | | public Map<String,Object> decodeTokenForHk(HkBaseTokenRequest hkBaseTokenRequest){ |
| | | public Map<String,Object> decodeTokenForHk(HkBaseTokenRequest hkBaseTokenRequest) { |
| | | Map<String,Object> result = new HashMap<>(); |
| | | result.put("code","0"); |
| | | result.put("msg","success"); |
| | |
| | | result.put("msg","token无效!"); |
| | | return result; |
| | | } |
| | | String userName = DESUtil.verifyHkToken(hkBaseTokenRequest.getToken()); |
| | | String userName = null; |
| | | try { |
| | | userName = DESUtil.verifyHkToken(URLDecoder.decode(hkBaseTokenRequest.getToken(),"UTF-8")); |
| | | }catch (Exception e){ |
| | | } |
| | | if(StringUtils.isBlank(userName)){ |
| | | result.put("code","-1"); |
| | | result.put("msg","token参数为空"); |
| | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.core.haikang.model.param.request.CarPictureRequest; |
| | | import com.doumee.core.haikang.model.param.request.FacePictureCheckRequest; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.dao.business.model.InterfaceLog; |
| | | import com.doumee.service.business.InterfaceLogService; |
| | |
| | | |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | ArtemisConfig.host = "10.50.60.253"; |
| | | ArtemisConfig.appKey = "27786546"; |
| | | ArtemisConfig.appSecret = "kC5dohxU7CvEqgGhVt4R"; |
| | | ArtemisConfig.host = "10.50.250.253:1443"; |
| | | |
| | | ArtemisConfig.appKey = "23154099"; |
| | | ArtemisConfig.appSecret = "88wFsg3xfn7o8QMsWEO2"; |
| | | HKConstants.https = "https://"; |
| | | CarPictureRequest param = new CarPictureRequest(); |
| | | /* CarPictureRequest param = new CarPictureRequest(); |
| | | param.setPicUri( "HKIMG=/pic?0dd400=4c40ip-feo831-933*9o4=3=2109*2l0001893117*0t7=6*2ps==014b*=787d*069d70361-95754d-9*l108od0b192=001"); |
| | | param.setAswSyscode("3fa3e5e3-db3e-41ba-97fc-39c948778dfe"); |
| | | InputStream is = HKService.getCarPicture(param); |
| | |
| | | outStream.close(); //写入数据 |
| | | } catch ( Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | }*/ |
| | | |
| | | FacePictureCheckRequest param = new FacePictureCheckRequest(); |
| | | param.setFacePicUrl("http://10.50.250.253:8088/file/member/20241016/d0cded86-a55d-43be-bc01-4f628a1400cf.jpg"); |
| | | System.out.println(facePictureCheck(JSONObject.toJSONString(param))); |
| | | |
| | | } |
| | | public static InterfaceLogService interfaceLogService = null; |
| | |
| | | return null; |
| | | } |
| | | /** |
| | | *增量车辆查询(分页) |
| | | *人脸评分 |
| | | * @return |
| | | */ |
| | | public static BaseResponse<BaseListPageResponse<VehicleTimeRangeInfoResponse>> facePictureCheck(TimeRangeListRequest param){ |
| | | log.info("【海康增量人员查询】================开始===="+JSONObject.toJSONString(param)); |
| | | public static BaseResponse<FacePictureCheckResponse> facePictureCheck(FacePictureCheckRequest param){ |
| | | log.info("【人脸评分】================开始===="+JSONObject.toJSONString(param)); |
| | | try { |
| | | String res = HKTools.facePictureCheck(JSONObject.toJSONString(param)); |
| | | TypeReference typeReference = |
| | | new TypeReference< BaseResponse<BaseListPageResponse<VehicleTimeRangeInfoResponse>> >(){}; |
| | | BaseResponse<BaseListPageResponse<VehicleTimeRangeInfoResponse>> result = JSONObject.parseObject(res, typeReference.getType()); |
| | | logResult(result,"海康增量人员查询"); |
| | | new TypeReference<BaseResponse<FacePictureCheckResponse>>(){}; |
| | | BaseResponse<FacePictureCheckResponse> result = JSONObject.parseObject(res, typeReference.getType()); |
| | | logResult(result,"人脸评分"); |
| | | return result; |
| | | }catch (Exception e){ |
| | | log.error("【海康增量人员查询】================失败====:\n"+ e.getMessage()); |
| | | log.error("【人脸评分】================失败====:\n"+ e.getMessage()); |
| | | } |
| | | return null; |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "海康状态 0待下发 1成功2失败") |
| | | private Integer hkStatus; |
| | | @ApiModelProperty(value = "在职状态") |
| | | private Integer workStatus; |
| | | |
| | | @ApiModelProperty(value = "操作人员 ") |
| | | private Integer createrId; |
| | |
| | | @ApiModelProperty(value = "子集分类") |
| | | @TableField(exist = false) |
| | | private List<Position> childList; |
| | | @ApiModelProperty(value = "当前岗位人员数量") |
| | | @TableField(exist = false) |
| | | private Integer memberNum; |
| | | |
| | | |
| | | } |
| | |
| | | * @return InterfaceLog |
| | | */ |
| | | InterfaceLog findOne(InterfaceLog interfaceLog); |
| | | |
| | | void saveInterfaceLog(String url,String name,String param,Integer success,String respone,int type); |
| | | /** |
| | | * 条件查询 |
| | | * |
| | |
| | | approve.setType(Constants.ZERO); |
| | | approveList.add(approve); |
| | | |
| | | if(Constants.equalsInteger(approve.getStatus(),Constants.ONE)){ |
| | | if(Constants.equalsInteger(approve.getStatus(),Constants.ONE) && StringUtils.isNotBlank(member.getPhone())){ |
| | | //发送短信通知 |
| | | if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.reason)){ |
| | | //物流车预约 |
| | | SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,businessId, |
| | | SmsConstants.platformBookContent.platformBookWaitAudit, |
| | | null,null |
| | | null,Arrays.asList(member.getPhone().split(",")) |
| | | ); |
| | | } |
| | | } |
| | |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.InterfaceLogMapper; |
| | | import com.doumee.dao.business.model.InterfaceLog; |
| | | import com.doumee.dao.business.model.WmsInterfaceLog; |
| | | import com.doumee.service.business.InterfaceLogService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | QueryWrapper<InterfaceLog> wrapper = new QueryWrapper<>(interfaceLog); |
| | | return interfaceLogMapper.selectOne(wrapper); |
| | | } |
| | | @Override |
| | | public void saveInterfaceLog(String url,String name,String param,Integer success,String respone,int type){ |
| | | if(interfaceLogMapper ==null){ |
| | | return; |
| | | } |
| | | InterfaceLog log = new InterfaceLog(); |
| | | log.setCreateDate(new Date()); |
| | | log.setUrl(url); |
| | | log.setEditDate(log.getCreateDate()); |
| | | log.setPlat(Constants.ZERO); |
| | | log.setName(name); |
| | | log.setIsdeleted(Constants.ZERO); |
| | | log.setRequest(param); |
| | | log.setType(type); |
| | | log.setSuccess(success); |
| | | log.setRepose(respone); |
| | | interfaceLogMapper.insert(log); |
| | | } |
| | | |
| | | @Override |
| | | public List<InterfaceLog> findList(InterfaceLog interfaceLog) { |
| | |
| | | .eq(Objects.nonNull(pageWrap.getModel().getCanVisit()),Member::getCanVisit,pageWrap.getModel().getCanVisit()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getStatus()),Member::getStatus,pageWrap.getModel().getStatus()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getWorkStatus()),Member::getWorkStatus,pageWrap.getModel().getWorkStatus()) |
| | | .eq(Objects.isNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,Constants.ZERO) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,pageWrap.getModel().getIsdeleted()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getCompanyType()),Company::getType,pageWrap.getModel().getCompanyType()) |
| | |
| | | ); |
| | | if(Objects.isNull(wmsJobContractVO.getLockStatus())&& |
| | | com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(wmsJobContractVO.getPlatformWmsDetailList())){ |
| | | wmsJobContractVO.setLockStatus( |
| | | wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getLockStatus() |
| | | ); |
| | | if(Constants.equalsInteger(platformWmsJob.getType(),Constants.ONE)){ |
| | | if(Objects.isNull(wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getLockStatus())){ |
| | | wmsJobContractVO.setLockStatus(Constants.ZERO |
| | | ); |
| | | }else{ |
| | | wmsJobContractVO.setLockStatus( |
| | | wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getLockStatus() |
| | | ); |
| | | } |
| | | } |
| | | wmsJobContractVO.setStatus( |
| | | wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getStatus() |
| | | ); |
| | |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.SmsConstants; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.PlatformBooksMapper; |
| | | import com.doumee.dao.business.PlatformJobMapper; |
| | | import com.doumee.dao.business.SmsConfigMapper; |
| | | import com.doumee.dao.business.SmsEmailMapper; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.service.business.SmsEmailService; |
| | | import com.doumee.service.business.third.EmayService; |
| | |
| | | return smsEmailMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | /** |
| | | * 访客申请业务短信通知 |
| | | * @param systemDictDataBiz |
| | | * @param emayService |
| | | * @param smsEmailMapper |
| | | * @param smsConfigMapper |
| | | * @param visitsMapper |
| | | * @param objId |
| | | * @param objCode |
| | | * @param msg |
| | | * @param auditUser |
| | | */ |
| | | public static void sendVisitSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, |
| | | VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){ |
| | | try{ |
| | | SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, |
| | | objCode).last(" limit 1 ")); |
| | | //开启短信通知 |
| | | if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ |
| | | String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); |
| | | Visits visits = visitsMapper.selectById(objId); |
| | | if(Objects.nonNull(visits)){ |
| | | if(objCode.equals(SmsConstants.visitContent.visitAuditSuccess)){ |
| | | //您的【访客申请】已经审批通过,请于{预约入园开始时间}前往门卫室访客机签到入园,如有疑问,请联系被访人 |
| | | content = content.replace("{预约入园开始时间}",DateUtil.getDate(visits.getStarttime(),"yyyy-MM-dd HH:mm")); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); |
| | | }else if(objCode.equals(SmsConstants.visitContent.visitAuditFail)){ |
| | | //您的【访客申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系被访人。 |
| | | content = content.replace("{驳回原因}",msg); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); |
| | | }else if(objCode.equals(SmsConstants.visitContent.visitTimeOutSignOut)){ |
| | | //您的【访客申请】已于{到期时间}到期,请及时离场并前往门卫室访客机签离,如有疑问,请联系被访人 |
| | | content = content.replace("{到期时间}",DateUtil.getDate(visits.getEndtime(),"yyyy-MM-dd HH:mm")); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); |
| | | }else if(objCode.equals(SmsConstants.visitContent.visitTimeOutSignOutNum)) { |
| | | //今日还有{未签离数量}个访客未签离,请前往PC端查看详细信息。 |
| | | content = content.replace("{未签离数量}",msg); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); |
| | | }else{ |
| | | //您有一条【车辆入园申请】需要处理,详细信息请前往微信公众号查看。 |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | auditUser,SmsConstants.platformBook,content,visits.getId()); |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 用车申请 短信通知配置 |
| | | * 访客报备业务短信通知 |
| | | * @param systemDictDataBiz |
| | | * @param emayService |
| | | * @param smsEmailMapper |
| | | * @param smsConfigMapper |
| | | * @param visitsMapper |
| | | * @param objId |
| | | * @param objCode |
| | | * @param msg |
| | | * @param auditUser |
| | | */ |
| | | public static void sendVisitReportSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, |
| | | VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){ |
| | | try{ |
| | | SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, |
| | | objCode).last(" limit 1 ")); |
| | | //开启短信通知 |
| | | if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ |
| | | String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); |
| | | Visits visits = visitsMapper.selectById(objId); |
| | | if(Objects.nonNull(visits)){ |
| | | if(objCode.equals(SmsConstants.visitReportingContent.visitReportingAuditSuccess)){ |
| | | // 您的【访客报备】已经审批通过,请通知访客于{预约入园开始时间}后乘坐{车牌号}入园,如有疑问,请联系被访人。 |
| | | content = content.replace("{预约入园开始时间}",DateUtil.getDate(visits.getStarttime(),"yyyy-MM-dd HH:mm")) |
| | | .replace("{车牌号}",visits.getCarNos()); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); |
| | | }else if(objCode.equals(SmsConstants.visitReportingContent.visitReportingAuditFail)){ |
| | | //您的【访客报备】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系审批人。 |
| | | content = content.replace("{驳回原因}",msg); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); |
| | | }else if(objCode.equals(SmsConstants.visitReportingContent.visitReportingTimeOutSignOut)){ |
| | | //您的【访客报备】已于{预约入园结束时间}到期,请及时离场,如有疑问,请联系被访人 |
| | | content = content.replace("{预约入园结束时间}",DateUtil.getDate(visits.getEndtime(),"yyyy-MM-dd HH:mm")); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); |
| | | }else if(objCode.equals(SmsConstants.visitReportingContent.visitReportingTimeOutSignOutNum)) { |
| | | //今日还有{未签离数量}个访客报备车辆未离场,请前往PC端查看详细信息。 |
| | | content = content.replace("{未签离数量}",msg); |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); |
| | | }else{ |
| | | //您有一条【车辆入园申请】需要处理,详细信息请前往微信公众号查看。 |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | auditUser,SmsConstants.platformBook,content,visits.getId()); |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 隐患随手拍 |
| | | * @param systemDictDataBiz |
| | | * @param emayService |
| | | * @param smsEmailMapper |
| | | * @param smsConfigMapper |
| | | * @param hiddenDangerMapper |
| | | * @param objId |
| | | * @param objCode |
| | | * @param auditUser |
| | | */ |
| | | public static void sendHiddenDangerSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, |
| | | HiddenDangerMapper hiddenDangerMapper, Integer objId, String objCode,List<String> auditUser){ |
| | | try{ |
| | | SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, |
| | | objCode).last(" limit 1 ")); |
| | | //开启短信通知 |
| | | if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ |
| | | String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); |
| | | HiddenDanger hiddenDanger = hiddenDangerMapper.selectById(objId); |
| | | //您有一条【隐患随手拍-消防隐患】需要处理,详细信息请前往微信公众号查看 |
| | | //您提交的【隐患随手拍-消防隐患】已经处理完毕,详细信息请前往微信公众号查看。 |
| | | if(Objects.nonNull(hiddenDanger)){ |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | auditUser,SmsConstants.platformBook,content,hiddenDanger.getId()); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 用车申请 |
| | | * @param systemDictDataBiz |
| | | * @param emayService |
| | | * @param smsEmailMapper |
| | | * @param smsConfigMapper |
| | | * @param carUseBookMapper |
| | | * @param objId |
| | | * @param objCode |
| | | * @param msg |
| | | * @param userList |
| | | */ |
| | | public static void sendCarUseSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, |
| | | CarUseBookMapper carUseBookMapper, Integer objId, String objCode, String msg, List<String> userList){ |
| | | //您有一条【用车申请】需要处理,详细信息请前往微信公众号查看。 |
| | | try{ |
| | | SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, |
| | | objCode).last(" limit 1 ")); |
| | | //开启短信通知 |
| | | if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ |
| | | String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); |
| | | CarUseBook carUseBook = carUseBookMapper.selectById(objId); |
| | | if(Objects.nonNull(carUseBook)){ |
| | | if(objCode.equals(SmsConstants.carUseBookContent.carUseBookAuditSuccess)){ |
| | | //您的【用车申请】已经审批通过,出发时间为{提交的出发时间},请按时用车。如用车计划有变,请及时联系派车员。 |
| | | content = content.replace("{提交的出发时间}",DateUtil.getDate(carUseBook.getStartTime(),"yyyy-MM-dd HH:mm")); |
| | | }else if(objCode.equals(SmsConstants.carUseBookContent.carUseBookAuditFail) || objCode.equals(SmsConstants.carUseBookContent.carUseBookCancel)){ |
| | | //您的【用车申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系派车员。 |
| | | content = content.replace("{驳回原因}",msg); |
| | | //您的【用车申请】已被取消,取消原因为:{取消原因}。如有疑问,请联系派车员。 |
| | | content = content.replace("{取消原因}",msg); |
| | | } |
| | | sendBusinessSms(emayService,smsEmailMapper, |
| | | userList,SmsConstants.carUse,content,carUseBook.getId()); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 物流车预约 短信通知配置 |
| | | * @param emayService |
| | | * @param smsEmailMapper |
| | | * @param smsConfigMapper |
| | |
| | | import com.doumee.core.erp.model.openapi.response.erp.ApproveInfoResponse; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.haikang.model.HKConstants; |
| | | import com.doumee.core.haikang.model.param.BaseListPageResponse; |
| | | import com.doumee.core.haikang.model.param.BaseResponse; |
| | | import com.doumee.core.haikang.model.param.request.FacePictureCheckRequest; |
| | | import com.doumee.core.haikang.model.param.request.VisitAppointmentOutRequest; |
| | | import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest; |
| | | import com.doumee.core.haikang.model.param.respose.AscDeviceStatusInfoResponse; |
| | | import com.doumee.core.haikang.model.param.respose.FacePictureCheckResponse; |
| | | import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import sun.misc.BASE64Encoder; |
| | | |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Path; |
| | | import java.nio.file.Paths; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | visits.setVisitType(Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode())); |
| | | //初始化访客信息 |
| | | initVisitInfo(visits,date); |
| | | |
| | | if(StringUtils.isNotBlank(visits.getFaceImg())&&(Constants.equalsInteger(visits.getType(),Constants.ZERO)|| Constants.equalsInteger(visits.getType(),Constants.TWO))){ |
| | | //人脸评分 |
| | | FacePictureCheckRequest param = new FacePictureCheckRequest(); |
| | | String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); |
| | | param.setFacePicUrl(prefixUrl + visits.getFaceImg()); |
| | | BaseResponse<FacePictureCheckResponse> response = HKService.facePictureCheck(param); |
| | | if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,人脸评分获取数据失败~"); |
| | | } |
| | | FacePictureCheckResponse facePictureCheckResponse = response.getData(); |
| | | if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,人脸评分获取数据失败~"); |
| | | } |
| | | if(!facePictureCheckResponse.getCheckResult()){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage()); |
| | | } |
| | | } |
| | | |
| | | visitsMapper.insert(visits); |
| | | |
| | | //发起ERP审批申请 |
| | |
| | | |
| | | return visits.getId(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | if(Constants.equalsInteger(visits.getType(),Constants.ZERO) |
| | | || Constants.equalsInteger(visits.getType(),Constants.ONE)){ |
| | | if( visits.getIdcardType() == null |
| | | || StringUtils.isBlank( visits.getIdcardNo() ) ){ |
| | | || StringUtils.isBlank( visits.getIdcardNo() ) || StringUtils.isBlank(visits.getFaceImg()) ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,信息填写不正确!"); |
| | | } |
| | | } |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 访客权限组信息表Service实现 |
| | |
| | | delRetentionLis.add(visits.getMemberId()); |
| | | //如果是访客通行 |
| | | if(request.getData()!=null&&request.getData().getParamValues()!=null && |
| | | StringUtils.equals(request.getData().getParamValues().getInOrOut(),"1")){ |
| | | StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ |
| | | //如果是访客登记,录入人员的在场数据记录 |
| | | Retention r = getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()); |
| | | r.setCarNo(request.getData().getParamValues().getPlateNos()); |
| | |
| | | inoutDayCount.setInVisitorNum(Constants.formatIntegerNum(inoutDayCount.getInVisitorNum())+1); |
| | | } |
| | | if(request.getData()!=null&&request.getData().getParamValues()!=null && |
| | | StringUtils.equals(request.getData().getParamValues().getInOrOut(),"2")){ |
| | | !StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ |
| | | inoutDayCount.setOutVisitorNum(Constants.formatIntegerNum(inoutDayCount.getOutVisitorNum())+1); |
| | | } |
| | | } |
| | |
| | | event.setPhotoUrl(getHkImgUrl(detail.getFacePic())); |
| | | event.setPersonName(detail.getVisitorName()); |
| | | event.setCarNo(detail.getPlateNo()); |
| | | event.setRemark(JSONObject.toJSONString(request)); |
| | | event.setInvoicesNo(request.getData().getVisitorInvoices().getInvoicesNo());//访客单号 |
| | | event.setIdType(detail.getCertType()); |
| | | String idnum = detail.getCertNo(); |
| | |
| | | .last("limit 1" )); |
| | | if(cars!=null){ |
| | | event.setMemberId(cars.getMemberId()); |
| | | //自有车 查询当前是否有待签到的任务 |
| | | if(carsMapper.selectCount(new QueryWrapper<Cars>() |
| | | .lambda().eq(Cars::getCode,event.getPlateNos()) |
| | | .eq(Cars::getType,Constants.ONE) |
| | | .eq(Cars::getIsdeleted,Constants.ZERO) |
| | | )>Constants.ZERO){ |
| | | //查询车辆当前是否存在进行中的任务 |
| | | if( platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda() |
| | | .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) |
| | | .eq(PlatformJob::getIsdeleted,Constants.ZERO) |
| | | .in(PlatformJob::getStatus, |
| | | Constants.PlatformJobStatus.IN_WAIT.getKey(), |
| | | Constants.PlatformJobStatus.CALLED.getKey(), |
| | | Constants.PlatformJobStatus.WORKING.getKey(), |
| | | Constants.PlatformJobStatus.DONE.getKey(), |
| | | Constants.PlatformJobStatus.TRANSFERING.getKey(), |
| | | Constants.PlatformJobStatus.EXCEPTION.getKey(), |
| | | Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() |
| | | ) |
| | | )<Constants.ZERO){ |
| | | PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda() |
| | | .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) |
| | | .eq(PlatformJob::getIsdeleted,Constants.ZERO) |
| | | .in(PlatformJob::getStatus, |
| | | Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(), |
| | | Constants.PlatformJobStatus.WART_SIGN_IN.getKey() |
| | | ) |
| | | .orderByAsc(PlatformJob::getCreateDate) |
| | | .last(" limit 1") |
| | | ); |
| | | if(Objects.nonNull(platformJob)){ |
| | | platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey()); |
| | | platformJob.setArriveDate(new Date()); |
| | | platformJob.setSingType(Constants.TWO); |
| | | platformJob.setSignDate(new Date()); |
| | | List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null ")); |
| | | if(CollectionUtils.isEmpty(signList)){ |
| | | platformJob.setSignNum(Constants.ONE); |
| | | } else{ |
| | | int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList())); |
| | | platformJob.setSignNum(maxNumber + Constants.ONE); |
| | | } |
| | | platformJobMapper.updateById(platformJob); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | }else{ |
| | | Visits visits = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda() |
| | | .eq(Visits::getCarNos,event.getPlateNos()) |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * WMS平台对接Service实现 |
| | |
| | | job.setArriveDate(new Date()); |
| | | job.setSingType(Constants.TWO); |
| | | job.setSignDate(new Date()); |
| | | List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null ")); |
| | | if(CollectionUtils.isEmpty(signList)){ |
| | | job.setSignNum(Constants.ONE); |
| | | } else{ |
| | | int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList())); |
| | | job.setSignNum(maxNumber + Constants.ONE); |
| | | } |
| | | } |
| | | } |
| | | PlatformGroup group = platformGroupMapper.selectOne(new QueryWrapper<PlatformGroup>().lambda() |