ChenSir hai 11 meses
pai
achega
ae3334d043

+ 10 - 0
aidex-controller/src/main/java/com/aidex/web/controller/system/SysReservationConfigController.java

@@ -6,6 +6,7 @@ import java.util.Map;
 import com.aidex.common.annotation.Log;
 import com.aidex.common.core.domain.R;
 import com.aidex.system.req.SysReservationConfigReq;
+import com.aidex.system.req.SysReservationConfigTimeDurationReq;
 import com.github.pagehelper.PageInfo;
 import com.aidex.common.core.page.PageDomain;
 import javax.servlet.http.HttpServletRequest;
@@ -61,6 +62,15 @@ public class SysReservationConfigController extends BaseController {
         return R.status(sysReservationConfigService.addBySysReservationConfigReq(sysReservationConfigReq));
     }
 
+
+    @PreAuthorize("@ss.hasPermi('system:sysReservationConfig:add')")
+    @PostMapping("/createSysReservationConfigTimeDuration")
+    public R<List<SysReservationConfigTimeDurationReq>> createSysReservationConfigTimeDuration(@RequestBody @Validated SysReservationConfigTimeDurationReq sysReservationConfigTimeDurationReq) {
+        return R.data(sysReservationConfigService.createSysReservationConfigTimeDuration(sysReservationConfigTimeDurationReq));
+    }
+
+
+
     @PreAuthorize("@ss.hasPermi('system:sysReservationConfig:list')")
     @GetMapping("/statisc")
     public R<List<Map<String, String>>> statisc(@RequestParam(value = "date", required = true) String date) {

+ 24 - 7
aidex-system/src/main/java/com/aidex/common/app/server/impl/AppService.java

@@ -26,10 +26,7 @@ import com.aidex.system.domain.vo.SysReservationDataHistoryVO;
 import com.aidex.system.domain.vo.SysReservationDataNumVO;
 import com.aidex.system.mapper.SysCameraAlarmMapper;
 import com.aidex.system.mapper.SysReservationDataMapper;
-import com.aidex.system.service.SysNoticeService;
-import com.aidex.system.service.SysReservationConfigService;
-import com.aidex.system.service.SysShipService;
-import com.aidex.system.service.SysWharfService;
+import com.aidex.system.service.*;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import org.springframework.beans.BeanUtils;
@@ -61,6 +58,9 @@ public class AppService implements IAppService {
     private SysCameraAlarmMapper sysCameraAlarmMapper;
 
     @Autowired
+    private SysConfigService configService;
+
+    @Autowired
     private RedisCache redisCache;
 
 
@@ -335,11 +335,28 @@ public class AppService implements IAppService {
 
     @Override
     public R saveReservationData(SysReservationData sysReservationData) {
-        if (sysReservationDataMapper.getNumByOpenid(sysReservationData) > 0){
-            return R.fail("当前预约日期已存在预约记录!");
+        SysConfig monthConfig = configService.findConfigByKey("sys.reservation.month.num");
+        SysConfig dayConfig = configService.findConfigByKey("sys.reservation.day.num");
+        SysConfig ticketConfig = configService.findConfigByKey("sys.reservation.ticket");
+        if (sysReservationData.getNumberTicket() > Integer.valueOf(ticketConfig.getConfigValue())){
+            return R.fail("单次预约人数不能超过" + ticketConfig.getConfigValue() + "人!");
         }
-        int numByReservationConfigId = sysReservationDataMapper.getNumByReservationConfigId(sysReservationData);
         SysReservationConfig sysReservationConfig = sysReservationConfigService.get(sysReservationData.getReservationConfigId());
+        int monthNum = sysReservationDataMapper.getNumByOpenidAndDuration(sysReservationData.getOpenid(),
+                DateUtil.formatDate(DateUtil.beginOfMonth(sysReservationConfig.getReservationDate())),
+                DateUtil.formatDate(DateUtil.endOfMonth(sysReservationConfig.getReservationDate())));
+
+        if (monthNum >= Integer.valueOf(monthConfig.getConfigValue())){
+            return R.fail("月预约次数累计" + monthConfig.getConfigValue() + "次!,已达最大月可预约次数");
+        }
+        int dayNum =  sysReservationDataMapper.getNumByOpenidAndDuration(sysReservationData.getOpenid(),
+                DateUtil.formatDate(sysReservationConfig.getReservationDate()),
+                DateUtil.formatDate(sysReservationConfig.getReservationDate()));
+
+        if (dayNum >= Integer.valueOf(dayConfig.getConfigValue())){
+            return R.fail("日预约次数累计" + dayConfig.getConfigValue() + "次!,已达最大日可预约次数");
+        }
+        int numByReservationConfigId = sysReservationDataMapper.getNumByReservationConfigId(sysReservationData);
         if (sysReservationConfig!=null && numByReservationConfigId >= sysReservationConfig.getEnableNum()){
             return R.fail("已超出可预约人数!");
         }

+ 1 - 0
aidex-system/src/main/java/com/aidex/system/domain/SysReservationConfig.java

@@ -2,6 +2,7 @@ package com.aidex.system.domain;
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.aidex.common.core.domain.BaseEntity;

+ 7 - 0
aidex-system/src/main/java/com/aidex/system/domain/SysReservationData.java

@@ -6,7 +6,9 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.DecimalMin;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.Date;
 
 /**
@@ -42,4 +44,9 @@ public class SysReservationData {
 	@NotBlank(message = "终止码头不能为空")
 	private String endWharfId;
 
+	@ApiModelProperty(value = "预定票数")
+	@DecimalMin(value = "1", message = "预定票数不能小于1")
+	@NotNull(message = "预定票数不能为空")
+	private Long numberTicket;
+
 }

+ 11 - 5
aidex-system/src/main/java/com/aidex/system/mapper/SysReservationConfigMapper.xml

@@ -254,17 +254,15 @@
 
     <update id="update">
         UPDATE sys_reservation_config SET
-            reservation_date = #{reservationDate},
-            reservation_start_time = #{reservationStartTime},
-            reservation_end_time = #{reservationEndTime},
             enable_num = #{enableNum},
             status = #{status},
             remark = #{remark},
             update_by = #{updateBy},
             update_time = #{updateTime},
             update_ip = #{updateIp},
+            enable_wharf = #{enableWharf},
             version = version + 1
-        WHERE id = #{id} and version = #{version}
+        WHERE id = #{id}
     </update>
 
     <update id="updateStatus">
@@ -286,13 +284,21 @@
         WHERE reservation_date = #{reservationDate}
     </update>
 
-    <delete id="deleteSysReservationConfigByIds">
+    <!--<delete id="deleteSysReservationConfigByIds">
         UPDATE sys_reservation_config SET
             del_flag = #{DEL_FLAG_DELETE}
         WHERE id in
         <foreach item="id" collection="ids" open="(" separator="," close=")">
             #{id}
         </foreach>
+    </delete>-->
+
+    <delete id="deleteSysReservationConfigByIds">
+        delete from sys_reservation_config
+        WHERE id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
     </delete>
 
     <delete id="deleteSysReservationConfigByDate">

+ 10 - 0
aidex-system/src/main/java/com/aidex/system/mapper/SysReservationDataMapper.java

@@ -50,6 +50,16 @@ public interface SysReservationDataMapper
     public int getNumByOpenid(SysReservationData sysReservationData);
 
     /**
+     * 判断小程序某一段时间有无预约
+     *
+     * @param openid 小程序用户id
+     * @param startDate 开始日期
+     * @param endDate 结束日期
+     * @return 结果
+     */
+    public int getNumByOpenidAndDuration(@Param("openid") String openid, @Param("startDate") String startDate, @Param("endDate") String endDate);
+
+    /**
      * 判断当日有无预约
      *
      * @param date 日期

+ 18 - 6
aidex-system/src/main/java/com/aidex/system/mapper/SysReservationDataMapper.xml

@@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	<select id="getNumByReservationConfigIds" parameterType="String" resultType="com.aidex.system.domain.vo.SysReservationDataNumVO">
 		SELECT
 			a.reservation_config_id as reservationConfigId,
-			SUM(1) AS num
+			IFNULL(sum(a.number_ticket),0) AS num
 		FROM
 			sys_reservation_data a
 		WHERE
@@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  	</select>
 
 	<insert id="addReservationData">
-		insert into sys_reservation_data(id, openid, reservation_config_id, start_wharf_id, end_wharf_id, reservation_time) VALUES( #{id}, #{openid}, #{reservationConfigId}, #{startWharfId}, #{endWharfId},NOW())
+		insert into sys_reservation_data(id, openid, reservation_config_id, start_wharf_id, end_wharf_id, reservation_time, number_ticket) VALUES( #{id}, #{openid}, #{reservationConfigId}, #{startWharfId}, #{endWharfId},NOW(), #{numberTicket})
 	</insert>
 
 	<select id="getData" resultType="com.aidex.system.domain.SysReservationData">
@@ -50,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="getNumByOpenid" resultType="java.lang.Integer">
 		SELECT
-			COUNT(1)
+			IFNULL(sum(a.number_ticket),0)
 		FROM
 			sys_reservation_data a
 		WHERE
@@ -67,7 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="getNumByDate" resultType="java.lang.Integer">
 		SELECT
-			COUNT( 1 )
+			IFNULL(sum(a.number_ticket),0)
 		FROM
 			sys_reservation_data a
 		WHERE
@@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="getNumByReservationConfigId" resultType="java.lang.Integer">
 		SELECT
-			COUNT(1)
+			IFNULL(sum(a.number_ticket),0)
 		FROM
 			sys_reservation_data a
 		WHERE
@@ -134,7 +134,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		SELECT
 			CONCAT(date_format(c.reservation_start_time,'%H:%i'),'~',date_format(c.reservation_end_time,'%H:%i')) as duration,
 			sw_s.wharf_nanme as startWharfName,
-			sw_s.id as startWharfId
+			sw_s.id as startWharfId,
+			a.number_ticket as numberTicket
 		FROM
 			sys_reservation_data a
 				LEFT JOIN sys_reservation_config c ON a.reservation_config_id = c.id
@@ -143,4 +144,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			c.reservation_date = #{date}
 	</select>
 
+	<select id="getNumByOpenidAndDuration" resultType="java.lang.Integer">
+		select
+			count(1)
+		from sys_reservation_data srd
+				 LEFT JOIN sys_reservation_config c ON srd.reservation_config_id = c.id
+		where
+		    srd.openid = #{openid}
+			and  date_format(c.reservation_date,'%Y-%m-%d') &gt;=  date_format(#{startDate},'%Y-%m-%d')
+			AND date_format(c.reservation_date,'%Y-%m-%d') &lt;=  date_format(#{endDate},'%Y-%m-%d')
+	</select>
+
 </mapper>

+ 4 - 0
aidex-system/src/main/java/com/aidex/system/req/SysReservationConfigReq.java

@@ -14,6 +14,7 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author :ChenSir
@@ -53,4 +54,7 @@ public class SysReservationConfigReq implements Serializable {
 	@NotNull(message = "发布状态不可为空")
 	private String status;
 
+	@NotNull(message = "配置列表不能为空")
+	private List<SysReservationConfigTimeDurationReq> sysReservationConfigTimeDurationReqList;
+
 }

+ 38 - 0
aidex-system/src/main/java/com/aidex/system/req/SysReservationConfigTimeDurationReq.java

@@ -0,0 +1,38 @@
+package com.aidex.system.req;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author :ChenSir
+ * @date :Created in 2024/3/28 11:32
+ * @description:
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysReservationConfigTimeDurationReq implements Serializable {
+
+	private static final long serialVersionUID = 4854884754912549447L;
+
+	/** 开始时间 */
+	@NotNull(message = "开始时间不允许为空")
+	private String startTime;
+
+	/** 结束时间 */
+	@NotNull(message = "结束时间不允许为空")
+	private String endTime;
+
+	/** 班次时常-分钟 */
+	@NotNull(message = "班次时常不允许为空")
+	private int duration;
+
+	// 可预约人数
+	private int enableNum;
+}

+ 9 - 0
aidex-system/src/main/java/com/aidex/system/service/SysReservationConfigService.java

@@ -4,6 +4,7 @@ import com.aidex.common.core.domain.R;
 import com.aidex.common.core.service.BaseService;
 import com.aidex.system.domain.SysReservationConfig;
 import com.aidex.system.req.SysReservationConfigReq;
+import com.aidex.system.req.SysReservationConfigTimeDurationReq;
 
 import java.util.List;
 import java.util.Map;
@@ -57,4 +58,12 @@ public interface SysReservationConfigService extends BaseService<SysReservationC
     public R removeByDate(String date);
 
     public R editByReservationDate(SysReservationConfig sysReservationConfig);
+
+
+    /**
+     * 预约配置
+     * @param sysReservationConfigTimeDurationReq 预约配置时间处理
+     * @return 结果
+     */
+    public List<SysReservationConfigTimeDurationReq> createSysReservationConfigTimeDuration(SysReservationConfigTimeDurationReq sysReservationConfigTimeDurationReq);
 }

+ 83 - 2
aidex-system/src/main/java/com/aidex/system/service/impl/SysReservationConfigServiceImpl.java

@@ -13,6 +13,7 @@ import com.aidex.system.domain.SysConfig;
 import com.aidex.system.domain.SysWharf;
 import com.aidex.system.mapper.SysReservationDataMapper;
 import com.aidex.system.req.SysReservationConfigReq;
+import com.aidex.system.req.SysReservationConfigTimeDurationReq;
 import com.aidex.system.service.SysWharfService;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
@@ -127,7 +128,7 @@ public class SysReservationConfigServiceImpl extends BaseServiceImpl<SysReservat
     public int batchInsert(List<SysReservationConfig> list) {
         return mapper.batchInsert(list);
     }
-    @Transactional(readOnly = false)
+    /*@Transactional(readOnly = false)
     @Override
     public int addBySysReservationConfigReq(SysReservationConfigReq sysReservationConfigReq) {
         SysConfig routeStartConfig =  ConfigUtils.getConfigByKey("sys.route.start");
@@ -224,6 +225,57 @@ public class SysReservationConfigServiceImpl extends BaseServiceImpl<SysReservat
             }
         }
         return 0;
+    }*/
+
+    @Transactional(readOnly = false)
+    @Override
+    public int addBySysReservationConfigReq(SysReservationConfigReq sysReservationConfigReq) {
+        List<SysReservationConfig> list = new ArrayList<>();
+        if(sysReservationConfigReq.getSysReservationConfigTimeDurationReqList() != null){
+            Date startDate = sysReservationConfigReq.getStartDate();
+            Date endDate = sysReservationConfigReq.getEndDate();
+            long days = DateUtil.between(startDate,endDate, DateUnit.DAY);
+            if(days > 0){
+                for(int i = 0; i <= days; i++){
+                    DateTime date = DateUtil.offsetDay(startDate, i);
+                    for (SysReservationConfigTimeDurationReq item : sysReservationConfigReq.getSysReservationConfigTimeDurationReqList()){
+                        SysReservationConfig sysReservationConfig = new SysReservationConfig();
+                        sysReservationConfig.setReservationDate(date);
+                        // 开始时间
+                        String startTime = DateUtil.formatDate(date) + " " + item.getStartTime();
+                        sysReservationConfig.setReservationStartTime(DateUtil.parseDateTime(startTime));
+                        // 结束时间
+                        String endTime = DateUtil.formatDate(date) + " " + item.getEndTime();
+                        sysReservationConfig.setReservationEndTime(DateUtil.parseDateTime(endTime));
+                        sysReservationConfig.setEnableNum((long) item.getEnableNum());
+                        sysReservationConfig.setStatus(sysReservationConfigReq.getStatus());
+                        sysReservationConfig.setEnableWharf(sysReservationConfigReq.getEnableWharf());
+                        sysReservationConfig.setId(IdUtil.simpleUUID());
+                        list.add(sysReservationConfig);
+                    }
+                }
+                return mapper.batchInsert(list);
+            } else {
+                DateTime date = DateUtil.offsetDay(startDate, 0);
+                for (SysReservationConfigTimeDurationReq item : sysReservationConfigReq.getSysReservationConfigTimeDurationReqList()){
+                    SysReservationConfig sysReservationConfig = new SysReservationConfig();
+                    sysReservationConfig.setReservationDate(date);
+                    // 开始时间
+                    String startTime = DateUtil.formatDate(date) + " " + item.getStartTime();
+                    sysReservationConfig.setReservationStartTime(DateUtil.parseDateTime(startTime));
+                    // 结束时间
+                    String endTime = DateUtil.formatDate(date) + " " + item.getEndTime();
+                    sysReservationConfig.setReservationEndTime(DateUtil.parseDateTime(endTime));
+                    sysReservationConfig.setEnableNum((long) item.getEnableNum());
+                    sysReservationConfig.setStatus(sysReservationConfigReq.getStatus());
+                    sysReservationConfig.setEnableWharf(sysReservationConfigReq.getEnableWharf());
+                    sysReservationConfig.setId(IdUtil.simpleUUID());
+                    list.add(sysReservationConfig);
+                }
+                return mapper.batchInsert(list);
+            }
+        }
+        return 0;
     }
 
     @Override
@@ -242,7 +294,8 @@ public class SysReservationConfigServiceImpl extends BaseServiceImpl<SysReservat
                 String wharfName = item.getWharfNanme();
                 for (int i = 0; i < durationByDate.size(); i++) {
                     String duration = durationByDate.get(i);
-                    long count = reservationDataByDate.stream().filter(reservationData -> reservationData.get("startWharfName").equals(wharfName) && reservationData.get("duration").equals(duration)).count();
+                    long count = reservationDataByDate.stream().filter(reservationData -> reservationData.get("startWharfName").equals(wharfName) && reservationData.get("duration").equals(duration))
+                                    .mapToInt(reservationData -> Integer.parseInt(reservationData.get("numberTicket"))).sum();
                     map.put(duration, String.valueOf(count));
                 }
                 data.add(map);
@@ -293,4 +346,32 @@ public class SysReservationConfigServiceImpl extends BaseServiceImpl<SysReservat
         }
     }
 
+    @Override
+    public List<SysReservationConfigTimeDurationReq> createSysReservationConfigTimeDuration(SysReservationConfigTimeDurationReq sysReservationConfigTimeDurationReq) {
+        String[] split = sysReservationConfigTimeDurationReq.getStartTime().split(":");
+        String[] endSplit = sysReservationConfigTimeDurationReq.getEndTime().split(":");
+        DateTime startDateTime = new DateTime(TimeZone.getTimeZone("GMT+8"));
+        startDateTime.setField(DateField.HOUR_OF_DAY, Integer.valueOf(split[0]));
+        startDateTime.setField(DateField.MINUTE, Integer.valueOf(split[1]));
+        startDateTime.setField(DateField.SECOND, 0);
+        DateTime endDateTime = new DateTime(TimeZone.getTimeZone("GMT+8"));
+        endDateTime.setField(DateField.HOUR_OF_DAY, Integer.valueOf(endSplit[0]));
+        endDateTime.setField(DateField.MINUTE, Integer.valueOf(endSplit[1]));
+        endDateTime.setField(DateField.SECOND, 0);
+        long between = DateUtil.between(startDateTime, endDateTime, DateUnit.MINUTE);
+        List<SysReservationConfigTimeDurationReq> list = new ArrayList<>();
+        int num = (int) (between / sysReservationConfigTimeDurationReq.getDuration() + (between % sysReservationConfigTimeDurationReq.getDuration() != 0 ? 1 : 0));
+        for (int i = 0; i < num; i++) {
+            SysReservationConfigTimeDurationReq item = new SysReservationConfigTimeDurationReq();
+            item.setStartTime(DateUtil.formatTime(DateUtil.offset(startDateTime, DateField.MINUTE, sysReservationConfigTimeDurationReq.getDuration() * i)));
+            item.setEndTime(DateUtil.formatTime(DateUtil.offset(startDateTime, DateField.MINUTE, sysReservationConfigTimeDurationReq.getDuration() * (i+1))));
+            DateTime offset = DateUtil.offset(startDateTime, DateField.MINUTE, sysReservationConfigTimeDurationReq.getDuration() * (i + 1));
+            if (offset.getTime() > endDateTime.getTime()){
+                item.setEndTime(DateUtil.formatTime(endDateTime));
+            }
+            list.add(item);
+        }
+        return list;
+    }
+
 }

