覃浩 2 年 前
コミット
fea4219fc8

+ 37 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/config/DateTimeFormatterAdapter.java

@@ -0,0 +1,37 @@
+package org.jeecg.config;
+
+import org.springframework.format.Formatter;
+import org.springframework.format.datetime.DateFormatter;
+
+import java.text.ParseException;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.Date;
+import java.util.Locale;
+
+public class DateTimeFormatterAdapter extends DateFormatter implements Formatter<Date> {
+
+    private final DateTimeFormatter formatter;
+
+    public DateTimeFormatterAdapter(DateTimeFormatter formatter) {
+        this.formatter = formatter;
+    }
+
+    @Override
+    public Date parse(String text, Locale locale) throws ParseException {
+        try {
+            LocalDateTime localDateTime = LocalDateTime.parse(text, formatter);
+            return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } catch (DateTimeParseException e) {
+            throw new ParseException(e.getMessage(), e.getErrorIndex());
+        }
+    }
+
+    @Override
+    public String print(Date object, Locale locale) {
+        LocalDateTime localDateTime = object.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+        return formatter.format(localDateTime);
+    }
+}

+ 23 - 9
jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java

@@ -20,6 +20,8 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
+import org.springframework.format.FormatterRegistry;
+import org.springframework.format.datetime.DateFormatterRegistrar;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 import org.springframework.web.cors.CorsConfiguration;
@@ -34,8 +36,10 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.TimeZone;
 
 /**
  * Spring Boot 2.0 解决跨域问题
@@ -54,6 +58,15 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
     @Autowired(required = false)
     private PrometheusMeterRegistry prometheusMeterRegistry;
 
+    @Override
+    public void addFormatters(FormatterRegistry registry) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
+                .withZone(ZoneId.of("UTC"));
+        DateFormatterRegistrar registrar = new DateFormatterRegistrar();
+        registrar.setFormatter(new DateTimeFormatterAdapter(formatter));
+        registrar.registerFormatters(registry);
+    }
+
     /**
      * 静态资源的配置 - 使得可以从磁盘中读取 Html、图片、视频、音频等
      */
@@ -114,15 +127,16 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
         objectMapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false);
         objectMapper.configure(DeserializationFeature.FAIL_ON_NULL_CREATOR_PROPERTIES, false);
         //默认的处理日期时间格式
-        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
-        JavaTimeModule javaTimeModule = new JavaTimeModule();
-        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
-        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
-        objectMapper.registerModule(javaTimeModule);
+        objectMapper.setTimeZone(TimeZone.getTimeZone("UTC"));
+        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
+//        JavaTimeModule javaTimeModule = new JavaTimeModule();
+//        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+//        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
+//        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+//        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
+//        objectMapper.registerModule(javaTimeModule);
         return objectMapper;
     }
 

+ 15 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusRoomBookingOrdersController.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.business.controller;
 
 import java.math.BigDecimal;
+import java.time.Instant;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.io.IOException;
@@ -20,6 +21,7 @@ import org.jeecg.modules.business.dto.BookingOrderSaveDto;
 import org.jeecg.modules.business.dto.UpdateOrderInfoDto;
 import org.jeecg.modules.business.dto.UpdateOrderPriceDto;
 import org.jeecg.modules.business.entity.*;
+import org.jeecg.modules.business.service.IBusMeetingRoomService;
 import org.jeecg.modules.business.service.IBusRoomBookingOrdersService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -29,6 +31,8 @@ import lombok.extern.slf4j.Slf4j;
 
 import org.jeecg.modules.business.service.impl.BusRoomBookingOrdersServiceImpl;
 import org.jeecg.modules.business.vo.*;
+import org.jeecg.modules.rooms.entity.CesRooms;
+import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -61,7 +65,8 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 
 	@Resource
 	private IBusRoomBookingOrdersService busRoomBookingOrdersService;
-
+	@Resource
+	private IBusMeetingRoomService meetingRoomService;
 	/**
 	 * 分页列表查询
 	 *
@@ -516,7 +521,15 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 	 	return  Result.OK(service.reverseLiving(livingOrderId,hotelId));
 	 }
 
-
+	 @ApiOperation(value="撤销", notes="撤销")
+	 @RequestMapping(value = "/test-utc",method = RequestMethod.POST)
+	 public Result<Date> TestUtc(@RequestBody BusMeetingRoom body) {
+		BusMeetingRoom room = meetingRoomService.getById("1659108453483655169");
+		room.setCreateTime(body.getCreateTime());
+		meetingRoomService.updateById(room);
+		room = meetingRoomService.getById("1659108453483655169");
+	 	return Result.OK(room.getCreateTime());
+	 }
 
 
 

+ 2 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BookingOrderSaveDto.java

@@ -2,16 +2,14 @@ package org.jeecg.modules.business.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.jeecg.modules.business.entity.BusBookingLayoutDayPrice;
-import org.jeecg.modules.business.entity.BusLivingLayoutDayPrice;
-import org.jeecg.modules.business.entity.BusOrderFee;
-import org.jeecg.modules.business.entity.BusRoomBookingOrders;
+import org.jeecg.modules.business.entity.*;
 
 import java.util.List;
 
 @Data
 public class BookingOrderSaveDto  {
     private BusRoomBookingOrders orderInfo;
+    private List<BusRoomsLivingOrder> livingOrderInfos;
     /**
      *散客预定 走这个
      **/

+ 0 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoom.java

