| | |
| | | package com.ruoyi.web.controller.api; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.common.core.controller.BaseController; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | |
| | | import com.ruoyi.system.domain.Employee; |
| | | import com.ruoyi.system.domain.SysVisitArea; |
| | | import com.ruoyi.system.domain.SysVisitorRecord; |
| | | import com.ruoyi.system.domain.vo.AreasList; |
| | | import com.ruoyi.system.dto.SysVisitorIdCardOutRequest; |
| | | import com.ruoyi.system.dto.SysVisitorRecordAddRequest; |
| | | import com.ruoyi.system.mapper.EmployeeMapper; |
| | |
| | | import com.ruoyi.system.mapper.SysVisitorRecordMapper; |
| | | import com.ruoyi.system.service.ISysVisitAreaService; |
| | | import com.ruoyi.web.controller.service.SysVisitorRecordService; |
| | | import com.ruoyi.web.controller.service.VisitorRegisterSyncService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | | @RequestMapping("/api/visitorRecord") |
| | | @Api(tags = "现场访客登记-签离") |
| | | public class SysApiVisitorRecordController extends BaseController { |
| | | @Autowired |
| | | private VisitorRegisterSyncService visitorRegisterSyncService; |
| | | @Autowired |
| | | private SysVisitorRecordService sysVisitorRecordService; |
| | | @Autowired |
| | |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.joining(",")); |
| | | |
| | | // ====== 新增:构建 areas 数组 ====== |
| | | List<AreasList> areasList = Arrays.stream(visitAreaIds) |
| | | .map(String::trim) |
| | | .filter(StringUtils::isNotEmpty) |
| | | .map(id -> { |
| | | SysVisitArea area = sysVisitAreaMapper.selectById(Long.parseLong(id)); |
| | | if (area == null) { |
| | | return null; |
| | | } |
| | | AreasList areas = new AreasList(); |
| | | areas.setAreaCode(area.getAreaCode()); |
| | | areas.setAreaName(area.getAreaName()); |
| | | return areas; |
| | | }) |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toList()); |
| | | |
| | | if (!areasList.isEmpty()) { |
| | | record.setAreasList(areasList); |
| | | } |
| | | |
| | | // 使用 visitArea |
| | | if (StringUtils.isNotEmpty(visitArea)) { |
| | | record.setVisitAreaNames(visitArea); |
| | |
| | | } |
| | | |
| | | record.setRegisterNo(generateRegisterNo());//登记编号 |
| | | record.setRegisterType("ONSITE");//现场登记 |
| | | // record.setRegisterType("ONSITE");//现场登记 |
| | | record.setRegisterSource("访客机"); |
| | | record.setStatus("VISITING");//来访中 |
| | | record.setRegisterTime(new Date()); |
| | | record.setCreateTime(new Date()); |
| | | record.setDelFlag("0"); |
| | | |
| | | // ================= 同步到对端服务器 ================= |
| | | try { |
| | | AjaxResult syncResult = visitorRegisterSyncService.syncVisitorRegister(record); |
| | | |
| | | if (syncResult.isSuccess()) { |
| | | logger.info("访客登记数据已同步到对端,远程ID:{}", syncResult.get("data")); |
| | | // 可将远程ID保存到本地记录 |
| | | // record.setRemoteId(syncResult.getRemoteId()); |
| | | UpdateWrapper<SysVisitorRecord> wrapper = new UpdateWrapper<>(); |
| | | wrapper.eq("record_id", record.getRecordId()); // 指定ID条件 |
| | | visitorRecordMapper.update(record, wrapper); |
| | | } else { |
| | | String msg = (String) syncResult.get("msg"); |
| | | logger.error("访客登记同步失败:{}", msg); |
| | | // 可选择是否允许本地登记成功但同步失败 |
| | | // 如果要保证数据一致性,这里可以抛出异常回滚事务 |
| | | throw new ServiceException(msg); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("访客登记同步异常", e); |
| | | throw new ServiceException("服务器登记失败"); |
| | | } |
| | | |
| | | int rows = visitorRecordMapper.insert(record); |
| | | |
| | | sysVisitorRecordService.registerVisitor(record); |
| | | |
| | | if (rows > 0) { |
| | | return AjaxResult.success(record); |
| | | } |
| | | |
| | | return AjaxResult.error("登记失败"); |
| | | } |
| | | |
| | |
| | | visitorRecord.setStatus(record.getStatus()); |
| | | visitorRecord.setRecordId(record.getRecordId()); |
| | | visitorRecord.setSignTime(new Date()); |
| | | visitorRecordMapper.updateById(visitorRecord); |
| | | |
| | | UpdateWrapper<SysVisitorRecord> wrapperUpdate = new UpdateWrapper<>(); |
| | | wrapperUpdate.eq("record_id", visitorRecord.getRecordId()); // 指定ID条件 |
| | | visitorRecordMapper.update(visitorRecord, wrapperUpdate); |
| | | |
| | | return success(); |
| | | } |