| | |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.sinata.appointment.config.MiniStpUtil; |
| | | import com.sinata.appointment.constants.AppointmentBizConstants; |
| | | import com.sinata.appointment.constants.AppointmentOrderStatus; |
| | | import com.sinata.appointment.constants.ApprovalNodeCode; |
| | | import com.sinata.appointment.constants.ApprovalTaskStatus; |
| | | import com.sinata.appointment.constants.BizErrorCode; |
| | |
| | | vo.setOrderId(order.getId()); |
| | | vo.setOrderUuid(order.getUuid()); |
| | | vo.setOrderNo(order.getOrderNo()); |
| | | MpUser submitter = loadSubmitter(order.getSubmitterId()); |
| | | vo.setSubmitterName(resolveSubmitterName(submitter, order.getSubmitterId())); |
| | | vo.setSubmitTime(order.getCreateTime()); |
| | | vo.setTaskStatus(currentUserTask == null ? null : currentUserTask.getTaskStatus()); |
| | | vo.setNodeCode(currentUserTask == null ? null : currentUserTask.getNodeCode()); |
| | | vo.setNodeName(resolveNodeName(currentUserTask == null ? null : currentUserTask.getNodeCode())); |
| | |
| | | vo.setAccessAreaText(joinNames(parseStringList(order.getPassAccessAreaNames()))); |
| | | vo.setVisitTypeText(buildVisitTypeText(order)); |
| | | vo.setVisitReasonText(buildVisitReasonText(order)); |
| | | vo.setVisitReasonOther(order.getVisitReasonOther()); |
| | | vo.setVisitTimeText(buildVisitTimeText(order)); |
| | | vo.setPassAccessAreaIds(parseLongList(order.getPassAccessAreaIds())); |
| | | vo.setPassAccessAreaNames(parseStringList(order.getPassAccessAreaNames())); |
| | |
| | | vo.setPageMode(PAGE_MODE_GENERAL_READONLY); |
| | | if (currentUserTask == null) { |
| | | vo.setApprovalStatusText("已查看"); |
| | | return; |
| | | } |
| | | if (AppointmentOrderStatus.CANCELLED.equals(order.getStatus())) { |
| | | vo.setApprovalStatusText("已取消"); |
| | | return; |
| | | } |
| | | if (ApprovalTaskStatus.APPROVED.equals(currentUserTask.getTaskStatus())) { |
| | |
| | | vo.setGender(visitor == null ? null : visitor.getGender()); |
| | | vo.setCompanyName(visitor == null ? null : visitor.getVisitorCompany()); |
| | | vo.setMobileMasked( |
| | | MobileMaskUtil.mask( |
| | | firstNonBlank( |
| | | row.getMobile(), |
| | | visitor == null ? null : visitor.getVisitorMobile(), |
| | | null))); |
| | | firstNonBlank( |
| | | row.getMobile(), |
| | | visitor == null ? null : visitor.getVisitorMobile(), |
| | | null)); |
| | | String idCardPlain = |
| | | StringUtils.hasText(row.getIdCardCipher()) |
| | | ? SensitiveDataUtil.decryptIdCard(row.getIdCardCipher()) |
| | |
| | | |
| | | private String buildVisitReasonText(AppointmentOrder order) { |
| | | String code = trimToNull(order.getVisitReasonCode()); |
| | | if (AppointmentBizConstants.VISIT_REASON_OTHER.equalsIgnoreCase(code)) { |
| | | String other = trimToNull(order.getVisitReasonOther()); |
| | | return StringUtils.hasText(other) ? "其他-" + other : "其他"; |
| | | } |
| | | if (!StringUtils.hasText(code)) { |
| | | return "-"; |
| | | } |
| | |
| | | if (AppointmentBizConstants.TIME_MODE_SINGLE.equals(order.getVisitTimeMode())) { |
| | | String slotLabel = |
| | | switch (trimToNull(order.getVisitTimeSlot())) { |
| | | case AppointmentBizConstants.TIME_SLOT_ALL_DAY -> "全天"; |
| | | case AppointmentBizConstants.TIME_SLOT_AM -> "上午"; |
| | | case AppointmentBizConstants.TIME_SLOT_PM -> "下午"; |
| | | case AppointmentBizConstants.TIME_SLOT_ALL_DAY -> "00:00-23:59"; |
| | | case AppointmentBizConstants.TIME_SLOT_AM -> "00:00-11:59"; |
| | | case AppointmentBizConstants.TIME_SLOT_PM -> "12:00-23:59"; |
| | | default -> ""; |
| | | }; |
| | | if (order.getVisitStartDate() == null) { |
| | |
| | | }; |
| | | } |
| | | |
| | | private MpUser loadSubmitter(Long submitterId) { |
| | | if (submitterId == null) { |
| | | return null; |
| | | } |
| | | List<MpUser> users = |
| | | mpUserMapper.selectList( |
| | | new LambdaQueryWrapper<MpUser>() |
| | | .eq(MpUser::getDelFlag, 0) |
| | | .eq(MpUser::getId, submitterId) |
| | | .last("limit 1")); |
| | | return users.isEmpty() ? null : users.get(0); |
| | | } |
| | | |
| | | private String resolveSubmitterName(MpUser submitter, Long submitterId) { |
| | | if (submitter != null) { |
| | | String name = trimToNull(submitter.getNickName()); |
| | | if (StringUtils.hasText(name)) { |
| | | return name; |
| | | } |
| | | String mobile = trimToNull(submitter.getMobile()); |
| | | if (StringUtils.hasText(mobile)) { |
| | | return mobile; |
| | | } |
| | | } |
| | | return submitterId == null ? "发起人" : "用户" + submitterId; |
| | | } |
| | | |
| | | private List<Long> parseLongList(String json) { |
| | | if (!StringUtils.hasText(json)) { |
| | | return List.of(); |