diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java index f4efed975..ad1aa1e01 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java @@ -16,6 +16,7 @@ import org.springframework.cache.annotation.CacheConfig; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -98,6 +99,7 @@ public class GenCodeServiceImpl implements GenCodeService { } @Override + @Transactional(Transactional.TxType.REQUIRES_NEW) public String codeDemo(Map form) { String code = (String) form.get("code"); String id = this.queryIdByCode(code); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/PaperTubeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/PaperTubeServiceImpl.java index 7e8323723..911cc3c85 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/PaperTubeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/PaperTubeServiceImpl.java @@ -49,6 +49,7 @@ public class PaperTubeServiceImpl implements PaperTubeService { JSONArray rows = WQL.getWO("PDA_02").addParamMap(map).process().getResultJSONArray(0); JSONObject result = new JSONObject(); result.put("rows", rows); + result.put("message", "查询成功!"); return result; } @@ -90,7 +91,9 @@ public class PaperTubeServiceImpl implements PaperTubeService { jo.put("qty", qty); wmsToAcsService.PaperTubeAction(jo); } - return null; + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; } @Override @@ -118,6 +121,7 @@ public class PaperTubeServiceImpl implements PaperTubeService { } JSONObject result = new JSONObject(); result.put("rows", de_rows); + result.put("message", "查询成功!"); return result; } @@ -132,6 +136,7 @@ public class PaperTubeServiceImpl implements PaperTubeService { JSONArray rows = WQL.getWO("PDA_02").addParamMap(map).process().getResultJSONArray(0); JSONObject result = new JSONObject(); result.put("rows", rows); + result.put("message", "查询成功!"); return result; } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java index cf7a6be6b..f7154f90f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java @@ -27,6 +27,7 @@ public class AcsUtil { String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue(); JSONObject result = new JSONObject(); if (StrUtil.equals("0", isConnect)) { + result.put("status", HttpStatus.OK.value()); result.put("message", "下发成功,但未连接ACS!"); result.put("data", new JSONObject()); @@ -55,7 +56,7 @@ public class AcsUtil { } //acs抛异常这里 if (!StrUtil.equals(result.getString("status"), "200")) { - throw new BadRequestException(result.toString()); + throw new BadRequestException(result.getString("message")); } else { //如果向ACS下发任务,变更任务状态为下发 if (api.equals("api/wms/task")) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java index 4dd527d37..8e297b8e1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java @@ -186,7 +186,6 @@ public class OutTask extends AbstractAcsTask { } @Override - @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { String currentUserId = SecurityUtils.getCurrentUserId(); String currentUsername = SecurityUtils.getCurrentUsername(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 676346c38..46c58405e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -54,6 +54,8 @@ import java.math.BigDecimal; import java.util.*; import java.util.function.BiFunction; import java.util.function.Consumer; +import java.util.function.Predicate; +import java.util.stream.Collectors; /** * PC端出入库新增 @@ -2613,82 +2615,69 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { ArrayList arr = new ArrayList<>(); TranUtil.openTransaction((req, allTransactionConsumer) -> { - try { - if (checked) { - // 查询此明细所有的层 - JSONArray layerArr = WQL.getWO("ST_OUTIVT04") - .addParam("flag", "9") - .addParam("iostorinv_id", iostorinv_id) - .process() - .getResultJSONArray(0); + if (checked) { + // 查询此明细所有的层 + JSONArray layerArr = WQL.getWO("ST_OUTIVT04") + .addParam("flag", "9") + .addParam("iostorinv_id", iostorinv_id) + .process() + .getResultJSONArray(0); - for (int i = 0; i < layerArr.size(); i++) { - JSONObject json = layerArr.getJSONObject(i); + for (int i = 0; i < layerArr.size(); i++) { + JSONObject json = layerArr.getJSONObject(i); - String layer_num = json.getString("layer_num"); + String layer_num = json.getString("layer_num"); - String out_point = ""; + String out_point = ""; - switch (layer_num) { - case "1": - out_point = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("out_point_1").getValue(); - break; - case "2": - out_point = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("out_point_2").getValue(); - break; - case "3": - out_point = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("out_point_3").getValue(); - break; - } + switch (layer_num) { + case "1": + out_point = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("out_point_1").getValue(); + break; + case "2": + out_point = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("out_point_2").getValue(); + break; + case "3": + out_point = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("out_point_3").getValue(); + break; + } - // 将这一巷道的所有木箱进行移库 - JSONObject jsonNextPoint = attrTab.query("struct_code = '" + out_point + "'").uniqueResult(0); + // 将这一巷道的所有木箱进行移库 + JSONObject jsonNextPoint = attrTab.query("struct_code = '" + out_point + "'").uniqueResult(0); - JSONObject map2 = new JSONObject(); - map2.put("block_num", jsonNextPoint.getString("block_num")); - map2.put("row_num", jsonNextPoint.getString("row_num")); - map2.put("out_order_seq", jsonNextPoint.getString("out_order_seq")); + JSONObject map2 = new JSONObject(); + map2.put("block_num", jsonNextPoint.getString("block_num")); + map2.put("row_num", jsonNextPoint.getString("row_num")); + map2.put("out_order_seq", jsonNextPoint.getString("out_order_seq")); - map2.put("flag", "7"); - JSONArray paramMoveArr = WQL.getWO("ST_OUTIVT04").addParamMap(map2).process().getResultJSONArray(0); + map2.put("flag", "7"); + JSONArray paramMoveArr = WQL.getWO("ST_OUTIVT04").addParamMap(map2).process().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(paramMoveArr)) { - JSONObject moveParam = new JSONObject(); - moveParam.put("jsonAllBlockPoint", paramMoveArr); - moveParam.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); - this.createMove(moveParam, allTransactionConsumer); + if (ObjectUtil.isNotEmpty(paramMoveArr)) { + JSONObject moveParam = new JSONObject(); + moveParam.put("jsonAllBlockPoint", paramMoveArr); + moveParam.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); + this.createMove(moveParam, allTransactionConsumer); - new HandMoveStorAcsTask().immediateNotifyAcs(null); + new HandMoveStorAcsTask().immediateNotifyAcs(null); - // 更新任务为下发 - JSONObject param = new JSONObject(); - param.put("task_status", TaskStatusEnum.ISSUE.getCode()); - wo_Task.update(param, "task_group_id = '" + moveParam.getString("task_group_id") + "'"); - } + // 更新任务为下发 + JSONObject param = new JSONObject(); + param.put("task_status", TaskStatusEnum.ISSUE.getCode()); + wo_Task.update(param, "task_group_id = '" + moveParam.getString("task_group_id") + "'"); } } + } - for (int i = 0; i < allRowArr.size(); i++) { - // 调用当前排处理方法 - JSONObject jsonRow = allRowArr.getJSONObject(i); - jsonRow.put("iostorinv_id", iostorinv_id); - jsonRow.put("point_code", point_code); - jsonRow.put("checked", checked); - jsonRow.put("iostorinvdtl_id", iostorinvdtl_id); - jsonRow.put("point_id", jsonPoint2.getString("point_id")); - this.rowDispose(jsonRow, allTransactionConsumer); - } - } catch (Exception e) { - JSONObject result = (JSONObject) JSONObject.parse(e.getMessage()); - if (result.containsKey("errArr")) { - JSONArray errArr = result.getJSONArray("errArr"); - for (int i = 0; i < errArr.size(); i++) { - JSONObject err_jo = errArr.getJSONObject(i); - arr.add(err_jo.getJSONObject("data").getString("start_device_code")); - } - } else { - throw new BadRequestException(e.getMessage()); - } + for (int i = 0; i < allRowArr.size(); i++) { + // 调用当前排处理方法 + JSONObject jsonRow = allRowArr.getJSONObject(i); + jsonRow.put("iostorinv_id", iostorinv_id); + jsonRow.put("point_code", point_code); + jsonRow.put("checked", checked); + jsonRow.put("iostorinvdtl_id", iostorinvdtl_id); + jsonRow.put("point_id", jsonPoint2.getString("point_id")); + this.rowDispose(jsonRow, allTransactionConsumer); } return arr; }, new JSONArray()); @@ -2934,9 +2923,13 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { /* * 生成任务 */ + + //已经生成任务的点位数组 + JSONArray create_rows = new JSONArray(); boolean canOut = false; int j = 0; JSONObject jsonObject = disRowArrNew.getJSONObject(j); + create_rows.add(disRowArrNew.getJSONObject(j)); // 查询未被锁住的仓位 JSONArray moveArr = new JSONArray(); @@ -2991,7 +2984,6 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } point_id = point_tab.query("point_code = '" + point_code + "'").uniqueResult(0).getString("point_id"); } - allTransactionConsumer.accept(jsonObject.getString("struct_code")); // 创建任务 JSONObject param = new JSONObject(); @@ -3060,6 +3052,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { canAdd = false; } else { + create_rows.add(jsonNext); // 查询此任务组最后一个生成的任务 JSONObject jsonTaskLast = wo_Task.query("task_group_id = '" + task_group_id + "' order by sort_seq DESC").uniqueResult(0); // 创建任务并添加到任务组 @@ -3109,6 +3102,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } } + if (canOut) { // 下发当前任务组 outTask.immediateNotifyAcs(null); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/util/TranUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/util/TranUtil.java index 65cc88030..e554d918e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/util/TranUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/util/TranUtil.java @@ -1,11 +1,14 @@ package org.nl.wms.util; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.DefaultTransactionDefinition; +import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.util.CollectionUtils; import java.util.*; @@ -22,40 +25,50 @@ public class TranUtil { public static Object openTransaction(BiFunction, List> function, JSONArray request) { PlatformTransactionManager txManager = SpringContextHolder.getBean(PlatformTransactionManager.class); Map statusMap = new HashMap<>(); - Collection commits = new ArrayList<>(); + LinkedList commits = new LinkedList<>(); + List errTask = new ArrayList(); DefaultTransactionDefinition external = new DefaultTransactionDefinition(); external.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); + external.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED); TransactionStatus externalStatus = txManager.getTransaction(external); try { //创建所有事务集合 Consumer allTransactionConsumer = task -> { + System.out.println(TransactionSynchronizationManager.getCurrentTransactionName()); DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); + def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED); TransactionStatus status = txManager.getTransaction(def); statusMap.put(task, status); + commits.addLast(status); }; //业务 - List errTask = function.apply(request, allTransactionConsumer); + errTask = function.apply(request, allTransactionConsumer); + + } catch (Exception ex) { + TransactionStatus transactionStatus = commits.removeLast(); + txManager.rollback(transactionStatus); + throw new BadRequestException(ex.getMessage()); + } finally { //过滤异常事务的任务id + /*List finalErrTask = errTask; List collect = statusMap.entrySet().stream() - .filter(tmap -> !errTask.contains(tmap.getKey())) + .filter(tmap -> finalErrTask.contains(tmap.getKey())) .map(tmap -> tmap.getValue()) .collect(Collectors.toList()); - commits = statusMap.values(); - commits.removeAll(collect); - for (TransactionStatus status : collect) { + commits.removeAll(collect);*/ + for (TransactionStatus status : commits) { txManager.commit(status); } - } finally { - //释放剩余资源 - if (!CollectionUtils.isEmpty(commits)) { - for (TransactionStatus commit : commits) { - txManager.rollback(commit); - } - } txManager.commit(externalStatus); + /* //释放剩余资源 + if (!CollectionUtils.isEmpty(collect)) { + for (TransactionStatus err : collect) { + txManager.rollback(err); + } + }*/ } return null; } diff --git a/lms/nladmin-ui/src/views/system/param/index.vue b/lms/nladmin-ui/src/views/system/param/index.vue index a7393c34f..77bfcc751 100644 --- a/lms/nladmin-ui/src/views/system/param/index.vue +++ b/lms/nladmin-ui/src/views/system/param/index.vue @@ -46,7 +46,7 @@ - +