|
|
@@ -1,5 +1,7 @@
|
|
|
package com.zd.smartlock.service.impl;
|
|
|
|
|
|
+import com.zd.chemical.util.SmsSydUtil;
|
|
|
+import com.zd.common.core.domain.R;
|
|
|
import com.zd.common.core.exception.ServiceException;
|
|
|
import com.zd.common.security.service.TokenService;
|
|
|
import com.zd.smartlock.domain.SlApplyApproval;
|
|
|
@@ -16,11 +18,15 @@ import com.zd.smartlock.mapper.SlUserRelationMapper;
|
|
|
import com.zd.smartlock.service.ISlApplyApprovalService;
|
|
|
import com.zd.smartlock.service.ISlUserRelationService;
|
|
|
import com.zd.smartlock.utils.SmartlockUtil;
|
|
|
+import com.zd.system.api.chemical.RemoteStockService;
|
|
|
import com.zd.system.api.domain.SysUser;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.zookeeper.Login;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
@@ -29,6 +35,7 @@ import java.util.*;
|
|
|
* @author zd
|
|
|
* @date 2022-09-02
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class SlApplyApprovalServiceImpl implements ISlApplyApprovalService
|
|
|
{
|
|
|
@@ -44,6 +51,10 @@ public class SlApplyApprovalServiceImpl implements ISlApplyApprovalService
|
|
|
|
|
|
@Autowired
|
|
|
private SlSubjectRelationMapper slSubjectRelationMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RemoteStockService remoteStockService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询申请审核
|
|
|
*
|
|
|
@@ -86,60 +97,73 @@ public class SlApplyApprovalServiceImpl implements ISlApplyApprovalService
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int insertSlApplyApproval(SlApplyApproval slApplyApproval)
|
|
|
{
|
|
|
- SysUser sysUser = tokenService.getLoginUser().getSysUser();
|
|
|
- //部门id
|
|
|
- slApplyApproval.setDeptId(sysUser.getDept().getDeptId());
|
|
|
- //部门名称
|
|
|
- slApplyApproval.setDeptName(sysUser.getDept().getDeptName());
|
|
|
- //审核人id
|
|
|
- slApplyApproval.setApprovaId(sysUser.getUserId());
|
|
|
- //审核人姓名
|
|
|
- slApplyApproval.setApprovaName(sysUser.getNickName());
|
|
|
- //审核时间
|
|
|
- slApplyApproval.setCretaTime(new Date());
|
|
|
-
|
|
|
- //查询申请记录
|
|
|
- SlOpendoorApply opendoorApply = slOpendoorApplyMapper.selectSlOpendoorApplyById(slApplyApproval.getApplyId());
|
|
|
-
|
|
|
- if(opendoorApply.getApplyStatus()==3){
|
|
|
- throw new ServiceException("该记录已驳回,无需审核!");
|
|
|
- }
|
|
|
- if(opendoorApply.getApplyNumber()==2){
|
|
|
- throw new ServiceException("该记录已有两次审核,无需再次审核!");
|
|
|
- }
|
|
|
- //通过
|
|
|
- if(slApplyApproval.getApprovaStatus()==1){
|
|
|
- opendoorApply.setApplyNumber(opendoorApply.getApplyNumber()+1);
|
|
|
- //审核通过,下发密码(第二次,审核通过的情况下)
|
|
|
+ int flg=0;
|
|
|
+ try {
|
|
|
+ SysUser sysUser = tokenService.getLoginUser().getSysUser();
|
|
|
+ //部门id
|
|
|
+ slApplyApproval.setDeptId(sysUser.getDept().getDeptId());
|
|
|
+ //部门名称
|
|
|
+ slApplyApproval.setDeptName(sysUser.getDept().getDeptName());
|
|
|
+ //审核人id
|
|
|
+ slApplyApproval.setApprovaId(sysUser.getUserId());
|
|
|
+ //审核人姓名
|
|
|
+ slApplyApproval.setApprovaName(sysUser.getNickName());
|
|
|
+ //审核时间
|
|
|
+ slApplyApproval.setCretaTime(new Date());
|
|
|
+
|
|
|
+ //查询申请记录
|
|
|
+ SlOpendoorApply opendoorApply = slOpendoorApplyMapper.selectSlOpendoorApplyById(slApplyApproval.getApplyId());
|
|
|
+
|
|
|
+ if(opendoorApply.getApplyStatus()==3){
|
|
|
+ throw new ServiceException("该记录已驳回,无需审核!");
|
|
|
+ }
|
|
|
if(opendoorApply.getApplyNumber()==2){
|
|
|
- //判断是否同一个人连续审核
|
|
|
- SlApplyApproval approval = new SlApplyApproval();
|
|
|
- approval.setApplyId(slApplyApproval.getApplyId());
|
|
|
- approval.setApprovaId(sysUser.getUserId());
|
|
|
- List<SlApplyApproval> applyVoList = slApplyApprovalMapper.selectSlApplyApprovalList(approval);
|
|
|
- if(applyVoList.size()>0){
|
|
|
- throw new ServiceException("您已审核过该条申请,无需重复审核!");
|
|
|
+ throw new ServiceException("该记录已有两次审核,无需再次审核!");
|
|
|
+ }
|
|
|
+ //通过
|
|
|
+ if(slApplyApproval.getApprovaStatus()==1){
|
|
|
+ opendoorApply.setApplyNumber(opendoorApply.getApplyNumber()+1);
|
|
|
+ //审核通过,下发密码(第二次,审核通过的情况下)
|
|
|
+ if(opendoorApply.getApplyNumber()==2){
|
|
|
+ //判断是否同一个人连续审核
|
|
|
+ SlApplyApproval approval = new SlApplyApproval();
|
|
|
+ approval.setApplyId(slApplyApproval.getApplyId());
|
|
|
+ approval.setApprovaId(sysUser.getUserId());
|
|
|
+ List<SlApplyApproval> applyVoList = slApplyApprovalMapper.selectSlApplyApprovalList(approval);
|
|
|
+ if(applyVoList.size()>0){
|
|
|
+ throw new ServiceException("您已审核过该条申请,无需重复审核!");
|
|
|
+ }
|
|
|
+ //审核通过,刷新审核状态
|
|
|
+ opendoorApply.setApplyStatus(2L);
|
|
|
+ //审核通过后,添加人员并且授权、短信发送
|
|
|
+ String str = authPower(opendoorApply.getId());
|
|
|
+ if(!"ok".equals(str)){
|
|
|
+ throw new ServiceException(str);
|
|
|
+ }
|
|
|
}
|
|
|
- //审核通过,刷新审核状态
|
|
|
- opendoorApply.setApplyStatus(2L);
|
|
|
- //审核通过后,添加人员并且授权
|
|
|
- String str = authPower(opendoorApply.getId());
|
|
|
- if(!"ok".equals(str)){
|
|
|
- throw new ServiceException(str);
|
|
|
- }
|
|
|
+ }else if(slApplyApproval.getApprovaStatus()==2){
|
|
|
+ //驳回
|
|
|
+ opendoorApply.setApplyNumber(opendoorApply.getApplyNumber()+1);
|
|
|
+ //修改申请表状态
|
|
|
+ opendoorApply.setApplyStatus(3L);
|
|
|
+
|
|
|
+ //申请人1短信发送通知
|
|
|
+ R r1= remoteStockService.sendSydSms("【实验室安全系统】"+opendoorApply.getSubjectName()+"-门禁远程授权申请已拒绝,请联系实验室管理人员。",3,opendoorApply.getId(),opendoorApply.getPhonenumber());
|
|
|
+ log.info("开门申请拒绝,人员1短信通知结果:"+r1);
|
|
|
+ //申请人2短信发送通知
|
|
|
+ R r2= remoteStockService.sendSydSms("【实验室安全系统】"+opendoorApply.getSubjectName()+"-门禁远程授权申请已拒绝,请联系实验室管理人员。",3,opendoorApply.getId(),opendoorApply.getPhonenumber2());
|
|
|
+ log.info("开门申请拒绝,人员2短信通知结果:"+r2);
|
|
|
}
|
|
|
- }else if(slApplyApproval.getApprovaStatus()==2){
|
|
|
- //驳回
|
|
|
- opendoorApply.setApplyNumber(opendoorApply.getApplyNumber()+1);
|
|
|
- //修改申请表状态
|
|
|
- opendoorApply.setApplyStatus(3L);
|
|
|
- }
|
|
|
- //申请表操作
|
|
|
- opendoorApply.setApprovalTime(new Date());
|
|
|
- opendoorApply.setApprovalUser(sysUser.getNickName());
|
|
|
+ //申请表操作
|
|
|
+ opendoorApply.setApprovalTime(new Date());
|
|
|
+ opendoorApply.setApprovalUser(sysUser.getNickName());
|
|
|
|
|
|
- slOpendoorApplyMapper.updateSlOpendoorApply(opendoorApply);
|
|
|
- return slApplyApprovalMapper.insertSlApplyApproval(slApplyApproval);
|
|
|
+ slOpendoorApplyMapper.updateSlOpendoorApply(opendoorApply);
|
|
|
+ flg= slApplyApprovalMapper.insertSlApplyApproval(slApplyApproval);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.info("申请审核异常"+e);
|
|
|
+ }
|
|
|
+ return flg;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -185,84 +209,104 @@ public class SlApplyApprovalServiceImpl implements ISlApplyApprovalService
|
|
|
* 审批通过后人员密码授权处理
|
|
|
* @param applyId 申请id
|
|
|
*/
|
|
|
- public String authPower(Long applyId){
|
|
|
-
|
|
|
+ public String authPower(Long applyId) throws Exception {
|
|
|
+ log.info("========开始门锁授权===========");
|
|
|
//人员1 授权结果
|
|
|
Boolean auths1=false;
|
|
|
//人员2授权结果
|
|
|
Boolean auths2=false;
|
|
|
//返回值
|
|
|
String strMsg="ok";
|
|
|
- //查询申请记录
|
|
|
- SlOpendoorApply opendoorApply = slOpendoorApplyMapper.selectSlOpendoorApplyById(applyId);
|
|
|
-
|
|
|
- SlSubjectRelationVo subjectRelation = new SlSubjectRelationVo();
|
|
|
- subjectRelation.setSubjectId(opendoorApply.getSubjectId());
|
|
|
- List<SlSubjectRelationVo> listsubRla = slSubjectRelationMapper.selectSlSubjectRelationList(subjectRelation);
|
|
|
- if(listsubRla.size()!=2){
|
|
|
- strMsg="该实验室暂未绑定双锁!";
|
|
|
- }
|
|
|
+ try {
|
|
|
+ //查询申请记录
|
|
|
+ SlOpendoorApply opendoorApply = slOpendoorApplyMapper.selectSlOpendoorApplyById(applyId);
|
|
|
|
|
|
- Map<String,Object> detalisMap = new HashMap<>();
|
|
|
- SlUser user = new SlUser();
|
|
|
- //学号、工号
|
|
|
- user.setPersoncode(opendoorApply.getUserCode());
|
|
|
- //姓名
|
|
|
- user.setPersonname(opendoorApply.getUserName());
|
|
|
- //性别 (0=女,1=男)
|
|
|
- user.setPersonsex(opendoorApply.getUserSex()==null?1+"":0+"");
|
|
|
- //人员类别(1=学生,2=教职工,3=临时人员)
|
|
|
- user.setPersontype("1");
|
|
|
- //电话
|
|
|
- user.setPersonmobile(opendoorApply.getPhonenumber());
|
|
|
- Map<String,Object> map1= SmartlockUtil.addUser(user,listsubRla.get(0).getLockRoomId());
|
|
|
-
|
|
|
- if(!SmartlockUtil.resultMsg.equals(map1.get("resultMsg").toString())){
|
|
|
- strMsg="人员:"+opendoorApply.getUserName()+",授权失败,原因:"+map1.get("resultMsg")+",请联系管理员";
|
|
|
- return strMsg;
|
|
|
- }else {
|
|
|
- auths1=true;
|
|
|
- }
|
|
|
+ SlSubjectRelationVo subjectRelation = new SlSubjectRelationVo();
|
|
|
+ subjectRelation.setSubjectId(opendoorApply.getSubjectId());
|
|
|
+ List<SlSubjectRelationVo> listsubRla = slSubjectRelationMapper.selectSlSubjectRelationList(subjectRelation);
|
|
|
+ if(listsubRla.size()!=2){
|
|
|
+ strMsg="该实验室暂未绑定双锁!";
|
|
|
+ }
|
|
|
|
|
|
+ Map<String,Object> detalisMap = new HashMap<>();
|
|
|
+ SlUser user = new SlUser();
|
|
|
+ //学号、工号
|
|
|
+ user.setPersoncode(opendoorApply.getUserCode());
|
|
|
+ //姓名
|
|
|
+ user.setPersonname(opendoorApply.getUserName());
|
|
|
+ //性别 (0=女,1=男)
|
|
|
+ user.setPersonsex(opendoorApply.getUserSex()==null?1+"":0+"");
|
|
|
+ //人员类别(1=学生,2=教职工,3=临时人员)
|
|
|
+ user.setPersontype("1");
|
|
|
+ //电话
|
|
|
+ user.setPersonmobile(opendoorApply.getPhonenumber());
|
|
|
+ log.info("=======人员1授权开始========");
|
|
|
+ Map<String,Object> map1= SmartlockUtil.addUser(user,listsubRla.get(0).getLockRoomId());
|
|
|
|
|
|
- //人员1 备注详情
|
|
|
- detalisMap.put("人员1",opendoorApply.getUserName());
|
|
|
- detalisMap.put("锁编1号",listsubRla.get(0).getLockCode());
|
|
|
- detalisMap.put("人员1密码",map1.get("password"));
|
|
|
-
|
|
|
- //学号、工号
|
|
|
- user.setPersoncode(opendoorApply.getUserCode2());
|
|
|
- //姓名
|
|
|
- user.setPersonname(opendoorApply.getUserName2());
|
|
|
- //性别 (0=女,1=男)
|
|
|
- user.setPersonsex(opendoorApply.getUserSex2()==null?1+"":0+"");
|
|
|
- //人员类别(1=学生,2=教职工,3=临时人员)
|
|
|
- user.setPersontype("1");
|
|
|
- //电话
|
|
|
- user.setPersonmobile(opendoorApply.getPhonenumber2());
|
|
|
- Map<String,Object> map2= SmartlockUtil.addUser(user,listsubRla.get(1).getLockRoomId());
|
|
|
-
|
|
|
- if(!SmartlockUtil.resultMsg.equals(map2.get("resultMsg").toString())){
|
|
|
- strMsg="人员:"+opendoorApply.getUserName()+",授权失败,原因:"+map2.get("resultMsg")+",请联系管理员";
|
|
|
- return strMsg;
|
|
|
- }else {
|
|
|
- auths2=true;
|
|
|
- }
|
|
|
+ if(!SmartlockUtil.resultMsg.equals(map1.get("resultMsg").toString())){
|
|
|
+ log.info("人员:"+opendoorApply.getUserName()+",授权失败,原因:"+map1.get("resultMsg")+",请联系管理员");
|
|
|
+ strMsg="人员:"+opendoorApply.getUserName()+",授权失败,原因:"+map1.get("resultMsg")+",请联系管理员";
|
|
|
+ return strMsg;
|
|
|
+ }else {
|
|
|
+ log.info("=======人员1授权成功========");
|
|
|
+ auths1=true;
|
|
|
+ }
|
|
|
|
|
|
- //人员入住办理成功,发送短信提示
|
|
|
- if(auths1 && auths2){
|
|
|
- System.out.println("=============双人授权成功,下发短信================");
|
|
|
- String msg1="开门申请成功,门锁编号:"+listsubRla.get(0).getLockCode()+"密码:"+map1.get("password");
|
|
|
- String msg2="开门申请成功,门锁编号:"+listsubRla.get(1).getLockCode()+"密码:"+map1.get("password");
|
|
|
- }
|
|
|
|
|
|
- //人员1 备注详情
|
|
|
- detalisMap.put("人员2",opendoorApply.getUserName());
|
|
|
- detalisMap.put("锁编2号",listsubRla.get(1).getLockCode());
|
|
|
- detalisMap.put("人员2密码",map2.get("password"));
|
|
|
+ //人员1 备注详情
|
|
|
+ detalisMap.put("人员1",opendoorApply.getUserName());
|
|
|
+ detalisMap.put("锁编1号",listsubRla.get(0).getLockCode());
|
|
|
+ detalisMap.put("人员1密码",map1.get("password"));
|
|
|
+
|
|
|
+ //学号、工号
|
|
|
+ user.setPersoncode(opendoorApply.getUserCode2());
|
|
|
+ //姓名
|
|
|
+ user.setPersonname(opendoorApply.getUserName2());
|
|
|
+ //性别 (0=女,1=男)
|
|
|
+ user.setPersonsex(opendoorApply.getUserSex2()==null?1+"":0+"");
|
|
|
+ //人员类别(1=学生,2=教职工,3=临时人员)
|
|
|
+ user.setPersontype("1");
|
|
|
+ //电话
|
|
|
+ user.setPersonmobile(opendoorApply.getPhonenumber2());
|
|
|
+
|
|
|
+ log.info("=======人员2授权开始========");
|
|
|
+ Map<String,Object> map2= SmartlockUtil.addUser(user,listsubRla.get(1).getLockRoomId());
|
|
|
+
|
|
|
+ //人员2 备注详情
|
|
|
+ detalisMap.put("人员2",opendoorApply.getUserName());
|
|
|
+ detalisMap.put("锁编2号",listsubRla.get(1).getLockCode());
|
|
|
+ detalisMap.put("人员2密码",map2.get("password"));
|
|
|
+ if(!SmartlockUtil.resultMsg.equals(map2.get("resultMsg").toString())){
|
|
|
+ log.info("人员2:"+opendoorApply.getUserName()+",授权失败,原因:"+map2.get("resultMsg")+",请联系管理员");
|
|
|
+ strMsg="人员:"+opendoorApply.getUserName()+",授权失败,原因:"+map2.get("resultMsg")+",请联系管理员";
|
|
|
+ return strMsg;
|
|
|
+ }else {
|
|
|
+ log.info("=======人员2授权成功========");
|
|
|
+ auths2=true;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- opendoorApply.setIllustrate(detalisMap.toString());
|
|
|
- slOpendoorApplyMapper.updateSlOpendoorApply(opendoorApply);
|
|
|
+
|
|
|
+ log.info("=======授权结束========人员1授权结果:"+auths1+" ,人员2授权结果:"+auths2);
|
|
|
+ //人员入住办理成功,发送短信提示
|
|
|
+ if(auths1 && auths2){
|
|
|
+ log.info("=============双人授权成功,下发短信================");
|
|
|
+ R p1 = remoteStockService.sendSydSms("【实验室安全系统】授权码:"+map1.get("password")+"("+SmartlockUtil.authsLength+"小时内有效),"+opendoorApply.getSubjectName()+"-门禁远程授权申请已通过,请勿泄露给他人。",3,applyId,new String[] {opendoorApply.getPhonenumber()});
|
|
|
+ log.info("人员1短信发送结果:"+p1);
|
|
|
+
|
|
|
+ R p2 = remoteStockService.sendSydSms("【实验室安全系统】授权码:"+map1.get("password")+"("+SmartlockUtil.authsLength+"小时内有效),"+opendoorApply.getSubjectName()+"-门禁远程授权申请已通过,请勿泄露给他人。",3,applyId,new String[] {opendoorApply.getPhonenumber2()});
|
|
|
+ log.info("人员2短信发送结果:"+p2);
|
|
|
+
|
|
|
+ /*String msg1="开门申请成功,门锁编号:"+listsubRla.get(0).getLockCode()+"密码:"+map1.get("password");
|
|
|
+ String msg2="开门申请成功,门锁编号:"+listsubRla.get(1).getLockCode()+"密码:"+map1.get("password");*/
|
|
|
+ }
|
|
|
+
|
|
|
+ opendoorApply.setIllustrate(detalisMap.toString());
|
|
|
+ slOpendoorApplyMapper.updateSlOpendoorApply(opendoorApply);
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ log.info("=======人员授权失败========"+e);
|
|
|
+ }
|
|
|
return strMsg;
|
|
|
}
|
|
|
}
|