This commit is contained in:
Mauve
2026-09-15 17:04:12 +08:00
parent 6ce4e4a166
commit 2ae9565175
31 changed files with 663 additions and 70 deletions
@@ -0,0 +1,182 @@
{
"exportName": "EXPORT_APPROVAL_ROUTING",
"exportPages": [{
"sheetIndx": 0,
"sheetName": "Approval Routing",
"dataElements": [{
"blockName": "masterData",
"offsetRow": 0,
"offsetCol": 0,
"elementType": 2,
"isShowHeader": true,
"headerAlign": "center",
"headerColor": "#f5ebd9",
"headerTextColor": "#000000",
"textAlign": "left",
"textColor": "#000000",
"objClassName": "com.mgm.mcrm.reservation.dtos.BookingsViewDto",
"columnDefs": [
{
"columnHeader": "Id",
"attrName": "id",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Status",
"attrName": "approveStatus",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Create Time",
"attrName": "createdAt",
"dataType": "Date",
"formatVal": "yyyy-MM-dd HH:mm:ss",
"columnWidth": 30
},
{
"columnHeader": "Conf#",
"attrName": "confirmationNo",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Patron ID",
"attrName": "playerId",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Player Name",
"attrName": "memberLastName",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Tier",
"attrName": "tier",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Property",
"attrName": "propertyName",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Room Catagory",
"attrName": "room",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Room Type",
"attrName": "roomTypeCode",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Type",
"attrName": "bookType",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Check in Date",
"attrName": "checkinDate",
"dataType": "Date",
"formatVal": "yyyy-MM-dd",
"columnWidth": 30
},
{
"columnHeader": "Check Out Date",
"attrName": "checkoutDate",
"dataType": "Date",
"formatVal": "yyyy-MM-dd",
"columnWidth": 30
},
{
"columnHeader": "Continuous / Overlap Booking(C/I to C/O)",
"attrName": "overlapBooking",
"dataType": "String",
"columnWidth": 40
},
{
"columnHeader": "Booker Team",
"attrName": "sectionName",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Booker ID",
"attrName": "createdBy",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Booker Name",
"attrName": "booker",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Sharer",
"attrName": "sharer",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Remarks",
"attrName": "remark",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Ranking By Player Evaluation",
"attrName": "dailyTheoProfit",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Approval Remark",
"attrName": "mscRemark",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Received Approver ID",
"attrName": "approverId",
"dataType": "String",
"columnWidth": 25
},
{
"columnHeader": "Received Approver",
"attrName": "approverName",
"dataType": "String",
"columnWidth": 25
},
{
"columnHeader": "Approval Reason",
"attrName": "approvalReason",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Approver",
"attrName": "approvedId",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Approved Date",
"attrName": "approvedAt",
"dataType": "Date",
"formatVal": "yyyy-MM-dd HH:mm:ss",
"columnWidth": 30
}
]
}]
}]
}
@@ -39,6 +39,12 @@
"dataType": "String",
"columnWidth":30
},
{
"columnHeader":"Category",
"attrName": "category",
"dataType": "String",
"columnWidth":30
},
{
"columnHeader":"Created Time",
"attrName": "createdAt",
@@ -14,7 +14,7 @@
"headerTextColor":"#000000",
"textAlign":"left",
"textColor":"#000000",
"objClassName": "com.mgm.mcrm.reservation.models.BookingsView",
"objClassName": "com.mgm.mcrm.reservation.dtos.BookingsViewDto",
"columnDefs": [{
"columnHeader":"Failure ID",
"attrName": "id",
@@ -91,7 +91,7 @@
},
{
"columnHeader":"Section",
"attrName": "teamName",
"attrName": "sectionName",
"dataType": "String",
"columnWidth":20
},
@@ -22,6 +22,18 @@
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"User Division",
"attrName": "divisionName",
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"Department",
"attrName": "departmentName",
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"Section",
"attrName": "sectionName",
@@ -5,7 +5,7 @@
"dataElements": [{
"offsetRow": 1,
"offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.BedTypeMappingImportRow",
"objClassName": "com.mgm.mcrm.basesetting.room.dtos.request.BedTypeMappingImportRowRequest",
"columnDefs": [{
"columnHeader":"Property",
"checkHeader":true,
@@ -33,6 +33,13 @@
"headerRowIdx":0,
"attrName": "bedTypeName",
"dataType": "String"
},
{
"columnHeader":"Category",
"checkHeader":true,
"headerRowIdx":0,
"attrName": "category",
"dataType": "String"
}
]
}]
@@ -5,7 +5,7 @@
"dataElements": [{
"offsetRow": 1,
"offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.OtherUserMappingImportRow",
"objClassName": "com.mgm.mcrm.basesetting.team.dtos.response.OtherUserMappingImportRowResponse",
"columnDefs": [
{
"columnHeader":"Booking Type",
@@ -890,7 +890,7 @@ public class OtherAllotmentService {
for(CfgOtherAllotmentView exportItem:listCfgOtherAllotmentView) {
//--Set special content for export
if(exportItem.getProperty()!=null) {
exportItem.setPropertyName(exportItem.getProperty().getCode());
exportItem.setPropertyName(exportItem.getProperty().getName());
}
if(exportItem.getBookDate()!=null) {
exportItem.setBookDateText(exportItem.getBookDate().format(dtFormat));
@@ -5,19 +5,19 @@ import java.util.List;
import com.mgm.mcrm.appsetting.dtos.CfgSettingsDto;
import com.mgm.mcrm.appsetting.dtos.request.CfgSettingsRequest;
import com.mgm.mcrm.appsetting.dtos.response.CfgSettingsResponse;
import com.mgm.mcrm.appsetting.models.CfgSettings;
import com.mgm.mcrm.appsetting.services.SettingService;
import com.mgm.mcrm.common.annotation.security.CheckPermissions;
import com.mgm.mcrm.common.utils.LogUtil;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import com.mgm.mcrm.common.annotation.logging.OperationLog;
import com.mgm.mcrm.common.annotation.security.CheckPermission;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@Tag(name = "App Setting", description = "APIs for App Setting functions")
@RestController
@@ -68,4 +68,31 @@ public class SettingController {
return ResponseEntity.ok(response);
}
@CheckPermissions(routerIds={"00330", "00530"},permissionCodes={"MODIFY", "MODIFY"})
@OperationLog(eventCode="appsetting_update",actionName="Update AppSetting")
@RequestMapping(value = "/app/appsetting/save_calendar_setting", method = RequestMethod.POST, produces = "application/json;charset=UTF-8",consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<CfgSettingsResponse> updateCalendarCfgSettings(HttpServletRequest request, @RequestBody List<CfgSettingsDto> cfgSettings) {
boolean isSuccess = false;
String processMessage="";
String errorCode="";
CfgSettingsResponse response = new CfgSettingsResponse();
//--
boolean saveResult = settingService.saveAll(cfgSettings);
if(saveResult==true) {
isSuccess=true;
processMessage = "Update Successed";
response.setSuccess(true);
}else {
processMessage = "Update Failed with Error:";
errorCode = "ERR_DATA_FOUND";
}
response.setMessage(processMessage);
response.setErrorCode(errorCode);
response.setSuccess(isSuccess);
return ResponseEntity.ok(response);
}
}
@@ -20,4 +20,7 @@ public class CfgPropertiesDto {
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private int status;
private Integer showCalendar;
private String calendarName;
private Integer calendarOrder;
}
@@ -22,4 +22,10 @@ public class CreateUpdatePropertyRequest {
private String dlPropertyId;
private int status = 1;
private String calendarName;
private Integer calendarOrder;
private Integer showCalendar;
}
@@ -52,4 +52,11 @@ public class CfgProperties implements Serializable {
@Column(name = "status")
private int status;
@Column(name="show_calendar", nullable = false)
private Integer showCalendar;
@Column(name="calendar_name", length = 256)
private String calendarName;
@Column(name="calendar_order")
private Integer calendarOrder;
}
@@ -219,7 +219,6 @@ public class BedTypeController {
}
@CheckPermissions(routerIds = {"00320", "00520"}, permissionCodes = {"IMPORT"})
@CheckPermission(routerId="00320",permissionCode="IMPORT")
@RequestMapping(value = "/upload_excel", method = RequestMethod.POST)
public AjaxResult uploadExcel(HttpServletRequest request, HttpServletResponse response,
@RequestBody(required=false) MultipartFile[] files) throws Exception{
@@ -31,5 +31,8 @@ public class CfgRoomsDto {
private List<CfgRoomTypesDto> roomRoomType ;
private CfgPropertiesDto propertyObj;
private String category;
private String calendarName;
private Integer calendarOrder;
private Integer showCalendar;
private Integer defaultShowCalendar;
}
@@ -15,4 +15,5 @@ public class BedTypeMappingImportRowRequest {
private Integer propertyId;
private Integer roomId;
private List<Integer> roomTypeIds;
private String category;
}
@@ -34,4 +34,12 @@ public class CreateUpdateRoomRequest {
private List<CfgRoomsRoomTypes> roomRoomType;
private String category;
private String calendarName;
private Integer showCalendar;
private Integer defaultShowCalendar;
private Integer calendarOrder;
}
@@ -74,4 +74,13 @@ public class CfgRooms implements Serializable {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "property_id", insertable = false, updatable = false)
private CfgProperties propertyObj;
@Column(name="show_calendar", nullable = false)
private Integer showCalendar;
@Column(name="calendar_name", length = 256)
private String calendarName;
@Column(name="calendar_order")
private Integer calendarOrder;
@Column(name="default_show_calendar")
private Integer defaultShowCalendar;
}
@@ -425,19 +425,20 @@ public class BedTypeService {
}
return matchId;
}
private int getMatchRoomId(List<CfgRooms> rooms, int propertyId, String name) {
private int getMatchRoomId(List<CfgRooms> rooms, int propertyId, String name, String category) {
int matchId=0;
for(CfgRooms item:rooms) {
if(item.getPropertyId()!=null
&& item.getPropertyId().intValue()==propertyId
&& item.getName() != null && item.getName().equalsIgnoreCase(name)) {
&& item.getPropertyId()==propertyId
&& item.getName() != null && item.getName().equalsIgnoreCase(name)
&& item.getCategory() != null && item.getCategory().equalsIgnoreCase(category)) {
matchId = item.getId().intValue();
break;
}
}
return matchId;
}
private int getMatchRoomTypeId(List<CfgRooms> rooms, int roomId, String roomTypeName) {
private int getMatchRoomTypeId(List<CfgRooms> rooms, int roomId, String roomTypeName, String category) {
int matchId=0;
for(CfgRooms item:rooms) {
if(item.getId()!=null
@@ -445,7 +446,8 @@ public class BedTypeService {
&& item.getRoomRoomType()!=null) {
List<CfgRoomTypes> roomRoomType = item.getRoomRoomType();
for(CfgRoomTypes rItem:roomRoomType) {
if(rItem.getCode() != null && rItem.getCode().equalsIgnoreCase(roomTypeName)) {
if(rItem.getCode() != null && rItem.getCode().equalsIgnoreCase(roomTypeName)
&& rItem.getCategory() != null && rItem.getCategory().equalsIgnoreCase(category)) {
matchId = rItem.getId().intValue();
break;
}
@@ -508,7 +510,7 @@ public class BedTypeService {
isPassed =false;
}else {
pItem.setPropertyId(propertyId);
int roomId = this.getMatchRoomId(roomList,propertyId, pItem.getRoomName());
int roomId = this.getMatchRoomId(roomList,propertyId, pItem.getRoomName(), pItem.getCategory());
if(roomId<=0) {
errMsg+="Room ["+pItem.getRoomName()+"] not found;";
isPassed =false;
@@ -519,7 +521,7 @@ public class BedTypeService {
for(String roomTypeVal:roomTypeVals) {
roomTypeVal = roomTypeVal.trim();
if(StringUtils.isNotBlank(roomTypeVal)) {
int matchTypeId = this.getMatchRoomTypeId(roomList,roomId, roomTypeVal);
int matchTypeId = this.getMatchRoomTypeId(roomList,roomId, roomTypeVal, pItem.getCategory());
if(matchTypeId<=0) {
isPassed =false;
errMsg+="Room Type ["+roomTypeVal+"] not found;";
@@ -620,6 +622,7 @@ public class BedTypeService {
newBedType.setRoomId(pItem.getRoomId());
newBedType.setPropertyId(pItem.getPropertyId());
newBedType.setSelectRoomTypeIds(pItem.getRoomTypeIds());
newBedType.setCategory(pItem.getCategory());
this.createBedTypeMapping(newBedType);
}
result.setSuccess(true);
@@ -150,7 +150,6 @@ public class OtherUserMappingController {
}
@CheckPermissions(routerIds = {"00327", "00527"}, permissionCodes = {"IMPORT"})
@CheckPermission(routerId = "00327", permissionCode = "IMPORT")
@RequestMapping(value = "/upload_excel", method = RequestMethod.POST)
public AjaxResult uploadExcel(HttpServletRequest request, HttpServletResponse response,
@RequestBody(required = false) MultipartFile[] files) throws Exception {
@@ -42,9 +42,6 @@ import com.mgm.mcrm.common.utils.DaoUtil;
import com.mgm.mcrm.common.utils.ExcelUtils;
import org.springframework.web.multipart.MultipartFile;
@Service
public class OtherUserMappingService {
@@ -561,9 +558,6 @@ public class OtherUserMappingService {
if(importDef!=null) {
ServiceResult importResult = ExcelUtils.importDataBlock(importDef,importFilePath,null);
if(importResult.isSuccess()) {
result.setSuccess(false);
result.setErrorMessage(importResult.getErrorMessage());
}else {
if(importResult.getReturnData()!=null) {
List<Object> dataList = (List<Object>)importResult.getReturnData();
if(!dataList.isEmpty()) {
@@ -584,6 +578,9 @@ public class OtherUserMappingService {
result.setSuccess(false);
result.setErrorMessage("Empty import data");
}
}else {
result.setSuccess(false);
result.setErrorMessage(importResult.getErrorMessage());
}
}else {
result.setSuccess(false);
@@ -259,6 +259,9 @@ public class BookingController {
}else if(queryFilter.getString("export_type").equals( "failedlist")) {
reportDef = ExcelUtils.getExportDefineByName("EXPORT_FAILED_LIST");
reportFileName = "FailBooking.xlsx";
} else if (queryFilter.getString("export_type").equals( "approval_routing")) {
reportDef = ExcelUtils.getExportDefineByName("EXPORT_APPROVAL_ROUTING");
reportFileName = "ApprovalRoutingLog.xlsx";
}else {
reportDef = ExcelUtils.getExportDefineByName("EXPORT_OTHER_BOOKING");
reportFileName = "OtherBooking.xlsx";
@@ -132,6 +132,9 @@ public class BookingsViewDto implements Serializable {
private String followUpStatusName;
private String roomStatusName;
private String segmentName;
private String approverId;
private String approverName;
private String approvalReason;
//-- For export
private String approveStatusName;
@@ -239,6 +239,12 @@ public class BookingsView implements Serializable {
private String changeCheckinDate;
@Column(name="change_checkout_date")
private String changeCheckoutDate;
@Column(name = "approver_id")
private String approverId;
@Column(name = "approver_name")
private String approverName;
@Column(name = "approval_reason")
private String approvalReason;
@Transient
private String status;
@@ -2,6 +2,7 @@ package com.mgm.mcrm.reservation.services;
import java.util.*;
import java.time.LocalDateTime;
import java.time.ZoneId;
import com.alibaba.fastjson.JSON;
import com.mgm.mcrm.admin.repositories.SysUserDao;
@@ -17,6 +18,8 @@ import com.mgm.mcrm.basesetting.daylight.repositories.BlockDao;
import com.mgm.mcrm.basesetting.daylight.repositories.DaylightViewDao;
import com.mgm.mcrm.basesetting.daylight.repositories.ItemInventoryDao;
import com.mgm.mcrm.basesetting.daylight.repositories.TierDao;
import com.mgm.mcrm.basesetting.opera.models.CfgOperaView;
import com.mgm.mcrm.basesetting.opera.repositories.OperaViewDao;
import com.mgm.mcrm.basesetting.property.models.CfgProperties;
import com.mgm.mcrm.basesetting.property.repositories.PropertyDao;
import com.mgm.mcrm.basesetting.property.services.PropertyService;
@@ -24,7 +27,11 @@ import com.mgm.mcrm.basesetting.room.models.CfgRoomFeatures;
import com.mgm.mcrm.basesetting.room.models.CfgRoomTypes;
import com.mgm.mcrm.basesetting.room.models.CfgRooms;
import com.mgm.mcrm.basesetting.room.repositories.*;
import com.mgm.mcrm.basesetting.team.models.CfgSections;
import com.mgm.mcrm.basesetting.team.models.CfgTeamStructure;
import com.mgm.mcrm.basesetting.team.repositories.AppUserDao;
import com.mgm.mcrm.basesetting.team.repositories.SectionDao;
import com.mgm.mcrm.basesetting.team.repositories.TeamStructureDao;
import com.mgm.mcrm.common.dtos.DataTableResult;
import com.mgm.mcrm.common.dtos.QueryFilter;
import com.mgm.mcrm.common.dtos.ServiceResult;
@@ -61,28 +68,9 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.JWT;
import com.mgm.mcrm.common.utils.DaoUtil;
import com.mgm.mcrm.common.utils.DateTimeUtil;
@Service
public class BookingService {
@@ -128,6 +116,12 @@ public class BookingService {
private SysGroupService sysGroupService;
@Resource
private BookingMapper bookingMapper;
@Resource
private TeamStructureDao teamStructureDao;
@Resource
private SectionDao sectionDao;
@Resource
private OperaViewDao operaViewDao;
public ServiceResult createBooking(Map<String,Object> param, HttpServletRequest request) {
ServiceResult processResult= new ServiceResult();
@@ -160,7 +154,116 @@ public class BookingService {
String oldToken = request.getHeader("Authorization");
// oldToken = oldToken.substring(6);
String userId = JWT.decode(oldToken).getClaim("login_id").asString();
Long sectionId = 2L;
Map<String, Object> user = (Map<String, Object>) param.get("user");
Long teamStructureId = user.get("teamStructureId") != null ? Long.valueOf(String.valueOf(param.get("teamStructureId"))) : null;
CfgTeamStructure cfgTeamStructure = teamStructureDao.findById(teamStructureId).orElse(null);
Long sectionId = cfgTeamStructure.getSectionId();
CfgSections cfgSections = sectionDao.findById(sectionId).orElse(null);
List<CfgOperaView> operas = operaViewDao.findByPropertyIdAndBookingTypeId(propertyId,blockId);
List<CfgOperaView> teamOpera = new ArrayList<>();
CfgOperaView opera = new CfgOperaView();
for(CfgOperaView o :operas) {
for(CfgRoomTypes r :o.getOperaRoomType()) {
if(Objects.equals(r.getId(), roomTypeId)) {
teamOpera.add(o);
}
}
}
String blockCode = null;
Date checkinAsDate = Date.from(checkinDate.atZone(ZoneId.systemDefault()).toInstant());
Date checkoutAsDate = Date.from(checkoutDate.atZone(ZoneId.systemDefault()).toInstant());
for(CfgOperaView o :teamOpera) {
Date startTime = o.getStartDate();
Date endTime = o.getEndDate();
if((!startTime.after(checkinAsDate))
&& (!endTime.before(checkoutAsDate))) {
blockCode = o.getBlockCodeName();
opera = o;
}
}
booking.setId(null);
booking.setPlayerId(playerId);
booking.setMemberTitle(String.valueOf(member.get("salutation")));
// booking.setMemberFirstName(memberFirstName);
booking.setMemberLastName(String.valueOf(member.get("name")));
booking.setCheckinDate(checkinDate);
booking.setCheckoutDate(checkoutDate);
booking.setPropertyId(propertyId);
booking.setHotelCode(property.getCode());
booking.setRoomTypeId(roomTypeId);
// booking.setOperaProfileId(Long.valueOf(String.valueOf(operaId.get(0))));
booking.setBlockCode(blockCode);
booking.setRatePlanCode(opera.getRateCode().getCode());
booking.setRoomTypeCode(roomType.getCode());
booking.setMarketCode(opera.getMarketCode().getCode());
booking.setDlSourceId(opera.getSourceCode().getDlSourceId());
booking.setSourceCode(opera.getSourceCode().getCode());
booking.setCreatedAt(createDate);
booking.setCreatedBy(JWT.decode(oldToken).getSubject());
booking.setSectionId(sectionId);
booking.setApproveStatus(isWaitlist?"W":"PN");
booking.setRemark(remark);
booking.setBookType("0");
booking.setBlock(block.getName());
booking.setNumOfNight(Integer.valueOf(numOfNight));
// booking.setTeamName(team.getCode());
booking.setBooker(userId);
booking.setSharer(sharer);
booking.setItemCode(item.getId()!=null?item.getDlCode():null);
booking.setFeatureCode(special);
booking.setRoom(room.getName());
booking.setSectionName(cfgSections.getName());
booking.setCategory(property.getCategory());
Bookings newBooking= bookingDao.save(booking);
processResult.setSuccess(true);
processResult.setReturnData(booking);
return processResult;
}
private ServiceResult createDayligtBooking(Map<String,Object> param, HttpServletRequest request) {
ServiceResult processResult= new ServiceResult();
LocalDateTime createDate = LocalDateTime.now();
Bookings booking = new Bookings();
String playerId = String.valueOf(param.get("playerId"));
Long blockId = Long.valueOf(String.valueOf(param.get("blockId")));
Long propertyId = Long.valueOf(String.valueOf(param.get("propertyId")));
Long roomId = Long.valueOf(String.valueOf(param.get("roomId")));
Long roomTypeId = Long.valueOf(String.valueOf(param.get("roomTypeId")));
String special = param.get("specialIds")!=null?String.valueOf(param.get("specialIds")):null;
String sharer = param.get("sharer")!=null?String.valueOf(param.get("sharer")):null;
String remark = param.get("remark")!=null?String.valueOf(param.get("remark")):null;
Boolean isWaitlist = Boolean.valueOf(String.valueOf(param.get("isWaitlist")));
HashMap member = (HashMap)param.get("member");
List operaId = (List)member.get("nameId");
List selectDate = (List)param.get("selectDate");
LocalDateTime checkinDate = DateTimeUtil.getDateFromString(String.valueOf(selectDate.get(0)), "yyyy-MM-dd");
LocalDateTime checkoutDate = DateTimeUtil.getDateFromString(String.valueOf(selectDate.get(1)), "yyyy-MM-dd");
String numOfNight = DateTimeUtil.getDiffDate(checkinDate, checkoutDate, "day");
CfgProperties property = propertyDao.findById(propertyId).orElse(null);
CfgBlocks block = blockDao.getById(blockId);
CfgRooms room = roomDao.getById(roomId);
CfgRoomTypes roomType = roomTypeDao.getById(roomTypeId);
CfgTiers tier = tierDao.findByTierName(String.valueOf(member.get("tier")));
CfgItemInventory item = new CfgItemInventory();
if(tier!=null&&blockId!=null&&roomTypeId!=null) {
item = itemDao.findByTierIdAndRoomId(Long.valueOf(tier.getId()),roomId);
}
String oldToken = request.getHeader("Authorization");
// oldToken = oldToken.substring(6);
String userId = JWT.decode(oldToken).getClaim("login_id").asString();
Map<String, Object> user = (Map<String, Object>) param.get("user");
Long teamStructureId = user.get("teamStructureId") != null ? Long.valueOf(String.valueOf(param.get("teamStructureId"))) : null;
CfgTeamStructure cfgTeamStructure = teamStructureDao.findById(teamStructureId).orElse(null);
Long sectionId = cfgTeamStructure.getSectionId();
CfgSections cfgSections = sectionDao.findById(sectionId).orElse(null);
List<CfgDaylightView> operas = daylightViewDao.findByPropertyIdAndBookingTypeId(propertyId,blockId);
List<CfgDaylightView> teamOpera = new ArrayList();
@@ -195,7 +298,7 @@ public class BookingService {
booking.setHotelCode(property.getCode());
booking.setRoomTypeId(roomTypeId);
// booking.setOperaProfileId(Long.valueOf(String.valueOf(operaId.get(0))));
booking.setDlBlockId(blockCode);
booking.setBlockCode(blockCode);
booking.setRatePlanCode(opera.getRateCode().getCode());
booking.setRoomTypeCode(roomType.getCode());
booking.setMarketCode(opera.getMarketCode().getCode());
@@ -215,6 +318,7 @@ public class BookingService {
booking.setItemCode(item.getId()!=null?item.getDlCode():null);
booking.setFeatureCode(special);
booking.setRoom(room.getName());
booking.setSectionName(cfgSections.getName());
booking.setCategory(property.getCategory());
@@ -45,6 +45,7 @@ import com.mgm.mcrm.logging.services.SysLogOperationService;
import com.mgm.mcrm.reservation.dtos.BookingsDto;
import com.mgm.mcrm.reservation.dtos.request.OtherPropertyCreateUpdateRequest;
import com.mgm.mcrm.reservation.mappers.BookingMapper;
import com.mgm.mcrm.reservation.models.Bookings;
import com.mgm.mcrm.reservation.repositories.BookingDao;
import com.mgm.mcrm.reservation.repositories.BookingViewDao;
import jakarta.annotation.Resource;
@@ -445,8 +446,8 @@ public class OtherBookingService {
dateArray.add(date);
booking.setDateList(JSONArray.toJSONString(dateArray));
bookingDao.save(bookingMapper.toBooking(booking));
System.out.println(booking.getId());
Bookings save = bookingDao.save(bookingMapper.toBooking(booking));
booking.setId(save.getId());
resultBookings.add(booking);
//计算allotment
@@ -747,7 +747,7 @@ public class WaitlistService {
roomTypeId = booking.getRoomTypeId();
// roomTypeCode = booking.getRoomTypeCode();
CfgTiers tier = tierDao.findByTierName(String.valueOf(member.get("tierName")));
CfgTiers tier = tierDao.findByTierNameOpera(String.valueOf(member.get("tierName")));
CfgItemInventory item = new CfgItemInventory();
if(tier!=null && roomTypeId!=null) {
item = itemDao.findByTierIdAndRoomId(Long.valueOf(tier.getId()),roomId);
@@ -0,0 +1,182 @@
{
"exportName": "EXPORT_APPROVAL_ROUTING",
"exportPages": [{
"sheetIndx": 0,
"sheetName": "Approval Routing",
"dataElements": [{
"blockName": "masterData",
"offsetRow": 0,
"offsetCol": 0,
"elementType": 2,
"isShowHeader": true,
"headerAlign": "center",
"headerColor": "#f5ebd9",
"headerTextColor": "#000000",
"textAlign": "left",
"textColor": "#000000",
"objClassName": "com.mgm.mcrm.reservation.dtos.BookingsViewDto",
"columnDefs": [
{
"columnHeader": "Id",
"attrName": "id",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Status",
"attrName": "approveStatus",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Create Time",
"attrName": "createdAt",
"dataType": "Date",
"formatVal": "yyyy-MM-dd HH:mm:ss",
"columnWidth": 30
},
{
"columnHeader": "Conf#",
"attrName": "confirmationNo",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Patron ID",
"attrName": "playerId",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Player Name",
"attrName": "memberLastName",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Tier",
"attrName": "tier",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Property",
"attrName": "propertyName",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Room Catagory",
"attrName": "room",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Room Type",
"attrName": "roomTypeCode",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Type",
"attrName": "bookType",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Check in Date",
"attrName": "checkinDate",
"dataType": "Date",
"formatVal": "yyyy-MM-dd",
"columnWidth": 30
},
{
"columnHeader": "Check Out Date",
"attrName": "checkoutDate",
"dataType": "Date",
"formatVal": "yyyy-MM-dd",
"columnWidth": 30
},
{
"columnHeader": "Continuous / Overlap Booking(C/I to C/O)",
"attrName": "overlapBooking",
"dataType": "String",
"columnWidth": 40
},
{
"columnHeader": "Booker Team",
"attrName": "sectionName",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Booker ID",
"attrName": "createdBy",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Booker Name",
"attrName": "booker",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Sharer",
"attrName": "sharer",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Remarks",
"attrName": "remark",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Ranking By Player Evaluation",
"attrName": "dailyTheoProfit",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Approval Remark",
"attrName": "mscRemark",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Received Approver ID",
"attrName": "approverId",
"dataType": "String",
"columnWidth": 25
},
{
"columnHeader": "Received Approver",
"attrName": "approverName",
"dataType": "String",
"columnWidth": 25
},
{
"columnHeader": "Approval Reason",
"attrName": "approvalReason",
"dataType": "String",
"columnWidth": 30
},
{
"columnHeader": "Approver",
"attrName": "approvedId",
"dataType": "String",
"columnWidth": 20
},
{
"columnHeader": "Approved Date",
"attrName": "approvedAt",
"dataType": "Date",
"formatVal": "yyyy-MM-dd HH:mm:ss",
"columnWidth": 30
}
]
}]
}]
}
@@ -39,6 +39,12 @@
"dataType": "String",
"columnWidth":30
},
{
"columnHeader":"Category",
"attrName": "category",
"dataType": "String",
"columnWidth":30
},
{
"columnHeader":"Created Time",
"attrName": "createdAt",
@@ -14,7 +14,7 @@
"headerTextColor":"#000000",
"textAlign":"left",
"textColor":"#000000",
"objClassName": "com.mgm.mcrm.reservation.models.BookingsView",
"objClassName": "com.mgm.mcrm.reservation.dtos.BookingsViewDto",
"columnDefs": [{
"columnHeader":"Failure ID",
"attrName": "id",
@@ -91,7 +91,7 @@
},
{
"columnHeader":"Section",
"attrName": "teamName",
"attrName": "sectionName",
"dataType": "String",
"columnWidth":20
},
@@ -22,6 +22,18 @@
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"User Division",
"attrName": "divisionName",
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"Department",
"attrName": "departmentName",
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"Section",
"attrName": "sectionName",
@@ -5,7 +5,7 @@
"dataElements": [{
"offsetRow": 1,
"offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.BedTypeMappingImportRow",
"objClassName": "com.mgm.mcrm.basesetting.room.dtos.request.BedTypeMappingImportRowRequest",
"columnDefs": [{
"columnHeader":"Property",
"checkHeader":true,
@@ -33,6 +33,13 @@
"headerRowIdx":0,
"attrName": "bedTypeName",
"dataType": "String"
},
{
"columnHeader":"Category",
"checkHeader":true,
"headerRowIdx":0,
"attrName": "category",
"dataType": "String"
}
]
}]
@@ -5,7 +5,7 @@
"dataElements": [{
"offsetRow": 1,
"offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.OtherUserMappingImportRow",
"objClassName": "com.mgm.mcrm.basesetting.team.dtos.response.OtherUserMappingImportRowResponse",
"columnDefs": [
{
"columnHeader":"Booking Type",