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", "dataType": "String",
"columnWidth":30 "columnWidth":30
}, },
{
"columnHeader":"Category",
"attrName": "category",
"dataType": "String",
"columnWidth":30
},
{ {
"columnHeader":"Created Time", "columnHeader":"Created Time",
"attrName": "createdAt", "attrName": "createdAt",
@@ -14,7 +14,7 @@
"headerTextColor":"#000000", "headerTextColor":"#000000",
"textAlign":"left", "textAlign":"left",
"textColor":"#000000", "textColor":"#000000",
"objClassName": "com.mgm.mcrm.reservation.models.BookingsView", "objClassName": "com.mgm.mcrm.reservation.dtos.BookingsViewDto",
"columnDefs": [{ "columnDefs": [{
"columnHeader":"Failure ID", "columnHeader":"Failure ID",
"attrName": "id", "attrName": "id",
@@ -91,7 +91,7 @@
}, },
{ {
"columnHeader":"Section", "columnHeader":"Section",
"attrName": "teamName", "attrName": "sectionName",
"dataType": "String", "dataType": "String",
"columnWidth":20 "columnWidth":20
}, },
@@ -22,6 +22,18 @@
"dataType": "String", "dataType": "String",
"columnWidth":20 "columnWidth":20
}, },
{
"columnHeader":"User Division",
"attrName": "divisionName",
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"Department",
"attrName": "departmentName",
"dataType": "String",
"columnWidth":20
},
{ {
"columnHeader":"Section", "columnHeader":"Section",
"attrName": "sectionName", "attrName": "sectionName",
@@ -5,7 +5,7 @@
"dataElements": [{ "dataElements": [{
"offsetRow": 1, "offsetRow": 1,
"offsetCol": 0, "offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.BedTypeMappingImportRow", "objClassName": "com.mgm.mcrm.basesetting.room.dtos.request.BedTypeMappingImportRowRequest",
"columnDefs": [{ "columnDefs": [{
"columnHeader":"Property", "columnHeader":"Property",
"checkHeader":true, "checkHeader":true,
@@ -33,6 +33,13 @@
"headerRowIdx":0, "headerRowIdx":0,
"attrName": "bedTypeName", "attrName": "bedTypeName",
"dataType": "String" "dataType": "String"
},
{
"columnHeader":"Category",
"checkHeader":true,
"headerRowIdx":0,
"attrName": "category",
"dataType": "String"
} }
] ]
}] }]
@@ -5,7 +5,7 @@
"dataElements": [{ "dataElements": [{
"offsetRow": 1, "offsetRow": 1,
"offsetCol": 0, "offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.OtherUserMappingImportRow", "objClassName": "com.mgm.mcrm.basesetting.team.dtos.response.OtherUserMappingImportRowResponse",
"columnDefs": [ "columnDefs": [
{ {
"columnHeader":"Booking Type", "columnHeader":"Booking Type",
@@ -890,7 +890,7 @@ public class OtherAllotmentService {
for(CfgOtherAllotmentView exportItem:listCfgOtherAllotmentView) { for(CfgOtherAllotmentView exportItem:listCfgOtherAllotmentView) {
//--Set special content for export //--Set special content for export
if(exportItem.getProperty()!=null) { if(exportItem.getProperty()!=null) {
exportItem.setPropertyName(exportItem.getProperty().getCode()); exportItem.setPropertyName(exportItem.getProperty().getName());
} }
if(exportItem.getBookDate()!=null) { if(exportItem.getBookDate()!=null) {
exportItem.setBookDateText(exportItem.getBookDate().format(dtFormat)); 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.CfgSettingsDto;
import com.mgm.mcrm.appsetting.dtos.request.CfgSettingsRequest; import com.mgm.mcrm.appsetting.dtos.request.CfgSettingsRequest;
import com.mgm.mcrm.appsetting.dtos.response.CfgSettingsResponse; 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.appsetting.services.SettingService;
import com.mgm.mcrm.common.annotation.security.CheckPermissions; import com.mgm.mcrm.common.annotation.security.CheckPermissions;
import com.mgm.mcrm.common.utils.LogUtil;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import com.mgm.mcrm.common.annotation.logging.OperationLog; import com.mgm.mcrm.common.annotation.logging.OperationLog;
import com.mgm.mcrm.common.annotation.security.CheckPermission; import com.mgm.mcrm.common.annotation.security.CheckPermission;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "App Setting", description = "APIs for App Setting functions") @Tag(name = "App Setting", description = "APIs for App Setting functions")
@RestController @RestController
@@ -68,4 +68,31 @@ public class SettingController {
return ResponseEntity.ok(response); 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 createdAt;
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
private int status; private int status;
private Integer showCalendar;
private String calendarName;
private Integer calendarOrder;
} }
@@ -22,4 +22,10 @@ public class CreateUpdatePropertyRequest {
private String dlPropertyId; private String dlPropertyId;
private int status = 1; 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") @Column(name = "status")
private int 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"}) @CheckPermissions(routerIds = {"00320", "00520"}, permissionCodes = {"IMPORT"})
@CheckPermission(routerId="00320",permissionCode="IMPORT")
@RequestMapping(value = "/upload_excel", method = RequestMethod.POST) @RequestMapping(value = "/upload_excel", method = RequestMethod.POST)
public AjaxResult uploadExcel(HttpServletRequest request, HttpServletResponse response, public AjaxResult uploadExcel(HttpServletRequest request, HttpServletResponse response,
@RequestBody(required=false) MultipartFile[] files) throws Exception{ @RequestBody(required=false) MultipartFile[] files) throws Exception{
@@ -31,5 +31,8 @@ public class CfgRoomsDto {
private List<CfgRoomTypesDto> roomRoomType ; private List<CfgRoomTypesDto> roomRoomType ;
private CfgPropertiesDto propertyObj; private CfgPropertiesDto propertyObj;
private String category; 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 propertyId;
private Integer roomId; private Integer roomId;
private List<Integer> roomTypeIds; private List<Integer> roomTypeIds;
private String category;
} }
@@ -34,4 +34,12 @@ public class CreateUpdateRoomRequest {
private List<CfgRoomsRoomTypes> roomRoomType; private List<CfgRoomsRoomTypes> roomRoomType;
private String category; 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) @ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "property_id", insertable = false, updatable = false) @JoinColumn(name = "property_id", insertable = false, updatable = false)
private CfgProperties propertyObj; 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; 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; int matchId=0;
for(CfgRooms item:rooms) { for(CfgRooms item:rooms) {
if(item.getPropertyId()!=null if(item.getPropertyId()!=null
&& item.getPropertyId().intValue()==propertyId && item.getPropertyId()==propertyId
&& item.getName() != null && item.getName().equalsIgnoreCase(name)) { && item.getName() != null && item.getName().equalsIgnoreCase(name)
&& item.getCategory() != null && item.getCategory().equalsIgnoreCase(category)) {
matchId = item.getId().intValue(); matchId = item.getId().intValue();
break; break;
} }
} }
return matchId; 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; int matchId=0;
for(CfgRooms item:rooms) { for(CfgRooms item:rooms) {
if(item.getId()!=null if(item.getId()!=null
@@ -445,7 +446,8 @@ public class BedTypeService {
&& item.getRoomRoomType()!=null) { && item.getRoomRoomType()!=null) {
List<CfgRoomTypes> roomRoomType = item.getRoomRoomType(); List<CfgRoomTypes> roomRoomType = item.getRoomRoomType();
for(CfgRoomTypes rItem:roomRoomType) { 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(); matchId = rItem.getId().intValue();
break; break;
} }
@@ -508,7 +510,7 @@ public class BedTypeService {
isPassed =false; isPassed =false;
}else { }else {
pItem.setPropertyId(propertyId); pItem.setPropertyId(propertyId);
int roomId = this.getMatchRoomId(roomList,propertyId, pItem.getRoomName()); int roomId = this.getMatchRoomId(roomList,propertyId, pItem.getRoomName(), pItem.getCategory());
if(roomId<=0) { if(roomId<=0) {
errMsg+="Room ["+pItem.getRoomName()+"] not found;"; errMsg+="Room ["+pItem.getRoomName()+"] not found;";
isPassed =false; isPassed =false;
@@ -519,7 +521,7 @@ public class BedTypeService {
for(String roomTypeVal:roomTypeVals) { for(String roomTypeVal:roomTypeVals) {
roomTypeVal = roomTypeVal.trim(); roomTypeVal = roomTypeVal.trim();
if(StringUtils.isNotBlank(roomTypeVal)) { if(StringUtils.isNotBlank(roomTypeVal)) {
int matchTypeId = this.getMatchRoomTypeId(roomList,roomId, roomTypeVal); int matchTypeId = this.getMatchRoomTypeId(roomList,roomId, roomTypeVal, pItem.getCategory());
if(matchTypeId<=0) { if(matchTypeId<=0) {
isPassed =false; isPassed =false;
errMsg+="Room Type ["+roomTypeVal+"] not found;"; errMsg+="Room Type ["+roomTypeVal+"] not found;";
@@ -620,6 +622,7 @@ public class BedTypeService {
newBedType.setRoomId(pItem.getRoomId()); newBedType.setRoomId(pItem.getRoomId());
newBedType.setPropertyId(pItem.getPropertyId()); newBedType.setPropertyId(pItem.getPropertyId());
newBedType.setSelectRoomTypeIds(pItem.getRoomTypeIds()); newBedType.setSelectRoomTypeIds(pItem.getRoomTypeIds());
newBedType.setCategory(pItem.getCategory());
this.createBedTypeMapping(newBedType); this.createBedTypeMapping(newBedType);
} }
result.setSuccess(true); result.setSuccess(true);
@@ -150,7 +150,6 @@ public class OtherUserMappingController {
} }
@CheckPermissions(routerIds = {"00327", "00527"}, permissionCodes = {"IMPORT"}) @CheckPermissions(routerIds = {"00327", "00527"}, permissionCodes = {"IMPORT"})
@CheckPermission(routerId = "00327", permissionCode = "IMPORT")
@RequestMapping(value = "/upload_excel", method = RequestMethod.POST) @RequestMapping(value = "/upload_excel", method = RequestMethod.POST)
public AjaxResult uploadExcel(HttpServletRequest request, HttpServletResponse response, public AjaxResult uploadExcel(HttpServletRequest request, HttpServletResponse response,
@RequestBody(required = false) MultipartFile[] files) throws Exception { @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 com.mgm.mcrm.common.utils.ExcelUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@Service @Service
public class OtherUserMappingService { public class OtherUserMappingService {
@@ -561,9 +558,6 @@ public class OtherUserMappingService {
if(importDef!=null) { if(importDef!=null) {
ServiceResult importResult = ExcelUtils.importDataBlock(importDef,importFilePath,null); ServiceResult importResult = ExcelUtils.importDataBlock(importDef,importFilePath,null);
if(importResult.isSuccess()) { if(importResult.isSuccess()) {
result.setSuccess(false);
result.setErrorMessage(importResult.getErrorMessage());
}else {
if(importResult.getReturnData()!=null) { if(importResult.getReturnData()!=null) {
List<Object> dataList = (List<Object>)importResult.getReturnData(); List<Object> dataList = (List<Object>)importResult.getReturnData();
if(!dataList.isEmpty()) { if(!dataList.isEmpty()) {
@@ -584,6 +578,9 @@ public class OtherUserMappingService {
result.setSuccess(false); result.setSuccess(false);
result.setErrorMessage("Empty import data"); result.setErrorMessage("Empty import data");
} }
}else {
result.setSuccess(false);
result.setErrorMessage(importResult.getErrorMessage());
} }
}else { }else {
result.setSuccess(false); result.setSuccess(false);
@@ -259,6 +259,9 @@ public class BookingController {
}else if(queryFilter.getString("export_type").equals( "failedlist")) { }else if(queryFilter.getString("export_type").equals( "failedlist")) {
reportDef = ExcelUtils.getExportDefineByName("EXPORT_FAILED_LIST"); reportDef = ExcelUtils.getExportDefineByName("EXPORT_FAILED_LIST");
reportFileName = "FailBooking.xlsx"; reportFileName = "FailBooking.xlsx";
} else if (queryFilter.getString("export_type").equals( "approval_routing")) {
reportDef = ExcelUtils.getExportDefineByName("EXPORT_APPROVAL_ROUTING");
reportFileName = "ApprovalRoutingLog.xlsx";
}else { }else {
reportDef = ExcelUtils.getExportDefineByName("EXPORT_OTHER_BOOKING"); reportDef = ExcelUtils.getExportDefineByName("EXPORT_OTHER_BOOKING");
reportFileName = "OtherBooking.xlsx"; reportFileName = "OtherBooking.xlsx";
@@ -132,6 +132,9 @@ public class BookingsViewDto implements Serializable {
private String followUpStatusName; private String followUpStatusName;
private String roomStatusName; private String roomStatusName;
private String segmentName; private String segmentName;
private String approverId;
private String approverName;
private String approvalReason;
//-- For export //-- For export
private String approveStatusName; private String approveStatusName;
@@ -239,6 +239,12 @@ public class BookingsView implements Serializable {
private String changeCheckinDate; private String changeCheckinDate;
@Column(name="change_checkout_date") @Column(name="change_checkout_date")
private String changeCheckoutDate; 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 @Transient
private String status; private String status;
@@ -2,6 +2,7 @@ package com.mgm.mcrm.reservation.services;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.mgm.mcrm.admin.repositories.SysUserDao; 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.DaylightViewDao;
import com.mgm.mcrm.basesetting.daylight.repositories.ItemInventoryDao; import com.mgm.mcrm.basesetting.daylight.repositories.ItemInventoryDao;
import com.mgm.mcrm.basesetting.daylight.repositories.TierDao; 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.models.CfgProperties;
import com.mgm.mcrm.basesetting.property.repositories.PropertyDao; import com.mgm.mcrm.basesetting.property.repositories.PropertyDao;
import com.mgm.mcrm.basesetting.property.services.PropertyService; 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.CfgRoomTypes;
import com.mgm.mcrm.basesetting.room.models.CfgRooms; import com.mgm.mcrm.basesetting.room.models.CfgRooms;
import com.mgm.mcrm.basesetting.room.repositories.*; 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.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.DataTableResult;
import com.mgm.mcrm.common.dtos.QueryFilter; import com.mgm.mcrm.common.dtos.QueryFilter;
import com.mgm.mcrm.common.dtos.ServiceResult; import com.mgm.mcrm.common.dtos.ServiceResult;
@@ -61,28 +68,9 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.JWT; import com.auth0.jwt.JWT;
import com.mgm.mcrm.common.utils.DaoUtil; import com.mgm.mcrm.common.utils.DaoUtil;
import com.mgm.mcrm.common.utils.DateTimeUtil; import com.mgm.mcrm.common.utils.DateTimeUtil;
@Service @Service
public class BookingService { public class BookingService {
@@ -128,6 +116,12 @@ public class BookingService {
private SysGroupService sysGroupService; private SysGroupService sysGroupService;
@Resource @Resource
private BookingMapper bookingMapper; private BookingMapper bookingMapper;
@Resource
private TeamStructureDao teamStructureDao;
@Resource
private SectionDao sectionDao;
@Resource
private OperaViewDao operaViewDao;
public ServiceResult createBooking(Map<String,Object> param, HttpServletRequest request) { public ServiceResult createBooking(Map<String,Object> param, HttpServletRequest request) {
ServiceResult processResult= new ServiceResult(); ServiceResult processResult= new ServiceResult();
@@ -160,13 +154,18 @@ public class BookingService {
String oldToken = request.getHeader("Authorization"); String oldToken = request.getHeader("Authorization");
// oldToken = oldToken.substring(6); // oldToken = oldToken.substring(6);
String userId = JWT.decode(oldToken).getClaim("login_id").asString(); 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();
List<CfgDaylightView> operas = daylightViewDao.findByPropertyIdAndBookingTypeId(propertyId,blockId); CfgSections cfgSections = sectionDao.findById(sectionId).orElse(null);
List<CfgDaylightView> teamOpera = new ArrayList();
CfgDaylightView opera = new CfgDaylightView(); List<CfgOperaView> operas = operaViewDao.findByPropertyIdAndBookingTypeId(propertyId,blockId);
for(CfgDaylightView o :operas) { List<CfgOperaView> teamOpera = new ArrayList<>();
for(CfgRoomTypes r :o.getDaylightRoomType()) { CfgOperaView opera = new CfgOperaView();
for(CfgOperaView o :operas) {
for(CfgRoomTypes r :o.getOperaRoomType()) {
if(Objects.equals(r.getId(), roomTypeId)) { if(Objects.equals(r.getId(), roomTypeId)) {
teamOpera.add(o); teamOpera.add(o);
} }
@@ -174,11 +173,13 @@ public class BookingService {
} }
String blockCode = null; String blockCode = null;
for(CfgDaylightView o :teamOpera) { Date checkinAsDate = Date.from(checkinDate.atZone(ZoneId.systemDefault()).toInstant());
LocalDateTime startTime = o.getStartDate(); Date checkoutAsDate = Date.from(checkoutDate.atZone(ZoneId.systemDefault()).toInstant());
LocalDateTime endTime = o.getEndDate(); for(CfgOperaView o :teamOpera) {
if((startTime.isBefore(checkinDate) || startTime.isEqual(checkinDate)) Date startTime = o.getStartDate();
&& (endTime.isAfter(checkoutDate) || endTime.isEqual(checkoutDate))) { Date endTime = o.getEndDate();
if((!startTime.after(checkinAsDate))
&& (!endTime.before(checkoutAsDate))) {
blockCode = o.getBlockCodeName(); blockCode = o.getBlockCodeName();
opera = o; opera = o;
} }
@@ -195,7 +196,7 @@ public class BookingService {
booking.setHotelCode(property.getCode()); booking.setHotelCode(property.getCode());
booking.setRoomTypeId(roomTypeId); booking.setRoomTypeId(roomTypeId);
// booking.setOperaProfileId(Long.valueOf(String.valueOf(operaId.get(0)))); // booking.setOperaProfileId(Long.valueOf(String.valueOf(operaId.get(0))));
booking.setDlBlockId(blockCode); booking.setBlockCode(blockCode);
booking.setRatePlanCode(opera.getRateCode().getCode()); booking.setRatePlanCode(opera.getRateCode().getCode());
booking.setRoomTypeCode(roomType.getCode()); booking.setRoomTypeCode(roomType.getCode());
booking.setMarketCode(opera.getMarketCode().getCode()); booking.setMarketCode(opera.getMarketCode().getCode());
@@ -215,6 +216,109 @@ public class BookingService {
booking.setItemCode(item.getId()!=null?item.getDlCode():null); booking.setItemCode(item.getId()!=null?item.getDlCode():null);
booking.setFeatureCode(special); booking.setFeatureCode(special);
booking.setRoom(room.getName()); 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();
CfgDaylightView opera = new CfgDaylightView();
for(CfgDaylightView o :operas) {
for(CfgRoomTypes r :o.getDaylightRoomType()) {
if(Objects.equals(r.getId(), roomTypeId)) {
teamOpera.add(o);
}
}
}
String blockCode = null;
for(CfgDaylightView o :teamOpera) {
LocalDateTime startTime = o.getStartDate();
LocalDateTime endTime = o.getEndDate();
if((startTime.isBefore(checkinDate) || startTime.isEqual(checkinDate))
&& (endTime.isAfter(checkoutDate) || endTime.isEqual(checkoutDate))) {
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()); 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.BookingsDto;
import com.mgm.mcrm.reservation.dtos.request.OtherPropertyCreateUpdateRequest; import com.mgm.mcrm.reservation.dtos.request.OtherPropertyCreateUpdateRequest;
import com.mgm.mcrm.reservation.mappers.BookingMapper; 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.BookingDao;
import com.mgm.mcrm.reservation.repositories.BookingViewDao; import com.mgm.mcrm.reservation.repositories.BookingViewDao;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@@ -445,8 +446,8 @@ public class OtherBookingService {
dateArray.add(date); dateArray.add(date);
booking.setDateList(JSONArray.toJSONString(dateArray)); booking.setDateList(JSONArray.toJSONString(dateArray));
bookingDao.save(bookingMapper.toBooking(booking)); Bookings save = bookingDao.save(bookingMapper.toBooking(booking));
System.out.println(booking.getId()); booking.setId(save.getId());
resultBookings.add(booking); resultBookings.add(booking);
//计算allotment //计算allotment
@@ -747,7 +747,7 @@ public class WaitlistService {
roomTypeId = booking.getRoomTypeId(); roomTypeId = booking.getRoomTypeId();
// roomTypeCode = booking.getRoomTypeCode(); // 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(); CfgItemInventory item = new CfgItemInventory();
if(tier!=null && roomTypeId!=null) { if(tier!=null && roomTypeId!=null) {
item = itemDao.findByTierIdAndRoomId(Long.valueOf(tier.getId()),roomId); 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", "dataType": "String",
"columnWidth":30 "columnWidth":30
}, },
{
"columnHeader":"Category",
"attrName": "category",
"dataType": "String",
"columnWidth":30
},
{ {
"columnHeader":"Created Time", "columnHeader":"Created Time",
"attrName": "createdAt", "attrName": "createdAt",
@@ -14,7 +14,7 @@
"headerTextColor":"#000000", "headerTextColor":"#000000",
"textAlign":"left", "textAlign":"left",
"textColor":"#000000", "textColor":"#000000",
"objClassName": "com.mgm.mcrm.reservation.models.BookingsView", "objClassName": "com.mgm.mcrm.reservation.dtos.BookingsViewDto",
"columnDefs": [{ "columnDefs": [{
"columnHeader":"Failure ID", "columnHeader":"Failure ID",
"attrName": "id", "attrName": "id",
@@ -91,7 +91,7 @@
}, },
{ {
"columnHeader":"Section", "columnHeader":"Section",
"attrName": "teamName", "attrName": "sectionName",
"dataType": "String", "dataType": "String",
"columnWidth":20 "columnWidth":20
}, },
@@ -22,6 +22,18 @@
"dataType": "String", "dataType": "String",
"columnWidth":20 "columnWidth":20
}, },
{
"columnHeader":"User Division",
"attrName": "divisionName",
"dataType": "String",
"columnWidth":20
},
{
"columnHeader":"Department",
"attrName": "departmentName",
"dataType": "String",
"columnWidth":20
},
{ {
"columnHeader":"Section", "columnHeader":"Section",
"attrName": "sectionName", "attrName": "sectionName",
@@ -5,7 +5,7 @@
"dataElements": [{ "dataElements": [{
"offsetRow": 1, "offsetRow": 1,
"offsetCol": 0, "offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.BedTypeMappingImportRow", "objClassName": "com.mgm.mcrm.basesetting.room.dtos.request.BedTypeMappingImportRowRequest",
"columnDefs": [{ "columnDefs": [{
"columnHeader":"Property", "columnHeader":"Property",
"checkHeader":true, "checkHeader":true,
@@ -33,6 +33,13 @@
"headerRowIdx":0, "headerRowIdx":0,
"attrName": "bedTypeName", "attrName": "bedTypeName",
"dataType": "String" "dataType": "String"
},
{
"columnHeader":"Category",
"checkHeader":true,
"headerRowIdx":0,
"attrName": "category",
"dataType": "String"
} }
] ]
}] }]
@@ -5,7 +5,7 @@
"dataElements": [{ "dataElements": [{
"offsetRow": 1, "offsetRow": 1,
"offsetCol": 0, "offsetCol": 0,
"objClassName": "com.mgm.mcrm.common.dtos.dataimport.appsetting.OtherUserMappingImportRow", "objClassName": "com.mgm.mcrm.basesetting.team.dtos.response.OtherUserMappingImportRowResponse",
"columnDefs": [ "columnDefs": [
{ {
"columnHeader":"Booking Type", "columnHeader":"Booking Type",