diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BizMaintenanceOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BizMaintenanceOrderController.java index ea6a662e..0e0975c7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BizMaintenanceOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BizMaintenanceOrderController.java @@ -2,12 +2,14 @@ package com.ruoyi.web.controller.tyre; import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.*; @@ -22,6 +24,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -188,7 +191,21 @@ public class BizMaintenanceOrderController extends BaseController { */ @PostMapping("/PDAAddMaintenanceOrder") @ResponseBody - public AjaxResult PDAAddMaintenanceOrder(@RequestBody BizMaintenanceOrder bizMaintenanceOrder) { + @RepeatSubmit + @Transactional(rollbackFor = Exception.class) + public synchronized AjaxResult PDAAddMaintenanceOrder(@RequestBody BizMaintenanceOrder bizMaintenanceOrder) { + if (bizMaintenanceOrder == null) { + return error("参数不能为空"); + } + if (StringUtils.isEmpty(bizMaintenanceOrder.getPlateNumber())) { + return error("车牌号不能为空"); + } + if (StringUtils.isEmpty(bizMaintenanceOrder.getTypeCode())) { + return error("维保类型不能为空"); + } + if (bizMaintenanceOrderService.countSameDayMaintenanceOrder(bizMaintenanceOrder) > 0) { + return error("同一车辆同一维保类型当天只能生成一次工单"); + } String orderNo = orderNoCreate(); bizMaintenanceOrder.setOrderNo(orderNo); return toAjax(bizMaintenanceOrderService.insertBizMaintenanceOrder(bizMaintenanceOrder)); @@ -290,10 +307,12 @@ public class BizMaintenanceOrderController extends BaseController { private String orderNoCreate() { // 查询当天的工单号(返回的是当天最新的一条记录) - BizMaintenanceOrder bizMaintenanceOrder = bizMaintenanceOrderService.selectBizMaintenanceOrderTD(); + BizMaintenanceOrder query = new BizMaintenanceOrder(); + fillTodayRange(query); + BizMaintenanceOrder bizMaintenanceOrder = bizMaintenanceOrderService.selectBizMaintenanceOrderTD(query); String orderNo; - String today = new java.text.SimpleDateFormat("yyyyMMdd").format(new java.util.Date()); + String today = DateUtils.dateTime(); if (bizMaintenanceOrder == null) { // 当天没有工单,从001开始 @@ -312,4 +331,11 @@ public class BizMaintenanceOrderController extends BaseController { } return orderNo; } + + private void fillTodayRange(BizMaintenanceOrder bizMaintenanceOrder) { + LocalDate today = LocalDate.now(); + // 使用 Java 计算当天半开区间,避免在 Mapper 中写 MySQL/SQL Server 不兼容的日期函数。 + bizMaintenanceOrder.getParams().put("beginTime", DateUtils.toDate(today)); + bizMaintenanceOrder.getParams().put("endTime", DateUtils.toDate(today.plusDays(1))); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BizMaintenanceOrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BizMaintenanceOrderMapper.java index c55921e0..8d6891d2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BizMaintenanceOrderMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BizMaintenanceOrderMapper.java @@ -62,7 +62,9 @@ public interface BizMaintenanceOrderMapper */ public int deleteBizMaintenanceOrderByOrderIds(String[] orderIds); - BizMaintenanceOrder selectBizMaintenanceOrderTD(); + BizMaintenanceOrder selectBizMaintenanceOrderTD(BizMaintenanceOrder bizMaintenanceOrder); BizMaintenanceOrder selectBizMaintenanceOrderByOrderIdBefore(BizMaintenanceOrder bizMaintenanceOrder); + + int countSameDayMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IBizMaintenanceOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IBizMaintenanceOrderService.java index 952cc018..b59bf32d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IBizMaintenanceOrderService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IBizMaintenanceOrderService.java @@ -63,7 +63,9 @@ public interface IBizMaintenanceOrderService List selectBizMaintenanceOrderListTwo(BizMaintenanceOrder bizMaintenanceOrder); - BizMaintenanceOrder selectBizMaintenanceOrderTD(); + BizMaintenanceOrder selectBizMaintenanceOrderTD(BizMaintenanceOrder bizMaintenanceOrder); BizMaintenanceOrder selectBizMaintenanceOrderByOrderIdBefore(BizMaintenanceOrder bizMaintenanceOrder); + + int countSameDayMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BizMaintenanceOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BizMaintenanceOrderServiceImpl.java index 22cb056b..9560c784 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BizMaintenanceOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BizMaintenanceOrderServiceImpl.java @@ -1,10 +1,10 @@ package com.ruoyi.system.service.impl; +import java.time.LocalDate; import java.util.List; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.ShiroUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.system.mapper.BizMaintenanceOrderMapper; @@ -112,12 +112,21 @@ public class BizMaintenanceOrderServiceImpl implements IBizMaintenanceOrderServi } @Override - public BizMaintenanceOrder selectBizMaintenanceOrderTD() { - return bizMaintenanceOrderMapper.selectBizMaintenanceOrderTD(); + public BizMaintenanceOrder selectBizMaintenanceOrderTD(BizMaintenanceOrder bizMaintenanceOrder) { + return bizMaintenanceOrderMapper.selectBizMaintenanceOrderTD(bizMaintenanceOrder); } @Override public BizMaintenanceOrder selectBizMaintenanceOrderByOrderIdBefore(BizMaintenanceOrder bizMaintenanceOrder) { return bizMaintenanceOrderMapper.selectBizMaintenanceOrderByOrderIdBefore(bizMaintenanceOrder); } + + @Override + public int countSameDayMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder) { + LocalDate today = LocalDate.now(); + // PDA 新增工单按“生成当天”限次,日期边界由 Java 生成,Mapper 只做范围比较以兼容 MySQL/SQL Server。 + bizMaintenanceOrder.getParams().put("beginTime", DateUtils.toDate(today)); + bizMaintenanceOrder.getParams().put("endTime", DateUtils.toDate(today.plusDays(1))); + return bizMaintenanceOrderMapper.countSameDayMaintenanceOrder(bizMaintenanceOrder); + } } diff --git a/ruoyi-system/src/main/resources/mapper/tyre/BizMaintenanceOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/tyre/BizMaintenanceOrderMapper.xml index 02782331..94bfd23d 100644 --- a/ruoyi-system/src/main/resources/mapper/tyre/BizMaintenanceOrderMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/tyre/BizMaintenanceOrderMapper.xml @@ -114,13 +114,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where order_id = #{orderId} - SELECT MAX(order_no) as order_no FROM biz_maintenance_order WHERE - DATE(create_time) = CURDATE(); + create_time >= #{params.beginTime} + AND create_time < #{params.endTime} + +