opt:刻字输送线任务下发控制

This commit is contained in:
zhangzhiqiang
2023-08-25 16:01:17 +08:00
parent eeb28c7361
commit b10f1d806a
2 changed files with 41 additions and 37 deletions

View File

@@ -35,7 +35,7 @@ public class RedissonUtils {
if (isLock){
process.process();
} else {
throw new BadRequestException("当前业务 key:"+key+"正在执行请稍后再试");
throw new BadRequestException("当前业务:"+key+"正在执行请稍后再试");
}
}catch (Exception ex){
ex.printStackTrace();

View File

@@ -234,44 +234,48 @@ public class TmpKZController {
@Log("刻字任务重新下发")
@SaIgnore
public ResponseEntity<Object> resend(@RequestBody JSONObject param){
SchBaseTask baseTask = taskService.getById(param.getString("task_id"));
if (baseTask.getTask_status().equals(StatusEnum.TASK_FINISH.getCode())){
throw new BadRequestException("任务已经完成");
};
if (baseTask.getTask_type().equals(AcsTaskEnum.TASK_Engrave_CALL.getCode())){
//下发
Map<String,String> qtyArr = JSONObject.parseObject(baseTask.getQtyArr(), Map.class);
JSONObject jo = new JSONObject();
jo.put("start_point_code", baseTask.getPoint_code1());
jo.put("task_code", baseTask.getTask_code());
jo.put("all_weight", baseTask.getMaterial_qty().intValue());
String[] to_sort_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_devices_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_weight_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
List<String> sort = qtyArr.keySet().stream().sorted(Comparator.comparingInt(key -> Integer.valueOf(key.substring(key.lastIndexOf("_") + 1)))).collect(Collectors.toList());
for (int i1 = 0; i1 < sort.size(); i1++) {
String key = sort.get(i1);
to_sort_array[i1] = String.valueOf(i1+1);
to_devices_array[i1] = String.valueOf(key);
to_weight_array[i1] = String.valueOf(new BigDecimal(qtyArr.get(key)));
}
jo.put("to_sort_array", Arrays.stream(to_sort_array).collect(Collectors.joining(",")));
jo.put("to_devices_array",Arrays.stream(to_devices_array).collect(Collectors.joining(",")));
jo.put("to_weight_array", Arrays.stream(to_weight_array).collect(Collectors.joining(",")));
JSONObject result = wmsToAcsService.request(jo, "api/wms/engravingIn");
if (!result.getString("status").equals("200")){
log.error("刻字上料输送线任务下发异常:{}",result.getString("message"));
baseTask.setRemark(result.getString("message"));
baseTask.setTask_status(TaskStatusEnum.SURE_START_ERROR.getCode());
taskService.updateById(baseTask);
throw new BadRequestException(result.getString("message"));
RedissonUtils.lock(()->{
SchBaseTask baseTask = taskService.getById(param.getString("task_id"));
if (baseTask.getTask_status().equals(StatusEnum.TASK_FINISH.getCode())){
throw new BadRequestException("任务已经完成");
};
if (baseTask.getTask_type().equals(AcsTaskEnum.TASK_Engrave_CALL.getCode())){
//下发
Map<String,String> qtyArr = JSONObject.parseObject(baseTask.getQtyArr(), Map.class);
JSONObject jo = new JSONObject();
jo.put("start_point_code", baseTask.getPoint_code1());
jo.put("task_code", baseTask.getTask_code());
jo.put("all_weight", baseTask.getMaterial_qty().intValue());
String[] to_sort_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_devices_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_weight_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
List<String> sort = qtyArr.keySet().stream().sorted(Comparator.comparingInt(key -> Integer.valueOf(key.substring(key.lastIndexOf("_") + 1)))).collect(Collectors.toList());
for (int i1 = 0; i1 < sort.size(); i1++) {
String key = sort.get(i1);
to_sort_array[i1] = String.valueOf(i1+1);
to_devices_array[i1] = String.valueOf(key);
to_weight_array[i1] = String.valueOf(new BigDecimal(qtyArr.get(key)));
}
jo.put("to_sort_array", Arrays.stream(to_sort_array).collect(Collectors.joining(",")));
jo.put("to_devices_array",Arrays.stream(to_devices_array).collect(Collectors.joining(",")));
jo.put("to_weight_array", Arrays.stream(to_weight_array).collect(Collectors.joining(",")));
JSONObject result = wmsToAcsService.request(jo, "api/wms/engravingIn");
if (!result.getString("status").equals("200")){
log.error("刻字上料输送线任务下发异常:{}",result.getString("message"));
baseTask.setRemark(result.getString("message"));
baseTask.setTask_status(TaskStatusEnum.SURE_START_ERROR.getCode());
taskService.updateById(baseTask);
throw new BadRequestException(result.getString("message"));
}else {
baseTask.setTask_status(TaskStatusEnum.ISSUE.getCode());
taskService.updateById(baseTask);
}
}else {
baseTask.setTask_status(TaskStatusEnum.ISSUE.getCode());
taskService.updateById(baseTask);
throw new BadRequestException("搬运任务不允许直接下发");
//taskService.operation(MapOf.of("method_name","immediateNotifyAcs","task_id",param.getString("task_id")));
}
}else {
taskService.operation(MapOf.of("method_name","immediateNotifyAcs","task_id",param.getString("task_id")));
}
},"刻字输送线下发",null);
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}