+ 8 - 0
aidex-ui/src/api/system/sysReservationConfig.js

@@ -101,3 +101,11 @@ export function editByReservationDate (data) {
     data: data
   })
 }
+// 生成配置时间段
+export function createSysReservationConfigTimeDuration (data) {
+  return request({
+    url: '/system/sysReservationConfig/createSysReservationConfigTimeDuration',
+    method: 'post',
+    data: data
+  })
+}

+ 14 - 9
aidex-ui/src/views/system/sysreservationconfig/index.vue

@@ -105,11 +105,11 @@
             :checked="record.status === '1'"/>
         </span>
         <span slot="operation" slot-scope="{text, record}">
-          <a v-if="record.status === '0'" @click="handleUpdate(record)" v-hasPermi="['system:sysReservationConfig:edit']">
+          <a @click="handleUpdate(record)" v-hasPermi="['system:sysReservationConfig:edit']">
             修改
           </a>
           <a-divider type="vertical" v-hasPermi="['system:sysReservationConfig:remove']"/>
-          <a v-if="record.status === '0'" @click="handleDelete(record)" v-hasPermi="['system:sysReservationConfig:remove']">
+          <a @click="handleDelete(record)" v-hasPermi="['system:sysReservationConfig:remove']">
             删除
           </a>
         </span>
