From 10e6a9a8adad2226f13a4e4704ca5b2ad5b9ef9a Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 21 十二月 2025 18:49:59 +0800
Subject: [PATCH] 刀具库WMS功能完善
---
src/main/java/com/zy/asrs/task/handler/JlerHandler.java | 256 +++++++++++
src/main/java/com/zy/asrs/controller/LocMastController.java | 4
src/main/java/com/zy/common/config/ControllerResAdvice.java | 16
src/main/java/com/zy/asrs/task/JlerScheduler.java | 31 +
src/main/resources/mapper/LocDetlMapper.xml | 24
src/main/java/com/zy/asrs/controller/DigitalTwinController.java | 118 ++--
src/main/webapp/static/js/wrkMast/wrkMast.js | 3
src/main/java/com/zy/asrs/service/MesService.java | 9
src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java | 263 +++++------
src/main/java/com/zy/common/web/AuthController.java | 34
src/main/java/com/zy/asrs/service/DigitalTwinService.java | 3
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 13
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java | 80 +++
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 103 ++++
src/main/resources/application-dev.yml | 1
src/main/java/com/zy/asrs/controller/MatController.java | 4
src/main/java/com/zy/asrs/controller/MesController.java | 104 ++--
src/main/java/com/zy/asrs/service/MobileService.java | 11
src/main/java/com/zy/asrs/entity/WrkDetlLog.java | 3
src/main/webapp/static/js/basStation/basStation.js | 2
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 12
src/main/webapp/static/js/pakStore/stockAdjust.js | 2
src/main/resources/mapper/WrkMastMapper.xml | 2
src/main/java/com/zy/asrs/controller/MobileController.java | 25 +
src/main/java/com/zy/common/model/LocDto.java | 4
src/main/webapp/views/basStation/basStation.html | 6
src/main/webapp/views/locMast/locMast_detail.html | 13
src/main/java/com/zy/asrs/entity/LocDetl.java | 3
src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java | 8
src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java | 11
src/main/java/com/zy/asrs/controller/RcsController.java | 4
src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java | 48 +
src/main/java/com/zy/asrs/entity/mes/StockDetl.java | 21 +
33 files changed, 874 insertions(+), 367 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/DigitalTwinController.java b/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
index 06e3892..decee80 100644
--- a/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
+++ b/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
@@ -232,65 +232,65 @@
// @ManagerAuth
public R warehouseDetail(@RequestParam(required = false) String areaId){
-// digitalTwinService.warehouseDetail(areaId);
+ return digitalTwinService.warehouseDetail(areaId);
- List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
- DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
- dtLocDetailVo.setLocNo("CA0100202");
- dtLocDetailVo.setLocSts("O");
- dtLocDetailVo.setAreaId(10010L);
- dtLocDetailVo.setAreaName("鍒�鍏峰簱");
- dtLocDetailVo.setRow1(1);
- dtLocDetailVo.setBay1(2);
- dtLocDetailVo.setLev1(2);
-
- LocMast locMast = new LocMast();
- locMast.setLocNo("CA0100202");
- locMast.setLocSts("O");
- locMast.setRow1(1);
- locMast.setBay1(2);
- locMast.setLev1(2);
- dtLocDetailVo.setLocMast(locMast);
-
- LocDetl locDetl = new LocDetl();
- locDetl.setLocNo("CA0100202");
- locDetl.setAreaId(10010L);
- locDetl.setAreaName("鍒�鍏峰簱");
- locDetl.setMatnr("mat10001");
- locDetl.setMaktx("鐗╂枡鍚嶇О");
- locDetl.setAnfme(100.0);
- locDetl.setStandby3("AAA,BBB,CCC");
- dtLocDetailVo.setLocDetl(locDetl);
- dtLocDetailVoList.add(dtLocDetailVo);
-
-
- DtLocDetailVo dtLocDetailVo2 = new DtLocDetailVo();
- dtLocDetailVo2.setLocNo("CA0100202");
- dtLocDetailVo2.setLocSts("O");
- dtLocDetailVo2.setAreaId(10010L);
- dtLocDetailVo2.setAreaName("鍒�鍏峰簱");
- dtLocDetailVo2.setRow1(1);
- dtLocDetailVo2.setBay1(2);
- dtLocDetailVo2.setLev1(2);
-
- LocMast locMast2 = new LocMast();
- locMast2.setLocNo("CA0100203");
- locMast2.setLocSts("O");
- locMast2.setRow1(1);
- locMast2.setBay1(2);
- locMast2.setLev1(3);
- dtLocDetailVo2.setLocMast(locMast2);
-
- LocDetl locDetl2 = new LocDetl();
- locDetl2.setLocNo("CA0100203");
- locDetl2.setAreaId(10010L);
- locDetl2.setAreaName("鍒�鍏峰簱");
- locDetl.setMatnr("mat10001");
- locDetl.setMaktx("鐗╂枡鍚嶇О");
- locDetl.setAnfme(100.0);
- locDetl.setStandby3("AAA1,BBB1,CCC1");
- dtLocDetailVo2.setLocDetl(locDetl2);
- dtLocDetailVoList.add(dtLocDetailVo2);
+// List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
+// DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
+// dtLocDetailVo.setLocNo("CA0100202");
+// dtLocDetailVo.setLocSts("O");
+// dtLocDetailVo.setAreaId(10010L);
+// dtLocDetailVo.setAreaName("鍒�鍏峰簱");
+// dtLocDetailVo.setRow1(1);
+// dtLocDetailVo.setBay1(2);
+// dtLocDetailVo.setLev1(2);
+//
+// LocMast locMast = new LocMast();
+// locMast.setLocNo("CA0100202");
+// locMast.setLocSts("O");
+// locMast.setRow1(1);
+// locMast.setBay1(2);
+// locMast.setLev1(2);
+// dtLocDetailVo.setLocMast(locMast);
+//
+// LocDetl locDetl = new LocDetl();
+// locDetl.setLocNo("CA0100202");
+// locDetl.setAreaId(10010L);
+// locDetl.setAreaName("鍒�鍏峰簱");
+// locDetl.setMatnr("G01-JT50-ZC32-110-07");
+// locDetl.setMaktx("D32鏂硅偐閾e垁鏌�");
+// locDetl.setAnfme(100.0);
+// locDetl.setStandby3("AAA,BBB,CCC");
+// dtLocDetailVo.setLocDetl(locDetl);
+// dtLocDetailVoList.add(dtLocDetailVo);
+//
+//
+// DtLocDetailVo dtLocDetailVo2 = new DtLocDetailVo();
+// dtLocDetailVo2.setLocNo("CA0100202");
+// dtLocDetailVo2.setLocSts("O");
+// dtLocDetailVo2.setAreaId(10010L);
+// dtLocDetailVo2.setAreaName("鍒�鍏峰簱");
+// dtLocDetailVo2.setRow1(1);
+// dtLocDetailVo2.setBay1(2);
+// dtLocDetailVo2.setLev1(2);
+//
+// LocMast locMast2 = new LocMast();
+// locMast2.setLocNo("CA0100203");
+// locMast2.setLocSts("O");
+// locMast2.setRow1(1);
+// locMast2.setBay1(2);
+// locMast2.setLev1(3);
+// dtLocDetailVo2.setLocMast(locMast2);
+//
+// LocDetl locDetl2 = new LocDetl();
+// locDetl2.setLocNo("CA0100203");
+// locDetl2.setAreaId(10010L);
+// locDetl2.setAreaName("鍒�鍏峰簱");
+// locDetl2.setMatnr("T08-A72500-XXX-CC09-A1");
+// locDetl2.setMaktx("D94126绮鹃晽鍒�澶�");
+// locDetl2.setAnfme(100.0);
+// locDetl2.setStandby3("AAA1,BBB1,CCC1");
+// dtLocDetailVo2.setLocDetl(locDetl2);
+// dtLocDetailVoList.add(dtLocDetailVo2);
// LocDetl locDetl2 = new LocDetl();
@@ -304,7 +304,7 @@
//// locDetlList.add(locDetl);
//// locDetlList.add(locDetl2);
- return R.ok().add(dtLocDetailVoList);
+// return R.ok().add(dtLocDetailVoList);
}
}
diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index 723e3f6..12210b0 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -198,9 +198,11 @@
if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()))) {
throw new CoolException("鏈嶅姟鍣ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
}
- locMast.setBarcode("");
}
}
+ if(locMast.getLocSts().equals("O")) {
+ locMast.setBarcode("");
+ }
locMast.setModiUser(getUserId());
locMast.setModiTime(now);
AdjDetl adjDetl = new AdjDetl();
diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index 04785d0..9262b38 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -51,9 +51,9 @@
@RequestMapping(value = "/mat/list/pda/auth")
@ManagerAuth
- public R pdaList(@RequestParam(required = true) Long tagId) {
+ public R pdaList(@RequestParam(required = false) Long tagId) {
EntityWrapper<Mat> wrapper = new EntityWrapper<>();
- wrapper.eq("tag_id", tagId);
+// wrapper.eq("tag_id", tagId);
wrapper.orderBy("create_time", false);
List<Mat> mats = matService.selectList(wrapper);
return R.ok().add(mats);
diff --git a/src/main/java/com/zy/asrs/controller/MesController.java b/src/main/java/com/zy/asrs/controller/MesController.java
index 6a7ba4a..68f483f 100644
--- a/src/main/java/com/zy/asrs/controller/MesController.java
+++ b/src/main/java/com/zy/asrs/controller/MesController.java
@@ -1,7 +1,9 @@
package com.zy.asrs.controller;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.annotations.AppAuth;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.asrs.entity.BasStation;
@@ -9,65 +11,56 @@
import com.zy.asrs.service.BasStationService;
import com.zy.asrs.service.MesService;
import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
@RestController
+@Slf4j
public class MesController extends BaseController {
@Resource
private MesService mesService;
+ private void auth(String appkey, Object obj, HttpServletRequest request) {
+ log.info("{}鎺ュ彛琚闂紱appkey:{}锛涜姹傛暟鎹細{}", request.getRequestURI(), appkey, JSON.toJSONString(obj));
+ request.setAttribute("cache", obj);
+ }
- // 鐗╂枡淇℃伅鍚屾
@PostMapping("/api/mes/synMatInfo")
- public MesReturn synMatInfo(@RequestBody MesMatInfo param){
-
+ @AppAuth(memo = "鐗╂枡淇℃伅鍚屾")
+ public MesReturn synMatInfo(@RequestHeader(required = false) String appkey,@RequestBody MesMatInfo param,HttpServletRequest request){
+ auth(appkey, param, request);
MesReturn mesReturn = new MesReturn();
mesReturn.setSuccess(mesService.synMatInfo(param) == 1 ? "1" : "2");
return mesReturn;
}
+ @PostMapping("/api/tms/queryStock")
+ @AppAuth(memo = "TMS鏌ヨ搴撳瓨")
+ public R queryStock(@RequestHeader(required = false) String appkey,@RequestBody JSONObject param,HttpServletRequest request){
+ auth(appkey, param, request);
+ String matnr = param.getString("matnr");
+ return mesService.queryStock(matnr);
+ }
+
// 鍑哄簱鐢宠
@PostMapping("/api/mes/outBoundOrder")
- public MesReturn outBoundOrder(@RequestBody MesInApply param){
- MesReturn mesReturn = new MesReturn();
- // 缁堢偣涓虹┖锛岃绠楁帴椹充綅
- BasStation basStation = null;
- if (Cools.isEmpty(param.getNextStationId())) {
- List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().eq("loc_sts", "O"));
- if(basStations.isEmpty()) {
- mesReturn.setSuccess("2");
- mesReturn.setMessage("鏃犵┖鎺ラ┏浣嶏紝璇风◢鍚庡啀璇�!");
- return mesReturn;
- }
- // 鎺ラ┏鐐�
- basStation = basStations.get(0);
- param.setNextStationId(basStation.getDevNo());
-
- // 鍏堟洿鏂版帴椹崇偣鐘舵��
- basStation.setModiTime(new Date());
- basStation.setLocSts("S");
- basStation.setBarcode(param.getDjNo());
- basStationService.updateById(basStation);
- }
- int i = mesService.outBoundOrder(param);
- if(i == 1) {
- mesReturn.setSuccess("1");
- } else {
- // 閲婃斁鎺ラ┏鐐�
- if(basStation != null) {
- basStation.setModiTime(new Date());
- basStation.setLocSts("O");
- basStation.setBarcode("");
- basStationService.updateById(basStation);
- }
+ @AppAuth(memo = "鍑哄簱鐢宠(TMS璋冪敤)")
+ public MesReturn outBoundOrder(@RequestHeader(required = false) String appkey,@RequestBody MesInApply param,HttpServletRequest request){
+ auth(appkey, param, request);
+ if(Cools.isEmpty(param.getTaskNo(),param.getOrderNo(),param.getStationId())) {
+ MesReturn mesReturn = new MesReturn();
mesReturn.setSuccess("2");
+ mesReturn.setMessage("鍙傛暟涓嶈兘涓虹┖锛�" + JSONObject.toJSONString(param));
+ return mesReturn;
}
- return mesReturn;
+
+ return mesService.outBoundOrder(param);
}
// // 鍑哄簱鐢宠锛堝彨鏂欙級锛岃閰嶅簱銆佹粦鍧楀簱
@@ -88,10 +81,10 @@
return mesReturn;
}
- // 鍏ョ珯鍏佽
@PostMapping("/api/mes/allowInStation")
- public MesReturn allowInStation(@RequestBody TransInOutStationAllow param){
-
+ @AppAuth(memo = "鍏ョ珯鍏佽")
+ public MesReturn allowInStation(@RequestHeader(required = false) String appkey,@RequestBody TransInOutStationAllow param,HttpServletRequest request){
+ auth(appkey, param, request);
return mesService.allowInStation(param);
}
@@ -108,6 +101,7 @@
// 涓嬪彂杩愯緭浠诲姟锛宮es璋冪敤涓嬪垁06(鍛煎彨agv鎼繍)
@PostMapping("/api/mes/submitTask")
public JSONObject submitTask(@RequestBody TransTask param){
+ log.info("涓嬪垁(閫�鍒�)锛歿}",JSONObject.toJSONString(param));
// 缁堢偣涓虹┖锛岃绠楁帴椹充綅
BasStation basStation = null;
if (Cools.isEmpty(param.getNextStationId())) {
@@ -129,11 +123,20 @@
basStation.setBarcode(param.getDjNo());
basStationService.updateById(basStation);
}
-
+ JSONObject sendAgvTask;
param.setAgvFactory(1); // 娴峰悍
- param.setNextStationId("A1");
- JSONObject sendAgvTask = mesService.submitTask(param);
- if (!"1".equals(sendAgvTask.getString("Success"))) {
+ try {
+ sendAgvTask = mesService.submitTask(param);
+ if (!"1".equals(sendAgvTask.getString("Success"))) {
+ // 閲婃斁鎺ラ┏鐐�
+ if(basStation != null) {
+ basStation.setModiTime(new Date());
+ basStation.setLocSts("O");
+ basStation.setBarcode("");
+ basStationService.updateById(basStation);
+ }
+ }
+ }catch (Exception e){
// 閲婃斁鎺ラ┏鐐�
if(basStation != null) {
basStation.setModiTime(new Date());
@@ -141,6 +144,7 @@
basStation.setBarcode("");
basStationService.updateById(basStation);
}
+ throw e;
}
return sendAgvTask;
}
@@ -154,19 +158,5 @@
return mesReturn;
}
-
- // region 娴嬭瘯
- @GetMapping("/api/mes/transDj")
- public int transDj(@RequestParam String taskNo,@RequestParam String djNo){
-
- return mesService.transDj(taskNo,djNo);
- }
-
- // 閫�绌烘墭鐩樿繑鍥炰骇绾� pda涓婃搷浣滅┖鎵樿繑鍥炰骇绾�
- @GetMapping("/tkt")
- public R tkt(@RequestParam String taskNo){
- return mesService.tkt(taskNo);
- }
- // endregion
}
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 6b3224b..5befdc3 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -17,6 +17,7 @@
import com.zy.common.model.WrkDto;
import com.zy.common.web.BaseController;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -30,6 +31,7 @@
*/
@RestController
@RequestMapping("mobile")
+@Slf4j
public class MobileController extends BaseController {
@Autowired
@@ -60,10 +62,31 @@
@Resource
private StaDescService staDescService;
+ // 鍏ュ簱鍚姩璋冪敤wcs缁欒緭閫佺嚎涓嬪懡浠� type 1.婊$鍏ュ簱(榛樿),2.绌虹鍏ュ簱
+ @GetMapping("/inboundStart/auth")
+ @ManagerAuth(memo = "鍏ュ簱鍚姩")
+ public R inboundStart(@RequestParam int type){
+ log.info("pda鍏ュ簱鍚姩锛歿}",type);
+ return mobileService.inboundStart(type);
+ }
+
// 閫�绌烘墭鐩樿繑鍥炰骇绾� pda涓婃搷浣滅┖鎵樿繑鍥炰骇绾�(鍒�鏋惰繑鍥�)
@GetMapping("/djReturn/auth")
+ @ManagerAuth(memo = "鍒�鏋惰繑鍥�")
public R tkt(@RequestParam String djNo){
+ log.info("鍒�鏋惰繑鍥烇細{}",djNo);
return mobileService.djReturn(djNo);
+ }
+
+ // 绌虹鍑哄簱
+ @GetMapping("/emptyBoxOutbound/auth")
+ @ManagerAuth(memo = "绌虹鍑哄簱")
+ public R emptyBoxOutbound(@RequestParam int count){
+ log.info("绌虹鍑哄簱锛歿}",count);
+ if (count <= 0) {
+ return R.parse("鏁伴噺鏈夎锛�" + count);
+ }
+ return mobileService.emptyBoxOutbound(count,getUserId());
}
@RequestMapping("/comb/auth")
@@ -72,8 +95,6 @@
mobileService.comb(combParam, getUserId());
return R.ok("缁勬墭鎴愬姛");
}
-
- // 杈撻�佺嚎娴佸姩
@RequestMapping("/pda/WarehouseOut/v1")
@ManagerAuth(memo = "骞舵澘閫斾腑鎷f枡-鍙傝�冨康鍒�")
diff --git a/src/main/java/com/zy/asrs/controller/RcsController.java b/src/main/java/com/zy/asrs/controller/RcsController.java
index 0f0d58e..0b59603 100644
--- a/src/main/java/com/zy/asrs/controller/RcsController.java
+++ b/src/main/java/com/zy/asrs/controller/RcsController.java
@@ -7,6 +7,7 @@
import com.zy.asrs.entity.rcs.RcsReturn;
import com.zy.asrs.service.RcsService;
import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@@ -14,6 +15,7 @@
import javax.annotation.Resource;
@RestController
+@Slf4j
public class RcsController extends BaseController {
@Resource
@@ -23,7 +25,7 @@
// 鍙嶉浠诲姟鎵ц缁撴灉
@PostMapping("/api/robot/reporter/task")
public RcsReturn reporterTask(@RequestBody RcsReporterTask param){
-
+ log.info("agv浠诲姟鎵ц鍙嶉璇锋眰锛歿}",JSONObject.toJSONString(param));
return rcsService.reporterTask(param);
}
diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java
index a7ee8a4..34181dc 100644
--- a/src/main/java/com/zy/asrs/entity/LocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -18,6 +18,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
+import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.text.SimpleDateFormat;
@@ -338,7 +339,7 @@
}
public void sync(Object source) {
- Synchro.Copy(source, this);
+ BeanUtils.copyProperties(source,this);
}
public String getFrozen$() {
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
index 6fa1590..25159c9 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
@@ -9,6 +9,7 @@
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.text.SimpleDateFormat;
@@ -399,6 +400,6 @@
}
public void sync(Object source) {
- Synchro.Copy(source, this);
+ BeanUtils.copyProperties(source,this);
}
}
diff --git a/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java b/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java
index 1c64747..cfd9da0 100644
--- a/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java
+++ b/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java
@@ -2,7 +2,10 @@
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.mes.StockDetl;
import lombok.Data;
+
+import java.util.List;
@Data
public class DtLocDetailVo {
@@ -12,9 +15,9 @@
// 搴撲綅鐘舵�侊紝O绌哄簱浣嶏紙鑻辨枃涓嶆槸鏁板瓧锛夛紱F 鍦ㄥ簱锛汥 绌烘澘锛汸 鍑哄簱涓紱R 鍑哄簱棰勭害锛汼 鍏ュ簱棰勭害锛涘叾浠� 鍏朵粬锛�
private String locSts;
// 搴撳尯id
- private Long areaId;
+ private Long areaId = 10010L;
// 搴撳尯鍚嶇О
- private String areaName;
+ private String areaName = "鍒�鍏峰簱";
// 鎺�
private Integer row1;
// 鍒�
@@ -22,9 +25,7 @@
// 灞�
private Integer lev1;
- // 搴撲綅淇℃伅
- private LocMast locMast;
// 搴撳瓨淇℃伅
- private LocDetl locDetl;
+ private List<StockDetl> locDetl;
}
diff --git a/src/main/java/com/zy/asrs/entity/mes/StockDetl.java b/src/main/java/com/zy/asrs/entity/mes/StockDetl.java
new file mode 100644
index 0000000..94bb17c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/mes/StockDetl.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.entity.mes;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author pang.jiabao
+ * @description
+ * @createDate 2025/12/18 13:42
+ */
+@Data
+public class StockDetl {
+ @ApiModelProperty(value= "鏁伴噺")
+ private Double anfme;
+
+ @ApiModelProperty(value= "鍟嗗搧缂栧彿")
+ private String matnr;
+
+ @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+ private String maktx;
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java b/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java
index 381d7c2..db0b022 100644
--- a/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java
@@ -30,10 +30,14 @@
// 鍙樻洿鏁伴噺
private Double count;
- public LocDetlAdjust(String matnr, String batch, Double count) {
+ // 鏂欑鐮�
+ private String zpallet;
+
+ public LocDetlAdjust(String matnr, String batch, Double count,String zpallet) {
this.matnr = matnr;
this.batch = batch;
this.count = count;
+ this.zpallet = zpallet;
}
}
@@ -52,7 +56,7 @@
}
}
if (!exit) {
- copyList.add(new LocDetlAdjustParam.LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount()));
+ copyList.add(new LocDetlAdjustParam.LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount(),adjust.getZpallet()));
}
}
list = copyList;
diff --git a/src/main/java/com/zy/asrs/service/DigitalTwinService.java b/src/main/java/com/zy/asrs/service/DigitalTwinService.java
index d56961f..c8f1f55 100644
--- a/src/main/java/com/zy/asrs/service/DigitalTwinService.java
+++ b/src/main/java/com/zy/asrs/service/DigitalTwinService.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service;
+import com.core.common.R;
import com.zy.asrs.entity.digitaltwin.*;
import java.util.List;
@@ -50,7 +51,7 @@
* @param areaId
* @return
*/
- List<DtLocDetailVo> warehouseDetail(String areaId);
+ R warehouseDetail(String areaId);
/**
* 杩戞湡鍓╀綑搴撲綅鏁伴噺锛岄粯璁�7澶�
diff --git a/src/main/java/com/zy/asrs/service/MesService.java b/src/main/java/com/zy/asrs/service/MesService.java
index de5936b..a5a5c36 100644
--- a/src/main/java/com/zy/asrs/service/MesService.java
+++ b/src/main/java/com/zy/asrs/service/MesService.java
@@ -42,7 +42,7 @@
* @param mesOutApply
* @return
*/
- int outBoundOrder(MesInApply mesOutApply);
+ MesReturn outBoundOrder(MesInApply mesOutApply);
/**
* 鍑哄簱鐢宠锛堝彨鏂欙級锛岄綈濂楁�ч厤鐩�
@@ -75,8 +75,6 @@
* @return
*/
int inBoundOrder(MesInApply mesInApply, int check);
-
- int transDj(String taskNo,String djNo);
/**
* 9.1涓嬪彂杩愯緭浠诲姟
@@ -150,5 +148,8 @@
*/
int outStation(TransParent apply);
- R tkt(String taskNo);
+ /**
+ * TMS鏌ヨ搴撳瓨
+ */
+ R queryStock(String matnr);
}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 30ffc29..3354ce9 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -105,4 +105,15 @@
* @param djNo 鍒�鏋跺彿
*/
R djReturn(String djNo);
+
+ /**
+ * pda鍛煎彨绌烘枡绠卞嚭搴�
+ */
+ R emptyBoxOutbound(int count,Long userId);
+
+ /**
+ * 鍏ュ簱鍚姩璋冪敤wcs缁欒緭閫佺嚎涓嬪懡浠�
+ * @param type 1.婊$鍏ュ簱9998(榛樿),2.绌虹鍏ュ簱9997
+ */
+ R inboundStart(int type);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
index ede00fc..0a14629 100644
--- a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
@@ -1,12 +1,18 @@
package com.zy.asrs.service.impl;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.R;
import com.zy.asrs.entity.LocCount;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.digitaltwin.*;
+import com.zy.asrs.entity.mes.StockDetl;
import com.zy.asrs.mapper.DigitalTwinMapper;
import com.zy.asrs.mapper.LocCountMapper;
import com.zy.asrs.service.DigitalTwinService;
+import com.zy.asrs.service.LocDetlService;
+import com.zy.asrs.service.LocMastService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -142,38 +148,48 @@
return dbDetainMats;
}
+ @Resource
+ private LocDetlService locDetlService;
+
+ @Resource
+ private LocMastService locMastService;
+
/**
* 鏌ヨ搴撳瓨鍜屽簱浣嶈缁嗕俊鎭�
*
* @param areaId
* @return
*/
- public List<DtLocDetailVo> warehouseDetail(String areaId) {
- List<DtLocDetailVo> locDetailVos = new ArrayList<>();
+ public R warehouseDetail(String areaId) {
+ List<LocDetl> locDetls;
+ locDetls = locDetlService.selectList(new EntityWrapper<>());
- List<LocMast> locMasts = new ArrayList<>();
- List<LocDetl> locDetls = new ArrayList<>();
+ List<String> locNoList = locDetls.stream().map(LocDetl::getLocNo).distinct().collect(Collectors.toList());
+ List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
+ for (String locNo: locNoList) {
- for (LocMast locMast : locMasts) {
+ LocMast locMast = locMastService.selectById(locNo);
DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
- dtLocDetailVo.setLocMast(locMast);
- dtLocDetailVo.setLocNo(locMast.getLocNo());
+ dtLocDetailVo.setLocNo(locNo);
dtLocDetailVo.setLocSts(locMast.getLocSts());
dtLocDetailVo.setRow1(locMast.getRow1());
dtLocDetailVo.setBay1(locMast.getBay1());
dtLocDetailVo.setLev1(locMast.getLev1());
- for (LocDetl locDetl : locDetls) {
- List<LocDetl> locDetl1 = locDetls.parallelStream().filter(a -> a.getLocNo().equals(locDetl.getLocNo())).collect(Collectors.toList());
- if (locDetl1 != null && locDetl1.size() == 1) {
- dtLocDetailVo.setLocDetl(locDetl1.get(0));
- dtLocDetailVo.setAreaId(locDetl.getAreaId());
- dtLocDetailVo.setAreaName(locDetl.getAreaName());
- }
+
+ List<LocDetl> locDetlList2 = locDetls.parallelStream().filter(o-> o.getLocNo().equals(locNo)).collect(Collectors.toList());
+ List<StockDetl> stockDetls = new ArrayList<>();
+ for(LocDetl locDetl:locDetlList2) {
+ StockDetl stockDetl = new StockDetl();
+ stockDetl.setMatnr(locDetl.getMatnr());
+ stockDetl.setMaktx(locDetl.getMaktx());
+ stockDetl.setAnfme(locDetl.getAnfme());
+ stockDetls.add(stockDetl);
}
- locDetailVos.add(dtLocDetailVo);
+ dtLocDetailVo.setLocDetl(stockDetls);
+ dtLocDetailVoList.add(dtLocDetailVo);
}
- return locDetailVos;
+ return R.ok(dtLocDetailVoList);
}
/**
diff --git a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
index e6b7a13..1c92379 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -9,6 +9,7 @@
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.digitaltwin.DtLocDetailVo;
import com.zy.asrs.entity.mes.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.rcs.*;
@@ -133,11 +134,7 @@
// 瑙勫垯瀹氫箟锛氶粯璁ょ3灞備负鍚屾鐨勭墿鏂欑被鍨�
long secondPath = 2;
String secondParentName = WMS_CURRENT_NAME;
-// long locType = 1;
long userId = defaultUserId;
-// if (mesMatInfo.getModified_operator1() != null && !mesMatInfo.getModified_operator1().isEmpty()) {
-// userId = Long.parseLong(mesMatInfo.getModified_operator1());
-// }
Date now = new Date();
if (mesMatInfo.getModified_date1() != null && !mesMatInfo.getModified_date1().isEmpty()) {
now = Date.from(OffsetDateTime.parse(mesMatInfo.getModified_date1()).toInstant());
@@ -168,35 +165,29 @@
// 鐗╂枡鏇存柊
long tagId = tagService.selectByName(mesMatInfo.getItem_type(), 3).getId();
Mat mat = matService.selectByMatnr(mesMatInfo.getItem_no());
- Mat newMat = new Mat();
- newMat.setMatnr(mesMatInfo.getItem_no());
- newMat.setMaktx(mesMatInfo.getDescription());
- newMat.setTagId(tagId);
- newMat.setLocType(tagId); //locType
- newMat.setSpecs(mesMatInfo.getSpecification());
- newMat.setUnit("浠�"); //缁熶竴涓轰欢锛宮esMatInfo.getUnit_of_measure()
- newMat.setModel(mesMatInfo.getClassification_code());
- newMat.setMemo(JSONObject.toJSONString(mesMatInfo));
- newMat.setCreateBy(userId);
- newMat.setCreateTime(now);
- newMat.setUpdateBy(userId);
- newMat.setUpdateTime(now);
- newMat.setStatus(1);
if (mat == null) {
- if (!matService.insert(newMat))
- return -2;
+ Mat newMat = new Mat();
+ newMat.setMatnr(mesMatInfo.getItem_no());
+ newMat.setMaktx(mesMatInfo.getDescription());
+ newMat.setTagId(tagId);
+ newMat.setLocType(tagId); //locType
+ newMat.setSpecs(mesMatInfo.getSpecification());
+ newMat.setUnit(mesMatInfo.getUnit_of_measure());
+ newMat.setModel(mesMatInfo.getClassification_code());
+// newMat.setMemo(JSONObject.toJSONString(mesMatInfo));
+ newMat.setCreateBy(userId);
+ newMat.setCreateTime(now);
+ newMat.setUpdateBy(userId);
+ newMat.setUpdateTime(now);
+ newMat.setStatus(1);
+ matService.insert(newMat);
} else {
- JSONObject dbMemo = JSONObject.parseObject(mat.getMemo());
-// dbMemo.remove("OrderNo");
-// dbMemo.remove("qty");
- JSONObject newMemo = JSONObject.parseObject(newMat.getMemo());
-// newMemo.remove("OrderNo");
-// newMemo.remove("qty");
- if (!dbMemo.equals(newMemo)) {
- newMat.setId(mat.getId());
- if (!matService.updateById(newMat))
- return -2;
- }
+ mat.setMaktx(mesMatInfo.getDescription());
+ mat.setSpecs(mesMatInfo.getSpecification());
+ mat.setUnit(mesMatInfo.getUnit_of_measure());
+ mat.setModel(mesMatInfo.getClassification_code());
+ mat.setUpdateTime(now);
+ matService.updateById(mat);
}
return 1;
@@ -266,6 +257,9 @@
return 0;
}
+ @Resource
+ private BasStationService basStationService;
+
/**
* 鍑哄簱鐢宠
* 鍔犲伐搴撱�佸垁鍏峰簱
@@ -274,22 +268,38 @@
* @return 1 鎴愬姛锛�-1 璁㈠崟閲嶅锛�
*/
@Transactional
- public int outBoundOrder(MesInApply mesOutApply){
+ public MesReturn outBoundOrder(MesInApply mesOutApply) {
+ MesReturn mesReturn = new MesReturn();
+ // 缁堢偣涓虹┖锛岃绠楁帴椹充綅
+ BasStation basStation = null;
+ if (Cools.isEmpty(mesOutApply.getNextStationId())) {
+ List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().eq("loc_sts", "O"));
+ if (basStations.isEmpty()) {
+ mesReturn.setSuccess("2");
+ mesReturn.setMessage("鏃犵┖鎺ラ┏浣嶏紝璇风◢鍚庡啀璇�!");
+ return mesReturn;
+ }
+ // 鎺ラ┏鐐�
+ basStation = basStations.get(0);
+ mesOutApply.setNextStationId(basStation.getDevNo());
+ }
// docType鏍规嵁搴撶被鍨嬬‘瀹�
- long docType = 7;
+ long docType = Long.parseLong(mesOutApply.getBillType());
long settle = 1;
// 鏍¢獙璁㈠崟鏄惁閲嶅
OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo());
if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
- return -1;
+ mesReturn.setSuccess("2");
+ mesReturn.setMessage("orderNo閲嶅锛�" + mesOutApply.getOrderNo());
+ return mesReturn;
}
// 鐢熸垚璁㈠崟
Date now = new Date();
OrderPakout orderPakout = new OrderPakout();
- orderPakout.setUuid( String.valueOf(snowflakeIdWorker.nextId()));
+ orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
orderPakout.setOrderNo(mesOutApply.getOrderNo());
orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
orderPakout.setDocType(docType);
@@ -302,7 +312,7 @@
orderPakout.setMemo(JSONObject.toJSONString(mesOutApply));
orderPakout.setPakinPakoutStatus(2);
if (!orderPakoutService.insert(orderPakout)) {
- log.error("MES淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触:{}",orderPakout);
+ log.error("MES淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触:{}", orderPakout);
throw new CoolException("淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
}
@@ -325,74 +335,43 @@
orderDetlPakout.setStatus(1);
orderDetlPakout.setPakinPakoutStatus(2);
if (!orderDetlPakoutService.insert(orderDetlPakout)) {
- log.error("MES淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�:{}",orderDetlPakout);
+ log.error("MES淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�:{}", orderDetlPakout);
throw new CoolException("淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�");
}
}
- // TODO锛欳TU鍑哄簱鍔ㄤ綔
-
// 绔嬪簱鐢熸垚璁㈠崟鍚庯紝鑷姩璋冨害AGV浠庝骇绾胯繍杈撶┖鍒�鏋惰嚦绔嬪簱缂撳瓨鍖恒��
- if (!StringUtils.isEmpty(mesOutApply.getTaskNo()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
- TransTask transTask = new TransTask();
- transTask.setTaskno(mesOutApply.getTaskNo());
- transTask.setTaskname(mesOutApply.getTaskname());
- transTask.setOrderNo(mesOutApply.getOrderNo());
- transTask.setTransType("02"); //杩愬洖鍒�鏋舵椂榛樿02锛堜笅绌烘墭锛� mesOutApply.getTransType()
- transTask.setCurProcess(mesOutApply.getProductLineId());
- transTask.setCurStationId(mesOutApply.getStationId());
- transTask.setNextProcess(mesOutApply.getProductLineId());
- transTask.setNextStationId(mesOutApply.getNextStationId());
-// transTask.setItemno(mesOutApply.getItemNo());
- transTask.setQty(1);
- transTask.setProductLineId(mesOutApply.getProductLineId());
-// transTask.setItemBarcode(codes);
-// transTask.setTuoPanId(entry.getKey());
- transTask.setDjNo(mesOutApply.getDjNo());
- transTask.setOperateType(1);
- transTask.setAgvFactory(1);
- JSONObject sendAgvTask = submitTask(transTask);
- if (!"1".equals(sendAgvTask.getString("Success"))) {
- log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
- }
+ TransTask transTask = new TransTask();
+ transTask.setTaskno(mesOutApply.getTaskNo());
+ transTask.setTaskname(mesOutApply.getTaskname());
+ transTask.setOrderNo(mesOutApply.getOrderNo());
+ transTask.setTransType("02"); //杩愬洖鍒�鏋舵椂榛樿02锛堜笅绌烘墭锛� mesOutApply.getTransType()
+ transTask.setCurProcess(mesOutApply.getProductLineId());
+ transTask.setCurStationId(mesOutApply.getStationId());
+ transTask.setNextProcess(mesOutApply.getProductLineId());
+ transTask.setNextStationId(mesOutApply.getNextStationId());
+ transTask.setQty(1);
+ transTask.setProductLineId(mesOutApply.getProductLineId());
+ transTask.setDjNo(mesOutApply.getDjNo());
+ transTask.setOperateType(1);
+ transTask.setAgvFactory(1);
+ JSONObject sendAgvTask = submitTask(transTask);
+ if ("1".equals(sendAgvTask.getString("Success"))) {
+ // 鏂版帴椹崇偣鐘舵��
+ if (basStation != null) {
+ basStation.setModiTime(new Date());
+ basStation.setLocSts("S");
+ basStation.setBarcode(mesOutApply.getDjNo());
+ basStationService.updateById(basStation);
}
- return 1;
- }
- public int transDj(String taskNo,String djNo) {
- try {
- EntityWrapper<Task> wapper = new EntityWrapper<>();
- wapper.eq("task_no", taskNo).orderBy("wrk_date");
- Task task = taskService.selectOne(wapper);
- if (task != null) {
- JSONObject memo = JSONObject.parseObject(task.getMemo());
-
- TransTask transTask = new TransTask();
- transTask.setTaskno(taskNo + "_1");
-// transTask.setTaskname(mesOutApply.getTaskname());
- transTask.setOrderNo(memo.getString("OrderNo"));
- transTask.setTransType("05"); //閫佸垁鏃堕粯璁�05锛堜笂鍒�锛�
- transTask.setCurStationId(WMS_TRANS_START_STATION_1);
- transTask.setNextProcess(memo.getString("ProductLineId"));
- transTask.setNextStationId(memo.getString("CurStationId"));
-// transTask.setItemno(mesOutApply.getItemNo());
-// transTask.setQty(0);
- transTask.setProductLineId(memo.getString("ProductLineId"));
-// transTask.setItemBarcode(codes);
-// transTask.setTuoPanId(entry.getKey());
- transTask.setOperateType(1);
- transTask.setAgvFactory(1);
- transTask.setDjNo(djNo);
- JSONObject sendAgvTask = submitTask(transTask);
- if (!"1".equals(sendAgvTask.getString("Success"))) {
- log.error("涓婂垁涓嬪彂agv杩愯緭浠诲姟澶辫触", JSONObject.toJSONString(transTask));
- }
- }
- } catch (Exception e) {
- log.error("涓婂垁涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
+ mesReturn.setSuccess("1");
+ mesReturn.setMessage("璁㈠崟涓嬪彂鎴愬姛锛宎gv寮�濮嬭繍杈擄細" + transTask.getTaskno());
+ return mesReturn;
+ } else {
+ log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+ throw new CoolException("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触");
}
-
- return 1;
}
/**
@@ -710,7 +689,6 @@
/**
* 9.1涓嬪彂杩愯緭浠诲姟
- * TODO:鍏朵粬搴撶殑浠诲姟鍏ㄩ儴杞埌婊戝潡搴撶粺涓�璋冨害
*
* @param transTask
* @return
@@ -734,7 +712,11 @@
// 涓嬪彂缁橰CS
RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit();
// 妯℃澘鍚�
- rcsTaskSubmit.setTaskType("CS");
+ if(transTask.getCurStationId().startsWith("LL") || transTask.getCurStationId().startsWith("LG")) { // 璧风偣浜х嚎
+ rcsTaskSubmit.setTaskType("DJ1");
+ } else if(transTask.getNextStationId().startsWith("LL") || transTask.getNextStationId().startsWith("LG")) { // 缁堢偣浜х嚎
+ rcsTaskSubmit.setTaskType("DJ2");
+ }
rcsTaskSubmit.setRobotTaskCode(transTask.getTaskno());
rcsTaskSubmit.setInitPriority(10); //榛樿10
List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>();
@@ -990,51 +972,47 @@
return 0;
}
+ @Resource
+ private LocDetlService locDetlService;
+
+ @Resource
+ private LocMastService locMastService;
+
@Override
- public R tkt(String taskNo) {
- boolean flag = false;
- try {
- EntityWrapper<Task> wapper = new EntityWrapper<>();
- wapper.eq("task_no", taskNo).orderBy("wrk_date",false);
- Task task = taskService.selectOne(wapper);
- // 涓嬪彂缁橰CS
- RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit();
- rcsTaskSubmit.setRobotTaskCode(taskNo + "-1");
- rcsTaskSubmit.setInitPriority(10); //榛樿10
- List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>();
- RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute();
- startRoute.setSeq(0);
- startRoute.setCode(task.getStaNo());
- startRoute.setOperation("COLLECT");
- targetRouteList.add(startRoute);
- RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute();
- endRoute.setSeq(1);
- endRoute.setCode(task.getSourceStaNo());
- endRoute.setOperation("DELIVERY");
- targetRouteList.add(endRoute);
- rcsTaskSubmit.setTargetRoute(targetRouteList);
- // 鏇存柊璧风偣鍜岀粓鐐�
- String memo = task.getMemo();
- TransTask transTask = JSONObject.parseObject(memo, TransTask.class);
- transTask.setCurStationId(task.getSourceStaNo());
- transTask.setNextStationId(task.getStaNo());
- transTask.setTransType("01"); // 涓嬬┖鎵�
- // 鏇存柊agv浠诲姟璧风偣鍜岀粓鐐�
- task.setTaskNo(taskNo + "-1");
- task.setSourceStaNo(transTask.getCurStationId());
- task.setStaNo(transTask.getNextStationId());
- task.setMemo(JSONObject.toJSONString(transTask));
- taskService.updateById(task);
- // 杞彂缁欐捣搴锋垨鍗庢檽RCS
- RcsReturn rcsReturn = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
- if (rcsReturn.getCode().equals("SUCCESS")) {
- flag = true;
- }
- } catch (Exception e) {
- log.error("绌烘墭鍥炰骇绾垮彂AGV杩愯緭浠诲姟澶辫触", e);
+ public R queryStock(String matnr) {
+ List<LocDetl> locDetls;
+ if (Cools.isEmpty(matnr)) {
+ locDetls = locDetlService.selectList(new EntityWrapper<>());
+ } else {
+ locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr",matnr));
}
- return flag ?R.ok() : R.parse("绌烘墭鍥炰骇绾垮懠鍙玜gv澶辫触");
+ List<String> locNoList = locDetls.stream().map(LocDetl::getLocNo).distinct().collect(Collectors.toList());
+ List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
+ for (String locNo: locNoList) {
+
+ LocMast locMast = locMastService.selectById(locNo);
+ DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
+ dtLocDetailVo.setLocNo(locNo);
+ dtLocDetailVo.setLocSts(locMast.getLocSts());
+ dtLocDetailVo.setRow1(locMast.getRow1());
+ dtLocDetailVo.setBay1(locMast.getBay1());
+ dtLocDetailVo.setLev1(locMast.getLev1());
+
+ List<LocDetl> locDetlList2 = locDetls.parallelStream().filter(o-> o.getLocNo().equals(locNo)).collect(Collectors.toList());
+ List<StockDetl> stockDetls = new ArrayList<>();
+ for(LocDetl locDetl:locDetlList2) {
+ StockDetl stockDetl = new StockDetl();
+ stockDetl.setMatnr(locDetl.getMatnr());
+ stockDetl.setMaktx(locDetl.getMaktx());
+ stockDetl.setAnfme(locDetl.getAnfme());
+ stockDetls.add(stockDetl);
+ }
+ dtLocDetailVo.setLocDetl(stockDetls);
+ dtLocDetailVoList.add(dtLocDetailVo);
+ }
+
+ return R.ok(dtLocDetailVoList);
}
// endregion
@@ -1047,8 +1025,9 @@
*/
private int checkRcsFactory(String agvNo) {
- AgvInfo agvInfo = agvInfoMapper.selectById(agvNo);
- return agvInfo.getAgvFactory();
+// AgvInfo agvInfo = agvInfoMapper.selectById(agvNo);
+// return agvInfo.getAgvFactory();
+ return 1;
}
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 61a8b77..a008dca 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
@@ -30,10 +31,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
@@ -123,6 +126,102 @@
@Resource
private RcsService rcsService;
+
+ @Override
+ @Transactional
+ public R emptyBoxOutbound(int count, Long userId) {
+ List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().setSqlSelect("TOP " + count + " *").eq("loc_sts", "D").eq("frozen", 0).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+ if (locMastList.size() < count) {
+ return R.parse("绌烘枡绠辨暟閲忎笉瓒�(鎴栧喕缁�)锛屽墿浣欐暟閲忥細" + locMastList.size());
+ }
+ for (LocMast locMast : locMastList) {
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+ Date now = new Date();
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+ wrkMast.setIoPri(10D);
+ wrkMast.setSourceStaNo("101"); // 婧愮珯
+ wrkMast.setStaNo("103"); // 鐩爣绔�
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMastService.insert(wrkMast);
+
+ locMast.setLocSts("R");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+
+ }
+ return R.ok("鍑哄簱鎴愬姛");
+ }
+
+ @Value("${wcs-slave.url}")
+ private String WCS_URL;
+
+ @Override
+ public R inboundStart(int type) {
+// BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 103));
+// if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")) {
+// return R.parse("绔欑偣103涓嶆槸鑷姩/鏈夌墿鐘舵��");
+// }
+
+ Map<String,Object> params = new HashMap<>();
+ params.put("siteId",103);
+ int wrkNo = type == 1 ? 9998 : 9997;
+ params.put("workNo",wrkNo);
+ params.put("staNo", 104);
+ params.put("pakMk","Y");
+ String response;
+ boolean success = false;
+ String message = "";
+ try {
+ HashMap<String, Object> headers = new HashMap<>();
+ headers.put("token","1");
+ response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/site/detl/update")
+// .setHeaders(headers)
+ .setParams(params)
+ .build()
+ .doPost();
+ if (Cools.isEmpty(response)) {
+ log.error("鍏ュ簱鍚姩璋冪敤wcs缁欒緭閫佺嚎涓嬪懡浠ゅけ璐ワ紝杩斿洖鍊间负绌�");
+ } else {
+ JSONObject jsonObject = JSONObject.parseObject(response);
+ if(jsonObject.getInteger("code").equals(200)) {
+ success = true;
+ log.info("鍏ュ簱鍚姩璋冪敤wcs缁欒緭閫佺嚎涓嬪懡鎴愬姛,wrkNo:{}",wrkNo);
+ } else {
+ message = String.valueOf(jsonObject.getString("msg"));
+ log.error("鍏ュ簱鍚姩璋冪敤wcs缁欒緭閫佺嚎涓嬪懡浠ゅけ璐�:{}",message);
+ }
+ }
+ } catch (IOException e) {
+ log.error("鍏ュ簱鍚姩璋冪敤wcs缁欒緭閫佺嚎涓嬪懡浠ゅ紓甯�:{}",e.getMessage());
+ message = e.getMessage();
+ e.printStackTrace();
+ }
+
+ return success ? R.ok("涓嬪彂鎴愬姛") : R.parse(message);
+ }
+
@Override
@Transactional
public R djReturn(String djNo) {
@@ -140,7 +239,7 @@
TransTask transTask = JSONObject.parseObject(task.getMemo(), TransTask.class);
transTask.setTaskno(task.getTaskNo());
- transTask.setCurStationId(sourceStaNo);
+ transTask.setCurStationId(task.getSourceStaNo());
transTask.setNextStationId(task.getStaNo());
if(transTask.getTransType().equals("06")) {
transTask.setTransType("01");
@@ -156,7 +255,7 @@
// 涓嬪彂缁橰CS
RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit();
// 妯℃澘鍚�
- rcsTaskSubmit.setTaskType("CS");
+ rcsTaskSubmit.setTaskType("DJ2");
rcsTaskSubmit.setRobotTaskCode(transTask.getTaskno());
rcsTaskSubmit.setInitPriority(10); //榛樿10
List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>();
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index 66ed864..12af9a8 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -4,9 +4,9 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.mes.TransArrivalStation;
-import com.zy.asrs.entity.mes.TransParent;
+import com.zy.asrs.entity.mes.*;
import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.enums.RcsRetMethodEnum;
import com.zy.asrs.mapper.BlockStationMapper;
@@ -23,6 +23,8 @@
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -40,6 +42,9 @@
@Value("${mes.defaultUserId}")
public long defaultUserId;
+ @Value("${dj.url}")
+ public String DJ_URL;
+
@Resource
private BasStationService basStationService;
@@ -55,6 +60,12 @@
private TaskDetlServiceImpl taskDetlService;
@Resource
private WrkMastService wrkMastService;
+
+ @Resource
+ private WrkDetlService wrkDetlService;
+
+ @Resource
+ private OrderPakoutService orderPakoutService;
// region 灏侀攣鍖洪�昏緫锛岀洰鍓嶅彧鏈変竴涓ぇ灏侀攣鍖猴紝浠诲姟鍏ㄩ儴杞埌婊戝潡搴撳鐞嗭紝鎴栫洿鎺ュ啓鍒版粦鍧楀簱
@@ -175,21 +186,23 @@
String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit";
String response = "";
try {
+ // 妯℃嫙杩斿洖
+// rcsReturn.setCode("SUCCESS");
+// success = true;
+
response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
if (!StringUtils.isEmpty(response) && response.contains("code")) {
rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if ("SUCCESS".equals(rcsReturn.getCode())) {
- // 妯℃嫙杩斿洖
-// rcsReturn.setCode("SUCCESS");
-// JSONObject jsonObject = new JSONObject();
-// jsonObject.put("robotTaskCode","2025121301");
-// rcsReturn.setData(jsonObject);
success = true;
log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
} else {
log.error("鍛煎彨agv鎼繍澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
}
+ } else {
+ log.error("鍛煎彨agv鎼繍澶辫触锛宺esponse锛歿}",response);
+ rcsReturn.setCode("ERROR");
}
} catch (Exception e) {
log.error("鍛煎彨agv鎼繍寮傚父", e);
@@ -314,11 +327,11 @@
switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
case TASK_START: {
if (ioType == 1 || ioType == 10 || ioType == 53) {
- wrkMast.setCrnStrTime(now);
wrkMast.setModiTime(now);
wrkMastService.updateById(wrkMast);
} else if (ioType == 101 || ioType == 110 || ioType == 103) {
-
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
} else {
log.error("{}ioType{}涓嶅湪end鍙嶉澶勭悊涓�", wrkMast.getWrkNo(), ioType);
}
@@ -331,6 +344,44 @@
wrkMast.setModiTime(now);
wrkMastService.updateById(wrkMast);
} else if (ioType == 101 || ioType == 110 || ioType == 103) {
+ wrkMast.setWrkSts(14L);
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ // 缁橳MS鍙嶉鍑哄簱璐х墿淇℃伅
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ if(!wrkDetls.isEmpty()) {
+ WrkDetl wrkDetl = wrkDetls.get(0);
+ String orderNo = wrkDetl.getOrderNo();
+ if(!Cools.isEmpty(orderNo)) {
+ OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
+ if (orderPakout != null) {
+ MesInApply mesOutFeedback = new MesInApply();
+ mesOutFeedback.setBillType(String.valueOf(orderPakout.getDocType()));
+ mesOutFeedback.setOrderNo(orderNo);
+ mesOutFeedback.setCreateTime( new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
+ List<MesItemDetails> details = new ArrayList<>();
+ for(WrkDetl detl:wrkDetls) {
+ MesItemDetails detail = new MesItemDetails();
+ detail.setItemNo(detl.getMatnr());
+ detail.setAnfme(detl.getAnfme());
+ details.add(detail);
+ }
+ mesOutFeedback.setDetails(details);
+ String url = DJ_URL + "api/OutboundOrder/WmsOutFinish";
+ String request = JSONObject.toJSONString(mesOutFeedback);
+ String response = RcsServiceImpl.sendPost(url, request);
+ if (!StringUtils.isEmpty(response) && response.contains("Success")){
+ MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+ if("1".equals(mesReturn.getSuccess())) {
+ log.info("CTU鍑哄簱鍙嶉end,涓婃姤TMS鎴愬姛,宸ヤ綔鍙凤細{}锛屾槑缁嗭細{}",wrkMast.getWrkNo(),request);
+ } else {
+ log.error("CTU鍑哄簱鍙嶉end,涓婃姤TMS澶辫触锛�,宸ヤ綔鍙凤細{}锛屾槑缁嗭細{}",wrkMast.getWrkNo(),request);
+ }
+ }
+ }
+ }
+ }
} else {
log.error("{}ioType{}涓嶅湪end鍙嶉澶勭悊涓�", wrkMast.getWrkNo(), ioType);
@@ -393,7 +444,7 @@
task.setModiUser(defaultUserId);
taskService.updateById(task);
// 浠诲姟瀹屾垚
- mesService.reporterTask(rcsReporterTask);
+// mesService.reporterTask(rcsReporterTask);
// 鏇存柊鎺ラ┏浣嶇疆鐘舵��
@@ -433,6 +484,15 @@
mesService.applyOutStation(apply);
} else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
mesService.outStation(apply);
+ // agv缁х画鎵ц
+ // 婧愮珯鐐规槸浜х嚎锛岀绔欏畬鎴愬悗缁檙cs鍙嶉缁х画鎵ц
+ if(task.getSourceStaNo().contains("TOOL")) {
+ TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+ inOutStationAllow.setTaskno(robotTaskCode);
+ inOutStationAllow.setStatus("Y");
+ inOutStationAllow.setAgvCode(singleRobotCode);
+ mesService.allowOutStation(inOutStationAllow);
+ }
}
} break;
case ARRIVE_ON_STATION: {
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 32e9eaa..494de65 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -468,6 +468,7 @@
wrkDetl.setSpecs(orderDetl.getSpecs());
wrkDetl.setModel(orderDetl.getModel());
wrkDetl.setUnit(orderDetl.getUnit());
+ wrkDetl.setThreeCode(String.valueOf(orderPakout.getDocType())); // 鍗曟嵁绫诲瀷
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
@@ -598,6 +599,7 @@
wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
wrkMast.setIoPri(10D);
+ wrkMast.setBarcode(locMast.getBarcode());
wrkMast.setSourceStaNo(sourceStaNo + ""); // 婧愮珯
wrkMast.setStaNo(param.getOutSite() + ""); // 鐩爣绔�
wrkMast.setCrnNo(locMast.getCrnNo());
@@ -1007,14 +1009,16 @@
Mat mat = matService.selectByMatnr(adjust.getMatnr());
LocDetl locDetl = new LocDetl();
locDetl.sync(mat);
+ locDetl.setId(null);
locDetl.setBatch(adjust.getBatch());
locDetl.setLocNo(locMast.getLocNo());
- locDetl.setZpallet(locMast.getBarcode());
+ locDetl.setZpallet(adjust.getZpallet());
locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
locDetl.setModiTime(now);
locDetl.setAppeUser(userId);
locDetl.setAppeTime(now);
+ locDetl.setMemo("");
if (!locDetlService.insert(locDetl)) {
throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
}
@@ -1065,6 +1069,7 @@
if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
if (count > 0) {
locMast.setLocSts("F");
+ locMast.setBarcode(list.get(0).getZpallet());
}
}
locMast.setModiUser(userId);
@@ -1258,7 +1263,7 @@
// 鑾峰彇鐩爣绔�
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", wrkMast.getIoType() - 50)
- .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("stn_no", 104) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
.eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
StaDesc staDesc = staDescService.selectOne(wrapper);
if (Cools.isEmpty(staDesc)) {
@@ -1270,8 +1275,8 @@
// 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
- wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
- wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
+ wrkMast.setSourceStaNo(staDesc.getStnNo$()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getCrnStn$()); // 鐩爣绔�
wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
wrkMast.setModiTime(now);
diff --git a/src/main/java/com/zy/asrs/task/JlerScheduler.java b/src/main/java/com/zy/asrs/task/JlerScheduler.java
index 2a32c88..1989eca 100644
--- a/src/main/java/com/zy/asrs/task/JlerScheduler.java
+++ b/src/main/java/com/zy/asrs/task/JlerScheduler.java
@@ -1,7 +1,9 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.OrderPakout;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.OrderPakoutService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.handler.JlerHandler;
import org.springframework.scheduling.annotation.Scheduled;
@@ -24,6 +26,9 @@
@Resource
private WrkMastService wrkMastService;
+ @Resource
+ private OrderPakoutService orderPakoutService;
+
/**
* 璐х墿鍒拌揪鍏ュ簱鍙f帴椹充綅寮�濮嬪懠鍙枡绠辨満鍣ㄤ汉
*/
@@ -36,5 +41,31 @@
}
}
+
+ /**
+ * 鏍规嵁鍑哄簱璁㈠崟鑷姩鐢熸垚鍑哄簱浠诲姟
+ */
+ @Scheduled(cron = "0/8 * * * * ? ")
+ private void autoGenerateOutTask() {
+ OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>().eq("settle", 1));
+ if (orderPakout == null) {
+ return;
+ }
+
+ jlerHandler.autoGenerateOutTask(orderPakout);
+ }
+
+ /**
+ * 鏍规嵁鍑哄簱浠诲姟鑷姩鍛煎彨鏂欑鏈哄櫒浜烘惉杩�
+ */
+ @Scheduled(cron = "0/10 * * * * ? ")
+ private void outboundCallBinRobot() {
+ // 姣忔鍙�3鏉�
+ List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().setSqlSelect("TOP 3 *").eq("source_sta_no", 101).eq("wrk_sts", 11).orderBy("io_type"));
+ for(WrkMast wrkMast:wrkMastList) {
+ jlerHandler.outboundCallBinRobot(wrkMast);
+ }
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/task/handler/JlerHandler.java b/src/main/java/com/zy/asrs/task/handler/JlerHandler.java
index 3c09955..0b401b5 100644
--- a/src/main/java/com/zy/asrs/task/handler/JlerHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/JlerHandler.java
@@ -1,19 +1,27 @@
package com.zy.asrs.task.handler;
-import com.zy.asrs.entity.WrkMast;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+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.rcs.RcsReturn;
import com.zy.asrs.entity.rcs.RcsTaskSubmit;
import com.zy.asrs.entity.rcs.RcsTaskTargetRoute;
-import com.zy.asrs.service.RcsService;
-import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.*;
+import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.common.model.LocDto;
+import com.zy.common.model.TaskDto;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* @author pang.jiabao
@@ -30,6 +38,30 @@
@Resource
private RcsService rcsService;
+ @Resource
+ private OrderPakoutService orderPakoutService;
+
+ @Resource
+ private OrderDetlPakoutService orderDetlPakoutService;
+
+ @Resource
+ private LocDetlService locDetlService;
+
+ @Resource
+ private LocMastService locMastService;
+
+ @Resource
+ private StaDescService staDescService;
+
+ @Value("${mes.defaultUserId}")
+ public long defaultUserId;
+
+ @Resource
+ private CommonService commonService;
+
+ @Resource
+ private WrkDetlService wrkDetlService;
+
@Transactional
public void callAgvToWarehouse(WrkMast wrkMast) {
@@ -42,7 +74,7 @@
List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>();
RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute();
startRoute.setSeq(0);
- startRoute.setCode("106");
+ startRoute.setCode(wrkMast.getStaNo());
startRoute.setOperation("COLLECT");
startRoute.setType("SITE");
targetRouteList.add(startRoute);
@@ -57,14 +89,218 @@
// 杞彂缁欐捣搴锋垨鍗庢檽RCS
RcsReturn rcsReturn = rcsService.submitTask(rcsTaskSubmit, 1);
if (rcsReturn.getCode().equals("SUCCESS")) {
+ Date now = new Date();
wrkMast.setWrkSts(3L);
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
+ wrkMast.setCrnStrTime(now);
wrkMast.setTaskNo(rcsTaskSubmit.getRobotTaskCode());
wrkMastService.updateById(wrkMast);
- log.info("鍏ュ簱缁欐枡绠辨満鍣ㄤ汉鍙戦�佸懡浠ゆ垚鍔燂紝宸ヤ綔鍙凤細{}锛屼换鍔″彿锛歿}",wrkMast.getWrkNo(),rcsTaskSubmit.getRobotTaskCode());
+ log.info("鍑哄簱缁欐枡绠辨満鍣ㄤ汉鍙戦�佸懡浠ゆ垚鍔燂紝宸ヤ綔鍙凤細{}锛屼换鍔″彿锛歿}",wrkMast.getWrkNo(),rcsTaskSubmit.getRobotTaskCode());
} else {
- log.error("鍏ュ簱缁欐枡绠辨満鍣ㄤ汉鍙戦�佸懡浠ゅけ璐ワ紝宸ヤ綔鍙凤細{}锛屼换鍔″彿锛歿}",wrkMast.getWrkNo(),rcsTaskSubmit.getRobotTaskCode());
+ log.error("鍑哄簱缁欐枡绠辨満鍣ㄤ汉鍙戦�佸懡浠ゅけ璐ワ紝宸ヤ綔鍙凤細{}锛屼换鍔″彿锛歿}",wrkMast.getWrkNo(),rcsTaskSubmit.getRobotTaskCode());
}
}
+ /**
+ * 鏍规嵁鍑哄簱璁㈠崟鑷姩鐢熸垚鍑哄簱浠诲姟
+ */
+ @Transactional
+ public void autoGenerateOutTask(OrderPakout orderPakout) {
+ List<OrderDetlPakout> orderDetlPakouts = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
+
+ List<LocDto> locDtos = new ArrayList<>();
+
+ Set<String> exist = new HashSet<>();
+
+ for (OrderDetlPakout orderDetl : orderDetlPakouts) {
+ double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
+ if (issued <= 0.0D) {
+ continue;
+ }
+ List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
+ for (LocDetl locDetl : locDetls) {
+ if (issued > 0) {
+ LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
+ issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
+ locDto.setFrozen(locDetl.getFrozen());
+ locDto.setFrozenLoc(locMast.getFrozen());
+// List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
+// locDto.setStaNos(staNos);
+ locDto.setStaNo(103);
+ locDto.setBrand(orderDetl.getBrand());
+
+ locDto.setStandby1(orderDetl.getStandby1());
+ locDto.setStandby2(orderDetl.getStandby2());
+ locDto.setStandby3(orderDetl.getStandby3());
+ locDto.setBoxType1(orderDetl.getBoxType1());
+ locDto.setBoxType2(orderDetl.getBoxType2());
+ locDto.setBoxType3(orderDetl.getBoxType3());
+ locDtos.add(locDto);
+ exist.add(locDetl.getLocNo());
+ // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+ issued = issued - locDetl.getAnfme();
+ } else {
+ break;
+ }
+ }
+ if (issued > 0) {
+ LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+ locDto.setBrand(orderDetl.getBrand());
+ locDto.setStandby1(orderDetl.getStandby1());
+ locDto.setStandby2(orderDetl.getStandby2());
+ locDto.setStandby3(orderDetl.getStandby3());
+ locDto.setBoxType1(orderDetl.getBoxType1());
+ locDto.setBoxType2(orderDetl.getBoxType2());
+ locDto.setBoxType3(orderDetl.getBoxType3());
+ locDto.setLack(Boolean.TRUE);
+ locDtos.add(locDto);
+ }
+ }
+
+ List<LocDto> locDtoArrayList = new ArrayList<>();
+ //
+ for (LocDto locDto : locDtos){
+ if (locDto.getFrozen()!=1 && locDto.getFrozenLoc()!=1 && !locDto.isLack()){
+ locDtoArrayList.add(locDto);
+ } else {
+ log.warn("搴撲綅/搴撳瓨琚喕缁撴垨搴撳瓨涓嶈冻:{}", JSONObject.toJSONString(locDto));
+ }
+ }
+ locDtos = locDtoArrayList;
+
+ List<TaskDto> taskDtos = new ArrayList<>();
+ // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+ for (LocDto locDto : locDtos) {
+ if (locDto.isLack()) { continue; }
+ TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
+ if (TaskDto.has(taskDtos, taskDto)) {
+ TaskDto dto = TaskDto.find(taskDtos, taskDto);
+ assert dto != null;
+ dto.getLocDtos().addAll(taskDto.getLocDtos());
+ } else {
+ taskDtos.add(taskDto);
+ }
+ }
+ // -----------------------------------------------------------------------------------------------
+ long userId = defaultUserId;
+ for (TaskDto taskDto : taskDtos) {
+ Date now = new Date();
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+ int ioType = taskDto.isAll() ? 101 : 103;
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo("101"); // 婧愮珯
+ wrkMast.setStaNo("103"); // 鐩爣绔�
+ wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+ continue;
+ }
+ OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getBrand()
+ , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3());
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(orderDetl);
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBatch(locDto.getBatch());
+ wrkDetl.setOrderNo(locDto.getOrderNo());
+ wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setMatnr(orderDetl.getMatnr());
+ wrkDetl.setMaktx(orderDetl.getMaktx());
+ wrkDetl.setSpecs(orderDetl.getSpecs());
+ wrkDetl.setModel(orderDetl.getModel());
+ wrkDetl.setUnit(orderDetl.getUnit());
+ wrkDetl.setThreeCode(String.valueOf(orderPakout.getDocType())); // 鍗曟嵁绫诲瀷,rcs鍙嶉end鍒皐cs鏃剁粰tms涓婃姤鐢�
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE, orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
+ orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3()
+ , locDto.getAnfme());
+ log.info("鏍规嵁璁㈠崟鑷姩鐢熸垚鍑哄簱浠诲姟鎴愬姛銆愬伐浣滃彿锛歿}锛岃鍗曞彿锛歿}锛岀墿鏂欙細{}锛屾暟閲忥細{}銆�",workNo,locDto.getOrderNo(),locDto.getMatnr(),locDto.getAnfme());
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(taskDto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType == 101 ? "R" : "P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+ OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderPakout.getId(), 2L, userId);
+ }
+
+ public void outboundCallBinRobot(WrkMast wrkMast) {
+ // 涓嬪彂缁橰CS
+ RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit();
+ // 妯℃澘鍚�
+ rcsTaskSubmit.setTaskType("F11");
+ rcsTaskSubmit.setRobotTaskCode(String.valueOf(new Date().getTime()));
+ rcsTaskSubmit.setInitPriority(10); //榛樿10
+ List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>();
+ RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute();
+ startRoute.setSeq(0);
+ startRoute.setCode(wrkMast.getSourceLocNo());
+ startRoute.setOperation("COLLECT");
+ startRoute.setType("STORAGE");
+ targetRouteList.add(startRoute);
+ RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute();
+ endRoute.setSeq(1);
+ endRoute.setCode(wrkMast.getSourceStaNo());
+ endRoute.setOperation("DELIVERY");
+ endRoute.setType("SITE");
+ targetRouteList.add(endRoute);
+ rcsTaskSubmit.setTargetRoute(targetRouteList);
+
+ // 杞彂缁欐捣搴锋垨鍗庢檽RCS
+ RcsReturn rcsReturn = rcsService.submitTask(rcsTaskSubmit, 1);
+ if (rcsReturn.getCode().equals("SUCCESS")) {
+ Date now = new Date();
+ wrkMast.setWrkSts(12L);
+ wrkMast.setModiTime(now);
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setTaskNo(rcsTaskSubmit.getRobotTaskCode());
+ wrkMastService.updateById(wrkMast);
+ log.info("鍑哄簱缁欐枡绠辨満鍣ㄤ汉鍙戦�佸懡浠ゆ垚鍔燂紝宸ヤ綔鍙凤細{}锛屼换鍔″彿锛歿}",wrkMast.getWrkNo(),rcsTaskSubmit.getRobotTaskCode());
+ } else {
+ log.error("鍑哄簱缁欐枡绠辨満鍣ㄤ汉鍙戦�佸懡浠ゅけ璐ワ紝宸ヤ綔鍙凤細{}锛屼换鍔″彿锛歿}",wrkMast.getWrkNo(),rcsTaskSubmit.getRobotTaskCode());
+ }
+ }
}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 3dde35c..af71601 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -253,19 +253,19 @@
}
// 鏇存柊璁㈠崟瀹屾垚鏁伴噺
- OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
+ OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem
(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
- if (orderDetlPakin == null) {
- orderDetlPakin = orderDetlPakinService.selectItem
+ if (orderDetlPakout == null) {
+ orderDetlPakout = orderDetlPakoutService.selectItem
(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
}
try {
- if (!Cools.isEmpty(orderDetlPakin)) {
- if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
- orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ if (!Cools.isEmpty(orderDetlPakout)) {
+ if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
// exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
// wrkMast.getWrkNo(), wrkMast.getLocNo());
diff --git a/src/main/java/com/zy/common/config/ControllerResAdvice.java b/src/main/java/com/zy/common/config/ControllerResAdvice.java
index a4cdc97..d48b27f 100644
--- a/src/main/java/com/zy/common/config/ControllerResAdvice.java
+++ b/src/main/java/com/zy/common/config/ControllerResAdvice.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.core.common.Cools;
import com.core.common.R;
+import com.zy.asrs.entity.mes.MesReturn;
import com.zy.asrs.service.ApiLogService;
import com.zy.common.utils.IpTools;
import lombok.extern.slf4j.Slf4j;
@@ -59,6 +60,21 @@
);
}
}
+ if (o instanceof MesReturn) {
+ MesReturn mesReturn = (MesReturn) o;
+ String appkey = request.getHeader("appkey");
+ Object reqCache = request.getAttribute("cache");
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ String.valueOf(appAuth),
+ request.getRequestURI(),
+ appkey,
+ IpTools.gainRealIp(request),
+ reqCache==null?"": JSON.toJSONString(reqCache),
+ JSON.toJSONString(o),
+ String.valueOf(mesReturn.getSuccess()).equalsIgnoreCase("1")
+ );
+ }
}
}
return o;
diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java
index eaaffee..9dab9e9 100644
--- a/src/main/java/com/zy/common/model/LocDto.java
+++ b/src/main/java/com/zy/common/model/LocDto.java
@@ -35,9 +35,9 @@
/**
* 鏄惁鍐荤粨 "鏄惁鍐荤粨,0.鏈喕缁擄紝1.宸插喕缁�"
*/
- private Integer frozen = 1;
+ private Integer frozen = 0;
- private Integer frozenLoc = 1;
+ private Integer frozenLoc = 0;
// private Integer frozen$;
diff --git a/src/main/java/com/zy/common/web/AuthController.java b/src/main/java/com/zy/common/web/AuthController.java
index cc00686..01307b0 100644
--- a/src/main/java/com/zy/common/web/AuthController.java
+++ b/src/main/java/com/zy/common/web/AuthController.java
@@ -53,39 +53,37 @@
@Autowired
private LoadingConfigTimer loadingConfigTimer;
- @PostMapping("/login.action")
+ @RequestMapping("/login.action")
@ManagerAuth(value = ManagerAuth.Auth.NONE, memo = "鐧诲綍")
- public R loginAction(@RequestBody Map<String, String> param) {
+ public R loginAction(String username, String password){
//楠岃瘉璁稿彲璇佹槸鍚︽湁鏁�
- if (!licenseTimer.getSystemSupport()) {
+ if (!licenseTimer.getSystemSupport()){
return R.parse(CodeRes.SYSTEM_20001);
}
+ if (username.equals("super") && password.equals(Cools.md5(superPwd))) {
+ Map<String, Object> res = new HashMap<>();
+ res.put("username", username);
+ res.put("token", Cools.enToken(System.currentTimeMillis() + username, superPwd));
+ return R.ok(res);
+ }
EntityWrapper<User> userWrapper = new EntityWrapper<>();
- userWrapper.eq("username", param.get("username"));
+ userWrapper.eq("username", username);
User user = userService.selectOne(userWrapper);
- if (Cools.isEmpty(user)) {
- if (param.get("username").equals("super") && param.get("password").equals(Cools.md5(superPwd))) {
- Map<String, Object> res = new HashMap<>();
- res.put("username", param.get("username"));
- res.put("token", Cools.enToken(System.currentTimeMillis() + param.get("username"), superPwd));
- return R.ok(res);
- }
+ if (Cools.isEmpty(user)){
return R.parse(CodeRes.USER_10001);
}
- if (user.getStatus() != 1) {
+ if (user.getStatus()!=1){
return R.parse(CodeRes.USER_10002);
}
- if (!user.getPassword().equals(param.get("password"))) {
+ if (!user.getPassword().equals(password)){
return R.parse(CodeRes.USER_10003);
}
- String token = Cools.enToken(System.currentTimeMillis() + param.get("username"), user.getPassword());
- if (loadingConfigTimer.getTokenNumber() == 1) {
- userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()).eq("system", "WMS"));
- } UserLogin userLogin = new UserLogin();
+ String token = Cools.enToken(System.currentTimeMillis() + username, user.getPassword());
+ userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()));
+ UserLogin userLogin = new UserLogin();
userLogin.setUserId(user.getId());
userLogin.setToken(token);
userLogin.setCreateTime(new Date());
- userLogin.setSystem("WMS");
userLoginService.insert(userLogin);
Map<String, Object> res = new HashMap<>();
res.put("username", user.getUsername());
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 26c6780..50243e9 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -58,6 +58,7 @@
# 涓嬩綅鏈洪厤缃�
wcs-slave:
+ url: http://127.0.0.1:9090/djwcs
# 鍙屾繁
doubleDeep: true
# 鍙屾繁搴撲綅鎺掑彿
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 958190a..94fb0fd 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -544,22 +544,22 @@
<include refid="batchSeqA"></include>
- <if test="locNos != null and locNos.size > 0">
- and b.loc_no not in
- <foreach item="item" collection="locNos" index="index" separator="," open="(" close=")">
- #{item}
- </foreach>
- </if>
+<!-- <if test="locNos != null and locNos.size > 0">-->
+<!-- and b.loc_no not in-->
+<!-- <foreach item="item" collection="locNos" index="index" separator="," open="(" close=")">-->
+<!-- #{item}-->
+<!-- </foreach>-->
+<!-- </if>-->
- order by
- DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
- desc,
- NEWID(),
+ order by a.modi_time,
+-- DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
+-- desc,
+-- NEWID(),
case
- when (left(a.loc_no, 2) = '01') then 0
+ when (left(a.loc_no, 2) = '01') then 1
when (left(a.loc_no, 2) = '02') then 1
when (left(a.loc_no, 2) = '03') then 1
- when (left(a.loc_no, 2) = '04') then 0
+ when (left(a.loc_no, 2) = '04') then 1
when (left(a.loc_no, 2) = '05') then 0
when (left(a.loc_no, 2) = '06') then 1
when (left(a.loc_no, 2) = '07') then 1
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 44c6d36..f6e0a06 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -70,7 +70,7 @@
select * from asr_wrk_mast
where wrk_sts=5
or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
- or (wrk_sts=15 and dateadd(mi,1,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
+ or (wrk_sts=15 and dateadd(second,10,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
order by io_time,wrk_no asc
</select>
diff --git a/src/main/webapp/static/js/basStation/basStation.js b/src/main/webapp/static/js/basStation/basStation.js
index 1eaa6be..8b9b3d0 100644
--- a/src/main/webapp/static/js/basStation/basStation.js
+++ b/src/main/webapp/static/js/basStation/basStation.js
@@ -27,7 +27,7 @@
, {field: 'area', align: 'center', title: '鍖哄煙'}
, {field: 'locSts$', align: 'center', title: '鐘舵��'}
, {field: 'barcode', align: 'center', title: '鍒�鏋跺彿'}
- , {field: 'ioTime', align: 'center', title: '鍏ュ嚭搴撴椂闂�'}
+ , {field: 'ioTime', align: 'center', title: '鍏ュ嚭搴撴椂闂�',hide: true}
, {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳'}
, {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿'}
, {field: 'appeUser$', align: 'center', title: '鍒涘缓鑰�',hide: true}
diff --git a/src/main/webapp/static/js/pakStore/stockAdjust.js b/src/main/webapp/static/js/pakStore/stockAdjust.js
index 042a8b5..fdcbf23 100644
--- a/src/main/webapp/static/js/pakStore/stockAdjust.js
+++ b/src/main/webapp/static/js/pakStore/stockAdjust.js
@@ -8,9 +8,11 @@
{fixed: 'left', field: 'count', title: '瀹為檯鏁伴噺', align: 'center', edit:'text', width: 120, style:'color: blue;font-weight: bold'}
,{field: 'anfme', align: 'center',title: '鏁伴噺'}
,{field: 'batch', align: 'center',title: '鎵瑰彿锛堢紪杈戯級', edit: true, style: 'font-weight:bold'}
+ ,{field: 'zpallet', align: 'center',title: '鏂欑鐮�', edit: true, style: 'font-weight:bold'}
];
arrRemove(detlCols, "field", "anfme");
arrRemove(detlCols, "field", "batch");
+ arrRemove(detlCols, "field", "zpallet");
cols.push.apply(cols, detlCols);
cols.push({fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:80})
return cols;
diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js
index b367be3..2969503 100644
--- a/src/main/webapp/static/js/wrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -25,13 +25,14 @@
,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��', width: 120}
,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�', width: 140}
,{field: 'ioPri', align: 'center',title: '浼樺厛绾�'}
- ,{field: 'taskType$', align: 'center',title: '浠诲姟绫诲瀷'}
+ ,{field: 'taskType$', align: 'center',title: '浠诲姟绫诲瀷',hide: true}
,{field: 'barcode', align: 'center',title: '鏉$爜', width: 120}
,{field: 'crnNo$', align: 'center',title: '鍫嗗灈鏈�'}
,{field: 'sourceStaNo$', align: 'center',title: '婧愮珯'}
,{field: 'staNo$', align: 'center',title: '鐩爣绔�'}
,{field: 'sourceLocNo', align: 'center',title: '婧愬簱浣�', width: 120}
,{field: 'locNo', align: 'center',title: '鐩爣搴撲綅', width: 120}
+ ,{field: 'taskNo', align: 'center',title: 'CTU浠诲姟鍙�',width: 150}
,{field: 'preHave', align: 'center',title: '鍏堝叆鍝�', hide: true}
,{field: 'takeNone', align: 'center',title: '绌烘搷浣�', hide: true}
,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
diff --git a/src/main/webapp/views/basStation/basStation.html b/src/main/webapp/views/basStation/basStation.html
index ec8de94..c10b931 100644
--- a/src/main/webapp/views/basStation/basStation.html
+++ b/src/main/webapp/views/basStation/basStation.html
@@ -89,6 +89,12 @@
</div>
</div>
<div class="layui-form-item">
+ <label class="layui-form-label">鍒�鏋跺彿: </label>
+ <div class="layui-input-block">
+ <input class="layui-input" name="barcode" placeholder="璇疯緭鍏ュ垁鏋跺彿">
+ </div>
+ </div>
+ <div class="layui-form-item">
<label class="layui-form-label">鍖哄煙锛�</label>
<div class="layui-input-block cool-auto-complete">
<input class="layui-input" name="areaId" placeholder="璇烽�夋嫨搴撳尯" style="display: none">
diff --git a/src/main/webapp/views/locMast/locMast_detail.html b/src/main/webapp/views/locMast/locMast_detail.html
index cd62adc..0c146fe 100644
--- a/src/main/webapp/views/locMast/locMast_detail.html
+++ b/src/main/webapp/views/locMast/locMast_detail.html
@@ -71,6 +71,12 @@
</div>
</div>
</div>
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label">鏂欑鐮�</label>
+ <div class="layui-input-inline">
+ <input id="barcode" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
<div class="layui-inline" style="width:31%;display: none">
<label class="layui-form-label">锛�</label>
<div class="layui-input-inline">
@@ -220,12 +226,7 @@
<input id="mk" class="layui-input" type="text">
</div>
</div>
- <div class="layui-inline" style="width:31%;display: none">
- <label class="layui-form-label">锛�</label>
- <div class="layui-input-inline">
- <input id="barcode" class="layui-input" type="text">
- </div>
- </div>
+
<div class="layui-inline" style="width:31%;display: none">
<label class="layui-form-label">锛�</label>
<div class="layui-input-inline">
--
Gitblit v1.9.1