From 732586032e3aac84810549b54636d3f34eb669dc Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Fri, 13 Nov 2026 13:33:41 +0800 Subject: [PATCH] =?UTF-8?q?2026-11-13=20=E5=BC=82=E5=B8=B8=E4=B8=8B?= =?UTF-8?q?=E6=9C=BA=E5=A2=9E=E5=8A=A0=E6=94=BE=E9=87=8D=E5=A4=8D=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScheduleController.java | 50 +++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java index 247b49d..5b2c0e4 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java @@ -42,6 +42,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; /** * 生产订单排产 @@ -66,6 +68,9 @@ public class ScheduleController extends AbstractController { @Value("${mes.logs.password}") private String mesLogsPassword; + + /** 同一笔材料异常下机处理完成前,拒绝重复请求 */ + private final Set materialReturnInFlight = ConcurrentHashMap.newKeySet(); /** * TODO 获取排产班次的休息时间 * @author LR @@ -1493,22 +1498,39 @@ public class ScheduleController extends AbstractController { **/ @RequestMapping(value = "materialReturnDuringProduction") public R materialReturnDuringProduction(@RequestBody SearchScheduleData inData){ - Map resultMap = scheduleService.materialReturnDuringProduction(inData); - // 获取存储过程返回的code - String resultCode = String.valueOf(resultMap.get("Code")); - String resultMsg = String.valueOf(resultMap.get("Message")); - - if ("201".equalsIgnoreCase(resultCode)) { - // code=201 表示需要打印,返回打印参数 + String lockKey = buildMaterialReturnLockKey(inData); + if (!materialReturnInFlight.add(lockKey)) { + return R.error(500, "正在处理,请勿重复提交"); + } + try { + Map resultMap = scheduleService.materialReturnDuringProduction(inData); + // 获取存储过程返回的code + String resultCode = String.valueOf(resultMap.get("Code")); + String resultMsg = String.valueOf(resultMap.get("Message")); + + if ("201".equalsIgnoreCase(resultCode)) { + // code=201 表示需要打印,返回打印参数 + return R.ok() + .put("code", 201) + .put("msg", resultMsg) + .put("printData", resultMap); // 将存储过程返回的所有参数作为打印数据返回 + } + return R.ok() - .put("code", 201) - .put("msg", resultMsg) - .put("printData", resultMap); // 将存储过程返回的所有参数作为打印数据返回 + .put("code", 200) + .put("msg", getLanguageMsg(SysMsgConstant.OBJECT_ID_200000)); + } finally { + materialReturnInFlight.remove(lockKey); } - - return R.ok() - .put("code", 200) - .put("msg", getLanguageMsg(SysMsgConstant.OBJECT_ID_200000)); + } + + private String buildMaterialReturnLockKey(SearchScheduleData inData) { + return String.valueOf(inData.getSite()) + "|" + + String.valueOf(inData.getOrderNo()) + "|" + + String.valueOf(inData.getItemNo()) + "|" + + String.valueOf(inData.getSeqNo()) + "|" + + String.valueOf(inData.getRollNo()) + "|" + + String.valueOf(inData.getHistSeqNo()); } /**