From 8d702fa2c62b3617f71c5e91293e338d1ccd1549 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期六, 08 十一月 2025 13:15:23 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/WorkService.java | 4
src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java | 106 ++++++++++
src/main/java/com/zy/common/config/CoolExceptionHandler.java | 24 ++
src/main/java/com/zy/asrs/controller/OpenController.java | 32 --
src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java | 165 ++++++++++++++++
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 106 ++++++++++
src/main/java/com/zy/asrs/entity/param/OrderCargoBookingNoteParam.java | 47 ++++
pom.xml | 5
src/main/java/com/zy/asrs/controller/OutController.java | 15 +
src/main/java/com/zy/asrs/entity/param/OrderOutLocBoxCsUtilParam.java | 37 +++
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 49 ++--
src/main/java/com/zy/asrs/service/OpenService.java | 2
12 files changed, 538 insertions(+), 54 deletions(-)
diff --git a/pom.xml b/pom.xml
index 878f0dc..b5b19bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,11 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
+ <groupId>org.hibernate.validator</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>6.0.17.Final</version>
+ </dependency>
+ <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index d0061c3..174e6b9 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -13,6 +13,7 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -311,27 +312,14 @@
* 娣诲姞鍑哄簱鍗曘�佹甯搁��搴撹嚦浜屾ゼ鍖呰
*/
@PostMapping("/order/normalTransferToTheSecond-floorPackagingArea/v1")
- @AppAuth(memo = "姝e父閫�搴撹嚦浜屾ゼ鍖呰")
+ @AppAuth(memo = "鎷嗗寘瑁呮鍑哄簱")
public synchronized R packagingAreaOrderCreate(@RequestHeader(required = false) String appkey,
- @RequestBody QualityInspectionParam param,
+ @RequestBody @Valid OrderCargoBookingNoteParam param,
HttpServletRequest request) {
auth(appkey, param, request);
if (Cools.isEmpty(param)) {
return R.parse(BaseRes.PARAM);
}
- //鍒ゆ柇param鍙傛暟
- if (Cools.isEmpty(param.getBoxNo())){
- throw new CoolException("鍙傛暟锛氱鍙� boxNo涓虹┖");
- }
- //鍒ゆ柇param鍙傛暟
- if (Cools.isEmpty(param.getModel())){
- throw new CoolException("鍙傛暟锛氬嵎鍙� Model涓虹┖");
- }
- //鍒ゆ柇param鍙傛暟
- if (Cools.isEmpty(param.getMemo())){
- throw new CoolException("鍙傛暟锛氬娉� Memo涓虹┖");
- }
-
return openService.packagingAreaOrderCreate(param);
}
@@ -343,23 +331,17 @@
@PostMapping("/order/cargo/booking/note/v1")
@AppAuth(memo = "璁″垝缁勮揣鍗�")
public synchronized R cargoBookingNote(@RequestHeader(required = false) String appkey,
- @RequestBody OrderCargoBookingNoteParam param,
+ @RequestBody @Valid OrderCargoBookingNoteParam param,
HttpServletRequest request) {
auth(appkey, param, request);
if (Cools.isEmpty(param)) {
return R.parse(BaseRes.PARAM);
}
- //鍒ゆ柇param鍙傛暟
if (Cools.isEmpty(param.getGroupGoodsNo())){
- throw new CoolException("鍙傛暟锛氱粍璐у崟鍙� groupGoodsNo涓虹┖");
+ return new R(401,"缁勮揣鍗曞彿涓虹┖锛�");
}
- //鍒ゆ柇param鍙傛暟
- if (Cools.isEmpty(param.getModelList()) || param.getBoxNoList().isEmpty()){
- throw new CoolException("鍙傛暟锛氬嵎鍙� modelList涓虹┖");
- }
- //鍒ゆ柇param鍙傛暟
- if (Cools.isEmpty(param.getBoxNoList()) || param.getModelList().isEmpty()){
- throw new CoolException("鍙傛暟锛氱鍙烽泦鍚� boxNoList涓虹┖");
+ if (Cools.isEmpty(param.getCstmrName())){
+ return new R(401,"瀹㈡埛鍚嶇О涓虹┖锛�");
}
return openService.cargoBookingNote(param);
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index a3db49b..7e6cea3 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -140,8 +140,21 @@
public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
StockOutParam param = new StockOutParam();
ArrayList<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+ int staNoOrder = 0;
for (LocDto locDto:locDtos){
Order order = orderService.selectByNo(locDto.getOrderNo());
+
+ DocType docType = docTypeService.selectById(order.getDocType());
+ if (docType.getDocName().equals("涓嶅悎鏍煎搧鍑哄簱")){
+ staNoOrder = 212;
+ }
+ if (docType.getDocName().equals("鎷嗗寘瑁呮鍑哄簱")){
+ staNoOrder = 212;
+ }
+ if (docType.getDocName().equals("閫�璐ц嚦浜屾ゼ")){
+ staNoOrder = 212;
+ }
+
OrderDetl orderDetl = orderDetlService.selectById(locDto.getOrderDetlId());
StockOutParam.LocDetl locDetl = new StockOutParam.LocDetl();
@@ -168,7 +181,7 @@
}
param.setLocDetls(locDetls);
- List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassification(param);
+ List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassificationOrder(param,staNoOrder);
Date now = new Date();
for (StockOutParam stockOutParam : stockOutParams){
stockOutParam.setNowTime(now);
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderCargoBookingNoteParam.java b/src/main/java/com/zy/asrs/entity/param/OrderCargoBookingNoteParam.java
index 812b94c..096fea7 100644
--- a/src/main/java/com/zy/asrs/entity/param/OrderCargoBookingNoteParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/OrderCargoBookingNoteParam.java
@@ -1,16 +1,55 @@
package com.zy.asrs.entity.param;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
import java.util.List;
/*
- * Created by Monkey D. Luffy on 2025.10.28
+ * Created by Monkey D. Luffy on 2025.11.08
* */
@Data
public class OrderCargoBookingNoteParam {
+
private String groupGoodsNo; // 鏄� 瀛楃涓� 缁勮揣鍗曞彿 === 銆嬪疄闄呯粍璐у崟璁㈠崟鍙�
- private String cstmrName = "鏈煡"; // 鏄� 瀛楃涓� 缁勮揣鍗曞彿 === 銆嬪疄闄呯粍璐у崟璁㈠崟鍙�
- private List<String> boxNoList; // 鏄� 瀛楃涓� 绠卞彿锛堥泦鍚堬級
- private List<String> modelList; //寰呭垽 鍗峰彿锛堥泦鍚堬級
+
+ private String cstmrName = "鏈煡"; // 鏄� 瀛楃涓� 瀹㈡埛鍚嶇О
+
+ @NotNull(message = "绠卞垪琛ㄤ笉鑳戒负null")
+ @NotEmpty(message = "绠卞垪琛ㄤ笉鑳戒负绌�")
+ @Valid // 鍚敤瀵笲ox瀵硅薄鐨勭骇鑱旀牎楠�
+ private List<Box> boxList;// 鏄� 瀛楃涓� 绠遍泦鍚�
+
+ @Data
+ @NoArgsConstructor // 鏃犲弬鏋勯�犳柟娉�
+ @AllArgsConstructor // 鍏ㄥ弬鏋勯�犳柟娉�
+ public static class Box {
+
+ @NotBlank(message = "绠卞彿涓嶈兘涓虹┖")
+ private String boxNo; // 鏄� 瀛楃涓� 绠卞彿
+
+ @NotNull(message = "鍗峰垪琛ㄤ笉鑳戒负null")
+ @NotEmpty(message = "鍗峰垪琛ㄤ笉鑳戒负绌�")
+ @Valid // 鍚敤瀵筊oll瀵硅薄鐨勭骇鑱旀牎楠�
+ private List<Roll> rollList;// 鏄� 瀛楃涓� 鍗烽泦鍚�
+
+ @Data
+ @NoArgsConstructor // 鏃犲弬鏋勯�犳柟娉�
+ @AllArgsConstructor // 鍏ㄥ弬鏋勯�犳柟娉�
+ public static class Roll {
+
+ @NotBlank(message = "鍗峰彿涓嶈兘涓虹┖")
+ private String rollNo; // 鏄� 瀛楃涓� 鍗峰彿
+
+ @NotNull(message = "澶囨敞涓嶈兘涓簄ull")
+ private String memo; // 鏄� 瀛楃涓� 澶囨敞
+
+ }
+
+ }
}
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderOutLocBoxCsUtilParam.java b/src/main/java/com/zy/asrs/entity/param/OrderOutLocBoxCsUtilParam.java
new file mode 100644
index 0000000..75168ac
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/OrderOutLocBoxCsUtilParam.java
@@ -0,0 +1,37 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+/*
+ * Created by Monkey D. Luffy on 2025.11.08
+ * */
+@Data
+public class OrderOutLocBoxCsUtilParam {
+ private String boxNo; //绠卞彿
+ private String orderOneNo; //璁㈠崟鍙�
+ private String cstmrName; //瀹㈡埛鍚嶇О
+ private String memo; //澶囨敞
+ private String danger; //寰呭垽
+ private String roll; //鍗峰彿
+
+ public OrderOutLocBoxCsUtilParam() {
+ }
+
+ public OrderOutLocBoxCsUtilParam(String batch, String orderOneNo, String cstmrName, String memo, String danger, String roll) {
+ this.boxNo = batch;
+ this.orderOneNo = orderOneNo;
+ this.cstmrName = cstmrName;
+ this.memo = memo;
+ this.danger = danger;
+ this.roll = roll;
+ }
+
+ public OrderOutLocBoxCsUtilParam(String batch,String roll, OrderOutLocBoxCsUtilParam orderOutLocBoxCsUtilParam) {
+ this.boxNo = batch;
+ this.orderOneNo = orderOutLocBoxCsUtilParam.getOrderOneNo();
+ this.cstmrName = orderOutLocBoxCsUtilParam.getCstmrName();
+ this.memo = orderOutLocBoxCsUtilParam.getMemo();
+ this.danger = orderOutLocBoxCsUtilParam.getDanger();
+ this.roll = roll;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index bd80357..62af165 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -60,7 +60,7 @@
void cs2();
void qualityInspection(QualityInspectionParam param);
- R packagingAreaOrderCreate(QualityInspectionParam param);
+ R packagingAreaOrderCreate(OrderCargoBookingNoteParam param);
R cargoBookingNote(OrderCargoBookingNoteParam param);
}
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 4f892db..169142c 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -31,13 +31,15 @@
* 鍑哄簱浣滀笟
*/
void startupFullTakeStoreOrder(StockOutParam param, Long userId);
+ void startupFullTakeStoreOrderPakout(StockOutParam param, Long userId);
void startupFullTakeStoreOrderGift(StockOutParam param, Long userId);
/**
* 鍑哄簱浣滀笟
* @param staNo 鐩爣绔欑偣
* @param locDetls 寰呭嚭搴撶墿鏂�
- * @param ioType 鍏ュ嚭搴撶被鍨�
+ * @param ioWorkType 鍏ュ嚭搴撶被鍨�
+ * @param userId 鐢ㄦ埛ID
*/
void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
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 e65df02..8084f72 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1163,32 +1163,39 @@
// }
/*
- * 姝e父閫�搴撹嚦浜屾ゼ鍖呰
+ * 姝e父閫�搴撹嚦浜屾ゼ鍖呰 鎷嗗寘瑁呮鍑哄簱
* */
@Override
@Transactional
- public R packagingAreaOrderCreate(QualityInspectionParam param) {
+ public R packagingAreaOrderCreate(OrderCargoBookingNoteParam param) {
try{
-// String[] split = param.getModel().split(",");
-// if (Cools.isEmpty(split)){
-// throw new CoolException("鍙傛暟锛氬嵎鍙� Model涓虹┖,瑙f瀽澶辫触锛侊紒锛�");
-// }
- List<String[]> OutLocBoxCs = new ArrayList<>();
+
+ List<OrderOutLocBoxCsUtilParam> OutLocBoxCs = new ArrayList<>();
String orderNo = "TK" + snowflakeIdWorker.nextId();
- String cstmrName = "鏈煡";
-// for (String model:split){
- String[] outLocBox = new String[]{param.getBoxNo(),orderNo,cstmrName,param.getMemo(),"闅忔剰"};
- OutLocBoxCs.add(outLocBox);
-// }
+ for (OrderCargoBookingNoteParam.Box box : param.getBoxList()){
+ for (OrderCargoBookingNoteParam.Box.Roll roll : box.getRollList()){
+ if (Cools.isEmpty(roll.getMemo())){
+ return new R(401,"鍗峰彿"+roll.getRollNo()+"鐨勫娉ㄤ负绌猴紒");
+ }
+ OrderOutLocBoxCsUtilParam outLocBox = new OrderOutLocBoxCsUtilParam();
+ outLocBox.setBoxNo(box.getBoxNo());
+ outLocBox.setRoll(roll.getRollNo());
+ outLocBox.setMemo(roll.getMemo());
+ outLocBox.setOrderOneNo(orderNo);
+ outLocBox.setCstmrName(param.getCstmrName());
+ outLocBox.setDanger("闅忔剰");
+ OutLocBoxCs.add(outLocBox);
+ }
+ }
if (!OutLocBoxCs.isEmpty()){
- OrderOutBatchUtil orderOutBatchUtil = new OrderOutBatchUtil(orderNo,cstmrName,"","MES涓嬪彂閫�璐ц嚦浜屾ゼ","閫�璐ц嚦浜屾ゼ",false);
+ OrderOutBatchUtil orderOutBatchUtil = new OrderOutBatchUtil(orderNo,param.getCstmrName(),"","MES涓嬪彂鎷嗗寘瑁呮鍑哄簱","鎷嗗寘瑁呮鍑哄簱",false);
return orderOutBatchUtil.setOrderOutBatch(OutLocBoxCs);
}
} catch (Exception e) {
- throw new CoolException("瀵瑰簲绠卞彿锛�"+param.getBoxNo()+"鐨勭墿鏂欓��搴撹嚦2妤煎け璐�"+e.getMessage());
+ throw new CoolException("鎷嗗寘瑁呮鍑哄簱閫�搴撹嚦2妤煎け璐�"+e.getMessage());
}
- return R.error("瀵瑰簲绠卞彿锛�"+param.getBoxNo()+"鐨勭墿鏂欓��搴撹嚦2妤煎け璐�");
+ return R.error("鎷嗗寘瑁呮鍑哄簱閫�搴撹嚦2妤煎け璐�");
}
/*
@@ -1200,15 +1207,17 @@
try{
List<String[]> OutLocBoxCs = new ArrayList<>();
String orderNo = "ZH" + snowflakeIdWorker.nextId();
- for (String batch:param.getBoxNoList()){
- String[] outLocBox = new String[]{batch,orderNo,param.getCstmrName(),"","鍚堟牸"};
- OutLocBoxCs.add(outLocBox);
+ for (OrderCargoBookingNoteParam.Box box : param.getBoxList()){
+ for (OrderCargoBookingNoteParam.Box.Roll roll : box.getRollList()){
+ String[] outLocBox = new String[]{box.getBoxNo(),orderNo,param.getCstmrName(),roll.getMemo(),"鍚堟牸"};
+ OutLocBoxCs.add(outLocBox);
+ }
}
if (!OutLocBoxCs.isEmpty()){
OrderOutBatchUtil orderOutBatchUtil = new OrderOutBatchUtil(orderNo,param.getCstmrName(),"","MES涓嬪彂璁″垝缁勮揣鍗�","璁″垝缁勮揣鍗�",true,param.getGroupGoodsNo());
-// return orderOutBatchUtil.setOrderOutBatch(OutLocBoxCs);
- return R.ok();
+ return orderOutBatchUtil.setOrderOutBatchCargoBookingNote(OutLocBoxCs);
+// return R.ok();
}
} catch (Exception e) {
throw new CoolException("缁勮揣鍗曞彿锛�"+param.getGroupGoodsNo()+"璁″垝缁勮揣鍗曟帴鏀跺け璐ワ紒锛侊紒"+e.getMessage());
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 8ec49ac..38e591c 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -85,6 +85,10 @@
private OrderGiftService orderGiftService;
@Autowired
private OrderDetlGiftService orderDetlGiftService;
+ @Autowired
+ private OrderPakoutService orderPakoutService;
+ @Autowired
+ private OrderDetlPakoutService orderDetlPakoutService;
@Override
@Transactional
@@ -298,6 +302,108 @@
@Override
@Transactional
+ public void startupFullTakeStoreOrderPakout(StockOutParam param, Long userId) {
+ if (Cools.isEmpty(param) || Cools.isEmpty(param.getLocDetls())){
+ throw new CoolException("鍙傛暟涓虹┖");
+ }
+ if (Cools.isEmpty(param.getOrderNo())){
+ throw new CoolException("璁㈠崟鍙峰弬鏁颁负绌�");
+ }
+ DocType docType = docTypeService.selectOrAdd(param.getOrderName(), Boolean.FALSE);
+ OrderPakout order = orderPakoutService.selectByNo(param.getOrderNo());
+ if (Cools.isEmpty(order)){
+ Date now = new Date();
+ order = new OrderPakout(
+ String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ param.getOrderNo(), // 璁㈠崟缂栧彿
+ DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
+ docType.getDocId(), // 鍗曟嵁绫诲瀷
+ null, // 椤圭洰缂栧彿
+ null, //
+ null, // 璋冩嫧椤圭洰缂栧彿
+ null, // 鍒濆绁ㄦ嵁鍙�
+ null, // 绁ㄦ嵁鍙�
+ null, // 瀹㈡埛缂栧彿
+ param.getCstmrName(), // 瀹㈡埛
+ null, // 鑱旂郴鏂瑰紡
+ null, // 鎿嶄綔浜哄憳
+ null, // 鍚堣閲戦
+ null, // 浼樻儬鐜�
+ null, // 浼樻儬閲戦
+ null, // 閿�鍞垨閲囪喘璐圭敤鍚堣
+ null, // 瀹炰粯閲戦
+ null, // 浠樻绫诲瀷
+ null, // 涓氬姟鍛�
+ null, // 缁撶畻澶╂暟
+ null, // 閭垂鏀粯绫诲瀷
+ null, // 閭垂
+ null, // 浠樻鏃堕棿
+ null, // 鍙戣揣鏃堕棿
+ null, // 鐗╂祦鍚嶇О
+ null, // 鐗╂祦鍗曞彿
+ 1L, // 璁㈠崟鐘舵��
+ 1, // 鐘舵��
+ userId, // 娣诲姞浜哄憳
+ now, // 娣诲姞鏃堕棿
+ userId, // 淇敼浜哄憳
+ now, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!orderPakoutService.insert(order)) {
+ throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触");
+ }
+ // 鍗曟嵁鏄庣粏妗�
+ List<DetlDto> list = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
+ int i=0;
+ for (StockOutParam.LocDetl locDetl : locDetls) {
+ i++;
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(locDetl.getMatnr() + "鐗╂枡缂栫爜妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+ }
+ OrderDetlPakout orderDetl = new OrderDetlPakout();
+ orderDetl.sync(mat);
+ orderDetl.setSuppCode(String.valueOf(i)); // 琛屽彿
+ orderDetl.setManu(locDetl.getLocNo()); //搴撲綅鍙�
+ orderDetl.setBatch(locDetl.getBatch()); //鏈ㄧ缂栫爜
+ orderDetl.setAnfme(locDetl.getAnfme());//鍑哄簱鏁伴噺
+ orderDetl.setModel(locDetl.getModel());//鎵规
+ orderDetl.setSpecs(locDetl.getSpecs());//瑙勬牸
+ orderDetl.setBrand(locDetl.getBrand());//鏈ㄧ绫诲瀷
+ orderDetl.setBarcode(locDetl.getZpallet());//鏈ㄧ绫诲瀷
+ orderDetl.setDanger(locDetl.getDanger());//鏈ㄧ绫诲瀷
+ orderDetl.setWeight(locDetl.getWeight());
+// orderDetl.setWorkQty(locDetl.getAnfme());
+ orderDetl.setWorkQty(0.0);
+ orderDetl.setOrderId(order.getId());
+ orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setOrigin(locDetl.getOrigin());
+ orderDetl.setCreateBy(userId);
+ orderDetl.setCreateTime(now);
+ orderDetl.setUpdateBy(userId);
+ orderDetl.setUpdateTime(now);
+ orderDetl.setStatus(1);
+ orderDetl.setQty(0.0D);
+ orderDetl.setMemo(locDetl.getMemo());
+ if (!orderDetlPakoutService.insert(orderDetl)) {
+ throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+
+// List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassification(param);
+// for (StockOutParam stockOutParam : stockOutParams){
+// startupFullTakeStore(stockOutParam,userId);
+// }
+
+ } else {
+ throw new CoolException("璁㈠崟鍙烽噸澶嶏紝璁㈠崟"+param.getOrderNo()+"宸插瓨鍦紒锛侊紒");
+ }
+
+ }
+
+ @Override
+ @Transactional
public void startupFullTakeStoreOrderGift(StockOutParam param, Long userId) {
if (Cools.isEmpty(param) || Cools.isEmpty(param.getLocDetls())){
throw new CoolException("鍙傛暟涓虹┖");
diff --git a/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java b/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
index 3c2aa8a..fb1cdd0 100644
--- a/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
@@ -7,6 +7,7 @@
import com.core.common.SpringUtils;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.param.OrderOutLocBoxCsUtilParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
@@ -15,6 +16,7 @@
import com.zy.common.properties.SlaveProperties;
import com.zy.system.entity.OperateLog;
import com.zy.system.service.OperateLogService;
+import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.Date;
@@ -78,7 +80,166 @@
}
- public R setOrderOutBatch(List<String[]> OutLocBoxCs) {
+ public R setOrderOutBatch(List<OrderOutLocBoxCsUtilParam> OutLocBoxCs) {
+ int total = OutLocBoxCs.size();
+ if (!Cools.isEmpty(OutLocBoxCs) && !OutLocBoxCs.isEmpty()) {
+ LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class);
+ WorkService workService = SpringUtils.getBean(WorkService.class);
+ List<LocDto> locDtos = new ArrayList<>();
+ List<OrderOutLocBoxCsUtilParam> outLocBoxCList = new ArrayList<>();
+ List<String> outLocBoxCNew = new ArrayList<>();
+ List<String> outLocRollListOld = new ArrayList<>();
+ List<String> outLocRollListNew = new ArrayList<>();
+ for (OrderOutLocBoxCsUtilParam outLocBoxC : OutLocBoxCs) {
+ if (!outLocRollListOld.contains(outLocBoxC.getRoll())) {
+ outLocRollListOld.add(outLocBoxC.getRoll());
+ }
+ }
+ for (OrderOutLocBoxCsUtilParam outLocBoxC : OutLocBoxCs) {
+ total--;
+ LocDetl locDetlSou = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC.getBoxNo()).eq("model",outLocBoxC.getRoll()));
+ if (Cools.isEmpty(locDetlSou)) {
+ sign = false;
+ errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC.getBoxNo() + "鍗峰彿锛�" + outLocBoxC.getRoll() + " 鏈煡璇㈠埌鏁版嵁锛侊紒锛併��===]";
+ continue;
+ }
+ if (signDanger){
+ if (!locDetlSou.getDanger$().equals(outLocBoxC.getDanger())) {
+ sign = false;
+ errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC.getBoxNo() + "鍗峰彿锛�" + outLocBoxC.getRoll() + " ==銆嬪嚭搴撹緭鍏ュ緟鍒ょ姸鎬侊細" + outLocBoxC.getDanger() + "銆佸簱瀛樼姸鎬侊細" + locDetlSou.getDanger$() + "銆傜姸鎬佷笉鍖归厤銆�===]";
+ continue;
+ }
+ }
+ if (!outLocBoxCNew.contains(outLocBoxC.getBoxNo())) {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlSou.getLocNo()));
+ if (Cools.isEmpty(locMast)) {
+ sign = false;
+ errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC.getBoxNo() + "鍗峰彿锛�" + outLocBoxC.getRoll() + " 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�" + "銆�===]";
+ continue;
+ }
+ if (!locMast.getLocSts().equals("F")) {
+ sign = false;
+ errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC.getBoxNo() + "鍗峰彿锛�" + outLocBoxC.getRoll() + " 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$() + "銆�===]";
+ continue;
+ }
+
+ // 鐩爣搴撲綅 ===>> 娴呭簱浣�
+ if (Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
+ String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast.getLocNo());
+ LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc));
+ if (!Cools.isEmpty(locMast2)) {
+ if (locMast2.getLocSts().equals("P") || locMast2.getLocSts().equals("R")) {
+ errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC.getBoxNo() + "鍗峰彿锛�" + outLocBoxC.getRoll() + " 鎵�鍦ㄥ簱浣嶆弧瓒冲嚭搴撴潯浠讹紒锛侊紒浣嗘槸鐩搁偦搴撲綅鍦ㄥ嚭搴撲腑锛侊紒锛佸洜姝や細澶规潅鍦ㄥ墠杈硅鍗曟墽琛岋紒锛侊紒" + "銆�===]";
+ }
+ }
+ }
+ }
+ if (sign && !outLocRollListNew.contains(outLocBoxC.getRoll())) {
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+ .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin()));
+ for (LocDetl locDetl : locDetls) {
+ if (!outLocRollListNew.contains(locDetl.getModel())){
+ if (!outLocRollListOld.contains(locDetl.getModel())){
+ total++;
+ OrderOutLocBoxCsUtilParam orderOutLocBoxCsUtilParam = new OrderOutLocBoxCsUtilParam(locDetl.getBatch(),locDetl.getModel(), outLocBoxC);
+ orderOutLocBoxCsUtilParam.setMemo("闄勫甫鍑哄簱");
+ orderOutLocBoxCsUtilParam.setDanger(locDetl.getDanger$());
+ outLocBoxCList.add(orderOutLocBoxCsUtilParam);
+ outLocBoxCNew.add(outLocBoxC.getBoxNo());
+ outLocRollListNew.add(outLocBoxC.getRoll());
+ } else {
+ if (locDetlSou.getBatch().equals(locDetl.getBatch()) && locDetlSou.getModel().equals(locDetl.getModel())) {
+ total++;
+ outLocBoxCList.add(outLocBoxC);
+ outLocBoxCNew.add(outLocBoxC.getBoxNo());
+ outLocRollListNew.add(outLocBoxC.getRoll());
+ }
+ }
+ }
+ }
+ }
+ }
+ for (OrderOutLocBoxCsUtilParam outLocBoxC : outLocBoxCList) {
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC.getBoxNo()).eq("model", outLocBoxC.getRoll()));
+ if (Cools.isEmpty(locDetl)) {
+ total--;
+ continue;
+ }
+
+ if (!Cools.isEmpty(Mono.just(outLocBoxC.getMemo()))) {
+ String memo = Cools.isEmpty(locDetl.getMemo()) ? "" : locDetl.getMemo() + "锛�";
+ locDetl.setMemo(memo + DateUtils.convert(new Date(), DateUtils.yyyyMMdd_C) + "澶囨敞锛�" + outLocBoxC.getMemo());
+ } else if (Cools.isEmpty(locDetl.getMemo())) {
+ locDetl.setMemo(outLocBoxC.getMemo());
+ }
+ LocDto locDto = new LocDto(locDetl);
+ locDtos.add(locDto);
+ }
+
+ StockOutParam param = new StockOutParam();
+ ArrayList<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+ List<LocDto> locDtosList = new ArrayList<>();
+ List<String> batchList = new ArrayList<>();
+ for (LocDto locDto : locDtos) {
+ if (!batchList.contains(locDto.getBatch())) {
+ batchList.add(locDto.getBatch());
+ locDtosList.add(locDto);
+ }
+ }
+ for (LocDto locDto : locDtosList) {
+ StockOutParam.LocDetl locDetl = new StockOutParam.LocDetl();
+ locDetl.setBrand(locDto.getBrand());
+ locDetl.setLocNo(locDto.getLocNo());
+ locDetl.setAnfme(locDto.getAnfme());
+ locDetl.setMatnr(locDto.getMatnr());
+ locDetl.setBatch(locDto.getBatch());
+ locDetl.setModel(locDto.getModel());
+ locDetl.setSpecs(locDto.getSpecs());
+ locDetl.setZpallet(locDto.getZpallet());
+ locDetl.setOrigin(locDto.getOrigin());
+ locDetl.setWeight(locDto.getWeight());
+ locDetl.setMemo(locDto.getMemo());
+ locDetl.setDanger(locDto.getDanger());
+
+ locDetls.add(locDetl);
+ }
+ param.setLocDetls(locDetls);
+ param.setOrderNo(orderOneNo);
+ param.setCstmrName(cstmrName);
+ param.setOrderName(orderName);
+ param.setGroupGoodsNo(groupGoodsNo);
+
+ if (sign && total > 0) {
+ workService.startupFullTakeStoreOrder(param, 9999L);
+ }
+
+ try {
+ OperateLogService operateLogService = SpringUtils.getBean(OperateLogService.class);
+ // 璁板綍鎿嶄綔鏃ュ織
+ OperateLog operateLog = new OperateLog();
+ operateLog.setAction(action);
+ operateLog.setIp(ip);
+ operateLog.setUserId(9999L);
+ operateLog.setRequest("鍗曞彿锛�" + orderOneNo + "銆佸鎴峰悕锛�" + cstmrName);
+ operateLog.setResponse(errorMsgOrderLoc.equals("") ? "姝e父" : (sign && total > 0) ? "鎴愬姛:" + errorMsgOrderLoc : "澶辫触:" + errorMsgOrderLoc);
+ operateLogService.insert(operateLog);
+ } catch (Exception e) {
+ log.error("璁板綍鎿嶄綔鏃ュ織澶辫触锛�" + e.getMessage());
+ }
+
+ }
+
+ log.info("鍑哄簱{}鏉$鍙凤紒", total);
+
+ String requert = errorMsgOrderLoc.equals("") ? "姝e父" : (sign && total > 0) ? "鎴愬姛:" + errorMsgOrderLoc : "澶辫触:" + errorMsgOrderLoc;
+ if (sign && total > 0) {
+ return R.ok(requert.equals("姝e父")? "鎴愬姛":requert);
+ }
+ return R.error(requert);
+ }
+ public R setOrderOutBatchCargoBookingNote(List<String[]> OutLocBoxCs) {
int total = OutLocBoxCs.size();
if (!Cools.isEmpty(OutLocBoxCs) && !OutLocBoxCs.isEmpty()) {
LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
@@ -196,7 +357,7 @@
param.setGroupGoodsNo(groupGoodsNo);
if (sign && total > 0) {
- workService.startupFullTakeStoreOrder(param, 9999L);
+ workService.startupFullTakeStoreOrderPakout(param, 9999L);
}
try {
diff --git a/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java b/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java
index a4e877f..ca2b834 100644
--- a/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java
@@ -300,6 +300,112 @@
return stockOutParams;
}
+ public static List<StockOutParam> OutboundClassificationOrder(StockOutParam param,int staNoOrder){
+ List<StockOutParam> stockOutParams = new ArrayList<>();
+
+ List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
+ List<String> brands = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:locDetls){
+ if (Cools.isEmpty(locDetl.getBrand())){
+ locDetl.setBrand("");
+ }
+ if (!brands.contains(locDetl.getBrand())){
+ brands.add(locDetl.getBrand());
+ }
+ }
+
+ for (String brand : brands){
+ List<StockOutParam.LocDetl> locDetls1 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls2 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls3 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls4 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls5 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls6 = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:locDetls){
+ if (Cools.isEmpty(locDetl.getBrand())){
+ locDetl.setBrand("");
+ }
+ if (locDetl.getBrand().equals(brand)){
+ switch (Utils.getRow(locDetl.getLocNo())){
+ case 1: case 2: case 3: case 4:
+ locDetls1.add(locDetl);
+ break;
+ case 5: case 6: case 7: case 8:
+ locDetls2.add(locDetl);
+ break;
+ case 9: case 10: case 11: case 12:
+ locDetls3.add(locDetl);
+ break;
+ case 13: case 14: case 15: case 16:
+ locDetls4.add(locDetl);
+ break;
+ case 17: case 18: case 19: case 20:
+ locDetls5.add(locDetl);
+ break;
+ case 21: case 22: case 23: case 24:
+ locDetls6.add(locDetl);
+ break;
+ default:
+ }
+ }
+ }
+ ArrayList<List<StockOutParam.LocDetl>> lists = new ArrayList<>();
+ lists.add(locDetls1);
+ lists.add(locDetls2);
+ lists.add(locDetls3);
+ lists.add(locDetls4);
+ lists.add(locDetls5);
+ lists.add(locDetls6);
+
+ int sign = 0;
+ int staA=118;
+ int staB=118;
+ for (List<StockOutParam.LocDetl> locDetlList:lists){
+ sign++;
+ if (locDetlList.size()==0){
+ continue;
+ }
+ if (sign>lists.size()/2) {
+ //120銆�121
+ staA=120;
+ staB=121;
+ }
+ List<StockOutParam.LocDetl> locDetlsA = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetlsB = new ArrayList<>();
+ List<String> locNos = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:locDetlList){
+ if (locDetlsA.size()<locDetlList.size()/2){
+ locDetlsA.add(locDetl);
+ if (!locNos.contains(locDetl.getLocNo())){
+ locNos.add(locDetl.getLocNo());
+ }
+ }else {
+ if (locNos.contains(locDetl.getLocNo())){
+ locDetlsA.add(locDetl);
+ }else {
+ locDetlsB.add(locDetl);
+ }
+ }
+ }
+ if (locDetlsA.size()!=0){
+ StockOutParam stockOutParamA = new StockOutParam();
+ stockOutParamA.setOutSite((Cools.isEmpty(staNoOrder) || staNoOrder==0)? staA : staNoOrder);
+ stockOutParamA.setOrderNo(param.getOrderNo());
+ stockOutParamA.setLocDetls(locDetlsA);
+ stockOutParams.add(stockOutParamA);
+ }
+ if (locDetlsB.size()!=0){
+ StockOutParam stockOutParamB = new StockOutParam();
+ stockOutParamB.setOutSite((Cools.isEmpty(staNoOrder) || staNoOrder==0)? staB : staNoOrder);
+ stockOutParamB.setOrderNo(param.getOrderNo());
+ stockOutParamB.setLocDetls(locDetlsB);
+ stockOutParams.add(stockOutParamB);
+ }
+ }
+ }
+
+ return stockOutParams;
+ }
public static List<StockOutParam> OutboundClassificationNew(StockOutParam param){
List<StockOutParam> stockOutParams = new ArrayList<>();
diff --git a/src/main/java/com/zy/common/config/CoolExceptionHandler.java b/src/main/java/com/zy/common/config/CoolExceptionHandler.java
index b3968a3..21b03bf 100644
--- a/src/main/java/com/zy/common/config/CoolExceptionHandler.java
+++ b/src/main/java/com/zy/common/config/CoolExceptionHandler.java
@@ -2,10 +2,18 @@
import com.core.common.R;
import com.core.exception.CoolException;
+import lombok.Data;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.HandlerMethod;
+
+import java.util.concurrent.atomic.AtomicReference;
/**
* Created by vincent on 2019-06-09
@@ -35,4 +43,20 @@
return R.error(e.getMessage());
}
+ @ExceptionHandler(MethodArgumentNotValidException.class)
+ @ResponseStatus(HttpStatus.UNAUTHORIZED)
+ public R handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) {
+ // 杩斿洖閿欒鍒楄〃
+ BindingResult bindingResult = ex.getBindingResult();
+ final String[] field = {""};
+
+ bindingResult.getFieldErrors().forEach(fieldError -> {
+ String message = fieldError.getDefaultMessage();
+ field[0] = field[0] + message+";";
+ });
+
+ // 鍙傛暟涓虹┖
+ return new R(401, field[0]);
+ }
+
}
--
Gitblit v1.9.1