From b6681bc12173c1179d0185805ba461211472ac18 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期日, 04 一月 2026 09:31:16 +0800
Subject: [PATCH] 1.完善出库任务呼叫agv 2.完善agv任务下发 3.等等
---
src/main/java/com/zy/asrs/controller/MobileController.java | 466 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 451 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 43b1323..06df109 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -1,24 +1,36 @@
package com.zy.asrs.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.MobileAdjustResult;
+import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl;
+import com.zy.asrs.service.impl.OrderDetlPakoutServiceImpl;
+import com.zy.asrs.service.impl.OrderPakinServiceImpl;
+import com.zy.asrs.service.impl.OrderPakoutServiceImpl;
+import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.common.model.WrkDto;
+import com.zy.common.utils.HttpHandler;
import com.zy.common.web.BaseController;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -38,6 +50,8 @@
@Autowired
private OrderService orderService;
@Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
private DocTypeService docTypeService;
@Autowired
private WrkMastService wrkMastService;
@@ -47,6 +61,143 @@
private BasDevpService basDevpService;
@Autowired
private PackService packService;
+ @Autowired
+ private ManLocDetlMapper manLocDetlMapper;
+ @Autowired
+ private WrkDetlLogService wrkDetlLogService;
+
+ @Resource
+ private StaDescService staDescService;
+ @Autowired
+ private OrderPakinServiceImpl orderPakinService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private OrderDetlPakinServiceImpl orderDetlPakinService;
+ @Autowired
+ private OrderPakoutServiceImpl orderPakoutService;
+ @Autowired
+ private OrderDetlPakoutServiceImpl orderDetlPakoutService;
+ @Value("${wcs.url}")
+ private String WCS_URL;
+
+ @RequestMapping("/pda/WarehouseOut/v1")
+ @ManagerAuth(memo = "骞舵澘閫斾腑鎷f枡-鍙傝�冨康鍒�")
+ public R WarehouseOutV1(@RequestBody CombParam combParam) {
+ return mobileService.WarehouseOutV1(combParam, getHostId(), getUserId());
+ }
+
+ @RequestMapping("/pda/WarehouseOutPickMerge/v1")
+ @ManagerAuth(memo = "鎷f枡閫斾腑骞舵澘")
+ public R WarehouseOutPickMergeV1(@RequestBody WarehouseOutPickMergeParam param) {
+ if (Cools.isEmpty(param,param.getLocNo(),param.getBarcode(),param.getCombMats())) {
+ return R.parse("鍙傛暟涓嶈兘涓虹┖锛�");
+ }
+ return mobileService.WarehouseOutPickMergeV1(param, getHostId(), getUserId());
+ }
+
+ @RequestMapping("/pick/in")
+ @ManagerAuth(memo = "骞舵澘鍏ュ簱")
+ public R pickConfirm(@RequestBody PickConfirmParam param) {
+
+ if(Cools.isEmpty(param,param.getList(),param.getLocNo(),param.getStaNo())) {
+ return R.parse("鍙傛暟涓嶅畬鏁�");
+ }
+ return mobileService.pickConfirm(param, getUserId());
+ }
+
+ @RequestMapping("/barcode/list/all")
+ @ManagerAuth(memo = "骞舵澘鍏ュ簱閫斾腑鎷f枡鍑哄簱鑾峰彇浠诲姟淇℃伅")
+ public R orderOutListOrder(@RequestParam(required = false) String barcode) {
+ return mobileService.orderOutListOrder(barcode, getUserId());
+ }
+
+ @RequestMapping("/barcode/list/pick")
+ @ManagerAuth(memo = "鎷f枡鍏ュ簱閫斾腑骞舵澘鑾峰彇浠诲姟淇℃伅")
+ public R orderOutListOrderPick(@RequestParam(required = false) String barcode) {
+ return mobileService.orderOutListOrderPick(barcode, getUserId());
+ }
+
+ @RequestMapping("/loc/f/list")
+ @ManagerAuth(memo = "鑾峰彇鍦ㄥ簱搴撲綅")
+ public R locNoF(@RequestParam(required = false) String locNo) {
+ Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>()
+ .eq("loc_sts", "F");
+ if (!Cools.isEmpty(locNo)) {
+ wrapper.like("loc_no", locNo);
+ }
+ List<LocMast> list = locMastService.selectList(wrapper);
+ return R.ok().add(list);
+ }
+
+ @RequestMapping("/pick/sta/list")
+ @ManagerAuth(memo = "鑾峰彇骞舵澘绔�")
+ public R pickSta() {
+ List<StaDesc> list = staDescService.selectList(new EntityWrapper<StaDesc>()
+ .eq("type_no", 104));
+ return R.ok().add(list);
+ }
+
+ @RequestMapping("/pick/mat/list")
+ @ManagerAuth(memo = "鑾峰彇骞舵澘鐗╂枡")
+ public R pickMats(@RequestParam(required = false) String matnr, @RequestParam(required = false) String orderNo) {
+ return mobileService.pickMats(matnr, orderNo);
+ }
+
+ @PostMapping("/scan/order/mats")
+ @ManagerAuth(memo = "鎵爜鑾峰彇缁勬墭鐗╂枡")
+ public R scanMats(@RequestBody PakinMatsByQRParams params) {
+ if (Objects.isNull(params)) {
+ return R.parse("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return mobileService.getMatsByQRcode(params);
+ }
+
+ // 鍟嗗搧涓婃灦
+ @RequestMapping("/mat/onSale/auth")
+ @ManagerAuth
+ public R matOnSale(@RequestBody CombParam combParam){
+ mobileService.onSale(combParam);
+ return R.ok("涓婃灦鎴愬姛");
+ }
+ // 鍟嗗搧涓嬫灦
+ @RequestMapping("/mat/offSale/auth")
+ //@ManagerAuth
+ public R matOffSale(@RequestBody OffSaleParam offSaleParam){
+ mobileService.offSale(offSaleParam);
+ return R.ok("涓嬫灦鎴愬姛");
+ }
+
+
+ @GetMapping("/cache/locs")
+ @ManagerAuth
+ @ApiOperation("鑾峰彇缂撳瓨鍖哄簱浣嶄俊鎭�")
+ public R getCacheLocs() {
+ return mobileService.getCacheLocs();
+ }
+
+
+ @PostMapping("/cache/agv/call")
+ @ApiOperation("鍛煎彨AGV鎼繍")
+ @ManagerAuth
+ public R callAgvMove(@RequestBody AgvCallParams params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return mobileService.callAgvMove(params, getUserId());
+ }
+
+
+ @PostMapping("/cache/out/call")
+ @ApiOperation("鍛煎彨AGV鎼繍")
+ @ManagerAuth
+ public R OutCallAgv(@RequestBody AgvCallParams params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return mobileService.OutCallAgv(params, getUserId());
+ }
+
// 缁勬墭 ----------------------------------------------------------------------------------------------------
@@ -54,25 +205,73 @@
* 鏍规嵁鍗曞彿妫�绱㈠崟鎹暟鎹�
* http://localhost:8081/jkwms/mobile/order/serach/orderNo/auth?orderNo=123123
*/
+// @RequestMapping("/order/search/orderNo/auth")
+// @ManagerAuth
+// public R orderSearchByBarcode(@RequestParam String orderNo){
+// Order order = orderService.selectByNo(orderNo);
+// if (order == null) {
+// return R.ok();
+// }
+// DocType docType = docTypeService.selectById(order.getDocType());
+// if (docType.getPakin() == null || docType.getPakin() != 1) {
+// return R.ok();
+// }
+// if (order.getSettle() > 2) {
+// return R.ok();
+// }
+// List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
+// if (Cools.isEmpty(orderDetls)) {
+// return R.ok();
+// }
+// return R.ok().add(orderDetls);
+// }
@RequestMapping("/order/search/orderNo/auth")
@ManagerAuth
public R orderSearchByBarcode(@RequestParam String orderNo){
- Order order = orderService.selectByNo(orderNo);
- if (order == null) {
+ OrderPakin orderPakin = orderPakinService.selectByNo(orderNo);
+ if (orderPakin == null) {
return R.ok();
}
- DocType docType = docTypeService.selectById(order.getDocType());
- if (docType.getPakin() == null || docType.getPakin() != 1) {
+ DocType docType = docTypeService.selectById(orderPakin.getDocType());
+ if (docType.getPakin() != 1) {
return R.ok();
}
- if (order.getSettle() > 2) {
+
+ List<OrderDetlPakin> orderDetlPakins = orderPakinService.selectWorkingDetls(orderPakin.getId());
+ if (Cools.isEmpty(orderDetlPakins)) {
return R.ok();
}
- List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
- if (Cools.isEmpty(orderDetls)) {
+ List<OrderDetlPakin> orderDetls1= new ArrayList<>();
+ for (OrderDetlPakin orderDetl : orderDetlPakins) {
+ if(orderDetl.getAnfme()-orderDetl.getWorkQty()>0){
+ orderDetls1.add(orderDetl);
+ }
+
+ }
+ return R.ok().add(orderDetls1);
+ }
+
+ @RequestMapping("/order/search/orderNo/out/auth")
+ @ManagerAuth
+ public R orderSearchByBarcodeOut(@RequestParam String orderNo){
+ OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
+ if (orderPakout == null) {
return R.ok();
}
- return R.ok().add(orderDetls);
+ DocType docType = docTypeService.selectById(orderPakout.getDocType());
+
+ List<OrderDetlPakout> orderDetlPakouts = orderPakoutService.selectWorkingDetls(orderPakout.getId());
+ if (Cools.isEmpty(orderDetlPakouts)) {
+ return R.ok();
+ }
+ List<OrderDetlPakout> orderDetls1= new ArrayList<>();
+ for (OrderDetlPakout orderDetl : orderDetlPakouts) {
+ if(orderDetl.getAnfme()-orderDetl.getWorkQty()>0){
+ orderDetls1.add(orderDetl);
+ }
+
+ }
+ return R.ok().add(orderDetls1);
}
@RequestMapping("/comb/auth")
@@ -149,12 +348,57 @@
}
/**
+ * 鍑哄簱纭 - 鎵揣鐗� 骞垮痉瀹滅鐗�
+ * 1.鍏ㄦ澘 杩斿洖 101
+ * 2.鎷f枡 杩斿洖 103
+ */
+ @RequestMapping("/pakout/confirm/goods/auth") //寰呭畬鍠� 鍘熷洜锛堝鎴锋湭缁欏嚭璇︾粏淇℃伅锛�
+ @ManagerAuth
+ public R pakoutQueryByGoods(@RequestBody GDYKConfirmGoodsParam combParam){
+ if (Cools.isEmpty(combParam)) {
+ return R.ok();
+ }
+// List<Order> orders = orderService.selectorderNoL(batch);
+// OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", combParam.getMatnr()).eq("batch", combParam.getBatch()).eq("order_no",combParam.getOrderNo()));
+ Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, combParam.getOrderNo());
+ List<OrderDetl> orderDetlList = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId());
+ OrderDetl orderDetl = null;
+ for (OrderDetl orderDetl1 : orderDetlList){
+ if (combParam.getMatnr().equals(orderDetl1.getMatnr()) && combParam.getBatch().equals(orderDetl1.getBatch())){
+ orderDetl = orderDetl1;
+ break;
+ }
+ }
+ if (Cools.isEmpty(orderDetl)){
+ return R.error("鏈煡鍒版暟鎹�");
+ }
+ if (!orderDetl.getQty$().equals("宸插畬鎴�")){
+ return R.error("浠诲姟鏈畬鎴�");
+ }
+ //澶嶆牳鏁�
+ orderDetl.setSource(1);
+// orderDetlService.updateById(orderDetl);
+ OrderInAndOutUtil.updateOrderDetl(Boolean.FALSE,order,orderDetl);
+ return R.ok();
+ }
+
+ // 鏍规嵁搴撲綅鐮佸拰鍟嗗搧鐮佹悳绱㈠晢鍝�
+ @RequestMapping("/mat/find/auth")
+ public R find(@RequestParam(required = false) String locNo
+ , @RequestParam(required = false) String matnr){
+ //List<ManLocDetl> manLocDetls = manLocDetlMapper.selectItem0(locNo, matnr);
+ ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(locNo, matnr);
+ return R.ok(manLocDetl);
+ //return R.ok(manLocDetlMapper.selectItem0(locNo, matnr));
+ }
+
+ /**
* 鍑哄簱纭 - 鎷f枡鍑哄簱 - 閫夋嫨鍏蜂綋鏉$爜鍟嗗搧
*/
@RequestMapping("/pakout/confirm/pick/auth")
@ManagerAuth
public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo
- , @RequestParam(required = false) String matnr){
+ , @RequestParam(required = false) String matnr){
if (Cools.isEmpty(wrkNo)) {
return R.ok();
}
@@ -294,5 +538,197 @@
return R.ok("鐩樼偣鎴愬姛");
}
+ @PostMapping("/order/out/pakout/auth")
+ @ManagerAuth(memo = "璁㈠崟鍑哄簱")
+ public synchronized R pakoutByOrder(@RequestBody JSONObject param) {
+ if(!param.containsKey("staNo") || !param.containsKey("orderNo")){
+ return R.parse(BaseRes.PARAM);
+ }
+ mobileService.pakoutByOrder(param,getUserId());
+ return R.ok("鍑哄簱鎴愬姛");
+ }
+
+ /**
+ * 琛ョ┖鏉�
+ *
+ * @param locNo 鐩爣绔欑偣
+ * @param size 鎵樼洏澶у皬 1锛氬皬鎵樼洏 2锛氬ぇ鎵樼洏
+ * @return
+ */
+ // pda鍛煎彨绌烘枡妗嗗嚭搴�
+ @PostMapping("/callEmptyBinOutBound")
+ @ManagerAuth(memo = "pda鍛煎彨绌烘枡妗嗗嚭搴�")
+ public synchronized R callEmptyBinOutBound(@RequestParam(required = false) String locNo
+ , @RequestParam(required = false) String size) {
+ if (Cools.isEmpty(locNo) || Cools.isEmpty(size)) {
+ return R.error("绔欑偣鎴栬�呭ぇ灏忎笉鑳戒负绌�");
+ }
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("memo", locNo));
+ if (wrkMast != null) {
+ return R.error("璇ョ珯鐐�="+locNo+"宸茬粡鏈夌┖鏉垮嚭搴撲换鍔★紝涓轰簡涓嶅牭濉炲爢鍨涙満鎺ラ┏绔欑偣锛岀姝笅鍙戝涓┖鏉垮嚭搴撲换鍔�");
+ }
+ return mobileService.callEmptyBinOutBound(locNo,size,getUserId());
+ }
+
+ /**
+ * 绌烘澘鍥炲簱鎴栬�呮嫞鏂欏洖搴�
+ *
+ * @param sourceStaNo
+ * @param staNo
+ * @return
+ */
+ @RequestMapping("/AGVStartReturn")
+ public synchronized R AGVStartReturn(@RequestParam(required = false) String sourceStaNo
+ , @RequestParam(required = false) String staNo
+ , @RequestParam(required = false) String taskNo) {
+ if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
+ return R.error("婧愮珯鐐瑰拰鎵樼洏鐮佷笉鑳戒负绌�");
+ }
+ List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("source_sta_no", sourceStaNo).eq("barcode", staNo));
+ if (tasks.size() > 0) {
+ return R.error("璇ユ墭鐩�="+staNo+"宸茬粡瀛樺湪鎼繍浠诲姟锛岃涓嶈閲嶅涓嬪彂");
+ }
+
+ String barcode = staNo.substring(0,1);
+ if(barcode.equals("3")){
+ taskNo = "307";
+ }else if(barcode.equals("4")){
+ taskNo = "402";
+ }else if(barcode.equals("5")){
+ taskNo = "401";
+ }
+
+ R r = R.ok();
+ //鐢熸垚AGV鎼繍鍑哄簱浠诲姟
+ // 淇濆瓨宸ヤ綔妗�
+ Task task = new Task();
+ Date date = new Date();
+ String TaskNo = 555555 + "aa" + date.getTime();
+ task.setWrkNo((int) date.getTime())
+ .setTaskNo(TaskNo)
+ .setIoTime(date)
+ .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
+ .setIoType(3) // 鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔� 4.绔欏埌鍖哄煙
+ .setTaskType("agv")
+ .setIoPri(10D)
+ .setFullPlt("Y") // 婊℃澘锛歒
+ .setPicking("N") // 鎷f枡
+ .setExitMk("N")// 閫�鍑�
+ .setStaNo(taskNo)
+ .setSourceStaNo(sourceStaNo)//agv鍙栬揣绔欑偣
+ .setEmptyMk("N")// 绌烘澘
+ .setBarcode(staNo)// 鎵樼洏鐮�
+ .setLinkMis("N")
+ .setAppeUser(9945L)
+ .setAppeTime(date)
+ .setModiUser(9945L)
+ .setModiTime(date);
+ if (!taskService.insert(task)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ return r;
+ }
+
+ @RequestMapping("/orderIn")
+ public synchronized R AGVOrderInReturn() {
+ List<OrderPakin> settle = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("settle", 1, 2));
+ List<String> list = new ArrayList<>();
+ for (OrderPakin orderPakin : settle) {
+ if (orderPakin.getSettle()==2){
+ List<OrderDetlPakin> orderId = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", orderPakin.getId()));
+ Boolean boo=true;
+ for (OrderDetlPakin orderDetlPakin : orderId) {
+ if (orderDetlPakin.getAnfme()>orderDetlPakin.getWorkQty()){
+ boo=false;
+ break;
+ }
+ }
+ if (boo) {
+ settle.remove(orderPakin);
+ }else {
+ list.add(orderPakin.getOrderNo());
+ }
+ }else {
+ list.add(orderPakin.getOrderNo());
+ }
+ }
+ return R.ok(list);
+ }
+
+ @RequestMapping("/orderOut")
+ public synchronized R AGVOrderOutReturn() {
+ List<OrderPakout> settle = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().in("settle", 1, 2).eq("doc_type",11));
+ List<String> list = new ArrayList<>();
+ for (OrderPakout orderPakout: settle) {
+ if (orderPakout.getSettle()==2){
+ List<OrderDetlPakout> orderId = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_id", orderPakout.getId()));
+ Boolean boo=true;
+ for (OrderDetlPakout orderDetlPakout: orderId) {
+ if (orderDetlPakout.getAnfme()>orderDetlPakout.getWorkQty()){
+ boo=false;
+ break;
+ }
+ }
+ if (boo) {
+ settle.remove(orderPakout);
+ }else {
+ list.add(orderPakout.getOrderNo());
+ }
+ }else {
+ list.add(orderPakout.getOrderNo());
+ }
+ }
+ return R.ok(list);
+ }
+
+ /**
+ * 杈撻�佺嚎浠诲姟涓嬪彂
+ * @return
+ */
+
+ @RequestMapping("/toInSta")
+ public synchronized R AGVOrderOutReturn(@RequestParam(required = false) Integer staNo) {
+ BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", staNo));
+ if (Cools.isEmpty(devNo)) {
+ return R.error("娌℃湁璇ョ珯鐐�");
+ }
+ //鏌ョ湅鏄惁宸茬粡涓嬪彂浠诲姟锛屾垨鑰呭凡缁忔湁鍑哄簱浠诲姟姝e湪杩愯绂佹缁欒緭閫佷笅涓嬪彂浠诲姟
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().in("io_type", 101, 103).eq("wrk_sts",12));
+ if (!Cools.isEmpty(wrkMast)) {
+ return R.error("褰撳墠杈撻�佺嚎鏈夊爢鍨涙満姝e湪浣滀笟绂佹鍏ュ簱");
+ }
+ Integer wrkNo = 0;
+ switch (staNo) {
+ case 301: wrkNo = 9991; break;
+ case 302: wrkNo = 9992; break;
+ case 303: wrkNo = 9993; break;
+ case 304: wrkNo = 9994; break;
+ case 305: wrkNo = 9995; break;
+ case 306: wrkNo = 9996; break;
+ case 307: wrkNo = 9997; break;
+ }
+ try {
+ HashMap<String,Object> hashMap=new HashMap<>();
+ hashMap.put("staNo",staNo);
+ hashMap.put("wrkNo",wrkNo);
+ String response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/open/toInSta")
+ .setJson(JSON.toJSONString(hashMap))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ } else {
+ return R.error(jsonObject.getString("msg"));
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ return R.ok(staNo);
+ }
+
}
--
Gitblit v1.9.1