diff --git a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java index 1e779fd..a0a68a1 100644 --- a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java +++ b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.*; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springblade.common.cache.DeptCache; import org.springblade.common.constant.BusinessConstant; import org.springblade.common.constant.CommonConstant; @@ -34,12 +35,14 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.*; +import java.util.logging.Logger; /** * 控制器 * * @author Chill */ +@Slf4j @TenantDS @RestController @RequestMapping(CommonConstant.APPLICATION_BUSINESS_NAME + "/apm-record") @@ -171,7 +174,7 @@ public class ApmRecordController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 5) @ApiOperation(value = "新增", notes = "传入apmConfig") - public R save(@RequestBody Map apmRecordListStr) { + synchronized public R save(@RequestBody Map apmRecordListStr) { List> apmRecordMapList = (List>) apmRecordListStr.get("data"); List apmRecordList = new ArrayList<>(); diff --git a/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java index cc59394..2ab04ea 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java @@ -14,9 +14,12 @@ import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.modules.business.dto.ApmRecordCountDTO; +import org.springblade.modules.business.entity.ApmConfig; import org.springblade.modules.business.entity.ApmRecord; import org.springblade.modules.business.entity.Blacklist; +import org.springblade.modules.business.mapper.ApmConfigMapper; import org.springblade.modules.business.mapper.ApmRecordMapper; +import org.springblade.modules.business.service.IApmConfigService; import org.springblade.modules.business.service.IApmRecordService; import org.springblade.modules.business.service.IBlacklistService; import org.springblade.modules.business.vo.ApmRecordDetailVO; @@ -37,6 +40,7 @@ import java.util.*; @RequiredArgsConstructor public class ApmRecordServiceImpl extends BaseServiceImpl implements IApmRecordService { private final IBlacklistService blacklistService; + private final ApmConfigMapper configMapper; @Override public IPage selectDistinctRecordPage(IPage page, Long createDept, String startTime, String endTime, String cupCardNo, String project, String status) { @@ -154,6 +158,35 @@ public class ApmRecordServiceImpl extends BaseServiceImpllambdaQuery() + .eq(ApmConfig::getCreateDept, record.getCreateDept()) + .eq(ApmConfig::getApmDay, record.getApmDay()) + .eq(ApmConfig::getProject, record.getProject()) + .eq(ApmConfig::getPeriod, record.getPeriod()) + .eq(ApmConfig::getTimeFrame, record.getTimeFrame()) + ); + // 2. 获取该放号的预约总数 + List records = list(Wrappers.lambdaQuery() + .eq(ApmRecord::getCreateDept, record.getCreateDept()) + .eq(ApmRecord::getApmDay, record.getApmDay()) + .eq(ApmRecord::getProject, record.getProject()) + .eq(ApmRecord::getPeriod, record.getPeriod()) + .eq(ApmRecord::getTimeFrame, record.getTimeFrame()) + .eq(ApmRecord::getApmStatus, BusinessConstant.RECORD_STATUS_UNREGISTER) + ); + // 3 判断已预约总数是否 < 放号数, 若是, 可预约, 否则不可预约 + if (Func.isEmpty(config)) { + return "预约失败, 未找到对应放号记录"; + } + + if (!Func.isEmpty(records) && records.size() >= config.getNumberNum()) { + return "预约失败, 该项目已无余号"; + } + } + return ""; }