@@ -118,7 +118,13 @@
   </div>
 </template>
 <script>
-import { listSysReservationConfig, exportSysReservationConfig, getInitData, delSysReservationConfigByDate, editByReservationDate } from '@/api/system/sysReservationConfig'
+import {
+  listSysReservationConfig,
+  exportSysReservationConfig,
+  getInitData,
+  editByReservationDate,
+  delSysReservationConfig
+} from '@/api/system/sysReservationConfig'
 import AdvanceTable from '@/components/pt/table/AdvanceTable'
 import SysReservationConfigAddForm from '@/views/system/sysreservationconfig/modules/SysReservationConfigAddForm'
 import SysReservationConfigEditForm from '@/views/system/sysreservationconfig/modules/SysReservationConfigEditForm'
@@ -305,26 +311,25 @@ export default {
     /** 删除按钮操作 */
     handleDelete (row) {
       var that = this
-      if (!this.queryParam.reservationDate) {
+      if (row.reservationNum > 0) {
         that.$message.error(
-          '请选择预约日期',
+          '此条配置数据已有被使用不能删除!',
           3
         )
         return
       }
       this.$confirm({
-        title: '确认删除【' + this.queryParam.reservationDate + '】的数据?',
+        title: '确认删除此条配置的数据?',
         onOk () {
-          return delSysReservationConfigByDate({ date: that.queryParam.reservationDate })
+          return delSysReservationConfig(row.id)
             .then((res) => {
-              that.queryParam.reservationDate = ''
               that.onSelectChange([], [])
               that.getList()
               that.$message.success(
                 res.msg,
                 3
               )
-          })
+            })
         },
         onCancel () {}
       })

+ 22 - 3
aidex-ui/src/views/system/sysreservationconfig/modules/SysReservationConfigBatchAddForm.vue

@@ -1,7 +1,7 @@
 <template>
   <ant-modal
     modalWidth="576"
-    modalHeight="500"
+    modalHeight="800"
     :visible="open"
     :modal-title="formTitle"
     :adjust-size="true"
@@ -16,12 +16,12 @@
         </a-col>
         <a-col :span="12">
           <a-form-model-item label="班次时长" prop="duration">
-            <a-input-number placeholder="请输入班次时长(分钟)" v-model="batchForm.duration" :min="0" style="width: 100%"/>
+            <a-input-number placeholder="请输入班次时长(分钟)" @blur="createTimeDurations" v-model="batchForm.duration" :min="0" style="width: 100%"/>
           </a-form-model-item>
         </a-col>
         <a-col :span="12">
           <a-form-model-item label="可预约人数" prop="enableNum">
-            <a-input-number placeholder="请输入可预约人数" v-model="batchForm.enableNum" :min="0" style="width: 100%"/>
+            <a-input-number placeholder="请输入可预约人数" @blur="setEnableNum" v-model="batchForm.enableNum" :min="0" style="width: 100%"/>
           </a-form-model-item>
         </a-col>
       </a-row>
@@ -38,6 +38,25 @@
             </a-select></a-form-model-item>
         </a-col>
       </a-row>
+      <a-row :gutter="32">
+        <a-col :span="12">
+          <a-form-model-item label="预约开始时段" prop="reservationStartTime">
+            <a-time-picker style="width: 100%;height: 30px;" placeholder="选择日期" format="HH:mm" v-model="configForm.startTime" @change="createTimeDurations"></a-time-picker>
+          </a-form-model-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-model-item label="预约结束时段" prop="reservationEndTime">
+            <a-time-picker style="width: 100%;height: 30px;" placeholder="选择日期" format="HH:mm" v-model="configForm.endTime" @change="createTimeDurations"></a-time-picker>
+          </a-form-model-item>
+        </a-col>
+      </a-row>
+
+      <a-table :dataSource="timeDurations" :columns="columns">
+        <span slot="enableNumSlot" slot-scope="text, record">
+          <a-input-number placeholder="请输入可预约人数" v-model="record.enableNum" :min="0" style="width: 100%"/>
+        </span>
+      </a-table>
+
     </a-form-model>
     <template slot="footer">
       <a-button :disabled="disabled" @click="cancel">

+ 66 - 4
aidex-ui/src/views/system/sysreservationconfig/modules/SysReservationConfigForm.js

@@ -3,9 +3,11 @@ import {
   getSysReservationConfig,
   addSysReservationConfig,
   updateSysReservationConfig,
-  batchAddSysReservationConfig
+  batchAddSysReservationConfig,
+  createSysReservationConfigTimeDuration
 } from '@/api/system/sysReservationConfig'
 import { getAllNotDelSysWharf } from '@/api/system/sysWharf'
+import moment from 'moment'
 
 export default {
   name: 'CreateForm',
@@ -35,6 +37,11 @@ export default {
       form: {
         enableWharf: []
       },
+      configForm: {
+        startTime: '',
+        endTime: '',
+        duration: null
+      },
       batchForm: {
         dateRange: [],
         enableWharf: []
@@ -52,19 +59,67 @@ export default {
         enableNum: [{ required: true, message: '可预约人数不能为空', trigger: 'blur' }],
         enableWharf: [{ required: true, message: '可预约码头不能为空', trigger: 'blur' }]
       },
-      wharfList: []
+      wharfList: [],
+      timeDurations: [],
+      columns: [
+        {
+          title: '开始时段',
+          dataIndex: 'startTime',
+          key: 'startTime',
+          width: '20%'
+        },
+        {
+          title: '结束时段',
+          dataIndex: 'endTime',
+          key: 'endTime',
+          width: '20%'
+        },
+        {
+          title: '可预约人数',
+          dataIndex: 'enableNum',
+          key: 'enableNum',
+          scopedSlots: { customRender: 'enableNumSlot' },
+          align: 'center'
+        }
+      ]
     }
   },
   filters: {},
   created () {
     this.getWharfList()
     console.log(this.statusOptions)
+    this.getConfigKey('sys.route.start').then(response => {
+      this.configForm.startTime = moment(new Date()).format('YYYY-MM-DD') + ' ' + response.data + ':00'
+    })
+    this.getConfigKey('sys.route.end').then(response => {
+      this.configForm.endTime = moment(new Date()).format('YYYY-MM-DD') + ' ' + response.data + ':00'
+    })
   },
   computed: {
   },
   watch: {},
   mounted () {},
   methods: {
+    setEnableNum () {
+      this.timeDurations.forEach(item => {
+        item['enableNum'] = this.batchForm.enableNum
+      })
+    },
+    createTimeDurations () {
+      if (!this.batchForm.duration) {
+        this.$message.error('请输入班次时长!')
+        return false
+      }
+      this.timeDurations = []
+      const params = {
+        startTime: moment(this.configForm.startTime).format('HH:mm'),
+        endTime: moment(this.configForm.endTime).format('HH:mm'),
+        duration: this.batchForm.duration
+      }
+      createSysReservationConfigTimeDuration(params).then(response => {
+        this.timeDurations = response.data
+      })
+    },
     getWharfList () {
       this.wharfList = []
       getAllNotDelSysWharf().then(response => {
@@ -131,7 +186,8 @@ export default {
             duration: this.batchForm.duration,
             enableNum: this.batchForm.enableNum,
             enableWharf: this.batchForm.enableWharf.join(','),
-            status: status
+            status: status,
+            sysReservationConfigTimeDurationReqList: this.timeDurations
           }
           batchAddSysReservationConfig(saveForm).then(response => {
             this.$message.success('配置成功', 3)
@@ -154,7 +210,13 @@ export default {
         if (valid) {
           const saveForm = JSON.parse(JSON.stringify(this.form))
           if (this.form.id !== undefined) {
-            updateSysReservationConfig(saveForm).then(response => {
+            const params = {
+              id: this.form.id,
+              status: this.form.status,
+              enableWharf: this.form.enableWharf.join(','),
+              enableNum: this.form.enableNum
+            }
+            updateSysReservationConfig(params).then(response => {
               this.$message.success('更新成功', 3)
               this.open = false
               this.$emit('ok')