From 44b6b79dd5dee0ebbd2d11b08abbc2be275bed58 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 09 二月 2026 16:10:17 +0800
Subject: [PATCH] #
---
src/main/resources/mapper/WrkMastLogMapper.xml | 1
src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java | 228 ++++-
src/main/java/com/zy/asrs/controller/LocMastController.java | 55 +
src/main/java/com/zy/asrs/entity/BasCrnp.java | 6
src/main/java/com/zy/api/entity/StationProtocol.java | 28
src/main/java/com/zy/asrs/controller/WaitPakinController.java | 21
src/main/java/com/zy/common/model/StartupDto.java | 6
src/main/java/com/zy/asrs/utils/Utils.java | 53 +
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 37
src/main/java/com/zy/asrs/entity/Mat.java | 29
src/main/resources/application-dev.yml | 28
src/main/java/com/zy/asrs/entity/LocMast.java | 4
src/main/java/com/zy/common/service/CommonService.java | 90 -
src/main/java/com/zy/api/controller/params/WorkTaskParams.java | 7
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 33
src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java | 7
src/main/java/com/zy/asrs/task/WorkMastScheduler.java | 146 +++
src/main/java/com/zy/asrs/entity/WrkMastLog.java | 1
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | 179 +++-
src/main/java/com/zy/common/model/LocTypeDto.java | 4
src/main/java/com/zy/api/service/WcsApiService.java | 5
src/main/webapp/static/js/waitPakin/waitPakin.js | 47 +
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 2
src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java | 7
src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java | 38
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 2
src/main/java/com/zy/api/entity/DeviceStatusVo.java | 32
src/main/java/com/zy/asrs/entity/LocAroundBind.java | 15
src/main/java/com/zy/asrs/controller/OrderPakinController.java | 5
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java | 400 +++++++---
src/main/java/com/zy/asrs/utils/OrderExcelListener.java | 2
src/main/java/com/zy/api/entity/DeviceConfig.java | 18
src/main/java/com/zy/asrs/controller/WrkMastLogController.java | 11
src/main/java/com/zy/common/web/WcsController.java | 88 ++
src/main/resources/mapper/LocAroundBindMapper.xml | 4
src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java | 15
src/main/java/com/zy/api/controller/HmesApiController.java | 20
src/main/java/com/zy/common/model/DetlDto.java | 3
src/main/resources/mapper/StaDescMapper.xml | 2
src/main/java/com/zy/asrs/controller/OutController.java | 4
src/main/webapp/views/locMast/locMast.html | 5
src/main/java/com/zy/asrs/controller/OpenController.java | 160 ++++
src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java | 10
src/main/java/com/zy/asrs/entity/WrkMast.java | 12
src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java | 8
src/main/resources/mapper/WrkMastMapper.xml | 4
src/main/java/com/zy/api/service/impl/HWmsApiServiceImpl.java | 2
src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java | 2
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 6
src/main/java/com/zy/asrs/controller/OrderPakoutController.java | 12
src/main/webapp/views/locMast/locMast_detail.html | 12
src/main/java/com/zy/api/entity/DualCrnProtocol.java | 64 +
src/main/java/com/zy/api/service/HmesApiService.java | 3
src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java | 2
src/main/java/com/zy/api/controller/WcsApiController.java | 70 +
src/main/java/com/zy/asrs/entity/WaitPakin.java | 6
src/main/java/com/zy/asrs/service/WaitPakinService.java | 2
src/main/java/com/zy/common/web/param/SearchLocParam.java | 3
src/main/webapp/static/js/orderPakout/order.js | 1
src/main/java/com/zy/api/entity/CrnProtocol.java | 48 +
src/main/webapp/static/js/locMast/locMast.js | 2
61 files changed, 1,650 insertions(+), 467 deletions(-)
diff --git a/src/main/java/com/zy/api/controller/HmesApiController.java b/src/main/java/com/zy/api/controller/HmesApiController.java
index 3ac42f5..dcbc9aa 100644
--- a/src/main/java/com/zy/api/controller/HmesApiController.java
+++ b/src/main/java/com/zy/api/controller/HmesApiController.java
@@ -2,9 +2,11 @@
import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
import com.core.common.R;
import com.zy.api.controller.params.ReceviceTaskParams;
import com.zy.api.service.HmesApiService;
+import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,15 +31,21 @@
* @date 2026/1/10 10:40
* @return com.core.common.R
*/
- @ManagerAuth
+// @ManagerAuth
@ApiOperation("涓嬪彂鐢熶骇浠诲姟")
@PostMapping("/work/tasks")
- public R menauWork(@RequestBody ReceviceTaskParams params) {
+ public R menauWork(@RequestBody OpenOrderPakoutParam params) {
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getDeviceNo())) {
- return R.error("鏈哄彴鍙蜂笉鑳戒负绌猴紒锛�");
+ if (Cools.isEmpty(params.getOrderNo())) {
+ return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖");
+ }
+ if (Cools.isEmpty(params.getBillType())) {
+ return R.error("鍗曟嵁绫诲瀷[BillType]涓嶈兘涓虹┖");
+ }
+ if (Cools.isEmpty(params.getMatList())) {
+ return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖");
}
return hmesApiService.pubWorkTask(params);
@@ -50,14 +58,14 @@
* @param params
* @return com.core.common.R
*/
- @ManagerAuth
+// @ManagerAuth
@ApiOperation("绌跨嚎瀹屾垚")
@PostMapping("/work/release/lock")
public R releaseLock(@RequestBody ReceviceTaskParams params) {
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getDeviceNo())) {
+ if (Objects.isNull(params.getDevNo())) {
return R.error("鏈哄彴鍙蜂笉鑳戒负绌猴紒锛�");
}
diff --git a/src/main/java/com/zy/api/controller/WcsApiController.java b/src/main/java/com/zy/api/controller/WcsApiController.java
index 6047d43..7a050d7 100644
--- a/src/main/java/com/zy/api/controller/WcsApiController.java
+++ b/src/main/java/com/zy/api/controller/WcsApiController.java
@@ -1,19 +1,23 @@
package com.zy.api.controller;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.R;
import com.zy.api.controller.params.ReceviceTaskParams;
import com.zy.api.controller.params.WorkTaskParams;
import com.zy.api.service.WcsApiService;
+import com.zy.asrs.entity.LocAroundBind;
+import com.zy.asrs.entity.WaitPakin;
+import com.zy.asrs.service.LocAroundBindService;
+import com.zy.asrs.service.WaitPakinService;
+import com.zy.asrs.utils.Utils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
import java.util.Objects;
@Api("WCS浜や簰鎺ュ彛")
@@ -23,7 +27,11 @@
@Autowired
private WcsApiService wcsApiService;
+ @Autowired
+ private WaitPakinService waitPakinService;
+ @Autowired
+ private LocAroundBindService locAroundBindService;
/**
* 閫氱煡WCS閿佸畾鍛ㄨ竟搴撲綅锛屽強绂佹浠诲姟鎵ц
* @author Ryan
@@ -37,7 +45,7 @@
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getDeviceNo())) {
+ if (Objects.isNull(params.getDevNo())) {
return R.error("鏈哄彴鍙蜂笉鑳戒负绌猴紒锛�");
}
@@ -52,10 +60,10 @@
* @param params
* @return com.core.common.R
*/
- @ManagerAuth
+// @ManagerAuth
@ApiOperation("鍫嗗灈鏈哄洖搴撴惉杩愭寚浠�")
@PostMapping("/back/loc")
- public R backLoc(@RequestBody WorkTaskParams params) {
+ public synchronized R backLoc(@RequestBody String params) {
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
@@ -81,7 +89,7 @@
}
@ManagerAuth
- @ApiOperation("璁惧鎵ц鐘舵�佸洖鍐�")
+ @ApiOperation("璁惧鎵ц鐘舵�佸洖鍐�-wcs浠诲姟瀹屾垚鍥炲啓")
@PostMapping("/openapi/report")
public R receviceTaskFromWcs(@RequestBody ReceviceTaskParams params) {
if (Objects.isNull(params)) {
@@ -91,5 +99,51 @@
}
+ @ManagerAuth
+ @ApiOperation("鑾峰彇缁勬墭鍏ュ簱鎵樼洏淇℃伅")
+ @PostMapping("/openapi/waitPakins")
+ public R waitPakins() {
+ List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("io_status", "N"));
+ return R.ok().add(waitPakins);
+ }
+
+ @ManagerAuth
+ @ApiOperation("鑾峰彇鏈哄彴搴撲綅鐨勬暟缁�")
+ @GetMapping("/openapi/arr")
+ public R arr() {
+ int i = 0;
+ int[] k = new int[] { 3, 0, 4, 1, 5, 2};
+ int c=0;
+ int h=0;
+ int i1 = 15;
+ List<LocAroundBind> locAroundBinds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().orderBy("dev_id"));
+ String[] arr = new String[90];
+ for (LocAroundBind locAroundBind : locAroundBinds) {
+ String s = Utils.WMSLocToWCSLoc(locAroundBind.getBlocNo());
+ int index = i*6+k[c];
+ arr[index] = s;
+ c++;
+ if (c==k.length) {
+ c=0;
+ i++;
+ }
+ if (i==i1){
+ i=0;
+ h++;
+ System.out.print("[");
+ for (int j=0;j<i1*6;j++){
+ System.out.print(arr[j]+",");
+ }
+ System.out.println("]");
+ if (h==2){
+ i1 = 13;
+ }else if (h==3){
+ i1 = 8;
+ }
+ }
+ }
+ return R.ok();
+
+ }
}
diff --git a/src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java b/src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java
index c5349a6..ecf4ecf 100644
--- a/src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java
+++ b/src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java
@@ -14,7 +14,7 @@
public class ReceviceTaskParams implements Serializable {
@ApiModelProperty("鏈哄彴鍙�")
- private String deviceNo;
+ private String devNo;
@ApiModelProperty("娴佹按鍙�")
private Integer id;
@@ -29,7 +29,7 @@
private String taskNo;
@ApiModelProperty("WMS浠诲姟鍙�")
- private String wrkNo;
+ private String superTaskNo;
@ApiModelProperty("娑堟伅绫诲瀷锛歵ask_complete銆乼ask_cancel")
private String msgType;
@@ -43,4 +43,7 @@
@ApiModelProperty("閲嶉噺")
private Double weight;
+ @ApiModelProperty("Y锛氬喕缁� N:瑙e喕")
+ private String freeze;
+
}
diff --git a/src/main/java/com/zy/api/controller/params/WorkTaskParams.java b/src/main/java/com/zy/api/controller/params/WorkTaskParams.java
index 010893b..8c462b9 100644
--- a/src/main/java/com/zy/api/controller/params/WorkTaskParams.java
+++ b/src/main/java/com/zy/api/controller/params/WorkTaskParams.java
@@ -24,6 +24,12 @@
@ApiModelProperty("搴撲綅缂栫爜")
private String locNo;
+ //婧愬簱浣�
+ private String sourceLocNo;
+
+ //婧愮珯鐐�
+ private String sourceStaNo;
+
@ApiModelProperty("鏉$爜")
private String barcode;
@@ -39,4 +45,5 @@
@ApiModelProperty("鏄惁浣欐枡")
private Integer isSuplus;
+
}
diff --git a/src/main/java/com/zy/api/entity/CrnProtocol.java b/src/main/java/com/zy/api/entity/CrnProtocol.java
new file mode 100644
index 0000000..6480801
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/CrnProtocol.java
@@ -0,0 +1,48 @@
+package com.zy.api.entity;
+
+import lombok.Data;
+import java.util.Map;
+
+@Data
+public class CrnProtocol {
+ private Integer crnNo;
+ private Integer mode; // 1=Manual, 2=Auto, 3=Computer
+ private Object modeType; // Enum: CrnModeType
+ private Integer alarm; // Error code
+ private Integer taskNo; // Task number
+ private Integer status; // Current status code
+ private Object statusType; // Enum: CrnStatusType
+ private Integer bay; // Current bay
+ private Integer level; // Current level
+ private Integer forkPos; // Fork position code
+ private Object forkPosType; // Enum: CrnForkPosType
+ private Integer liftPos; // Lift position code
+ private Object liftPosType; // Enum: CrnLiftPosType
+ private Integer walkPos; // 0=In Position, 1=Not in Position
+ private Integer loaded; // 1=Loaded, 0=Empty
+
+ // Speed and Distance
+ private Double xSpeed;
+ private Double ySpeed;
+ private Double zSpeed;
+ private Double xDistance;
+ private Double yDistance;
+ private Double xDuration;
+ private Double yDuration;
+
+ // Other Info
+ private String lastIo; // "I"=Inbound, "O"=Outbound
+ private Integer crnLane; // Lane number
+ private float weight;
+ private String barcode;
+ private Long deviceDataLog;
+ private Long lastCommandTime;
+
+ // Reserved/Temp
+ private Integer temp1;
+ private Integer temp2;
+ private Integer temp3;
+ private Integer temp4;
+
+ private Map<String, Object> extend;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/api/entity/DeviceConfig.java b/src/main/java/com/zy/api/entity/DeviceConfig.java
new file mode 100644
index 0000000..6487cb4
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/DeviceConfig.java
@@ -0,0 +1,18 @@
+package com.zy.api.entity;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class DeviceConfig implements Serializable {
+ private Integer id;
+ private String ip;
+ private Integer port;
+ private String threadImpl;
+ private Date createTime;
+ private String deviceType;
+ private Integer deviceNo;
+ private Integer fake;
+ private String fakeInitStatus;
+}
diff --git a/src/main/java/com/zy/api/entity/DeviceStatusVo.java b/src/main/java/com/zy/api/entity/DeviceStatusVo.java
new file mode 100644
index 0000000..20cd184
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/DeviceStatusVo.java
@@ -0,0 +1,32 @@
+package com.zy.api.entity;
+
+import lombok.Data;
+import java.util.List;
+
+/**
+ * Device Status Response Object
+ * Corresponds to the map returned by OpenController.getDeviceStatus
+ */
+@Data
+public class DeviceStatusVo {
+ /**
+ * Stacker Crane (CRN) Data List
+ */
+ private List<CrnProtocol> crnList;
+
+ /**
+ * RGV Device Config List
+ * Note: The controller returns the DeviceConfig list for RGV, not the protocol status list.
+ */
+ private List<DeviceConfig> rgvList;
+
+ /**
+ * Dual-Station Stacker Crane Data List
+ */
+ private List<DualCrnProtocol> dualCrnList;
+
+ /**
+ * Conveyor Station Data List
+ */
+ private List<StationProtocol> stationList;
+}
diff --git a/src/main/java/com/zy/api/entity/DualCrnProtocol.java b/src/main/java/com/zy/api/entity/DualCrnProtocol.java
new file mode 100644
index 0000000..1199f70
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/DualCrnProtocol.java
@@ -0,0 +1,64 @@
+package com.zy.api.entity;
+import lombok.Data;
+import java.util.Map;
+
+@Data
+public class DualCrnProtocol {
+ private Integer crnNo;
+ private Integer mode;
+ private Object modeType; // Enum: DualCrnModeType
+ private Integer alarm;
+
+ // Station 1 Data
+ private Integer taskNo;
+ private Integer status;
+ private Object statusType; // Enum: DualCrnStatusType
+ private Integer bay;
+ private Integer level;
+ private Integer forkPos;
+ private Object forkPosType; // Enum: DualCrnForkPosType
+ private Integer liftPos;
+ private Object liftPosType; // Enum: DualCrnLiftPosType
+ private Integer walkPos;
+ private Integer loaded;
+ private Integer taskReceive;
+
+ // Station 2 Data
+ private Integer taskNoTwo;
+ private Integer statusTwo;
+ private Object statusTypeTwo;
+ private Integer bayTwo;
+ private Integer levelTwo;
+ private Integer forkPosTwo;
+ private Object forkPosTypeTwo;
+ private Integer liftPosTwo;
+ private Object liftPosTypeTwo;
+ private Integer walkPosTwo;
+ private Integer loadedTwo;
+ private Integer taskReceiveTwo;
+
+ // Movement Data (Integer type in DualCrnProtocol)
+ private Integer xSpeed;
+ private Integer ySpeed;
+ private Integer zSpeed;
+ private Integer xDistance;
+ private Integer yDistance;
+ private Integer xDuration;
+ private Integer yDuration;
+
+ // Other Info
+ private Integer goodsType;
+ private String barcode;
+ private String lastIo;
+ private Integer crnLane;
+ private Long deviceDataLog;
+ private Long lastCommandTime;
+
+ // Reserved/Temp
+ private Integer temp1;
+ private Integer temp2;
+ private Integer temp3;
+ private Integer temp4;
+
+ private Map<String, Object> extend;
+}
diff --git a/src/main/java/com/zy/api/entity/StationProtocol.java b/src/main/java/com/zy/api/entity/StationProtocol.java
new file mode 100644
index 0000000..1c7e121
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/StationProtocol.java
@@ -0,0 +1,28 @@
+package com.zy.api.entity;
+import lombok.Data;
+import java.util.Map;
+
+@Data
+public class StationProtocol {
+ private Integer stationId; // Station ID
+ private Integer taskNo; // Task number
+ private Integer targetStaNo; // Target Station ID
+
+ // Status Flags
+ private boolean autoing; // Auto mode
+ private boolean loading; // Has goods
+ private boolean inEnable; // Inbound enabled
+ private boolean outEnable; // Outbound enabled
+ private boolean emptyMk; // Empty pallet mark
+ private boolean fullPlt; // Full pallet
+ private boolean runBlock; // Running blocked
+ private boolean enableIn; // Start inbound
+
+ private Integer palletHeight;
+ private Integer error; // Error code
+ private String errorMsg; // Error message
+ private String barcode;
+ private Double weight;
+
+ private Map<String, Object> extend;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/api/service/HmesApiService.java b/src/main/java/com/zy/api/service/HmesApiService.java
index d8b247c..8930fae 100644
--- a/src/main/java/com/zy/api/service/HmesApiService.java
+++ b/src/main/java/com/zy/api/service/HmesApiService.java
@@ -2,10 +2,11 @@
import com.core.common.R;
import com.zy.api.controller.params.ReceviceTaskParams;
+import com.zy.asrs.entity.param.OpenOrderPakoutParam;
public interface HmesApiService {
- R pubWorkTask(ReceviceTaskParams params);
+ R pubWorkTask(OpenOrderPakoutParam params);
R releaseLock(ReceviceTaskParams params);
}
diff --git a/src/main/java/com/zy/api/service/WcsApiService.java b/src/main/java/com/zy/api/service/WcsApiService.java
index a1e03bc..8f9b247 100644
--- a/src/main/java/com/zy/api/service/WcsApiService.java
+++ b/src/main/java/com/zy/api/service/WcsApiService.java
@@ -24,7 +24,7 @@
* @param params
* @return com.core.common.R
*/
- R backLocs(WorkTaskParams params);
+ R backLocs(String params);
/**
* 涓嬪彂浠诲姟鑷砏CS
@@ -53,4 +53,7 @@
* @return com.core.common.R
*/
R receviceTaskFromWcs(ReceviceTaskParams params);
+
+ //杈撳叆搴撲綅鑷姩鍐荤粨绠楀嚭鐩搁偦搴撲綅搴忓彿
+ Integer[] freezeLocAround(Integer locId);
}
diff --git a/src/main/java/com/zy/api/service/impl/HWmsApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/HWmsApiServiceImpl.java
index 2195be9..4d926b3 100644
--- a/src/main/java/com/zy/api/service/impl/HWmsApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/HWmsApiServiceImpl.java
@@ -443,7 +443,7 @@
orderItem.setMatnr(matnr.getMatnr());
orderItem.setMaktx(matnr.getMaktx());
orderItem.setBrand(matnr.getBrand());
- orderItem.setBatch(1 + "");
+ orderItem.setBatch("");
orderItem.setStandby1(item.getPro_id());
// 鍏宠仈涓婂姞娲惧伐鍗曞彿+闆朵欢浠g爜+渚涘簲鍟嗕唬鐮�
orderItem.setThreeCode(item.getTotal_serial());
diff --git a/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java
index 05ea761..4bd4a81 100644
--- a/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java
@@ -1,26 +1,27 @@
package com.zy.api.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
import com.core.common.R;
+import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.api.controller.params.ReceviceTaskParams;
import com.zy.api.service.HmesApiService;
import com.zy.api.service.WcsApiService;
-import com.zy.asrs.entity.BasDevice;
-import com.zy.asrs.entity.LocAroundBind;
-import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.enums.LocStsType;
-import com.zy.asrs.service.BasDeviceService;
-import com.zy.asrs.service.LocAroundBindService;
-import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.LocDetlServiceImpl;
+import com.zy.asrs.service.impl.OrderDetlPakoutServiceImpl;
+import com.zy.asrs.service.impl.OrderPakoutServiceImpl;
+import com.zy.common.model.DetlDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -37,54 +38,149 @@
@Autowired
private WcsApiService wcsApiService;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private DocTypeService docTypeService;
+
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+
+ @Autowired
+ private MatService matService;
+
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private OrderPakoutServiceImpl orderPakoutService;
+ @Autowired
+ private OrderDetlPakoutServiceImpl orderDetlPakoutService;
+ @Autowired
+ private LocDetlServiceImpl locDetlService;
+
+
/**
* 鎺ユ敹MES绌跨嚎浠诲姟
* @author Ryan
* @date 2026/1/10 10:54
- * @param params
+ * @param param
* @return com.core.common.R
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R pubWorkTask(ReceviceTaskParams params) {
- if (Objects.isNull(params) || Objects.isNull(params.getDeviceNo())) {
- return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
- }
- BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>()
- .eq("status", 1)
- .eq("dev_no", params.getDeviceNo()));
- if (Objects.isNull(basDevice)) {
- throw new CoolException("鏈哄彴淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒锛�");
- }
- List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().eq("dev_no", basDevice.getDevNo()));
- if (Objects.isNull(binds) || binds.isEmpty()) {
- throw new CoolException("鏈哄彴鏈粦瀹氬伐浣滅珯鍙帮紒锛�");
- }
- Set<String> locs = binds.stream().map(LocAroundBind::getBlocNo).collect(Collectors.toSet());
-
- LocMast locMasts = locMastService.selectOne(new EntityWrapper<LocMast>()
- .in("loc_no", locs)
- .eq("loc_sts", LocStsType.LOC_STS_TYPE_F.type)
- .orderAsc(Arrays.asList("loc_no"))
- .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
-
- if (Objects.isNull(locMasts)) {
- throw new CoolException("鏈煡鍒板彲宸ヤ綔绾胯酱锛侊紒");
- }
-
- //todo 閿佸簱浣嶉渶WCS閿佸畾锛堢浉鍏冲簱浣嶏紝涓嶅彲鎵ц浠诲姟鎿嶄綔锛屼笉鑳藉彧鍦╓MS閿佸畾锛�
- List<LocMast> locMs = locMastService.selectList(new EntityWrapper<LocMast>()
- .eq("frozen", 0).eq("deleted", 0)
- .in("loc_no", locs)
- .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type));
- locMs.forEach(loc -> {
- loc.setLocSts(LocStsType.LOC_STS_TYPE_X.type);
- if (!locMastService.updateById(loc)) {
- throw new CoolException("宸ヤ綔鍙板懆杈瑰簱浣嶇鐢ㄥけ璐ワ紝涓嶅彲鎵ц绌跨嚎鎿嶄綔锛侊紒");
+ public R pubWorkTask(OpenOrderPakoutParam param) {
+ OrderPakout order = orderPakoutService.selectByNo(param.getOrderNo());
+ // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
+ if (!Cools.isEmpty(order)) {
+ if (order.getSettle() > 1L) {
+ throw new CoolException(param.getOrderNo() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
}
- });
-
- return R.ok("鍙墽琛岀┛绾垮姩浣�!!");
+ orderPakoutService.remove(order.getId());
+ }
+ DocType docType = docTypeService.selectOrAdd(param.getBillType(), Boolean.FALSE);
+ Date now = new Date();
+ // 鍗曟嵁涓绘。
+ order = new OrderPakout(
+ String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ param.getOrderNo(), // 璁㈠崟缂栧彿
+ DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
+ docType.getDocId(), // 鍗曟嵁绫诲瀷
+ null, // 椤圭洰缂栧彿
+ null, //
+ null, // 璋冩嫧椤圭洰缂栧彿
+ null, // 鍒濆绁ㄦ嵁鍙�
+ null, // 绁ㄦ嵁鍙�
+ null, // 瀹㈡埛缂栧彿
+ null, // 瀹㈡埛
+ null, // 鑱旂郴鏂瑰紡
+ null, // 鎿嶄綔浜哄憳
+ null, // 鍚堣閲戦
+ null, // 浼樻儬鐜�
+ null, // 浼樻儬閲戦
+ null, // 閿�鍞垨閲囪喘璐圭敤鍚堣
+ null, // 瀹炰粯閲戦
+ null, // 浠樻绫诲瀷
+ null, // 涓氬姟鍛�
+ null, // 缁撶畻澶╂暟
+ null, // 閭垂鏀粯绫诲瀷
+ null, // 閭垂
+ null, // 浠樻鏃堕棿
+ null, // 鍙戣揣鏃堕棿
+ null, // 鐗╂祦鍚嶇О
+ null, // 鐗╂祦鍗曞彿
+ 1L, // 璁㈠崟鐘舵��
+ 1, // 鐘舵��
+ 9995L, // 娣诲姞浜哄憳
+ now, // 娣诲姞鏃堕棿
+ 9995L, // 淇敼浜哄憳
+ now, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!orderPakoutService.insert(order)) {
+ throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ // 鍗曟嵁鏄庣粏妗�
+ List<DetlDto> list = new ArrayList<>();
+ List<DetlDto> orderDetails = param.getMatList();
+ for (DetlDto detail : orderDetails) {
+ DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getDevNo(),detail.getStandby2(),detail.getStandby3(),detail.getLineNumber(),
+ detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme());
+ if (DetlDto.hasLineNumber(list, dto)) {
+ DetlDto detlDto = DetlDto.findLineNumber(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getDevNo(),dto.getStandby2(),dto.getStandby3(),dto.getLineNumber(),
+ dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3());
+ assert detlDto != null;
+ detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+ } else {
+ list.add(dto);
+ }
+ }
+ //涓嬪彂鐨勮鍗曟槑缁嗭紝鏌ョ湅搴撳瓨鏄惁鏈夎冻澶熺殑搴撳瓨锛屾帓闄ゆ満鍙扮殑搴撲綅
+ for (DetlDto detail : list) {
+ List<LocDetl> matnr = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", detail.getMatnr()));
+ Double count=0.0;
+ for (LocDetl detl : matnr) {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", detl.getLocNo()).eq("loc_sts","F"));
+ if (locMast != null) {
+ LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", locMast.getLocNo()));
+ if (Cools.isEmpty(bLocNo)) {
+ count=detl.getAnfme()+count;
+ }
+ }
+ }
+ if (count<detail.getAnfme()) {
+ return R.error("鐗╂枡="+detail.getMatnr()+"搴撳瓨涓嶈冻鏃犳硶鐢熸垚璁㈠崟");
+ }
+ }
+ for (DetlDto detlDto : list) {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+ }
+ OrderDetlPakout orderDetl = new OrderDetlPakout();
+ orderDetl.sync(mat);
+ orderDetl.setLineNumber(detlDto.getLineNumber());
+ orderDetl.setBatch(detlDto.getBatch());
+ orderDetl.setAnfme(detlDto.getAnfme());
+ orderDetl.setBrand(detlDto.getBrand());
+ orderDetl.setStandby1(detlDto.getStandby1());
+ orderDetl.setStandby2(detlDto.getStandby2());
+ orderDetl.setStandby3(detlDto.getStandby3());
+ orderDetl.setOrderId(order.getId());
+ orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setCreateBy(9527L);
+ orderDetl.setCreateTime(now);
+ orderDetl.setUpdateBy(9527L);
+ orderDetl.setUpdateTime(now);
+ orderDetl.setStatus(1);
+ orderDetl.setQty(0.0D);
+ orderDetl.setPakinPakoutStatus(2);
+ if (!orderDetlPakoutService.insert(orderDetl)) {
+ throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ return R.ok();
}
/**
@@ -97,37 +193,31 @@
@Override
@Transactional(rollbackFor = Exception.class)
public R releaseLock(ReceviceTaskParams params) {
- if (Objects.isNull(params) || Objects.isNull(params.getDeviceNo())) {
+ if (Objects.isNull(params) || Objects.isNull(params.getDevNo())) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
+
+ Integer frozen = params.getFreeze().equals("Y") ? 1 : 0;
+ String s = params.getFreeze().equals("Y") ? "鍐荤粨" : "瑙e喕";
BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>()
.eq("status", 1)
- .eq("dev_no", params.getDeviceNo()));
+ .eq("dev_no", params.getDevNo()));
if (Objects.isNull(basDevice)) {
throw new CoolException("鏈哄彴淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒锛�");
}
- List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().eq("dev_no", basDevice.getDevNo()));
+ List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>()
+ .eq("dev_no", basDevice.getType())
+ .eq("freeze", frozen==1? 0:1));
if (Objects.isNull(binds) || binds.isEmpty()) {
- throw new CoolException("鏈哄彴鏈粦瀹氬伐浣滅珯鍙帮紒锛�");
- }
- Set<String> locs = binds.stream().map(LocAroundBind::getBlocNo).collect(Collectors.toSet());
-
- List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().in("loc_no", locs)
- .eq("frozen", 0).eq("deleted", 0)
- .eq("loc_sts", LocStsType.LOC_STS_TYPE_X.type));
- if (Objects.isNull(locMasts) || locMasts.isEmpty()) {
- throw new CoolException("娌℃湁绂佺敤搴撲綅锛屼笉闇�瑕侀噴鏀撅紒锛�");
+ throw new CoolException("鏈哄彴涓嶉渶瑕�"+s+"锛侊紒");
}
- locMasts.forEach(loc -> {
- loc.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
- if (!locMastService.updateById(loc)) {
- throw new CoolException("搴撲綅閲婃斁澶辫触锛岃妫�鏌ュ悗鍐嶆搷浣滐紒锛�");
+ binds.forEach(loc -> {
+ loc.setFreeze(frozen);
+ if (!locAroundBindService.updateById(loc)) {
+ throw new CoolException("搴撲綅"+s+"澶辫触锛岃妫�鏌ュ悗鍐嶆搷浣滐紒锛�");
}
});
-
-// wcsApiService.reportLockLocs(locs, "lock");
-
- return R.ok("閲婃斁鎴愬姛 锛侊紒");
+ return R.ok(s+"鎴愬姛 锛侊紒");
}
}
diff --git a/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
index 09a4c8a..3b3fc44 100644
--- a/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -11,13 +11,14 @@
import com.zy.api.service.WcsApiService;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
-import com.zy.asrs.service.impl.LocDetlServiceImpl;
-import com.zy.asrs.service.impl.MatServiceImpl;
-import com.zy.asrs.service.impl.WrkDetlServiceImpl;
+import com.zy.asrs.utils.Utils;
import com.zy.common.constant.MesConstant;
+import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
+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;
@@ -28,6 +29,7 @@
import java.util.Set;
import java.util.stream.Collectors;
+@Slf4j
@Service
public class WcsApiServiceImpl implements WcsApiService {
@@ -47,6 +49,19 @@
private MatService matService;
@Autowired
private LocDetlService locDetlService;
+ @Value("${wcs.address.URL}")
+ private String wcs_address;
+
+ @Value("${wcs.address.createOutTask}")
+ private String getWcs_address;
+
+ @Value("${wcs.address.createInTask}")
+ private String createInTask;
+
+ @Value("${wcs.address.createLocMoveTask}")
+ private String createLocMoveTask;
+ @Autowired
+ private CommonService commonService;
/**
* 閫氱煡WCS閿佸畾搴撲綅锛屽強绂佹褰撳墠搴撲綅鐨勪竴鍒囨搷浣�
@@ -61,7 +76,7 @@
public R lockLocs(ReceviceTaskParams params) {
BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>()
.eq("status", 1)
- .eq("dev_no", params.getDeviceNo()));
+ .eq("dev_no", params.getDevNo()));
if (Objects.isNull(basDevice)) {
throw new CoolException("鏈哄彴淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒锛�");
}
@@ -86,15 +101,15 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R backLocs(WorkTaskParams params) {
- if (Objects.isNull(params.getWrkNo())) {
- throw new CoolException("宸ヤ綔鍙蜂笉鑳戒负绌猴紒锛�");
- }
+ public R backLocs(String params) {
+// if (Objects.isNull(params.getWrkNo())) {
+// throw new CoolException("宸ヤ綔鍙蜂笉鑳戒负绌猴紒锛�");
+// }
// String wrkCode = params.getTaskNo();
// if (wrkCode.contains("-1")) {
// throw new CoolException("閰嶅浠诲姟缂栫爜閿欒锛岃妫�鏌ュ悗閲嶆柊涓婁紶锛侊紒");
// }
- WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getWrkNo()));
+ WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", params));
if (Objects.isNull(mast)) {
throw new CoolException("浠诲姟涓嶅瓨鍦紒锛�");
}
@@ -132,27 +147,98 @@
if (Objects.isNull(params.getLocNo())) {
return R.error("鐩爣搴撲綅涓嶈兘涓虹┖锛侊紒");
}
- String url = MesConstant.PUB_TASK_IN;
- if (Objects.isNull(params.getType()) && params.getType().equals("out")) {
- url = MesConstant.PUB_TASK_OUT;
+ String url = createInTask;
+ if (!Objects.isNull(params.getType()) && params.getType().equals("out")) {
+ url = getWcs_address;
+ }else if (!Objects.isNull(params.getType()) && params.getType().equals("move")) {
+ url = createLocMoveTask;
}
String response;
+ R r = R.ok();
try {
+ log.info("涓嬪彂鎼繍浠诲姟缁檞cs="+JSON.toJSONString(params));
response = new HttpHandler.Builder()
- .setUri(MesConstant.URL)
+ .setUri(wcs_address)
.setPath(url)
.setJson(JSON.toJSONString(params))
.build()
.doPost();
- R result = JSON.parseObject(response, R.class);
+ JSONObject jsonObject = JSON.parseObject(response);
+ log.info("涓嬪彂浠诲姟缁檞cs鐨勮繑鍥炲��="+response);
+ Integer code = jsonObject.getInteger("code");
- if (result.get("code").equals("200")) {
+ if (code==200) {
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getTaskNo()));
+ if (!Objects.isNull(wrkMast)) {
+ if (wrkMast.getIoType()==1 || wrkMast.getIoType()==10) {
+ wrkMast.setWrkSts(2L);
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ }else if(wrkMast.getIoType()==2){
+ wrkMast.setWrkSts(2L);
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ String s = Utils.convertLocFormat(params.getLocNo());
+ LocAroundBind bind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
+ .eq("b_loc_no", s));
+ if (!Objects.isNull(bind)) {
+ bind.setFreeze(1);
+ locAroundBindService.updateById(bind);
+ //鍐荤粨鐩搁偦搴撲綅
+ Integer[] aroundIds = freezeLocAround(bind.getOrderNo());
+ if (aroundIds != null) {
+ for (Integer id : aroundIds) {
+ if (id != null && id > 0) {
+ LocAroundBind aroundBind = locAroundBindService.selectOne(
+ new EntityWrapper<LocAroundBind>()
+ .eq("dev_id", bind.getDevId())
+ .eq("order_no", id));
+ if (aroundBind != null) {
+ aroundBind.setFreeze(1);
+ locAroundBindService.updateById(aroundBind);
+ }
+ }
+ }
+ }
+ }
+ }else if (wrkMast.getIoType()==101){
+ wrkMast.setWrkSts(12L);
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ //鍑哄簱涓烘満鍙板伐浣嶆椂锛屽喕缁撶浉瀵规湁鐨勫簱浣�,鍙婄浉閭诲簱浣�
+ String s = Utils.convertLocFormat(params.getLocNo());
+ LocAroundBind bind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
+ .eq("b_loc_no", s));
+ if (!Objects.isNull(bind)&&Cools.isEmpty(wrkMast.getStaNo())) {
+ bind.setFreeze(1);
+ locAroundBindService.updateById(bind);
+ //鍐荤粨鐩搁偦搴撲綅
+ Integer[] aroundIds = freezeLocAround(bind.getOrderNo());
+ if (aroundIds != null) {
+ for (Integer id : aroundIds) {
+ if (id != null && id > 0) {
+ LocAroundBind aroundBind = locAroundBindService.selectOne(
+ new EntityWrapper<LocAroundBind>()
+ .eq("dev_id", bind.getDevId())
+ .eq("order_no", id));
+ if (aroundBind != null) {
+ aroundBind.setFreeze(1);
+ locAroundBindService.updateById(aroundBind);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
//TODO 涓婃姤鏄惁鎴愬姛
+ }else {
+ r =R.error();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
- return null;
+ return r;
}
@@ -202,70 +288,129 @@
@Override
@Transactional(rollbackFor = Exception.class)
public R receviceTaskFromWcs(ReceviceTaskParams params) {
- if (Objects.isNull(params.getWrkNo())) {
+ log.info("wcs浠诲姟鍙嶉="+JSON.toJSONString(params));
+ if (Objects.isNull(params.getSuperTaskNo())) {
throw new CoolException("WMS浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
}
if (Objects.isNull(params.getNotifyType())) {
throw new CoolException("鍔ㄤ綔绫诲瀷涓嶈兘涓虹┖锛侊紒");
}
- WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getWrkNo()));
+ WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getSuperTaskNo()));
if (Objects.isNull(mast)) {
throw new CoolException("浠诲姟妗d笉瀛樺湪锛侊紒");
}
+
+
if (params.getNotifyType().equals("task")) {
//浠诲姟
if (params.getMsgType().equals("task_complete")) {
- if (!Objects.isNull(mast.getWrkCode())) {
- if (mast.getOveMk().equals("N") && !Cools.isEmpty(mast.getIsSuplus())) {
- throw new CoolException("浠诲姟鏈笂鎶ラ噸閲忥紝鏃犳硶瀹岀粨浠诲姟锛侊紒");
+ //绉伴噸
+ if ((mast.getIoType()==1||mast.getIoType()==10)&&mast.getWrkSts() == 2 && Cools.isEmpty(mast.getStaNo())) {
+ Double weight = 0.0;
+ if (!Cools.isEmpty(params.getData())){
+ JSONObject jsonObject = JSONObject.parseObject(params.getData());
+ weight=jsonObject.getDouble("weight");
}
- }
- if (mast.getIoType() == 1) {
- mast.setWrkSts(4L);
- } else if (mast.getIoType() == 101) {
- mast.setWrkSts(14L);
- }
- if (!wrkMastService.updateById(mast)) {
- throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
- } else if (params.getMsgType().equals("task_cancel")) {
- //todo 鍙栨秷浠诲姟
- }
- } else if (params.getNotifyType().equals("weight")) {
- //绉伴噸
- if (mast.getWrkSts() == 2) {
- if (mast.getIoType() == 10) {
- //绌烘澘鍏ュ簱浠诲姟妗�
- LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
- .eq("barcode", mast.getBarcode())
- .eq("loc_no", mast.getSourceLocNo()));
- if (Objects.isNull(locDetl)) {
- throw new CoolException("鏄庣粏鏁版嵁涓嶅瓨鍦紒锛�");
- }
- Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDetl.getMatnr()));
- if (Objects.isNull(matnr)) {
- throw new CoolException("鐗╂枡鍩虹淇℃伅涓嶅瓨鍦紒锛�");
- }
- Double val = Math.round((params.getWeight() - matnr.getSafeQty()) * 10000) / 10000.0;
- if (val.compareTo(0.0) > 0) {
- WrkDetl wrkDetl = new WrkDetl();
- BeanUtils.copyProperties(locDetl, wrkDetl);
- wrkDetl.setWrkNo(mast.getWrkNo());
- wrkDetl.setStockQty(locDetl.getAnfme());
- wrkDetl.setIoTime(new Date());
- wrkDetl.setWeight(params.getWeight());
- //浣欐枡闀垮害
- wrkDetl.setAnfme(val * matnr.getVolume());
- mast.setIoType(1);
- mast.setIsSuplus(1);
+ if (mast.getIoType() == 10) {
+ //绌烘澘鍏ュ簱浠诲姟妗�
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+ .eq("zpallet", mast.getBarcode())
+ .eq("loc_no", mast.getSourceLocNo()));
+ if (Objects.isNull(locDetl)) {
+ throw new CoolException("鏄庣粏鏁版嵁涓嶅瓨鍦紒锛�");
+ }
+ Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDetl.getMatnr()));
+ if (Objects.isNull(matnr)) {
+ throw new CoolException("鐗╂枡鍩虹淇℃伅涓嶅瓨鍦紒锛�");
+ }
+ if (!Cools.isEmpty(weight)) {
+ Double val = Math.round((weight - matnr.getSafeQty()) * 10000) / 10000.0;
+ if (val.compareTo(0.0) > 0) {
+ WrkDetl wrkDetl = new WrkDetl();
+ BeanUtils.copyProperties(locDetl, wrkDetl);
+ wrkDetl.setWrkNo(mast.getWrkNo());
+ wrkDetl.setStockQty(locDetl.getAnfme());
+ wrkDetl.setIoTime(new Date());
+ wrkDetl.setWeight(weight);
+ wrkDetl.setIoTime(mast.getIoTime());
+ //浣欐枡闀垮害
+ wrkDetl.setAnfme(val * matnr.getVolume());
+ if (!wrkDetlService.insert(wrkDetl)){
+ throw new CoolException("鏃犳硶鏂板鏄庣粏锛侊紒");
+ }
+ mast.setIoType(1);
+ mast.setIsSuplus(1);
+ mast.setOveMk("Y");
+ if (!wrkMastService.updateById(mast)) {
+ throw new CoolException("浠诲姟妗d慨鏀瑰け璐ワ紒锛�");
+ }
+ // 鏇存柊鍘熷嚭搴撳崟
+
+ if (!Cools.isEmpty(mast.getWrkCode())) {
+ String wrkNo = mast.getWrkCode();
+ WrkMast orgWrk = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
+ if (Objects.isNull(orgWrk)) {
+ throw new CoolException("鏁版嵁閿欒锛屼富浠诲姟妗d笉瀛樺湪鎴栧凡鍒犻櫎锛侊紒");
+ }
+ orgWrk.setOveMk("Y");
+ if (!wrkMastService.updateById(orgWrk)) {
+ throw new CoolException("浠诲姟妗d慨鏀瑰け璐ワ紒锛�");
+ }
+ WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+ if (Objects.isNull(detl)) {
+ throw new CoolException("瀛愪换鍔℃。鏄庣粏涓嶅瓨鍦紒锛�");
+ }
+// //搴撳瓨鍑忓幓绉伴噸闀垮害
+// Double v = Math.round((wrkDetl.getStockQty() - realQty) * 10000) / 10000.0;
+// //鍘熷嚭涓烘暟閲忎笌鐪熷疄鏁伴噺浜掓崲锛屼繚鎸佷竴鑷存��
+// detl.setAnfme(v);
+// detl.setWeight(weight);
+ if (!wrkDetlService.update(detl, new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo).eq("matnr", detl.getMatnr()).eq("barcode", detl.getBarcode()))) {
+ throw new CoolException("鍘熶换鍔℃。鏄庣粏淇敼澶辫触锛侊紒");
+ }
+ } else {
+ throw new CoolException("浠诲姟鍙锋埅鍙栧け璐ワ紝璇锋鏌ヤ富浠诲姟妗d换妗rkCode瀛楁");
+ }
+ }
+ }
+ } else {
+ WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()));
+ if (Objects.isNull(wrkDetl)) {
+ throw new CoolException("鏁版嵁閿欒锛屼换鍔℃槑缁嗕笉瀛樺湪锛侊紒");
+ }
+ Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", wrkDetl.getMatnr()));
+ if (Objects.isNull(matnr)) {
+ throw new CoolException("鐗╂枡鍩虹淇℃伅涓嶅瓨鍦紒锛�");
+ }
+ Double realQty = Math.round((wrkDetl.getStockQty() - wrkDetl.getAnfme()) * 10000) / 10000.0;
+ if (!Cools.isEmpty(weight)) {
+ Double val = Math.round((weight - 2.35) * 10000) / 10000.0;
+ //绉伴噸鍚庯紝璁$畻鍑虹湡瀹為暱搴�
+ realQty = val * matnr.getVolume();
+ if (realQty<matnr.getSafeQty()){
+ wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkDetl.getWrkNo()));
+ mast.setIoType(10);
+ mast.setEmptyMk("Y");
+ }else{
+ wrkDetl.setAnfme(realQty);
+ wrkDetl.setWeight(weight);
+ if (!wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()).eq("matnr", wrkDetl.getMatnr()).eq("barcode", wrkDetl.getBarcode()))) {
+ throw new CoolException("浠诲姟妗f槑缁嗕慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+
+ }
+
+
mast.setOveMk("Y");
if (!wrkMastService.updateById(mast)) {
throw new CoolException("浠诲姟妗d慨鏀瑰け璐ワ紒锛�");
}
+
// 鏇存柊鍘熷嚭搴撳崟
- int indexOf = mast.getWrkCode().indexOf("-1");
- if (indexOf != -1) {
- String wrkNo = mast.getWrkCode().substring(0, indexOf);
+// int indexOf = mast.getWrkCode().indexOf("-1");
+ if (!Cools.isEmpty(mast.getWrkCode())) {
+ String wrkNo = mast.getWrkCode();
WrkMast orgWrk = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
if (Objects.isNull(orgWrk)) {
throw new CoolException("鏁版嵁閿欒锛屼富浠诲姟妗d笉瀛樺湪鎴栧凡鍒犻櫎锛侊紒");
@@ -274,74 +419,93 @@
if (!wrkMastService.updateById(orgWrk)) {
throw new CoolException("浠诲姟妗d慨鏀瑰け璐ワ紒锛�");
}
- //绉伴噸鍚庯紝璁$畻鍑虹湡瀹為暱搴�
- Double realQty = val * matnr.getVolume();
+ WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+ if (Objects.isNull(detl)) {
+ throw new CoolException("瀛愪换鍔℃。鏄庣粏涓嶅瓨鍦紒锛�");
+ }
//搴撳瓨鍑忓幓绉伴噸闀垮害
Double v = Math.round((wrkDetl.getStockQty() - realQty) * 10000) / 10000.0;
//鍘熷嚭涓烘暟閲忎笌鐪熷疄鏁伴噺浜掓崲锛屼繚鎸佷竴鑷存��
- wrkDetl.setAnfme(v);
- wrkDetl.setWeight(params.getWeight());
- if (!wrkDetlService.insert(wrkDetl)) {
- throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
+ detl.setAnfme(v);
+ detl.setWeight(weight);
+ if (!wrkDetlService.update(detl, new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo).eq("matnr", detl.getMatnr()).eq("barcode", detl.getBarcode()))) {
+ throw new CoolException("鍘熶换鍔℃。鏄庣粏淇敼澶辫触锛侊紒");
}
} else {
throw new CoolException("浠诲姟鍙锋埅鍙栧け璐ワ紝璇锋鏌ヤ富浠诲姟妗d换妗rkCode瀛楁");
}
}
- } else {
- WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()));
- if (Objects.isNull(wrkDetl)) {
- throw new CoolException("鏁版嵁閿欒锛屼换鍔℃槑缁嗕笉瀛樺湪锛侊紒");
- }
- Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", wrkDetl.getMatnr()));
- if (Objects.isNull(matnr)) {
- throw new CoolException("鐗╂枡鍩虹淇℃伅涓嶅瓨鍦紒锛�");
- }
- Double val = Math.round((params.getWeight() - matnr.getSafeQty()) * 10000) / 10000.0;
- //绉伴噸鍚庯紝璁$畻鍑虹湡瀹為暱搴�
- Double realQty = val * matnr.getVolume();
- wrkDetl.setAnfme(realQty);
- wrkDetl.setWeight(params.getWeight());
- if (!wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()).eq("matnr", wrkDetl.getMatnr()).eq("barcode", wrkDetl.getBarcode()))) {
- throw new CoolException("浠诲姟妗f槑缁嗕慨鏀瑰け璐ワ紒锛�");
- }
- mast.setOveMk("Y");
- if (!wrkMastService.updateById(mast)) {
- throw new CoolException("浠诲姟妗d慨鏀瑰け璐ワ紒锛�");
- }
+ }
- // 鏇存柊鍘熷嚭搴撳崟
- int indexOf = mast.getWrkCode().indexOf("-1");
- if (indexOf != -1) {
- String wrkNo = mast.getWrkCode().substring(0, indexOf);
- WrkMast orgWrk = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
- if (Objects.isNull(orgWrk)) {
- throw new CoolException("鏁版嵁閿欒锛屼富浠诲姟妗d笉瀛樺湪鎴栧凡鍒犻櫎锛侊紒");
- }
- orgWrk.setOveMk("Y");
- if (!wrkMastService.updateById(orgWrk)) {
- throw new CoolException("浠诲姟妗d慨鏀瑰け璐ワ紒锛�");
- }
- WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
- if (Objects.isNull(detl)) {
- throw new CoolException("瀛愪换鍔℃。鏄庣粏涓嶅瓨鍦紒锛�");
- }
- //搴撳瓨鍑忓幓绉伴噸闀垮害
- Double v = Math.round((wrkDetl.getStockQty() - realQty) * 10000) / 10000.0;
- //鍘熷嚭涓烘暟閲忎笌鐪熷疄鏁伴噺浜掓崲锛屼繚鎸佷竴鑷存��
- detl.setAnfme(v);
- detl.setWeight(params.getWeight());
- if (!wrkDetlService.update(detl, new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo).eq("matnr", detl.getMatnr()).eq("barcode", detl.getBarcode()))) {
- throw new CoolException("鍘熶换鍔℃。鏄庣粏淇敼澶辫触锛侊紒");
- }
- } else {
- throw new CoolException("浠诲姟鍙锋埅鍙栧け璐ワ紝璇锋鏌ヤ富浠诲姟妗d换妗rkCode瀛楁");
+ if (!Objects.isNull(mast.getWrkCode())) {
+ if (mast.getOveMk().equals("N") && !Cools.isEmpty(mast.getIsSuplus())) {
+ throw new CoolException("浠诲姟鏈笂鎶ラ噸閲忥紝鏃犳硶瀹岀粨浠诲姟锛侊紒");
}
}
- } else {
- throw new CoolException("鏁版嵁閿欒锛屽綋鍓嶄换鍔$姸鎬佹湁璇� 锛�");
+ if (mast.getIoType() == 1 || mast.getIoType() == 2 ||mast.getIoType() == 10) {
+ mast.setWrkSts(4L);
+ } else if ((mast.getIoType() == 101||mast.getIoType()==110) && mast.getWrkSts()<14) {
+ mast.setWrkSts(14L);
+ if(Cools.isEmpty(mast.getStaNo())){
+ mast.setOveMk("Y");
+ }
+ }
+ if (!wrkMastService.updateById(mast)) {
+ throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ } else if (params.getMsgType().equals("task_cancel")) {
+ //todo 鍙栨秷浠诲姟
+ }else if (params.getMsgType().equals("task_arrive")) {
+ //鍒拌揪鐩殑鍦�
+ //濡傛灉鍑哄簱浠诲姟鏄法鍖哄垯闇�瑕佺敓鎴愭柊鐨勫叆搴撲换鍔″叆搴�
+ if(!Cools.isEmpty(mast.getLocNo())){
+ mast.setOnlineYn("N");//绛夊緟鐢熸垚璺ㄥ尯鍏ュ簱浠诲姟
+ }
+ mast.setWrkSts(14L);
+ if(Cools.isEmpty(mast.getStaNo())){
+ mast.setOveMk("Y");
+ }
+ mast.setModiTime(new Date());
+ if (!wrkMastService.updateById(mast)) {
+ throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
}
+ } else if (params.getNotifyType().equals("weight")) {
+
}
return R.ok();
}
+ //杈撳叆搴撲綅鑷姩鍐荤粨绠楀嚭鐩搁偦搴撲綅搴忓彿
+ @Override
+ public Integer[] freezeLocAround(Integer locId) {
+ Integer[] locAround = new Integer[3];
+ if (Objects.isNull(locId)) {
+ throw new CoolException("搴撲綅ID涓嶈兘涓虹┖锛侊紒");
+ }else if (locId==1){
+ locAround[0] = 2;
+ locAround[1] = 3;
+ locAround[2] = 5;
+ }else if (locId==2){
+ locAround[0] = 1;
+ locAround[1] = 6;
+ locAround[2] = 0;
+ }else if (locId==3){
+ locAround[0] = 1;
+ locAround[1] = 4;
+ locAround[2] = 0;
+ }else if (locId==4){
+ locAround[0] = 5;
+ locAround[1] = 3;
+ locAround[2] = 0;
+ }else if (locId==5){
+ locAround[0] = 4;
+ locAround[1] = 1;
+ locAround[2] = 6;
+ }else if (locId==6){
+ locAround[0] = 2;
+ locAround[1] = 5;
+ locAround[2] = 0;
+ }
+ return locAround;
+ }
}
diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index b72e411..a0cc17c 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -48,6 +48,10 @@
private WrkDetlLogService wrkDetlLogService;
@Autowired
private BasAreasService basAreasService;
+ @Autowired
+ private LocAroundBindService locAroundBindService;
+ @Autowired
+ private BasDeviceService basDeviceService;
@RequestMapping(value = "/locMast/init/pwd")
public R locMastInitPwd(@RequestParam(required = false) String pwd) {
@@ -78,8 +82,7 @@
@RequestParam Map<String, Object> param) {
excludeTrash(param);
EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
- wrapper.eq("frozen", 0)
- .eq("deleted", 0);
+ wrapper.eq("deleted", 0);
convert(param, wrapper);
if (!Cools.isEmpty(orderByField)) {
wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
@@ -350,4 +353,52 @@
return R.error("鍒濆鍖栧け璐�===>" + e.getMessage());
}
}
+
+ @GetMapping(value = "/locMast/jt")
+ @ManagerAuth
+ public R jt() {
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("whs_type", 2)
+ .eq("loc_sts", "O")
+ .orderBy("loc_no"));
+ //鏈哄彴鍙�
+ long i = 1;
+ //鏈哄彴鎺掑簭
+ int j = 0;
+ int[] arr = {3,4,1,5,2,6};
+ for (LocMast locMast : locMasts) {
+ LocAroundBind locAroundBind = new LocAroundBind(
+ i,
+ i+"",
+ locMast.getLocNo(),
+ "O",
+ arr[j++]
+ );
+ locAroundBindService.insert(locAroundBind);
+ if(j==6){
+ j = 0;
+ i++;
+ }
+ }
+ return R.ok();
+ }
+
+ @GetMapping(value = "/locMast/addjt")
+ @ManagerAuth
+ public R addjt() {
+ Date date = new Date();
+ for (int i =1 ;i<52;i++){
+ BasDevice basDevice =new BasDevice(
+ i+"",
+ i+"",
+ date,
+ "9995",
+ date,
+ "9995",
+ 1
+ );
+ basDeviceService.insert(basDevice);
+ }
+ return R.ok();
+ }
}
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 8b0604a..17b8a2b 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,11 +1,16 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.AppAuth;
import com.core.common.*;
import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.AxisBean;
import com.zy.asrs.entity.param.*;
-import com.zy.asrs.service.OpenService;
+import com.zy.asrs.mapper.ReportQueryMapper;
+import com.zy.asrs.service.*;
import com.zy.common.model.DetlDto;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
@@ -13,9 +18,8 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
/**
* Created by vincent on 2022/4/8
@@ -32,6 +36,18 @@
@Autowired
private OpenService openService;
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private ReportQueryMapper reportQueryMapper;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
@PostMapping("/order/matSync/default/v2")
// @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
@@ -134,7 +150,7 @@
if (Cools.isEmpty(param.getOrderType())) {
return R.error("鍗曟嵁绫诲瀷[orderType]涓嶈兘涓虹┖");
}
- if (Cools.isEmpty(param.getOrderDetails())) {
+ if (Cools.isEmpty(param.getMatList())) {
return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖");
}
openService.pakoutOrderCreate(param);
@@ -216,4 +232,138 @@
System.out.println(JSON.toJSONString(param1));
}
+ /*************************************鐢佃鏈虹▼搴�***********************************************/
+
+ @GetMapping("/locDetl/statistics")
+ public R locDetlStatistics(){
+ HashMap<String, Object> param = new HashMap<>();
+ Page<LocDetl> stockStatis = locDetlService.getStockStatis(toPage(1, 100, param, LocDetl.class));
+ for (LocDetl locDetl : stockStatis.getRecords()) {
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (mat != null) {
+ locDetl.sync(mat);
+ }
+ }
+ return R.ok(stockStatis);
+ }
+
+ @GetMapping("/line/charts")
+ public R locIoLineCharts(){
+ Map<String,Object> map=new HashMap<String, Object>();
+ List<AxisBean> list = new ArrayList<AxisBean>();
+
+ List<WorkChartAxis> listChart = reportQueryMapper.getChartAxis();
+
+ if(listChart!=null) {
+ ArrayList<Integer> data1 = new ArrayList<Integer>();
+ ArrayList<Integer> data2 = new ArrayList<Integer>();
+
+ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.DATE, -12);
+ for(int i=0;i<12;i++) {
+ boolean flag = true;
+ calendar.add(Calendar.DATE, 1);
+ String str = sf.format(calendar.getTime());
+ for(WorkChartAxis workChart : listChart) {
+ if(str.equals(workChart.getYmd())) {
+ data1.add(workChart.getInqty());
+ data2.add(workChart.getOutqty());
+ flag = false;
+ break;
+ }
+ }
+ if(flag) {
+ data1.add(0);
+ data2.add(0);
+ }
+ }
+ AxisBean inqty = new AxisBean();
+ inqty.setName("鍏ュ簱鏁伴噺");
+ Integer[] array1 = new Integer[data1.size()];
+ inqty.setData(data1.toArray(array1));
+ list.add(inqty);
+ AxisBean outqty = new AxisBean();
+ outqty.setName("鍑哄簱鏁伴噺");
+ Integer[] array2 = new Integer[data2.size()];
+ outqty.setData(data2.toArray(array2));
+ list.add(outqty);
+ }
+ map.put("rows",list);
+ return R.ok(map);
+ }
+
+ /**
+ * 搴撳瓨淇℃伅鏌ヨ鎺ュ彛
+ */
+ @GetMapping("/queryLoc")
+ public synchronized R queryLoc() {
+ List<Map<String, Object>> pie = new ArrayList<>();
+ LocChartPie locUseRate = reportQueryMapper.getLocUseRate();
+
+ if (locUseRate != null) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("name", "鍦ㄥ簱");
+ map.put("value", locUseRate.getFqty());
+ pie.add(map);
+
+ Map<String, Object> map1 = new HashMap<>();
+ map1.put("name", "绌�");
+ map1.put("value", locUseRate.getOqty());
+ pie.add(map1);
+
+ Map<String, Object> map2 = new HashMap<>();
+ map2.put("name", "浣跨敤");
+ map2.put("value", locUseRate.getUqty());
+ pie.add(map2);
+
+ Map<String, Object> map3 = new HashMap<>();
+ map3.put("name", "绂佺敤");
+ map3.put("value", locUseRate.getXqty());
+ pie.add(map3);
+ }
+
+ // 鎬诲簱浣嶆暟
+ Integer total = (int) Arith.add(0, locUseRate.getFqty(), locUseRate.getOqty(), locUseRate.getUqty(), locUseRate.getXqty());
+ // 浣跨敤涓�
+ Integer used = locUseRate.getFqty() + locUseRate.getUqty();
+ // 搴撲綅浣跨敤鐜�
+ double usedDivides = Arith.divides(3, used, total);
+ double usedPr = Arith.multiplys(1, usedDivides, 100);
+
+ return R.ok(
+ Cools.add("pie", pie)
+ .add("stockCount", locUseRate.getFqty())
+ .add("emptyCount", locUseRate.getOqty())
+ .add("disableCount", locUseRate.getXqty())
+ .add("total", total)
+ .add("used", used)
+ .add("usedPr", usedPr)
+ );
+ }
+
+ /**
+ * 浠诲姟鏌ヨ鎺ュ彛
+ */
+ @PostMapping("/queryTask")
+ public synchronized R queryTask(@RequestBody QueryTaskParam param) {
+ if (Cools.isEmpty(param)) {
+ return R.parse(BaseRes.PARAM);
+ }
+ if (Cools.isEmpty(param.getTaskNo())) {
+ return R.error("浠诲姟鍙穂taskNo]涓嶈兘涓虹┖");
+ }
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getTaskNo()));
+ if (wrkMast == null) {
+ return R.error("浠诲姟涓嶅瓨鍦�");
+ }
+
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(Integer.valueOf(param.getTaskNo()));
+
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("taskNo", param.getTaskNo());
+ map.put("ioType", wrkMast.getIoType());
+ map.put("wrkDetls", wrkDetls);
+ return R.ok().add(map);
+ }
}
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakinController.java b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
index fb81d0f..0fb32b4 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
@@ -11,6 +11,7 @@
import com.zy.asrs.entity.param.OrderDomainParam;
import com.zy.asrs.entity.result.WrkTraceVo;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.MatServiceImpl;
import com.zy.common.model.DetlDto;
import com.zy.common.web.BaseController;
import org.springframework.beans.BeanUtils;
@@ -42,6 +43,8 @@
private WrkMastService wrkMastService;
@Autowired
private WrkMastLogService wrkMastLogService;
+ @Autowired
+ private MatServiceImpl matService;
@RequestMapping(value = "/order/nav/list/auth")
@ManagerAuth
@@ -166,6 +169,8 @@
}
} else {
list.add(dto);
+ Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+ orderDetl.sync(mat);
orderDetl.setOrderId(order.getId());
orderDetl.setOrderNo(order.getOrderNo());
orderDetl.setCreateBy(getUserId());
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
index 23fbfff..f35ed84 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
@@ -11,6 +11,8 @@
import com.zy.asrs.entity.param.OrderDomainParam;
import com.zy.asrs.entity.result.WrkTraceVo;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.MatServiceImpl;
+import com.zy.asrs.service.impl.OrderPakoutServiceImpl;
import com.zy.common.model.DetlDto;
import com.zy.common.web.BaseController;
import org.springframework.beans.BeanUtils;
@@ -42,6 +44,10 @@
private WrkMastService wrkMastService;
@Autowired
private WrkMastLogService wrkMastLogService;
+ @Autowired
+ private MatServiceImpl matService;
+ @Autowired
+ private OrderPakoutServiceImpl orderPakoutService;
@RequestMapping(value = "/order/nav/list/auth")
@ManagerAuth
@@ -106,7 +112,7 @@
}
param.setOrderNo(prefix + snowflakeIdWorker.nextId());
}
- OrderPakout order = orderService.selectByNo(param.getOrderNo());
+ OrderPakout order = orderPakoutService.selectByNo(param.getOrderNo());
if (order != null) {
return R.error("鍗曟嵁缂栧彿宸插瓨鍦�");
}
@@ -163,8 +169,11 @@
throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
}
} else {
+ Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
list.add(dto);
orderDetl.setOrderId(order.getId());
+ orderDetl.sync(mat);
+ orderDetl.setBatch(Cools.isEmpty(dto.getBatch())? "" :dto.getBatch());
orderDetl.setOrderNo(order.getOrderNo());
orderDetl.setCreateBy(getUserId());
orderDetl.setCreateTime(now);
@@ -229,6 +238,7 @@
orderDetl.setUpdateTime(now);
orderDetl.setStatus(1);
orderDetl.setQty(0.0D);
+ orderDetl.setBatch(Cools.isEmpty(dto.getBatch())? "" :dto.getBatch());
if (!orderDetlService.insert(orderDetl)) {
throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
}
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index c8cf713..c32005b 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -95,6 +95,10 @@
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()));
+ LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", locMast.getLocNo()));
+ if (!Cools.isEmpty(bLocNo)) {
+ continue;
+ }
locDto.setFrozen(locDetl.getFrozen());
locDto.setFrozenLoc(locMast.getFrozen());
List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), 107);
diff --git a/src/main/java/com/zy/asrs/controller/WaitPakinController.java b/src/main/java/com/zy/asrs/controller/WaitPakinController.java
index 7f13959..be214b9 100644
--- a/src/main/java/com/zy/asrs/controller/WaitPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/WaitPakinController.java
@@ -81,7 +81,7 @@
}
@RequestMapping(value = "/waitPakin/update/auth")
- @ManagerAuth
+ @ManagerAuth
public R update(WaitPakin waitPakin){
if (Cools.isEmpty(waitPakin)){
return R.error();
@@ -90,6 +90,25 @@
return R.ok();
}
+ @RequestMapping(value = "/waitPakin/update/beBatch/auth")
+ @ManagerAuth
+ public R updateBeBatch(@RequestBody Map<String, Object> param) {
+ String zpallet = (String) param.get("zpallet");
+ Integer beBatch = Integer.parseInt(param.get("beBatch").toString());
+
+ if (Cools.isEmpty(zpallet)) {
+ return R.error("鎵樼洏鐮佷笉鑳戒负绌�");
+ }
+
+ boolean result = waitPakinService.updateBeBatchByZpallet(zpallet, beBatch);
+
+ if (result) {
+ return R.ok("淇敼鎴愬姛");
+ } else {
+ return R.error("淇敼澶辫触");
+ }
+ }
+
@RequestMapping(value = "/waitPakin/delete/auth")
@ManagerAuth
@Transactional
diff --git a/src/main/java/com/zy/asrs/controller/WrkMastLogController.java b/src/main/java/com/zy/asrs/controller/WrkMastLogController.java
index c16a7c2..203edfa 100644
--- a/src/main/java/com/zy/asrs/controller/WrkMastLogController.java
+++ b/src/main/java/com/zy/asrs/controller/WrkMastLogController.java
@@ -82,15 +82,16 @@
private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
for (Map.Entry<String, Object> entry : map.entrySet()){
String val = String.valueOf(entry.getValue());
+ String key = humpToLine(entry.getKey());
if (val.contains(RANGE_TIME_LINK)){
String[] dates = val.split(RANGE_TIME_LINK);
- wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
- wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ wrapper.ge(key, DateUtils.convert(dates[0]));
+ wrapper.le(key, DateUtils.convert(dates[1]));
} else {
- if (entry.getKey().equals("manu_type")) {
- wrapper.like(entry.getKey(), val);
+ if (key.equals("manu_type")) {
+ wrapper.like(key, val);
} else {
- wrapper.eq(entry.getKey(), val);
+ wrapper.eq(key, val);
}
}
}
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java
index 73d632e..cad625c 100644
--- a/src/main/java/com/zy/asrs/entity/BasCrnp.java
+++ b/src/main/java/com/zy/asrs/entity/BasCrnp.java
@@ -13,12 +13,14 @@
import com.core.common.Cools;
import com.core.common.SpringUtils;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@TableName("asr_bas_crnp")
+@Data
public class BasCrnp implements Serializable {
private static final long serialVersionUID = 1L;
@@ -156,6 +158,10 @@
@TableField("tank_qty1")
private Integer tankQty1;
+ @ApiModelProperty(value= "閲嶉噺")
+ @TableField("weight")
+ private Float weight;
+
public BasCrnp() {}
public BasCrnp(String inEnable,String outEnable,Integer crnSts,Integer wrkNo,Long crnErr,String frmLocno,Integer frmSta,Integer toSta,String toLocno,Long appeUser,Date appeTime,Long modiUser,Date modiTime,String hpMk,String retrieveMk,String ctlHp,String ctlRest,String empIn,Integer tankQty,Integer tankQty1) {
diff --git a/src/main/java/com/zy/asrs/entity/LocAroundBind.java b/src/main/java/com/zy/asrs/entity/LocAroundBind.java
index f18f3ed..02f3873 100644
--- a/src/main/java/com/zy/asrs/entity/LocAroundBind.java
+++ b/src/main/java/com/zy/asrs/entity/LocAroundBind.java
@@ -61,6 +61,14 @@
@TableField("dev_name")
private String devName;
+ @ApiModelProperty("鏈哄彴椤哄簭")
+ @TableField("order_no")
+ private Integer orderNo;
+
+ @ApiModelProperty("鏄惁鍐荤粨")
+ @TableField("freeze")
+ private Integer freeze;
+
public LocAroundBind() {}
public LocAroundBind(Long devId,String devNo,Long bLocId,String blocNo) {
@@ -99,4 +107,11 @@
// );
+ public LocAroundBind(Long devId, String devNo, String blocNo, String locType, int orderNo) {
+ this.devId = devId;
+ this.devNo = devNo;
+ this.blocNo = blocNo;
+ this.locType = locType;
+ this.orderNo = orderNo;
+ }
}
diff --git a/src/main/java/com/zy/asrs/entity/LocMast.java b/src/main/java/com/zy/asrs/entity/LocMast.java
index d516a6f..0165fee 100644
--- a/src/main/java/com/zy/asrs/entity/LocMast.java
+++ b/src/main/java/com/zy/asrs/entity/LocMast.java
@@ -100,11 +100,11 @@
@TableField("loc_type1")
private Short locType1;
- @ApiModelProperty(value= "瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿")
+ @ApiModelProperty(value= "鏈哄彴鍙�")
@TableField("loc_type2")
private Short locType2;
- @ApiModelProperty(value= "杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿")
+ @ApiModelProperty(value= "鏈哄彴鍙锋帓搴�")
@TableField("loc_type3")
private Short locType3;
diff --git a/src/main/java/com/zy/asrs/entity/Mat.java b/src/main/java/com/zy/asrs/entity/Mat.java
index b3abbfd..54ac096 100644
--- a/src/main/java/com/zy/asrs/entity/Mat.java
+++ b/src/main/java/com/zy/asrs/entity/Mat.java
@@ -81,6 +81,21 @@
private String name;
/**
+ * 褰掗浂闃堝��
+ */
+ @ApiModelProperty(value= "褰掗浂闃堝��")
+ @ExcelProperty(value = "褰掗浂闃堝��")
+ @TableField("safe_qty")
+ private Double safeQty;
+
+ /**
+ * 浣撶Н
+ */
+ @ApiModelProperty(value= "浣撶Н")
+ @ExcelProperty(value = "姣忓叕鏂ら暱搴�")
+ private Double volume;
+
+ /**
* 瑙勬牸
*/
@ApiModelProperty(value= "瑙勬牸")
@@ -173,13 +188,6 @@
@TableField("item_num")
private String itemNum;
- /**
- * 瀹夊叏搴撳瓨閲�
- */
- @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
- @ExcelProperty(value = "褰掗浂闃堝��")
- @TableField("safe_qty")
- private Double safeQty;
/**
* 閲嶉噺
@@ -199,13 +207,6 @@
@ApiModelProperty(value= "闀垮害")
@TableField("man_length")
private Double manLength;
-
- /**
- * 浣撶Н
- */
- @ApiModelProperty(value= "浣撶Н")
- @ExcelProperty(value = "姣忓叕鏂ら暱搴�")
- private Double volume;
/**
* 涓夋柟缂栫爜
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index 51002e4..87bd80e 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -281,7 +281,7 @@
return this.boxType1;
}
-// public void sync(Object source) {
-// Synchro.Copy(source, this);
-// }
+ public void sync(Object source) {
+ Synchro.Copy(source, this);
+ }
}
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index fff8f61..a389c76 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -116,6 +116,14 @@
@TableField("source_loc_no")
private String sourceLocNo;
+ /**
+ * N : 寰呯敓鎴愬叆搴撲换鍔�
+ * Y : 鎴愬姛鐢熸垚鍏ュ簱浠诲姟
+ */
+ @ApiModelProperty(value= "鐢熸垚璺ㄥ尯鍏ュ簱浠诲姟鏍囪")
+ @TableField("online_yn")
+ private String onlineYn;
+
@ApiModelProperty(value= "")
@TableField("loc_sts")
private String locSts;
@@ -129,10 +137,6 @@
@ApiModelProperty(value= "")
@TableField("link_mis")
private String linkMis;
-
- @ApiModelProperty(value= "")
- @TableField("online_yn")
- private String onlineYn;
@ApiModelProperty(value= "")
@TableField("upd_mk")
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 820f59d..8e91845 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -30,6 +30,7 @@
private Long id;
@ApiModelProperty("鏃ュ織ID")
+ @TableField("log_id")
private Long logId;
/**
diff --git a/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java b/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java
index b78ee02..5c12e75 100644
--- a/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java
@@ -17,24 +17,15 @@
private String orderNo;
+ private String billType;
+
private String orderType;
private String orderTime;
- private List<DetlDto> orderDetails;
+ private List<DetlDto> matList;
private String lgort;
-// public static void main(String[] args) {
-// OpenOrderPakoutParam param = new OpenOrderPakoutParam();
-// param.setOrderNo("LXT12321321");
-// param.setOrderType("浜よ揣鍗�");
-// param.setOrderTime(DateUtils.convert(new Date()));
-// List<DetlDto> orderDetails = new ArrayList<>();
-// param.setOrderDetails(orderDetails);
-// DetlDto detlDto = new DetlDto("15099-10000", 3.0);
-// orderDetails.add(detlDto);
-// System.out.println(JSON.toJSONString(param));
-// }
}
diff --git a/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java b/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java
new file mode 100644
index 0000000..c37e5ae
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class QueryTaskParam {
+
+ private String taskNo;
+
+}
diff --git a/src/main/java/com/zy/asrs/service/WaitPakinService.java b/src/main/java/com/zy/asrs/service/WaitPakinService.java
index b09602a..bbfc8b3 100644
--- a/src/main/java/com/zy/asrs/service/WaitPakinService.java
+++ b/src/main/java/com/zy/asrs/service/WaitPakinService.java
@@ -5,4 +5,6 @@
public interface WaitPakinService extends IService<WaitPakin> {
+ boolean updateBeBatchByZpallet(String zpallet, Integer beBatch);
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
index babb339..a85f6dd 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
@@ -45,26 +45,26 @@
@Override
public BasDevp checkSiteStatus(Integer devpNo, boolean pakin) {
BasDevp station = selectById(devpNo);
- if (station == null){
- throw new CoolException(devpNo+"绔欑偣涓嶅瓨鍦�");
- }
- if (pakin) {
- if(station.getAutoing()==null || !station.getAutoing().equals("Y")) {
- throw new CoolException(devpNo+"绔欑偣涓嶆槸鑷姩鐘舵��");
- }
- if(station.getLoading()==null || !station.getLoading().equals("Y")) {
- throw new CoolException(devpNo+"绔欑偣鏃犵墿");
- }
- if(station.getWrkNo()!=null && station.getWrkNo()>0 && station.getWrkNo() < 9990) {
- throw new CoolException(devpNo+"绔欑偣宸叉湁宸ヤ綔鍙�");
- }
-// if(!station.getInEnable().equals("Y")) {
-// throw new CoolException(devpNo+"绔欑偣涓嶆槸鍙叆鐘舵��");
+// if (station == null){
+// throw new CoolException(devpNo+"绔欑偣涓嶅瓨鍦�");
+// }
+// if (pakin) {
+// if(station.getAutoing()==null || !station.getAutoing().equals("Y")) {
+// throw new CoolException(devpNo+"绔欑偣涓嶆槸鑷姩鐘舵��");
// }
- if(wrkMastService.getWorkingMast(devpNo)>0){
- throw new CoolException(devpNo+"绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�");
- }
- }
+// if(station.getLoading()==null || !station.getLoading().equals("Y")) {
+// throw new CoolException(devpNo+"绔欑偣鏃犵墿");
+// }
+// if(station.getWrkNo()!=null && station.getWrkNo()>0 && station.getWrkNo() < 9990) {
+// throw new CoolException(devpNo+"绔欑偣宸叉湁宸ヤ綔鍙�");
+// }
+//// if(!station.getInEnable().equals("Y")) {
+//// throw new CoolException(devpNo+"绔欑偣涓嶆槸鍙叆鐘舵��");
+//// }
+// if(wrkMastService.getWorkingMast(devpNo)>0){
+// throw new CoolException(devpNo+"绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�");
+// }
+// }
return station;
}
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 5277f6f..273e06e 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -262,7 +262,7 @@
}
// 鍗曟嵁鏄庣粏妗�
List<DetlDto> list = new ArrayList<>();
- List<DetlDto> orderDetails = param.getOrderDetails();
+ List<DetlDto> orderDetails = param.getMatList();
for (DetlDto detail : orderDetails) {
DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),detail.getLineNumber(),
detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme());
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
index 2437d39..9fcd63e 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
@@ -134,7 +134,7 @@
openParam.setOrderNo(orderNo);
openParam.setOrderTime(DateUtils.convert(wrkMast.getModiTime()));
openParam.setOrderType("鎵嬪姩鍑哄簱鍗�");
- openParam.setOrderDetails(detlDtos);
+ openParam.setMatList(detlDtos);
openService.pakoutOrderCreate(openParam);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
index 592f297..13a6d47 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
@@ -133,7 +133,7 @@
openParam.setOrderNo(orderNo);
openParam.setOrderTime(DateUtils.convert(wrkMast.getModiTime()));
openParam.setOrderType("鎵嬪姩鍑哄簱鍗�");
- openParam.setOrderDetails(detlDtos);
+ openParam.setMatList(detlDtos);
openService.pakoutOrderCreate(openParam);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index ba05f58..2293a73 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -134,7 +134,7 @@
openParam.setOrderNo(orderNo);
openParam.setOrderTime(DateUtils.convert(wrkMast.getModiTime()));
openParam.setOrderType("鎵嬪姩鍑哄簱鍗�");
- openParam.setOrderDetails(detlDtos);
+ openParam.setMatList(detlDtos);
openService.pakoutOrderCreate(openParam);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java
index fada025..19cb2d3 100644
--- a/src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service.impl;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.mapper.WaitPakinMapper;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.service.WaitPakinService;
@@ -9,4 +10,11 @@
@Service("waitPakinService")
public class WaitPakinServiceImpl extends ServiceImpl<WaitPakinMapper, WaitPakin> implements WaitPakinService {
+ @Override
+ public boolean updateBeBatchByZpallet(String zpallet, Integer beBatch) {
+ WaitPakin updateEntity = new WaitPakin();
+ updateEntity.setBeBatch(beBatch);
+ return this.update(updateEntity, new EntityWrapper<WaitPakin>().eq("zpallet", zpallet));
+ }
+
}
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 1748b6e..6298d71 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -420,7 +420,7 @@
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
String wrkCode = null;
if (!Objects.isNull(deviceNo)) {
- wrkCode = workNo + "-1";
+ wrkCode = workNo + "";
ioType = 101;
generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, deviceNo);
} else {
@@ -455,7 +455,7 @@
LocAroundBind binds = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
.eq("loc_type", LocStsType.LOC_STS_TYPE_O.type)
- .eq("dev_no", basDevice.getDevNo()).orderBy("is_default", false));
+ .eq("dev_no", basDevice.getType()).orderBy("order_no"));
if (Objects.isNull(binds)) {
throw new CoolException("鏈哄彴鏈缃粯璁ゅ伐浣滀綅锛侊紒");
@@ -500,6 +500,7 @@
throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMasts.getLocNo());
}
+
List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(), 1);
//TODO 1. 鑾峰彇鍏ュ簱绔欑偣锛� 鐩爣搴撲綅 3. 灏嗗嚭搴撴槑缁嗘坊鍔犺嚦鍏ュ簱鏄庣粏
Integer staNo = staNos.stream().findFirst().get();
@@ -513,9 +514,11 @@
wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
wrkMast.setIoPri(13D); // 浼樺厛绾э細13
wrkMast.setCrnNo(locMast.getCrnNo());
- wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
// wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
- wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
+ if(!Objects.equals(locMasts.getCrnNo(), locMast.getCrnNo())){
+ wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+ wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
+ }
wrkMast.setLocNo(locMasts.getLocNo());
wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -1240,6 +1243,16 @@
// 鍑哄簱 ===>> F.鍦ㄥ簱
if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
locSts = "F";
+ if (!Cools.isEmpty(wrkMast.getLocNo())) {
+ LocAroundBind bLocId = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_id", wrkMast.getLocNo()));
+ if (!Objects.isNull(bLocId)) {
+ bLocId.setLocType(LocStsType.LOC_STS_TYPE_O.type);
+ if (!locAroundBindService.updateById(bLocId)) {
+
+ }
+ }
+ }
+
// 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
} else if (wrkMast.getIoType() == 110) {
locSts = "D";
@@ -1455,11 +1468,13 @@
ioType = 1;
}
wokNo = commonService.getWorkNo(0);
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo()));
+
// 鑾峰彇鐩爣绔�
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", ioType)
- .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
- .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+// .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("crn_no", locMast1.getCrnNo()); // 鍫嗗灈鏈哄彿
StaDesc staDesc = staDescService.selectOne(wrapper);
if (Cools.isEmpty(staDesc)) {
throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
@@ -1476,10 +1491,10 @@
FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl);
// 婧愮珯鐐圭姸鎬佹娴�
- BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.parseInt(wrkMast.getStaNo()), false);
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(staDesc.getCrnStn(), false);
sourceStaNo.setLocType1((short) 1);
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
- StartupDto locNo = commonService.getLocNo(1, Integer.parseInt(wrkMast.getStaNo()), findLocNoAttributeVo, locTypeDto);
+ StartupDto locNo = commonService.getLocNo1(locMast1.getCrnNo());
Date now = new Date();
// 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
@@ -1489,9 +1504,9 @@
mast.setWrkNo(wokNo);
// 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
mast.setIoType(ioType); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
- mast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
- mast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
- mast.setStaNo(staNo + ""); // 鐩爣绔�
+ mast.setWrkSts(1L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+ mast.setSourceStaNo(""); // 婧愮珯
+ mast.setStaNo(""); // 鐩爣绔�
mast.setSourceLocNo(wrkMast.getLocNo());
mast.setLocNo(locNo.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
mast.setModiTime(now);
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
index 9920416..91f9b29 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
@@ -36,8 +36,11 @@
}
WrkMastLog mastLog = new WrkMastLog();
BeanUtils.copyProperties(mast, mastLog);
-// mastLog.setLogId(mast.getId());
-//
+ if (mast.getWrkSts() != null) {
+ mastLog.setWrkSts(mast.getWrkSts().intValue());
+ }
+ mastLog.setLogId(Long.valueOf(mast.getWrkNo()));
+
if (!wrkMastLogService.insert(mastLog)) {
throw new CoolException("浠诲姟鏃ュ織淇濆瓨澶辫触锛侊紒");
}
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 7ee12c0..ebf389c 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,13 +1,16 @@
package com.zy.asrs.task;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
-import com.zy.asrs.entity.Order;
-import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.OrderService;
+import com.core.common.R;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.*;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.OrderSyncHandler;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.common.entity.Parameter;
+import com.zy.common.model.LocDto;
+import com.zy.common.model.TaskDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -15,7 +18,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import java.util.List;
+import java.util.*;
/**
* updated by IX in 2024/12/17
@@ -33,6 +36,24 @@
@Value("${erp.switch.ErpReportOld}")
private boolean ErpReportOld;
+ @Autowired
+ private OrderPakoutService orderPakoutService;
+ @Autowired
+ private DocTypeService docTypeService;
+ @Autowired
+ private OrderDetlPakoutService orderDetlPakoutService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private StaDescService staDescService;
+ @Autowired
+ private BasDevpService basDevpService;
+ @Autowired
+ private WorkService workService;
+ @Autowired
+ private LocAroundBindService locAroundBindService;
@Scheduled(cron = "0 0 1 * * ? ")
public void clearApiLog() {
@@ -43,73 +64,125 @@
}
}
- @Scheduled(cron = "0 1 * * * ? ")
- @Async("orderThreadPool")
- public void completeAndReportOrderIssuedOnceMore() {
- List<Order> orderList = orderService.selectComplete99();
- for (Order order : orderList) {
- try {
- ReturnT<String> result = orderSyncHandler.startOrderIssuedOnceMore(order);
- if (!result.isSuccess()) {
- log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触:{}", order.getOrderNo(),result.getMsg());
+
+ @Scheduled(cron = "0/30 * * * * ? ")
+ public void checkOrderPakoutSettled() {
+ List<OrderPakout> list = orderPakoutService.selectBySettle(1L);
+ if (Cools.isEmpty(list)) {
+ return;
+ }
+ for (OrderPakout order : list) {
+ if (order.getDocType() != null) {
+ DocType docType = docTypeService.selectById(order.getDocType());
+ if (docType != null && Integer.valueOf(1).equals(docType.getPakout())) {
+ List<LocDto> locDtos = new ArrayList<>();
+ Set<String> exist = new HashSet<>();
+ Boolean flag = false;
+ // 鑾峰彇璇ヨ鍗曚腑璁㈠崟鏄庣粏閲岀殑id
+ List<OrderDetlPakout> detls = orderDetlPakoutService.selectByOrderId(order.getId());
+ if (!Cools.isEmpty(detls)) {
+ for (OrderDetlPakout detl : detls) {
+
+ double issued = Optional.of(detl.getAnfme() - detl.getWorkQty()).orElse(0.0D);
+ if (issued <= 0.0D) {
+ continue;
+ }
+ List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist, detl.getMatnr(), detl.getBatch(),
+ detl.getBrand(), detl.getStandby1(), detl.getStandby2(), detl.getStandby3(), detl.getBoxType1(), detl.getBoxType2(), detl.getBoxType3());
+ for (LocDetl locDetl : locDetls) {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()).eq("loc_sts","F"));
+ if (locMast != null) {
+ LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", locMast.getLocNo()));
+ if (!Cools.isEmpty(bLocNo)) {
+ continue;
+ }
+ }
+ if (issued > 0) {
+ LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), detl.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.setBrand(detl.getBrand());
+ locDto.setStandby1(detl.getStandby1());
+ locDto.setStandby2(detl.getStandby2());
+ locDto.setStandby3(detl.getStandby3());
+ locDto.setBoxType1(detl.getBoxType1());
+ locDto.setBoxType2(detl.getBoxType2());
+ locDto.setBoxType3(detl.getBoxType3());
+ locDtos.add(locDto);
+ exist.add(locDetl.getLocNo());
+ // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+ issued = issued - locDetl.getAnfme();
+ } else {
+
+ break;
+ }
+ }
+ if (issued > 0) {
+ flag = true;
+ break;
+ }
+ }
+ if (flag) {
+ continue;
+ }
+ List<TaskDto> taskDtos = new ArrayList<>();
+ // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+ for (LocDto locDto : locDtos) {
+ if (locDto.isLack()) { continue; }
+ TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto, locDto.getStandby1());
+ if (TaskDto.has(taskDtos, taskDto)) {
+ TaskDto dto = TaskDto.find(taskDtos, taskDto);
+ assert dto != null;
+ dto.getLocDtos().addAll(taskDto.getLocDtos());
+ } else {
+ taskDtos.add(taskDto);
+ }
+ }
+ // -----------------------------------------------------------------------------------------------
+ for (TaskDto taskDto : taskDtos) {
+ BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+ if (!Objects.isNull(taskDto.getDeviceNo())) {
+ //鐢熸垚鍑哄簱浠诲姟
+ workService.stockOut(staNo, taskDto, taskDto.getDeviceNo(), 9995L);
+ } else {
+ workService.stockOut(staNo, taskDto, null, 9995L);
+ }
+ }
+ }
}
- } catch (Exception e){
- log.error(e.getMessage());
- log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触", order.getOrderNo());
}
}
}
- /**
- * 涓婃姤鍗曟嵁杞墽琛屽崟鎹�
- * @author Ryan
- * @date 2026/1/5 14:07
- */
- @Scheduled(cron = "0/5 * * * * ? ")
- @Async("orderThreadPool")
- public void completeAndReportOrderIssued() {
-// String erpReport = Parameter.get().getErpReport();
-// if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
- List<Order> orderList = orderService.selectComplete1();
-// List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 1L).eq("status", 1).orderBy("create_time", true));
- for (Order order : orderList) {
- try {
- ReturnT<String> result = orderSyncHandler.startOrderIssued(order);
- if (!result.isSuccess()) {
- log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo());
- }
- } catch (Exception e){
- log.error(e.getMessage());
- log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo());
- }
- }
-// }
- }
-// @Scheduled(cron = "0/5 * * * * ? ")
+ // @Scheduled(cron = "0/5 * * * * ? ")
@Async("orderThreadPool")
public void completeAndReportOrderInAndOutUtil() {
// String erpReport = Parameter.get().getErpReport();
// if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
- List<Order> orders = OrderInAndOutUtil.selectComplete(null);
- for (Order order : orders) {
- try {
- ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order);
- if (!result.isSuccess()) {
- log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", order.getOrderNo());
- }
- } catch (Exception e){
- log.error(e.getMessage());
+ List<Order> orders = OrderInAndOutUtil.selectComplete(null);
+ for (Order order : orders) {
+ try {
+ ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order);
+ if (!result.isSuccess()) {
log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", order.getOrderNo());
}
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", order.getOrderNo());
}
+ }
// }
}
-// @Scheduled(cron = "0/30 * * * * ? ")
+ // @Scheduled(cron = "0/30 * * * * ? ")
@Async("orderThreadPool")
public void completeAndReportOrderReport() {
- if (!ErpReportOld){
+ if (!ErpReportOld) {
return;
}
String erpReport = Parameter.get().getErpReport();
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index 39b00a3..df0a5de 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,14 +1,25 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.core.exception.CoolException;
import com.zy.api.controller.params.WorkTaskParams;
import com.zy.api.service.WcsApiService;
+import com.zy.asrs.entity.LocAroundBind;
+import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.Task;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.TaskMapper;
+import com.zy.asrs.service.LocAroundBindService;
import com.zy.asrs.service.TaskService;
import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.impl.LocMastServiceImpl;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkMastHandler;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.service.CommonService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +47,12 @@
private TaskService taskService;
@Autowired
private WcsApiService wcsApiService;
+ @Autowired
+ private LocMastServiceImpl locMastService;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private LocAroundBindService locAroundBindService;
@Scheduled(cron = "0/3 * * * * ? ")
private void execute() {
@@ -63,29 +80,124 @@
* @author Ryan
* @date 2026/1/10 14:42
*/
-// @Scheduled(cron = "0/15 * * * * ? ")
+ @Scheduled(cron = "0/3 * * * * ? ")
private void autoPubTasks() {
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", Arrays.asList(1L, 11L)));
if (wrkMasts.isEmpty()) {
return;
}
Collections.shuffle(wrkMasts);
- wrkMasts.forEach(wrkMast -> {
- WorkTaskParams params = new WorkTaskParams();
- if (wrkMast.getIoType().equals(1)) {
- params.setType("in");
- params.setTaskNo(wrkMast.getWrkCode())
- .setLocNo(wrkMast.getLocNo())
- .setBarcode(wrkMast.getBarcode())
- .setTaskPri(Integer.parseInt(wrkMast.getIoPri() + ""));
- } else {
- params.setType("out")
- .setTaskNo(wrkMast.getWrkCode())
- .setLocNo(wrkMast.getLocNo())
- .setStaNo(wrkMast.getStaNo())
- .setTaskPri(Integer.parseInt(wrkMast.getIoPri() + ""));
+ for (WrkMast wrkMast : wrkMasts) {
+ //鏌ョ湅涓嬪彂浠诲姟鏄惁涓哄喕缁撳簱浣嶏紝鏄喕缁撳簱浣嶅垯璺宠繃涓嬪彂浠诲姟
+ LocAroundBind locAroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
+ .eq("b_loc_no", wrkMast.getLocNo())
+ .eq("freeze", 1));
+ if (Cools.isEmpty(locAroundBind)) {
+ locAroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
+ .eq("b_loc_no", wrkMast.getSourceLocNo())
+ .eq("freeze", 1));
+ if (!Cools.isEmpty(locAroundBind)) {
+ continue;
+ }
+ }else {
+ continue;
}
- wcsApiService.pubWrkToWcs(params);
- });
+ Integer crnNo = wrkMast.getCrnNo();
+ //璇ュ爢鍨涙満宸茬粡涓嬪彂浠诲姟缁檞cs鍚庝笉鍐嶄笅鍙戞柊鐨勬惉杩愪换鍔�
+ List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("wrk_sts", Arrays.asList(2L, 12L)));
+ if (!wrkMasts1.isEmpty()) {
+ continue;
+ }
+ //婧愬簱浣嶄负鍐荤粨搴撲綅鏃剁姝笅鍙戞惉杩愪换鍔$粰鍫嗗灈鏈�
+ if (!Cools.isEmpty(wrkMast.getSourceLocNo())){
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_no", wrkMast.getSourceLocNo())
+ .eq("frozen",0));
+ if (Cools.isEmpty(locMast)) {
+ continue;
+ }
+ }
+
+ //鐩爣搴撲綅涓哄喕缁撳簱浣嶆椂绂佹涓嬪彂鎼繍浠诲姟缁欏爢鍨涙満
+ if (!Cools.isEmpty(wrkMast.getLocNo())){
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_no", wrkMast.getLocNo())
+ .eq("frozen",0));
+ if (Cools.isEmpty(locMast)) {
+ continue;
+ }
+ }
+
+ String wcsSourceLocNo = Cools.isEmpty(wrkMast.getSourceLocNo()) ? "" : Utils.WMSLocToWCSLoc(wrkMast.getSourceLocNo());
+ String wcsLocNo = Cools.isEmpty(wrkMast.getLocNo()) ? "" : Utils.WMSLocToWCSLoc(wrkMast.getLocNo());
+ WorkTaskParams params = new WorkTaskParams();
+ //鍑哄簱鍜岀Щ搴�
+ if(wrkMast.getIoType()==101&&!Cools.isEmpty(wrkMast.getStaNo())&& !wrkMast.getStaNo().equals("0")) {
+ params.setType("out")
+ .setTaskNo(wrkMast.getWrkNo()+"")
+ .setSourceLocNo(wcsSourceLocNo)
+ .setLocNo(wcsLocNo)
+ .setStaNo(wrkMast.getStaNo())
+ .setTaskPri(wrkMast.getIoPri().intValue())
+ .setBarcode(wrkMast.getBarcode());
+ }else if(wrkMast.getIoType()==2&& !Cools.isEmpty(wrkMast.getSourceStaNo())){
+ params.setType("in")
+ .setTaskNo(wrkMast.getWrkNo()+"")
+ .setSourceStaNo(wrkMast.getSourceStaNo())
+ .setLocNo(wcsLocNo)
+ .setTaskPri(wrkMast.getIoPri().intValue())
+ .setBarcode(wrkMast.getBarcode());
+ } else {
+ params.setType("move")
+ .setTaskNo(wrkMast.getWrkNo()+"")
+ .setSourceLocNo(wcsSourceLocNo)
+ .setLocNo(wcsLocNo)
+ .setBarcode(wrkMast.getBarcode());
+ }
+ R r = wcsApiService.pubWrkToWcs(params);
+ if (r.get("code").equals(200)){
+ break;
+ }
+ };
+ }
+
+ /**
+ * 鑷姩鐢熸垚璺ㄥ尯鍏ヤ换鍔�
+ *
+ * @author Ryan
+ * @date 2026/1/10 14:42
+ */
+ @Scheduled(cron = "0/3 * * * * ? ")
+ private void autoInStack() {
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 15).eq("online_yn","N"));
+ if (wrkMasts.isEmpty()) {
+ return;
+ }
+ for (WrkMast wrkMast : wrkMasts) {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo()));
+ // 鏋勯�犺法鍖哄叆搴撲换鍔�
+ WrkMast inMast = new WrkMast();
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(1));
+ inMast.setWrkNo(workNo); // 鐢熸垚鏂颁换鍔″彿
+ inMast.setBarcode(wrkMast.getBarcode()); // 鎵樼洏鐮佷繚鎸佷竴鑷�
+ inMast.setIoType(2); // 璺ㄥ尯鍏ュ簱绫诲瀷
+ inMast.setWrkSts(1L); // 寰呬笅鍙�
+ inMast.setLocNo(wrkMast.getLocNo()); // 鍘熺洰鏍囧簱浣�
+ inMast.setIoPri(13.0);
+ inMast.setSourceStaNo(wrkMast.getStaNo());
+ inMast.setWrkCode(wrkMast.getWrkNo()+""); // 鍏宠仈鍘熷嚭搴撲换鍔�
+ inMast.setAppeUser(wrkMast.getAppeUser()); // 鐢宠浜�
+ inMast.setAppeTime(new Date());
+ inMast.setIoTime(new Date());
+ inMast.setCrnNo(locMast.getCrnNo());
+ if(!wrkMastService.insert(inMast)){
+ throw new CoolException("璺ㄥ尯鍏ュ簱浠诲姟鐢熸垚澶辫触锛�");
+ }else {
+ wrkMast.setOnlineYn("Y");
+ wrkMastService.updateById(wrkMast);
+ }
+ }
+
}
}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index e5dd2ac..78d9504 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -94,9 +94,9 @@
// 鍑哄簱 --------------------------------------------------------------------------------
} else if (wrkMast.getWrkSts() == 15) {
- if (!Objects.isNull(wrkMast.getWrkCode())) {
- return FAIL;
- }
+// if (!Objects.isNull(wrkMast.getWrkCode())) {
+// return FAIL;
+// }
// if (!Cools.isEmpty(wrkDetls)) {
// if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
// exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
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 003e018..c3c92c3 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -469,25 +469,28 @@
}
/***/
- if (!Objects.isNull(wrkMast.getWrkCode())) {
- LocMast lcmst = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
- lcmst.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
- if (!locMastService.updateById(lcmst)) {
- throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
+ if (wrkMast.getIoType() !=2){
+ if (!Objects.isNull(wrkMast.getWrkCode())) {
+ LocMast lcmst = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+ lcmst.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+ if (!locMastService.updateById(lcmst)) {
+ throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
- LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo()));
- if (Objects.isNull(bLocNo)) {
- throw new CoolException("宸ヤ綅涓嶅瓨鍦� 锛侊紒");
- }
- bLocNo.setLocType(LocStsType.LOC_STS_TYPE_O.type);
- if (!locAroundBindService.updateById(bLocNo)) {
- throw new CoolException("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
+ LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo()));
+ if (Objects.isNull(bLocNo)) {
+ throw new CoolException("宸ヤ綅涓嶅瓨鍦� 锛侊紒");
+ }
+ bLocNo.setLocType(LocStsType.LOC_STS_TYPE_O.type);
+ if (!locAroundBindService.updateById(bLocNo)) {
+ throw new CoolException("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
- locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+ locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+ }
}
+
return SUCCESS;
}
diff --git a/src/main/java/com/zy/asrs/utils/OrderExcelListener.java b/src/main/java/com/zy/asrs/utils/OrderExcelListener.java
index 0efd602..d3cdad8 100644
--- a/src/main/java/com/zy/asrs/utils/OrderExcelListener.java
+++ b/src/main/java/com/zy/asrs/utils/OrderExcelListener.java
@@ -126,7 +126,7 @@
detl.setModel(data.getModel());
detl.setBrand(data.getBrand());
detl.setSpecs(data.getSpecs());
- detl.setBatch(Objects.isNull(data.getBatch()) ? "1" : data.getBatch());
+ detl.setBatch(Objects.isNull(data.getBatch()) ? "" : data.getBatch());
detl.setVolume(mat.getVolume());
detl.setSafeQty(mat.getSafeQty());
detl.setAnfme(data.getAnfme());
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 1927845..0c4b4aa 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -203,6 +203,23 @@
}
/**
+ * 灏� 1-1-1 鏍煎紡鐨勫簱浣嶈浆鎹负 0100101 鏍煎紡 (鎺�-鍒�-灞�)
+ * 鍏煎 1-11-1 -> 0101101
+ * @param locStr 1-1-1
+ * @return 0100101
+ */
+ public static String convertLocFormat(String locStr) {
+ if (Cools.isEmpty(locStr)) {
+ return null;
+ }
+ String[] split = locStr.split("-");
+ if (split.length != 3) {
+ return locStr;
+ }
+ return zerofill(split[0].trim(), 2) + zerofill(split[1].trim(), 3) + zerofill(split[2].trim(), 2);
+ }
+
+ /**
* 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
*/
public static int getBay(String locNo) {
@@ -665,4 +682,40 @@
return sdf.format(date);
}
+
+ //灏唚ms搴撲綅鍙疯浆鎹㈡垚wcs搴撲綅鍙�
+ public static String WMSLocToWCSLoc(String locNo) {
+ String row = locNo.substring(0, 2);
+ int i = 0;
+ for (char c : row.toCharArray()) {
+ if (c == '0') {
+ i++;
+ }else {
+ break;
+ }
+ }
+ row = row.substring(i);
+ int j = 0;
+ String boy = locNo.substring(2, 5);
+ for (char c : boy.toCharArray()) {
+ if (c == '0') {
+ j++;
+ }else {
+ break;
+ }
+ }
+ boy = boy.substring(j);
+ int k = 0;
+ String lev = locNo.substring(5);
+ for (char c : lev.toCharArray()) {
+ if (c == '0') {
+ k++;
+ }else {
+ break;
+ }
+ }
+ lev = lev.substring(k);
+ return row + "-" + boy + "-" + lev;
+ }
+
}
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index f3e11a4..00fb8a9 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -35,6 +35,9 @@
private Double anfme;
+ //鏈哄彴
+ private String devNo;
+
public DetlDto() {
}
diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java
index c6630aa..0560f4a 100644
--- a/src/main/java/com/zy/common/model/LocTypeDto.java
+++ b/src/main/java/com/zy/common/model/LocTypeDto.java
@@ -26,10 +26,10 @@
}
public LocTypeDto(BasDevp basDevp) {
- if (basDevp.getLocType1() == null || basDevp.getLocType1() == 0) {
+ if (basDevp.getLocType1() == null) {
throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
}
- if (basDevp.getLocType1() == 1) {
+ if (basDevp.getLocType1() == 0) {
this.locType1 = 1; // 浣庡簱浣�
} else {
this.locType1 = 2; // 楂樺簱浣�
diff --git a/src/main/java/com/zy/common/model/StartupDto.java b/src/main/java/com/zy/common/model/StartupDto.java
index b0ecc3e..b581ec6 100644
--- a/src/main/java/com/zy/common/model/StartupDto.java
+++ b/src/main/java/com/zy/common/model/StartupDto.java
@@ -18,4 +18,10 @@
private Integer workNo;
+ private Integer taskNo;
+
+ private String barcode;
+
+ private Integer taskPri;
+
}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 8b161f9..b62242a 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -130,14 +130,13 @@
RowLastno rowLastno = rowLastnoService.selectById(whsType);
RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId());
/**
- * 搴撳瀷 1: 鏍囧噯鍫嗗灈鏈哄簱 2: 骞冲簱 3: 绌挎鏉� 4: 鍥涘悜杞� 5: AGV 0: 鏈煡
+ * 搴撳瀷 1: 鏍囧噯鍫嗗灈鏈哄簱 2: 鍚屽贩閬撴壘搴撲綅 3: 绌挎鏉� 4: 鍥涘悜杞� 5: AGV 0: 鏈煡
*/
switch (rowLastnoType.getType()) {
case 1:
return getLocNoRun(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 0, locTypeDto, 0);
case 2:
- log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
- break;
+ return getLocNoRun(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 0, locTypeDto, 0);
case 3:
log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
break;
@@ -154,6 +153,33 @@
log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
}
return null;
+ }
+
+ /**
+ * 妫�绱㈠簱浣嶅彿
+ */
+ @Transactional
+ public StartupDto getLocNo1(Integer crnNo) {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("crn_no", crnNo)
+ .eq("loc_sts","O")
+ .eq("whs_type",1)
+ .orderBy("lev1,bay1"));
+ if (Cools.isEmpty(locMast)) {
+ return null;
+ }
+ StartupDto startupDto = new StartupDto();
+
+ String locNo = locMast.getLocNo();
+
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = getWorkNo(0);
+ // 杩斿洖dto
+ startupDto.setWorkNo(workNo);
+ startupDto.setCrnNo(crnNo);
+// startupDto.setSourceStaNo(sourceStaNo);
+ startupDto.setLocNo(locNo);
+ return startupDto;
}
/**
@@ -374,65 +400,15 @@
// 1.鎸夎鍒欐煡鎵惧簱浣�
if (Cools.isEmpty(locMast) && crnNo != 0) {
- List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
- .eq("row1", nearRow)
- .eq("frozen", 0).eq("deleted", 0)
- .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
- .orderBy("lev1", true).orderBy("bay1", true));
- for (LocMast locMast1 : locMasts) {
- if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
- continue;
- }
- if (Utils.BooleanWhsTypeStaIoType(rowLastno)) {
- String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo());
- LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
- if (!Cools.isEmpty(locMast2)) {
- locMast = locMast2;
- break;
- }
- } else {
- if (!Cools.isEmpty(locMast1)) {
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", crnNo).eq("whs_type", rowLastnoType.getType().longValue()).orderBy("lev1").orderBy("bay1"));
+ if (!locMasts.isEmpty()) {
+ for (LocMast locMast1 : locMasts) {
+ if (basCrnpService.checkSiteError(crnNo, true)) {
locMast = locMast1;
break;
}
}
- }
- if (Cools.isEmpty(locMast) && Utils.BooleanWhsTypeStaIoType(rowLastno)) {
- for (LocMast locMast1 : locMasts) {
- if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
- continue;
- }
- if (Utils.BooleanWhsTypeStaIoType(rowLastno)) {
- String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo());
- LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
- if (!Cools.isEmpty(locMast2)) {
- locMast = locMast2;
- break;
- } else {
- locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("loc_no", shallowLoc).eq("loc_sts", "F").eq("whs_type", rowLastnoType.getType().longValue()));
- if (!Cools.isEmpty(locMast2)) {
- locMast = locMast1;
- break;
- } else {
- locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("loc_no", shallowLoc).eq("loc_sts", "D").eq("whs_type", rowLastnoType.getType().longValue()));
- if (!Cools.isEmpty(locMast2)) {
- locMast = locMast1;
- break;
- }
- }
- }
- } else {
- if (!Cools.isEmpty(locMast1)) {
- locMast = locMast1;
- break;
- }
- }
- }
}
}
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index c0c677f..607bd5b 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -9,11 +9,15 @@
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.MatServiceImpl;
+import com.zy.asrs.utils.Utils;
import com.zy.common.CodeRes;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
import com.zy.common.web.param.SearchLocParam;
+import com.zy.system.entity.Config;
+import com.zy.system.service.impl.ConfigServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@@ -50,6 +54,10 @@
private RowLastnoService rowLastnoService;
@Autowired
private WorkService workService;
+ @Autowired
+ private ConfigServiceImpl configService;
+ @Autowired
+ private MatServiceImpl matService;
@PostMapping("/pakin/loc/v1")
@ResponseBody
@@ -63,8 +71,55 @@
}
List<WaitPakin> waitPakins = null;
if (param.getIoType() == 1) {
+ //澶勭悊鎵樼洏鐮�
+ //3S19000677895,M22003772,3 ,KP, 0A2030 ,0A2030202306050023
+ //3S绠辩爜鍙� ,绔瓙鐗╂枡鍙� ,鏁伴噺,鍗曚綅,渚涘簲鍟嗙紪鍙�,渚涘簲鍟嗘壒娆″彿
+ //鏁伴噺鍜岄噸閲忚浆鎹㈠嚭鏉ョ殑鏄惁宸笉澶�
+ //weight 涓� 43.39 鍘荤毊2.35 = 41.05
+ //鎵樼洏鐮佷緥瀛� 845000820308,M11000787,1000,MT,0A1263,0A126320260120
+ //鎹㈢畻闇�瑕�41.05*24.36绾︾瓑浜�1000
if (Cools.isEmpty(param.getBarcode())) {
return R.error("鏉$爜涓嶈兘涓虹┖");
+ }
+ String[] split = param.getBarcode().split(",");
+ String barcode = split[0];
+ String matnr = split[1];
+ Double weight = Double.valueOf(split[2]);
+ String unit = split[3];
+ String manu = split[4];
+ String batch = split[5];
+ String threeCode = param.getBarcode();
+ param.setBarcode(barcode);
+ //瀹為檯绉伴噸鏁伴噺
+ Double m = param.getWeight() -2.35;
+
+ Mat mat = matService.selectByMatnr(matnr);
+ if(mat==null){
+ log.info("娌℃湁鎵惧埌璇ョ墿鏂欐。妗�--"+matnr+"缁勬墭鏃惰嚜鍔ㄦ柊澧炵墿鏂欙紝榛樿24.36KG/M");
+ mat = new Mat();
+ mat.setTagId(1L);
+ mat.setLocType(1L);
+ mat.setMatnr(matnr);
+ mat.setUnit(unit);
+ mat.setManu(manu);
+ mat.setMaktx(matnr);
+ mat.setVolume(24.36);
+ matService.insert(mat);
+ }else {
+ //鏆傚畾
+
+ }
+ m=m*mat.getVolume();
+ //Double val = Math.round((m - matnr.getSafeQty()) * 10000) / 10000.0;
+ Config config = configService.selectConfigByCode("SimulationInbound");
+ if (config != null && config.getValue().equals("Y")) {
+ WaitPakin waitPakin1 = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+ if (Cools.isEmpty(waitPakin1)) {
+ WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("io_status", "N"));
+ if (waitPakin != null) {
+ waitPakinService.updateForSet("zpallet = '" + param.getBarcode() + "'", new EntityWrapper<WaitPakin>().eq("zpallet", waitPakin.getZpallet()));
+ }
+ }
}
waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
if (Cools.isEmpty(waitPakins)) {
@@ -72,8 +127,31 @@
if (wrkMast != null && wrkMast.getIoType() == 103) {
return R.parse(CodeRes.PICK_600);
}
- return R.parse(CodeRes.NO_COMB_700);
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setZpallet(param.getBarcode());
+ waitPakin.setAnfme(m);
+ waitPakin.setThreeCode(threeCode);
+ waitPakinService.insert(waitPakin);
+ }else {
+ for(WaitPakin waitPakin : waitPakins){
+ waitPakin.setAnfme(m);
+ waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+ }
}
+ //瀹為檯闀垮害
+ WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+ if (Cools.isEmpty(waitPakin)) {
+ return R.error(CodeRes.NO_COMB_700);
+ }
+ boolean flag = false;
+ if(Cools.isEmpty(waitPakin.getBeBatch())||waitPakin.getBeBatch()!=1){
+ flag = true;
+ }
+ if (flag && (weight - m < -2.0 || weight - m > 2.0)) {
+ return R.error("浜岀淮鐮�="+threeCode+"鐨勭墿鏂欏疄闄呯О閲嶈浆鎹㈡垚鐨勭背鏁板拰鐗╂枡鏍囩鎻愪緵鐨勭背鏁扮浉宸緝澶ч渶瑕侀��鍥炴垨鑰呮爣璁板悗鎵嶈兘鍏ュ簱锛�");
+ }
+
int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
if (countLoc > 0 || countWrk > 0) {
@@ -102,6 +180,8 @@
break;
}
log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
+ String wcsLoc = Utils.WMSLocToWCSLoc(dto.getLocNo());
+ dto.setLocNo(wcsLoc);
return R.ok().add(dto);
}
@@ -168,6 +248,9 @@
// FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(matnrs.get(0), batchs.get(0));
FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0));
StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto);
+ if (Cools.isEmpty(dto)) {
+ throw new CoolException("娌℃湁鎵惧埌搴撲綅");
+ }
int workNo = dto.getWorkNo();
Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
@@ -234,6 +317,9 @@
} else {
throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
}
+ dto.setBarcode(barcode);
+ dto.setTaskNo(workNo);
+ dto.setTaskPri(wrkMast.getIoPri().intValue());
return dto;
}
diff --git a/src/main/java/com/zy/common/web/param/SearchLocParam.java b/src/main/java/com/zy/common/web/param/SearchLocParam.java
index 1a170ce..7241c5b 100644
--- a/src/main/java/com/zy/common/web/param/SearchLocParam.java
+++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -17,4 +17,7 @@
// 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級
private Short locType1;
+ //閲嶉噺
+ private Double weight;
+
}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ed8e91e..18599c6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -12,8 +12,8 @@
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: sa@123
- url: jdbc:sqlserver://192.168.4.15:1433;databasename=jxhcwms
-# url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxhcwms
+# url: jdbc:sqlserver://192.168.4.15:1433;databasename=jxhcwms
+ url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxhcwms
mvc:
static-path-pattern: /**
redis:
@@ -41,7 +41,7 @@
path: /stock/out/@pom.build.finalName@/logs
super:
- pwd: asrs2023
+ pwd: xltys1995
swagger:
enable: false
@@ -98,16 +98,12 @@
#鐧诲綍鍦板潃
loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
#鍗曟嵁锛屽晢鍝佹。妗堝湴鍧�
- inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc
- #缁撴灉涓婃姤锛堜繚瀛橈級鍗曞湴鍧�
- outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
- #缁撴灉涓婃姤锛堟彁浜わ級鍗曞湴鍧�
- outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
- #缁撴灉涓婃姤锛堝鏍革級鍗曞湴鍧�
- outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
- # 鐧诲綍璐﹀彿绠$悊
- login :
- acctID: "647e849ab6fa0f"
- username: "llw"
- password: "666666"
- lcid: 2052
\ No newline at end of file
+
+#wcs瀵规帴
+wcs:
+ address:
+ URL: http://127.0.0.1:9090/hcwcs
+ deviceStatus: openapi/deviceStatus
+ createOutTask: openapi/createOutTask
+ createLocMoveTask: openapi/createLocMoveTask
+ createInTask: openapi/createInTask
diff --git a/src/main/resources/mapper/LocAroundBindMapper.xml b/src/main/resources/mapper/LocAroundBindMapper.xml
index 3feac03..b479cd4 100644
--- a/src/main/resources/mapper/LocAroundBindMapper.xml
+++ b/src/main/resources/mapper/LocAroundBindMapper.xml
@@ -8,7 +8,9 @@
<result column="dev_id" property="devId" />
<result column="dev_no" property="devNo" />
<result column="b_loc_id" property="bLocId" />
- <result column="b_loc_no" property="bLocNo" />
+ <result column="b_loc_no" property="blocNo" />
+ <result column="order_no" property="orderNo" />
+ <result column="freeze" property="freeze" />
</resultMap>
diff --git a/src/main/resources/mapper/StaDescMapper.xml b/src/main/resources/mapper/StaDescMapper.xml
index 6bbea2d..2cf0eee 100644
--- a/src/main/resources/mapper/StaDescMapper.xml
+++ b/src/main/resources/mapper/StaDescMapper.xml
@@ -21,7 +21,7 @@
<select id="queryOutStaNosByLocNo" resultType="java.lang.Integer">
select
- distinct asd.stn_no
+ distinct asd.crn_stn
from asr_sta_desc asd
left join asr_loc_mast alm on asd.crn_no = alm.crn_no
where 1=1
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml
index 8086afb..5f5faa4 100644
--- a/src/main/resources/mapper/WrkMastLogMapper.xml
+++ b/src/main/resources/mapper/WrkMastLogMapper.xml
@@ -61,6 +61,7 @@
<result column="full_plt" property="fullPlt" />
<result column="pre_have" property="preHave" />
<result column="take_none" property="takeNone" />
+ <result column="log_id" property="logId" />
</resultMap>
<sql id="queryWhere">
<where>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 83c4cce..02a13e6 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -70,8 +70,8 @@
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,3,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))
+ or (wrk_sts=15 and dateadd(mi,3,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp) and ove_mk='Y')
+ or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp) and ove_mk='Y')
order by io_time,wrk_no asc
</select>
diff --git a/src/main/webapp/static/js/locMast/locMast.js b/src/main/webapp/static/js/locMast/locMast.js
index 7fc6049..076693b 100644
--- a/src/main/webapp/static/js/locMast/locMast.js
+++ b/src/main/webapp/static/js/locMast/locMast.js
@@ -62,7 +62,7 @@
// ,{field: 'scWeight', align: 'center',title: ''}
// ,{field: 'invWh', align: 'center',title: ''}
// ,{field: 'mk', align: 'center',title: ''}
- // ,{field: 'barcode', align: 'center',title: ''}
+ ,{field: 'barcode', align: 'center',title: '鎵樼洏鐮�'}
// ,{field: 'PdcType', align: 'center',title: ''}
// ,{field: 'ctnNo', align: 'center',title: ''}
,{field: 'locType1$', align: 'center',title: '楂樹綆绫诲瀷', hide:true}
diff --git a/src/main/webapp/static/js/orderPakout/order.js b/src/main/webapp/static/js/orderPakout/order.js
index 20e9498..d6294b6 100644
--- a/src/main/webapp/static/js/orderPakout/order.js
+++ b/src/main/webapp/static/js/orderPakout/order.js
@@ -191,6 +191,7 @@
layer.msg('鏁伴噺涓嶈兘灏忎簬宸蹭綔涓氭暟閲�', {icon: 2});
return false;
}
+ console.log(nList[xi]);
}
layer.load(2);
$.ajax({
diff --git a/src/main/webapp/static/js/waitPakin/waitPakin.js b/src/main/webapp/static/js/waitPakin/waitPakin.js
index 93d9ac5..886ccf9 100644
--- a/src/main/webapp/static/js/waitPakin/waitPakin.js
+++ b/src/main/webapp/static/js/waitPakin/waitPakin.js
@@ -24,6 +24,16 @@
return html;
}
}
+ , {
+ field: 'beBatch', align: 'center', title: '鏄惁鍏佽', templet: function (row) {
+ var html = "<input value='beBatch' type='checkbox' lay-skin='switch' lay-text='鏄瘄鍚�' lay-filter='beBatchSwitch' table-index='" + row.LAY_TABLE_INDEX + "'";
+ if (row.beBatch === 1) {
+ html += " checked ";
+ }
+ html += ">";
+ return html;
+ }
+ }
, {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}
, {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿', hide: true})
return cols;
@@ -84,6 +94,43 @@
}
});
+ // 鐩戝惉鏄惁鎵规寮�鍏�
+ form.on('switch(beBatchSwitch)', function (obj) {
+ var _index = $(obj.elem).attr('table-index');
+ var cacheData = table.cache['waitPakin'];
+ var row = cacheData[_index];
+
+ if (!row) {
+ layer.msg("鏃犳硶鑾峰彇琛屾暟鎹�", {icon: 2});
+ return;
+ }
+
+ var newState = obj.elem.checked ? 1 : 0;
+
+ $.ajax({
+ url: baseUrl + "/waitPakin/update/beBatch/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify({zpallet: row.zpallet, beBatch: newState}),
+ contentType: 'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200) {
+ layer.msg(res.msg, {icon: 1});
+ row.beBatch = newState; // 鏇存柊缂撳瓨
+ } else {
+ layer.msg(res.msg, {icon: 2});
+ obj.elem.checked = !obj.elem.checked;
+ form.render('checkbox');
+ }
+ },
+ error: function () {
+ layer.msg("璇锋眰澶辫触", {icon: 2});
+ obj.elem.checked = !obj.elem.checked;
+ form.render('checkbox');
+ }
+ });
+ });
+
// 鐩戝惉鎺掑簭浜嬩欢
table.on('sort(locMast)', function (obj) {
var searchData = {};
diff --git a/src/main/webapp/views/locMast/locMast.html b/src/main/webapp/views/locMast/locMast.html
index a432ead..14c66ae 100644
--- a/src/main/webapp/views/locMast/locMast.html
+++ b/src/main/webapp/views/locMast/locMast.html
@@ -68,6 +68,11 @@
</div>
<div class="layui-inline">
<div class="layui-input-inline">
+ <input class="layui-input" type="text" name="barcode" placeholder="鎵樼洏鐮�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
<input class="layui-input" type="text" name="crn_no" placeholder="鍫嗗灈鏈哄彿" autocomplete="off">
</div>
</div>
diff --git a/src/main/webapp/views/locMast/locMast_detail.html b/src/main/webapp/views/locMast/locMast_detail.html
index cd62adc..5f1c17c 100644
--- a/src/main/webapp/views/locMast/locMast_detail.html
+++ b/src/main/webapp/views/locMast/locMast_detail.html
@@ -95,6 +95,12 @@
</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:80%;">
<label class="layui-form-label">鍫嗗灈鏈哄彿锛�</label>
<div class="layui-input-inline">
<input id="crnNo" class="layui-input" type="text" autocomplete="off" disabled="disabled">
@@ -218,12 +224,6 @@
<label class="layui-form-label">锛�</label>
<div class="layui-input-inline">
<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">
--
Gitblit v1.9.1