|
|
@@ -21,8 +21,11 @@ import org.springblade.community.entity.Agency;
|
|
|
import org.springblade.community.entity.Residential;
|
|
|
import org.springblade.community.feign.IAgencyClient;
|
|
|
import org.springblade.community.feign.IResidentialClient;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.constant.BladeConstant;
|
|
|
+import org.springblade.core.tool.utils.StringUtil;
|
|
|
import org.springblade.device.entity.DoorDevice;
|
|
|
import org.springblade.device.feign.IDoorDeviceClient;
|
|
|
import org.springblade.device.service.IDoorDeviceService;
|
|
|
@@ -30,15 +33,26 @@ import org.springblade.enterprise.entity.Enterprise;
|
|
|
import org.springblade.enterprise.entity.Staff;
|
|
|
import org.springblade.enterprise.feign.IEnterpriseClient;
|
|
|
import org.springblade.enterprise.feign.IStaffClient;
|
|
|
+import org.springblade.estate.dto.AccessRecordDTO;
|
|
|
import org.springblade.estate.entity.AccessRecord;
|
|
|
+import org.springblade.estate.entity.GuestRecord;
|
|
|
+import org.springblade.estate.feign.IGuestAuthorizeClient;
|
|
|
+import org.springblade.estate.feign.IGuestRecordClient;
|
|
|
+import org.springblade.estate.service.IGuestRecordService;
|
|
|
import org.springblade.estate.vo.AccessRecordVO;
|
|
|
import org.springblade.estate.mapper.AccessRecordMapper;
|
|
|
import org.springblade.estate.service.IAccessRecordService;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.system.user.entity.User;
|
|
|
+import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import org.springframework.util.Assert;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.Date;
|
|
|
|
|
|
/**
|
|
|
@@ -60,6 +74,10 @@ public class AccessRecordServiceImpl extends BaseServiceImpl<AccessRecordMapper,
|
|
|
private IStaffClient staffClient;
|
|
|
@Autowired
|
|
|
private IDoorDeviceClient doorDeviceClient;
|
|
|
+ @Autowired
|
|
|
+ private IGuestRecordClient guestRecordClient;
|
|
|
+ @Autowired
|
|
|
+ private IUserClient userClient;
|
|
|
|
|
|
@Override
|
|
|
public IPage<AccessRecordVO> selectAccessRecordPage(IPage<AccessRecordVO> page, AccessRecordVO accessRecord) {
|
|
|
@@ -87,32 +105,104 @@ public class AccessRecordServiceImpl extends BaseServiceImpl<AccessRecordMapper,
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public R generateAccessRecord(AccessRecord accessRecord) {
|
|
|
+ public R generateAccessRecord(AccessRecordDTO accessRecord) {
|
|
|
+ DoorDevice doorDevice = doorDeviceClient.getByMacAddresses(accessRecord.getDeviceMac());
|
|
|
+ Agency agency = agencyClient.getById(doorDevice.getAgencyId());
|
|
|
+ Residential residential = residentialClient.getById(doorDevice.getResidentialId());
|
|
|
String userId = accessRecord.getUserId();
|
|
|
- if(userId.startsWith(CommonConstant.UserFlag.ENTERPRISE_STAFF_FLAG.getValue())){
|
|
|
+ if(accessRecord.getUserType().intValue() == CommonConstant.UserType.STAFF.getType()){
|
|
|
Staff staff = staffClient.getById(Long.parseLong(userId.substring(5)));
|
|
|
Enterprise enterprise = enterpriseClient.getById(staff.getEnterpriseId());
|
|
|
- Agency agency = agencyClient.getById(staff.getAgencyId());
|
|
|
- Residential residential = residentialClient.getById(staff.getResidentialId());
|
|
|
accessRecord.setEnterpriseId(staff.getEnterpriseId());
|
|
|
accessRecord.setEnterpriseName(enterprise.getEnterpriseName());
|
|
|
- accessRecord.setAgencyId(agency.getId());
|
|
|
- accessRecord.setAgencyName(agency.getName());
|
|
|
- accessRecord.setResidentialId(residential.getId());
|
|
|
- accessRecord.setResidentialName(residential.getName());
|
|
|
- accessRecord.setTenantId(staff.getTenantId());
|
|
|
- accessRecord.setUserId(staff.getId().toString());
|
|
|
- DoorDevice doorDevice = doorDeviceClient.getByMacAddresses(accessRecord.getDeviceMac());
|
|
|
- accessRecord.setDeviceId(doorDevice.getId());
|
|
|
- accessRecord.setDeviceName(doorDevice.getName());
|
|
|
- accessRecord.setDeviceAddress(doorDevice.getAddress());
|
|
|
- accessRecord.setOrgPosition(staff.getOrgPosition());
|
|
|
- accessRecord.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
- accessRecord.setCreateTime(new Date());
|
|
|
- accessRecord.setUpdateTime(new Date());
|
|
|
- this.baseMapper.insert(accessRecord);
|
|
|
+ accessRecord.setUserName(staff.getRealName());
|
|
|
+ accessRecord.setUserId(userId);
|
|
|
+ }else if(accessRecord.getUserType().intValue() == CommonConstant.UserType.ADMIN.getType()){
|
|
|
+ R<User> userR = userClient.userInfoById(Long.parseLong(userId.substring(6)));
|
|
|
+ User user = userR.getData();
|
|
|
+ accessRecord.setUserId(userId);
|
|
|
+ accessRecord.setUserName(user.getRealName());
|
|
|
+ }else if(accessRecord.getUserType().intValue() == CommonConstant.UserType.GUEST.getType()){
|
|
|
+ GuestRecord guestRecord = guestRecordClient.getById(Long.parseLong(userId.substring(3)));
|
|
|
+ Enterprise enterprise = enterpriseClient.getById(guestRecord.getEnterpriseId());
|
|
|
+ if(enterprise != null){
|
|
|
+ accessRecord.setEnterpriseId(guestRecord.getEnterpriseId());
|
|
|
+ accessRecord.setEnterpriseName(enterprise.getEnterpriseName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ accessRecord.setAgencyId(agency.getId());
|
|
|
+ accessRecord.setResidentialId(residential.getId());
|
|
|
+ accessRecord.setAgencyName(agency.getName());
|
|
|
+ accessRecord.setResidentialName(residential.getName());
|
|
|
+ accessRecord.setTenantId(doorDevice.getTenantId());
|
|
|
+ accessRecord.setCreateTime(new Date());
|
|
|
+ accessRecord.setUpdateTime(new Date());
|
|
|
+ accessRecord.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
+ accessRecord.setOrgPosition(doorDevice.getOrgPosition());
|
|
|
+ accessRecord.setDeviceId(doorDevice.getId());
|
|
|
+ accessRecord.setDeviceName(doorDevice.getName());
|
|
|
+ accessRecord.setDeviceAddress(doorDevice.getAddress());
|
|
|
+ int insert = this.baseMapper.insert(accessRecord);
|
|
|
+ return R.status(insert > 0? true : false);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R generateAccessRecord(String serialNum, Long userId, String userFace, Integer userType, Integer openType,
|
|
|
+ Integer openSuccess, String failReason, String commandSeq, String temperature, Date openDate) {
|
|
|
+ Agency agency = null;
|
|
|
+ Residential residential = null;
|
|
|
+ Enterprise enterprise = null;
|
|
|
+ Long enterpriseId = null;
|
|
|
+ String enterpriseName = null;
|
|
|
+ String userName = null;
|
|
|
+ DoorDevice doorDevice = doorDeviceClient.getByMacAddresses(serialNum);
|
|
|
+ if(userType.intValue() == CommonConstant.UserType.STAFF.getType()){
|
|
|
+ Staff staff = staffClient.getById(userId);
|
|
|
+ Assert.notNull(staff, "企业员工不存在");
|
|
|
+ agency = agencyClient.getById(staff.getAgencyId());
|
|
|
+ residential = residentialClient.getById(staff.getResidentialId());
|
|
|
+ enterprise = enterpriseClient.getById(staff.getEnterpriseId());
|
|
|
+ enterpriseId = enterprise.getId();
|
|
|
+ enterpriseName = enterprise.getEnterpriseName();
|
|
|
+ userName = staff.getRealName();
|
|
|
+ }else if(userType.intValue() == CommonConstant.UserType.GUEST.getType()){
|
|
|
+ GuestRecord guest = guestRecordClient.getById(userId);
|
|
|
+ Assert.notNull(guest, "访客记录不存在");
|
|
|
+ agency = agencyClient.getById(guest.getAgencyId());
|
|
|
+ residential = residentialClient.getById(guest.getResidentialId());
|
|
|
+ enterprise = enterpriseClient.getById(guest.getEnterpriseId());
|
|
|
+ enterpriseId = enterprise.getId();
|
|
|
+ enterpriseName = enterprise.getEnterpriseName();
|
|
|
+ userName = guest.getGuestName();
|
|
|
+ }else if(userType.intValue() == CommonConstant.UserType.ADMIN.getType()){
|
|
|
+ agency = agencyClient.getById(doorDevice.getAgencyId());
|
|
|
+ residential = residentialClient.getById(doorDevice.getResidentialId());
|
|
|
+ BladeUser user = AuthUtil.getUser();
|
|
|
+ if(user != null){
|
|
|
+ userName = user.getUserName();
|
|
|
+ }
|
|
|
}
|
|
|
- return R.status(true);
|
|
|
+ AccessRecord record = new AccessRecord();
|
|
|
+ record.setAgencyId(agency.getId());
|
|
|
+ record.setAgencyName(agency.getName());
|
|
|
+ record.setResidentialId(residential.getId());
|
|
|
+ record.setResidentialName(residential.getName());
|
|
|
+ record.setEnterpriseId(enterpriseId);
|
|
|
+ record.setEnterpriseName(enterpriseName);
|
|
|
+ record.setUserName(userName);
|
|
|
+ record.setTenantId(residential.getTenantId());
|
|
|
+ record.setFaceUrl(userFace);
|
|
|
+ record.setOpenType(openType);
|
|
|
+ record.setOpenSuccess(openSuccess);
|
|
|
+ record.setFailReason(failReason);
|
|
|
+ record.setDeviceAddress(doorDevice.getAddress());
|
|
|
+ record.setDeviceMac(doorDevice.getMacAddress());
|
|
|
+ record.setDeviceId(doorDevice.getId());
|
|
|
+ record.setOrgPosition(residential.getOrgPosition());
|
|
|
+ record.setCommandSeq(commandSeq);
|
|
|
+ record.setTemperature(StringUtil.isNoneBlank(temperature) ? new BigDecimal(temperature).compareTo(BigDecimal.ZERO) == 1 ? temperature : null : null);
|
|
|
+ record.setOpenTime(openDate);
|
|
|
+ return R.status(this.save(record));
|
|
|
}
|
|
|
|
|
|
}
|