|
@@ -10,6 +10,7 @@ import com.zd.common.security.service.TokenService;
|
|
|
import com.zd.smartlock.domain.SlOpendoorApply;
|
|
import com.zd.smartlock.domain.SlOpendoorApply;
|
|
|
import com.zd.smartlock.domain.SlSubjectRelation;
|
|
import com.zd.smartlock.domain.SlSubjectRelation;
|
|
|
import com.zd.smartlock.domain.SlUserRelation;
|
|
import com.zd.smartlock.domain.SlUserRelation;
|
|
|
|
|
+import com.zd.smartlock.domain.api.SlUser;
|
|
|
import com.zd.smartlock.domain.vo.SlOpendoorApplyVo;
|
|
import com.zd.smartlock.domain.vo.SlOpendoorApplyVo;
|
|
|
import com.zd.smartlock.domain.vo.SlSubjectRelationVo;
|
|
import com.zd.smartlock.domain.vo.SlSubjectRelationVo;
|
|
|
import com.zd.smartlock.mapper.SlOpendoorApplyMapper;
|
|
import com.zd.smartlock.mapper.SlOpendoorApplyMapper;
|
|
@@ -17,6 +18,7 @@ import com.zd.smartlock.mapper.SlSubjectRelationMapper;
|
|
|
import com.zd.smartlock.mapper.SlUserRelationMapper;
|
|
import com.zd.smartlock.mapper.SlUserRelationMapper;
|
|
|
import com.zd.smartlock.service.ISlOpendoorApplyService;
|
|
import com.zd.smartlock.service.ISlOpendoorApplyService;
|
|
|
import com.zd.smartlock.service.ISlUserRelationService;
|
|
import com.zd.smartlock.service.ISlUserRelationService;
|
|
|
|
|
+import com.zd.smartlock.utils.SmartlockUtil;
|
|
|
import com.zd.system.api.RemoteUserService;
|
|
import com.zd.system.api.RemoteUserService;
|
|
|
import com.zd.system.api.chemical.RemoteStockService;
|
|
import com.zd.system.api.chemical.RemoteStockService;
|
|
|
import com.zd.system.api.domain.SysUser;
|
|
import com.zd.system.api.domain.SysUser;
|
|
@@ -26,9 +28,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.Date;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 申请开门Service业务层处理
|
|
* 申请开门Service业务层处理
|
|
@@ -139,20 +139,12 @@ public class SlOpendoorApplyServiceImpl implements ISlOpendoorApplyService {
|
|
|
slOpendoorApply.setUserSex(sysUser.getSex() == null ? 1 : Integer.valueOf(sysUser.getSex()));
|
|
slOpendoorApply.setUserSex(sysUser.getSex() == null ? 1 : Integer.valueOf(sysUser.getSex()));
|
|
|
slOpendoorApply.setPhonenumber(sysUser.getPhonenumber());
|
|
slOpendoorApply.setPhonenumber(sysUser.getPhonenumber());
|
|
|
slOpendoorApply.setCreatTime(new Date());
|
|
slOpendoorApply.setCreatTime(new Date());
|
|
|
-
|
|
|
|
|
slOpendoorApplyMapper.insertSlOpendoorApply(slOpendoorApply);
|
|
slOpendoorApplyMapper.insertSlOpendoorApply(slOpendoorApply);
|
|
|
-
|
|
|
|
|
- //发送短信通知实验室负责人
|
|
|
|
|
- String[] strPhoe = slOpendoorApply.getSafeUserPhone().split(",");
|
|
|
|
|
- if (strPhoe.length > 0) {
|
|
|
|
|
- log.info("申请完毕实验室负责人短信发送");
|
|
|
|
|
- R r1= remoteStockService.sendSydSms(
|
|
|
|
|
- "【实验室安全系统】" + slOpendoorApply.getUserName() + "、" +
|
|
|
|
|
- slOpendoorApply.getUserName2() +
|
|
|
|
|
- slOpendoorApply.getSubjectName() +
|
|
|
|
|
- "-门禁远程授权,短信回复“1”确认授权,如拒绝请回复“0”。",
|
|
|
|
|
- 3, slOpendoorApply.getId(), strPhoe);
|
|
|
|
|
- log.info("短信发送结果:"+r1);
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ //授权并且发送短信通知实验室门锁对应的安全负责人
|
|
|
|
|
+ authPowerNew(slOpendoorApply.getId());
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.info("授权失败:"+e);
|
|
|
}
|
|
}
|
|
|
return 1;
|
|
return 1;
|
|
|
}
|
|
}
|
|
@@ -192,4 +184,147 @@ public class SlOpendoorApplyServiceImpl implements ISlOpendoorApplyService {
|
|
|
public int deleteSlOpendoorApplyById(Long id) {
|
|
public int deleteSlOpendoorApplyById(Long id) {
|
|
|
return slOpendoorApplyMapper.deleteSlOpendoorApplyById(id);
|
|
return slOpendoorApplyMapper.deleteSlOpendoorApplyById(id);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /***
|
|
|
|
|
+ * 门锁申请重新授权
|
|
|
|
|
+ * @param id
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public String againAuth(Long id) {
|
|
|
|
|
+ String str="";
|
|
|
|
|
+ try {
|
|
|
|
|
+ str = authPowerNew(id);
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ log.error("重新授权失败:"+e);
|
|
|
|
|
+ }
|
|
|
|
|
+ return str;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /***
|
|
|
|
|
+ * 审批通过后人员密码授权处理
|
|
|
|
|
+ * @param applyId 申请id
|
|
|
|
|
+ */
|
|
|
|
|
+ public String authPowerNew(Long applyId) throws Exception {
|
|
|
|
|
+ log.info("========开始门锁授权===========");
|
|
|
|
|
+ //人员1 授权结果
|
|
|
|
|
+ Boolean auths1=false;
|
|
|
|
|
+ //人员2授权结果
|
|
|
|
|
+ Boolean auths2=false;
|
|
|
|
|
+ //返回值
|
|
|
|
|
+ String strMsg="ok";
|
|
|
|
|
+ try {
|
|
|
|
|
+ //查询申请记录
|
|
|
|
|
+ SlOpendoorApply opendoorApply = slOpendoorApplyMapper.selectSlOpendoorApplyById(applyId);
|
|
|
|
|
+
|
|
|
|
|
+ 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());
|
|
|
|
|
+
|
|
|
|
|
+ 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;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //人员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;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ log.info("=======授权结束========人员1授权结果:"+auths1+" ,人员2授权结果:"+auths2);
|
|
|
|
|
+ //人员入住办理成功,发送短信提示
|
|
|
|
|
+ if(auths1 && auths2){
|
|
|
|
|
+ log.info("=============双人授权成功,下发短信================");
|
|
|
|
|
+ SlSubjectRelationVo relationVo = new SlSubjectRelationVo();
|
|
|
|
|
+ relationVo.setSubjectId(opendoorApply.getSubjectId());
|
|
|
|
|
+ List<SlSubjectRelationVo> relist = slSubjectRelationMapper.selectSlSubjectRelationList(relationVo);
|
|
|
|
|
+ if(relist.size()<2){
|
|
|
|
|
+ log.info("该实验室暂未关联双门锁。");
|
|
|
|
|
+ throw new ServiceException("该实验室暂未关联双门锁。");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(StringUtils.isNotEmpty(relist.get(0).getSafeUserPhone())){
|
|
|
|
|
+ R r1= remoteStockService.sendSydSms(
|
|
|
|
|
+ "【实验室安全系统】" + opendoorApply.getUserName() + "申请" +
|
|
|
|
|
+ opendoorApply.getSubjectName() +
|
|
|
|
|
+ "-门禁远程授权,手机号:"+opendoorApply.getPhonenumber()+",授权码:"+map1.get("password")+
|
|
|
|
|
+ "("+ SmartlockUtil.authsLength+"小时内有效),请勿泄露给他人。",
|
|
|
|
|
+ 3, opendoorApply.getId(), relist.get(0).getSafeUserPhone());
|
|
|
|
|
+ log.info("人员1短信发送结果:"+r1);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ log.info("安全负责人电话为空:"+relist.get(0).getSafeUserName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(StringUtils.isNotEmpty(relist.get(1).getSafeUserPhone())){
|
|
|
|
|
+ R r2= remoteStockService.sendSydSms(
|
|
|
|
|
+ "【实验室安全系统】" + opendoorApply.getUserName2() + "申请" +
|
|
|
|
|
+ opendoorApply.getSubjectName() +
|
|
|
|
|
+ "-门禁远程授权,手机号:"+opendoorApply.getPhonenumber2()+",授权码:"+map2.get("password")+
|
|
|
|
|
+ "("+ SmartlockUtil.authsLength+"小时内有效),请勿泄露给他人。",
|
|
|
|
|
+ 3, opendoorApply.getId(), relist.get(1).getSafeUserPhone());
|
|
|
|
|
+ log.info("人员2短信发送结果:"+r2);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ log.info("安全负责人电话为空:"+relist.get(1).getSafeUserName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ opendoorApply.setIllustrate(detalisMap.toString());
|
|
|
|
|
+ slOpendoorApplyMapper.updateSlOpendoorApply(opendoorApply);
|
|
|
|
|
+
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ log.info("=======人员授权失败========"+e);
|
|
|
|
|
+ }
|
|
|
|
|
+ return strMsg;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|