Browse Source

2026-11-13

异常下机增加放重复提交
master
fengyuan_yang 3 days ago
parent
commit
732586032e
  1. 50
      src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java

50
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.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; 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}") @Value("${mes.logs.password}")
private String mesLogsPassword; private String mesLogsPassword;
/** 同一笔材料异常下机处理完成前,拒绝重复请求 */
private final Set<String> materialReturnInFlight = ConcurrentHashMap.newKeySet();
/** /**
* TODO 获取排产班次的休息时间 * TODO 获取排产班次的休息时间
* @author LR * @author LR
@ -1493,22 +1498,39 @@ public class ScheduleController extends AbstractController {
**/ **/
@RequestMapping(value = "materialReturnDuringProduction") @RequestMapping(value = "materialReturnDuringProduction")
public R materialReturnDuringProduction(@RequestBody SearchScheduleData inData){ public R materialReturnDuringProduction(@RequestBody SearchScheduleData inData){
Map<String, Object> 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<String, Object> 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() 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());
} }
/** /**

Loading…
Cancel
Save