Эх сурвалжийг харах

feat(app): 添加编辑教学日并同步站点价格规则功能

- 新增 editOrTeachingDay 接口,支持编辑是否教学日
- 编辑教学日时同步更新对应学校站点价格规则的教学时间段
- 根据是否教学日,分别从站点配置的教学日/非教学日获取时间段设置
- 修改定时任务 OrTeachingJobService,调整节假日年份计算逻辑
- MybatisInterceptor 引入 JsqlParserGlobal,准备增强解析能力
wzq 1 сар өмнө
parent
commit
396d0675f4

+ 2 - 0
national-motion-base-core/src/main/java/org/jeecg/config/mybatis/MybatisInterceptor.java

@@ -1,5 +1,6 @@
 package org.jeecg.config.mybatis;
 
+import com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.binding.MapperMethod.ParamMap;
 import org.apache.ibatis.executor.Executor;
@@ -15,6 +16,7 @@ import org.jeecg.common.util.TokenUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
 import java.lang.reflect.Field;
 import java.util.Date;
 import java.util.Properties;

+ 4 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/quartz/job/OrTeachingJobService.java

@@ -69,12 +69,13 @@ public class OrTeachingJobService {
     private AppGmtInfoMapper appGmtInfoMapper;
 
     @Scheduled(cron = "0 0 0 1 12 *")
+//    @Scheduled(cron = "0 01 11 * * ?")
     @Transactional(rollbackFor = Exception.class)
     public void execute() throws ParseException {
         log.info("开始执行定时任务");
         int year = DateUtils.getYear();
-//        int year = 2024;
-        Map<String, List<String>> HolidayMap = HolidayUtil.getYearHoliday(String.valueOf(year));
+//        int year = 2025;
+        Map<String, List<String>> HolidayMap = HolidayUtil.getYearHoliday(String.valueOf(year+1));
         // 设置开始日期和结束日期
         Date beginDate = DateUtils.str2Date((year + 1) + "-01-01 00:00:00", new SimpleDateFormat("yyyy-MM-dd"));
         Date endDate = DateUtils.str2Date((year + 2) + "-01-01 00:00:00", new SimpleDateFormat("yyyy-MM-dd"));
@@ -179,7 +180,7 @@ public class OrTeachingJobService {
             //存放集合
             appTeachingTimeService.saveBatch(appteachingList);
             //存放开放时段列表
-            appSitePriceRulesService.insertList(appSitePriceRulesList);
+            appSitePriceRulesService.saveBatch(appSitePriceRulesList);
         }
     }
 

+ 67 - 6
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppTeachingTimeController.java

@@ -1,7 +1,9 @@
 package org.jeecg.modules.system.app.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -11,16 +13,25 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.system.app.dto.AppTeachingTimeDTO;
+import org.jeecg.modules.system.app.dto.TeachingDayDTO;
+import org.jeecg.modules.system.app.entity.AppSite;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
 import org.jeecg.modules.system.app.entity.AppTeachingTime;
+import org.jeecg.modules.system.app.service.IAppSitePriceRulesService;
+import org.jeecg.modules.system.app.service.IAppSiteService;
 import org.jeecg.modules.system.app.service.IAppTeachingTimeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -36,7 +47,11 @@ import java.util.List;
 public class AppTeachingTimeController extends JeecgController<AppTeachingTime, IAppTeachingTimeService> {
 	@Autowired
 	private IAppTeachingTimeService appTeachingTimeService;
-	
+    @Resource
+    private IAppSitePriceRulesService appSitePriceRulesService;
+    @Resource
+    private IAppSiteService appSiteService;
+
 	/**
 	 * 分页列表查询
 	 *
@@ -60,7 +75,7 @@ public class AppTeachingTimeController extends JeecgController<AppTeachingTime,
 		IPage<AppTeachingTime> pageList = appTeachingTimeService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
-	
+
 	/**
 	 *   添加
 	 *
@@ -76,7 +91,7 @@ public class AppTeachingTimeController extends JeecgController<AppTeachingTime,
 
 		return Result.OK("添加成功!");
 	}
-	
+
 	/**
 	 *  编辑
 	 *
@@ -91,7 +106,53 @@ public class AppTeachingTimeController extends JeecgController<AppTeachingTime,
 		appTeachingTimeService.updateById(appTeachingTime);
 		return Result.OK("编辑成功!");
 	}
-	
+
+    /**
+     *  编辑
+     *
+     * @param appTeachingTime
+     * @return
+     */
+    @AutoLog(value = "教学/非教学维护表-编辑是否教学日")
+    @Operation(summary="教学/非教学维护表-编辑是否教学日")
+    @RequestMapping(value = "/editOrTeachingDay", method = {RequestMethod.PUT,RequestMethod.POST})
+    public Result<String> editOrTeachingDay(@RequestBody AppTeachingTime appTeachingTime) {
+        AppTeachingTime teachingTime = appTeachingTimeService.getById(appTeachingTime.getId());
+        //修改对应学校的site_price_rules
+        String tenantId = teachingTime.getTenantId();
+        Date day = teachingTime.getDay();
+        AppSitePriceRules sitePriceRules = appSitePriceRulesService.getOne(Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getTenantId, tenantId).eq(AppSitePriceRules::getDateOfSale, day).last("limit 1"));
+        if (sitePriceRules != null) {
+
+            AppSite site = appSiteService.getOne(Wrappers.<AppSite>lambdaQuery().eq(AppSite::getTenantId, tenantId).last("limit 1"));
+
+            sitePriceRules.setIsTeaching(appTeachingTime.getIsTeaching());
+            if (site != null) {
+                if (appTeachingTime.getIsTeaching().equals(1)){
+                    List<TeachingDayDTO> data = JSONObject.parseObject(site.getNoTeachingDay()).getJSONArray("data").toJavaList(TeachingDayDTO.class);
+                    data.forEach(item -> {
+                        Date startTime = DateUtils.str2Date(item.getStartTime(), new SimpleDateFormat("HH:mm"));
+                        Date endTime = DateUtils.str2Date(item.getEndTime(), new SimpleDateFormat("HH:mm"));
+                        sitePriceRules.setStartTime(startTime);
+                        sitePriceRules.setEndTime(endTime);
+                    });
+                }
+                if (appTeachingTime.getIsTeaching().equals(0)){
+                    List<TeachingDayDTO> data = JSONObject.parseObject(site.getTeachingDay()).getJSONArray("data").toJavaList(TeachingDayDTO.class);
+                    data.forEach(item -> {
+                        Date startTime = DateUtils.str2Date(item.getStartTime(), new SimpleDateFormat("HH:mm"));
+                        Date endTime = DateUtils.str2Date(item.getEndTime(), new SimpleDateFormat("HH:mm"));
+                        sitePriceRules.setStartTime(startTime);
+                        sitePriceRules.setEndTime(endTime);
+                    });
+                }
+            }
+            appSitePriceRulesService.updateById(sitePriceRules);
+        }
+        appTeachingTimeService.updateById(appTeachingTime);
+        return Result.OK("编辑成功!");
+    }
+
 	/**
 	 *   通过id删除
 	 *
@@ -106,7 +167,7 @@ public class AppTeachingTimeController extends JeecgController<AppTeachingTime,
 		appTeachingTimeService.removeById(id);
 		return Result.OK("删除成功!");
 	}
-	
+
 	/**
 	 *  批量删除
 	 *
@@ -121,7 +182,7 @@ public class AppTeachingTimeController extends JeecgController<AppTeachingTime,
 		this.appTeachingTimeService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
-	
+
 	/**
 	 * 通过id查询
 	 *