@@ -85,8 +85,6 @@ public class BusMeetingRoom implements Serializable {
     @ApiModelProperty(value = "状态")
     private Integer status;
 	/**创建时间*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
-    @DateTimeFormat(pattern="yyyy-MM-dd")
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 }

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusTeam.java

@@ -35,7 +35,7 @@ public class BusTeam implements Serializable {
 	/**key*/
 	@TableId(type = IdType.ASSIGN_ID)
     @ApiModelProperty(value = "key")
-    private Integer id;
+    private String id;
 	/**预约id*/
 	@Excel(name = "预约id", width = 15)
     @ApiModelProperty(value = "预约id")

+ 2 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusRoomBookingOrdersServiceImpl.java

@@ -293,7 +293,7 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
             if(isTeam) {
                 BusTeam team = new BusTeam();
                 List<BusTeam> existTeams = teamService.list(Wrappers.<BusTeam>query().eq("is_delete", 0).eq("hotel_id", hotelId));
-                Integer sortIndex = 0;
+                Integer sortIndex = 1;
                 List<Integer> indexs = existTeams.stream().map(s->s.getSortIndex()).collect(Collectors.toList());
                 while(true){
                     Integer finalSortIndex = sortIndex;
@@ -448,7 +448,7 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
             //</editor-fold>
             BusTeam team = teamService.getOne(Wrappers.<BusTeam>query().eq("booking_order_id",orderId));
             if(team != null) {
-                result.setTeamTag(team.getId());
+                result.setTeamTag(team.getSortIndex());
             }
         } else if(orderInfo.getBookingOrdersType().equals(BookingOrdersType.TEAM.getKey())) {
             List<BusBookingBatch> batches = bookingBatchService.list(Wrappers.<BusBookingBatch>query().eq("booking_orders_id",orderId));

+ 2 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/entity/QuartzJob.java

@@ -59,4 +59,6 @@ public class QuartzJob implements Serializable {
 	@Dict(dicCode = "quartz_status")
 	private java.lang.Integer status;
 
+	private String hotelId;
+	private String taskType;
 }

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesAllDayPriceRuleController.java

@@ -5,12 +5,15 @@ import cn.hutool.core.util.EnumUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.Enum.ResultCode;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
 import org.jeecg.modules.rooms.DTO.CesAllDayPriceRuleDto;
 import org.jeecg.modules.rooms.Enum.CouponEnums;
 import org.jeecg.modules.rooms.entity.CesAllDayPriceRule;
@@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.sql.Wrapper;
 import java.util.List;
 
 /**
@@ -43,6 +47,9 @@ public class CesAllDayPriceRuleController  extends JeecgController<CesAllDayPric
     @Resource
     CesAllDayPriceRuleServiceImpl cesAllDayPriceRuleService;
 
+    @Resource
+    IQuartzJobService quartzJobService;
+
     @ApiOperation(value="全天房计费统一设置超时收费", notes="全天房计费统一设置超时收费")
     @PostMapping(value = "/modify")
     public Result modify(@RequestBody CesAllDayPriceRuleDto cesAllDayPriceRuleDto){
@@ -121,6 +128,13 @@ public class CesAllDayPriceRuleController  extends JeecgController<CesAllDayPric
             }
         }
 
+
+//        List<QuartzJob> rules = quartzJobService.list(Wrappers.<QuartzJob>query().eq("hotel_id",cesAllDayPriceRuleDto.getHotelId())
+//        .eq("task_type","YS"));
+
+
+
+
         if (StringUtils.isBlank(cesAllDayPriceRuleDto.getDayTime())||Integer.parseInt(cesAllDayPriceRuleDto.getDayTime())<0){
             return Result.error(ResultCode.PARAM_MISS);
         }

+ 2 - 0
jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java

@@ -11,6 +11,7 @@ import org.springframework.core.env.Environment;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.TimeZone;
 
 /**
 * 单体启动类
@@ -32,6 +33,7 @@ public class JeecgSystemApplication extends SpringBootServletInitializer {
         String ip = InetAddress.getLocalHost().getHostAddress();
         String port = env.getProperty("server.port");
         String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path"));
+        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
         log.info("\n----------------------------------------------------------\n\t" +
                 "Application Jeecg-Boot is running! Access URLs:\n\t" +
                 "Local: \t\thttp://localhost:" + port + path + "/\n\t" +

+ 5 - 5
jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml

@@ -66,7 +66,7 @@ spring:
   #json 时间戳统一转换
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
-    time-zone: GMT+8
+    time-zone: 'UTC'
   jpa:
     open-in-view: false
   aop:
@@ -130,7 +130,7 @@ spring:
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
-          url: jdbc:mysql://49.4.53.36:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
           username: root
           password: Aa@@1144271187
           driver-class-name: com.mysql.cj.jdbc.Driver
@@ -143,7 +143,7 @@ spring:
   #redis 配置
   redis:
     database: 4
-    host: localhost
+    host: "127.0.0.1"
     port: 6379
     password: ''
 #mybatis plus 设置
@@ -159,7 +159,7 @@ mybatis-plus:
       table-underline: true
   configuration:
     # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
-    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     # 返回类型为Map,显示null对应的字段
     call-setters-on-nulls: true
 #jeecg专用配置
@@ -229,7 +229,7 @@ jeecg:
     address: 127.0.0.1:6379
     password:
     type: STANDALONE
-    enabled: true
+    enabled: false
 #cas单点登录
 cas:
   prefixUrl: http://cas.example.org:8443/cas