From ced2fc10af63b23402352f675f8b1e3c241c42ab Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 10 十一月 2025 11:16:27 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/WorkService.java | 1
src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java | 196 ++++++++++++++++-
src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java | 177 ++++++++++++++++
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 102 +++++++++
src/main/java/com/zy/asrs/entity/param/OrderInspectionRollParam.java | 12 +
src/main/java/com/zy/asrs/task/GroupOrderFormScheduler.java | 75 ++++--
src/main/java/com/zy/asrs/utils/CodeDetectionUtil.java | 90 ++++++++
src/main/webapp/views/orderPakout/order.html | 7
8 files changed, 621 insertions(+), 39 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderInspectionRollParam.java b/src/main/java/com/zy/asrs/entity/param/OrderInspectionRollParam.java
new file mode 100644
index 0000000..a173dd6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/OrderInspectionRollParam.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.entity.param;
+
+public class OrderInspectionRollParam {
+
+ private String batchNo;//鍗峰彿
+
+ public OrderInspectionRollParam() {}
+
+ public OrderInspectionRollParam(String batchNo) {
+ this.batchNo = batchNo;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 169142c..71687dd 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -32,6 +32,7 @@
*/
void startupFullTakeStoreOrder(StockOutParam param, Long userId);
void startupFullTakeStoreOrderPakout(StockOutParam param, Long userId);
+ void startupFullTakeStoreOutGroupOrderForm(StockOutParam param, Long userId);
void startupFullTakeStoreOrderGift(StockOutParam param, Long userId);
/**
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 ef48815..b46c6e9 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -405,6 +405,108 @@
@Override
@Transactional
+ public void startupFullTakeStoreOutGroupOrderForm(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);
+ Order order = orderService.selectByNo(param.getOrderNo());
+ if (Cools.isEmpty(order)){
+ Date now = new Date();
+ order = new Order(
+ String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ param.getOrderNo(), // 璁㈠崟缂栧彿
+ DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
+ docType.getDocId(), // 鍗曟嵁绫诲瀷
+ null, // 椤圭洰缂栧彿
+ param.getGroupGoodsNo(), //缁勮揣鍗曞彿
+ null, // 璋冩嫧椤圭洰缂栧彿
+ null, // 鍒濆绁ㄦ嵁鍙�
+ null, // 绁ㄦ嵁鍙�
+ null, // 瀹㈡埛缂栧彿
+ param.getCstmrName(), // 瀹㈡埛
+ null, // 鑱旂郴鏂瑰紡
+ null, // 鎿嶄綔浜哄憳
+ null, // 鍚堣閲戦
+ null, // 浼樻儬鐜�
+ null, // 浼樻儬閲戦
+ null, // 閿�鍞垨閲囪喘璐圭敤鍚堣
+ null, // 瀹炰粯閲戦
+ null, // 浠樻绫诲瀷
+ null, // 涓氬姟鍛�
+ null, // 缁撶畻澶╂暟
+ null, // 閭垂鏀粯绫诲瀷
+ null, // 閭垂
+ null, // 浠樻鏃堕棿
+ null, // 鍙戣揣鏃堕棿
+ null, // 鐗╂祦鍚嶇О
+ null, // 鐗╂祦鍗曞彿
+ 2L, // 璁㈠崟鐘舵��
+ 1, // 鐘舵��
+ userId, // 娣诲姞浜哄憳
+ now, // 娣诲姞鏃堕棿
+ userId, // 淇敼浜哄憳
+ now, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!orderService.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() + "鐗╂枡缂栫爜妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+ }
+ OrderDetl orderDetl = new OrderDetl();
+ 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 (!orderDetlService.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/task/GroupOrderFormScheduler.java b/src/main/java/com/zy/asrs/task/GroupOrderFormScheduler.java
index f6447b9..d1728ce 100644
--- a/src/main/java/com/zy/asrs/task/GroupOrderFormScheduler.java
+++ b/src/main/java/com/zy/asrs/task/GroupOrderFormScheduler.java
@@ -28,38 +28,61 @@
@Scheduled(cron = "0/5 * * * * ? ")
public void abandonedGroupOrderForm(){
- String erpReport = Parameter.get().getErpReport();
- if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
- List<OrderPakout> orders = orderPakoutService.selectSettle(99L);
- for (OrderPakout order : orders) {
- try{
- ReturnT<String> result = groupOrderFormHandler.abandoned(order);
- if (!result.isSuccess()) {
- log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
- }
- }catch (Exception e){
- log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
- log.error("璁㈠崟"+order+"澶勭悊澶辫触锛屽紓甯镐俊鎭細"+e);
+ List<OrderPakout> orders = orderPakoutService.selectSettle(99L);//搴熷純
+ if (orders.isEmpty()){
+ return;
+ }
+ for (OrderPakout order : orders) {
+ try{
+ ReturnT<String> result = groupOrderFormHandler.abandoned(order);
+ if (!result.isSuccess()) {
+ log.error("璁″垝缁勮揣鍗昜orderNo={}]搴熷純娓呴櫎澶辫触", order.getOrderNo());
}
+ }catch (Exception e){
+ log.error("璁″垝缁勮揣鍗昜orderNo={}]搴熷純娓呴櫎澶辫触", order.getOrderNo());
+ log.error("璁″垝缁勮揣鍗�"+order+"搴熷純娓呴櫎澶辫触锛屽紓甯镐俊鎭細"+e);
}
}
}
- @Scheduled(cron = "0/5 * * * * ? ")
- public void outGroupOrderForm(){
- String erpReport = Parameter.get().getErpReport();
- if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
- List<OrderPakout> orders = orderPakoutService.selectSettle(11L);
- for (OrderPakout order : orders) {
- try{
- ReturnT<String> result = groupOrderFormHandler.start(order);
- if (!result.isSuccess()) {
- log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
- }
- }catch (Exception e){
- log.error("璁″垝缁勮揣鍗昜orderNo={}]鍑哄簱澶辫触", order.getOrderNo());
- log.error("璁㈠崟"+order+"澶勭悊澶辫触锛屽紓甯镐俊鎭細"+e);
+ @Scheduled(cron = "0/30 * * * * ? ")
+ public void inspectionGroupOrderForm(){
+ List<OrderPakout> orders = orderPakoutService.selectSettle(11L);//妫�楠�
+ if (orders.isEmpty()){
+ return;
+ }
+ for (OrderPakout order : orders) {
+ try{
+ ReturnT<String> result = groupOrderFormHandler.inspection(order);
+ if (!result.isSuccess()) {
+ log.error("璁″垝缁勮揣鍗昜orderNo={}]鏌ヨ鍗峰彿瀛樺湪涓嶅悎鏍�", order.getOrderNo());
+ } else {
+ orderPakoutService.updateSettle(order.getId(),12L,0L);//妫�楠屽悎鏍�
}
+ }catch (Exception e){
+ log.error("璁″垝缁勮揣鍗昜orderNo={}]鏌ヨ鍗峰彿澶辫触", order.getOrderNo());
+ log.error("璁″垝缁勮揣鍗�"+order+"鏌ヨ鍗峰彿澶辫触锛屽紓甯镐俊鎭細"+e);
+ }
+ }
+ }
+
+ @Scheduled(cron = "0/10 * * * * ? ")
+ public void outGroupOrderForm(){
+ List<OrderPakout> orders = orderPakoutService.selectSettle(12L);//鍑哄簱
+ if (orders.isEmpty()){
+ return;
+ }
+ for (OrderPakout order : orders) {
+ try{
+ ReturnT<String> result = groupOrderFormHandler.start(order);
+ if (!result.isSuccess()) {
+ log.error("璁″垝缁勮揣鍗昜orderNo={}]妫�楠屽嚭搴撳け璐�", order.getOrderNo());
+ } else {
+ orderPakoutService.updateSettle(order.getId(),15L,0L);//妫�楠屽悎鏍�
+ }
+ }catch (Exception e){
+ log.error("璁″垝缁勮揣鍗昜orderNo={}]妫�楠屽嚭搴撳け璐�", order.getOrderNo());
+ log.error("璁″垝缁勮揣鍗�"+order+"妫�楠屽嚭搴撳け璐ワ紝寮傚父淇℃伅锛�"+e);
}
}
}
diff --git a/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java b/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java
index a3b94c5..4ededa4 100644
--- a/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java
@@ -1,18 +1,30 @@
package com.zy.asrs.task.handler;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.core.common.SnowflakeIdWorker;
import com.zy.asrs.entity.OrderDetlPakout;
import com.zy.asrs.entity.OrderPakout;
-import com.zy.asrs.service.OrderDetlPakoutService;
-import com.zy.asrs.service.OrderDetlService;
-import com.zy.asrs.service.OrderPakoutService;
-import com.zy.asrs.service.OrderService;
+import com.zy.asrs.entity.param.OrderCargoBookingNoteParam;
+import com.zy.asrs.entity.param.OrderInspectionRollParam;
+import com.zy.asrs.entity.param.OrderOutLocBoxCsUtilParam;
+import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.CodeDetectionUtil;
+import com.zy.asrs.utils.OrderOutBatchUtil;
+import com.zy.common.constant.MesConstant;
+import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -23,26 +35,188 @@
@Service
public class GroupOrderFormHandler extends AbstractHandler<String> {
@Autowired
- private OrderService orderService;
- @Autowired
- private OrderDetlService orderDetlService;
- @Autowired
private OrderPakoutService orderPakoutService;
@Autowired
private OrderDetlPakoutService orderDetlPakoutService;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
@Transactional
public ReturnT<String> abandoned(OrderPakout orderPakout) {
List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
-
+ moveBoth(orderPakout,orderDetls);
return SUCCESS;
+ }
+
+ private void moveBoth(OrderPakout order, List<OrderDetlPakout> orderDetls){
+ Date now = new Date();
+ if (!Cools.isEmpty(orderDetls)) {
+ for (OrderDetlPakout orderDetl : orderDetls) {
+ orderDetl.setUpdateBy(0L);
+ orderDetl.setUpdateTime(now);
+// orderDetlPakoutService.addToLogTable(orderDetl);
+ orderDetlPakoutService.delete(new EntityWrapper<OrderDetlPakout>()
+ .eq("id",orderDetl.getId()));
+ }
+ }
+ if (!Cools.isEmpty(order)){
+ order.setUpdateBy(0L);
+ order.setUpdateTime(now);
+// orderPakoutService.addToLogTable(order);
+ orderPakoutService.delete(new EntityWrapper<OrderPakout>()
+ .eq("id",order.getId()));
+ }
+ }
+
+ @Transactional
+ public ReturnT<String> inspection(OrderPakout orderPakout) {
+ List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
+ String memo = "";
+ for (OrderDetlPakout orderDetl : orderDetls) {
+ if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){
+ if (Cools.isEmpty(memo)){
+ memo = "鏃犲簱瀛�";
+ }else {
+ memo = memo+";鏃犲簱瀛�";
+ }
+ continue;
+ }
+ if (Cools.isEmpty(orderDetl.getDanger$()) || orderDetl.getDanger()==1){//鍚堟牸涓嶉渶瑕佹楠�
+ continue;
+ }
+ OrderInspectionRollParam orderInspectionRollParam = new OrderInspectionRollParam(orderDetl.getModel());
+ String response = "";
+ boolean success = false;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.URL)
+ .setPath(MesConstant.PAKIN_URL)
+ .setJson(JSON.toJSONString(orderInspectionRollParam))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ if (jsonObject.getBoolean("state")) {
+ String value = jsonObject.getString("value");
+ if (value.equals("鍚堟牸")){
+ orderDetl.setDanger(1);
+ orderDetlPakoutService.updateById(orderDetl);
+ } else if (value.equals(orderDetl.getDanger$())){
+ if (Cools.isEmpty(memo)){
+ memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }else {
+ memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }
+ continue;
+ } else {
+ if (Cools.isEmpty(memo)){
+ memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }else {
+ memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }
+ if (value.equals("涓嶅悎鏍�")){
+ orderDetl.setDanger(2);
+ orderDetlPakoutService.updateById(orderDetl);
+ }
+ continue;
+ }
+ } else {
+ if (Cools.isEmpty(memo)){
+ memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }else {
+ memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }
+ }
+ success = true;
+ } else {
+ if (Cools.isEmpty(memo)){
+ memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }else {
+ memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ }
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(orderInspectionRollParam), response);
+// throw new CoolException("鏌ヨ鍗峰彿鏄惁鍚堟牸澶辫触");
+ }
+ } catch (Exception e) {
+ if (Cools.isEmpty(memo)){
+ memo = "鏌ヨ鍗峰彿缁撴灉锛�"+"寮傚父"+e.getMessage();
+ }else {
+ memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+"寮傚父"+e.getMessage();
+ }
+ log.error("fail", e);
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+// return FAIL.setMsg(e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鏌ヨ鍗峰彿鏄惁鍚堟牸",
+ MesConstant.URL + MesConstant.PAKIN_URL,
+ null,
+ "127.0.0.1",
+ JSON.toJSONString(orderInspectionRollParam),
+ response,
+ success
+ );
+ } catch (Exception e) { log.error("鏌ヨ鍗峰彿鏄惁鍚堟牸淇濆瓨鎺ュ彛鏃ュ織寮傚父", e); }
+ }
+ }
+ if (Cools.isEmpty(memo)){
+ return SUCCESS;
+ }
+ orderPakout.setSettle(13L);//妫�楠屽瓨鍦ㄤ笉鍚堟牸
+ orderPakout.setMemo(memo);
+ orderPakoutService.updateById(orderPakout);
+ return FAIL;
}
@Transactional
public ReturnT<String> start(OrderPakout orderPakout) {
- List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
+ List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
+ if (orderDetlPakoutList.isEmpty()){
+ orderPakout.setSettle(98L);
+ orderPakout.setMemo("涓嶅瓨鍦ㄦ槑缁嗭紒锛侊紒");
+ orderPakoutService.updateById(orderPakout);
+ return FAIL;
+ }
+ List<OrderOutLocBoxCsUtilParam> outLocBoxCs = new ArrayList<>();
+ String orderNo = "ZH" + snowflakeIdWorker.nextId();
+ for (OrderDetlPakout orderDetl : orderDetlPakoutList) {
+ if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){//鏃犲簱瀛�
+ continue;
+ }
+ if (Cools.isEmpty(orderDetl.getDanger$()) || orderDetl.getDanger()!=1){//涓嶅悎鏍间笉鍑哄簱
+ continue;
+ }
+ OrderOutLocBoxCsUtilParam outLocBox = new OrderOutLocBoxCsUtilParam();
+ outLocBox.setBoxNo(orderDetl.getBatch());
+ outLocBox.setRoll(orderDetl.getModel());
+ outLocBox.setMemo(orderDetl.getMemo());
+ outLocBox.setOrderOneNo(orderNo);
+ outLocBox.setCstmrName(orderPakout.getCstmrName());
+ outLocBox.setDanger(orderDetl.getDanger$());
+ outLocBoxCs.add(outLocBox);
+ }
+ if (outLocBoxCs.isEmpty()){
+ orderPakout.setSettle(98L);
+ orderPakout.setMemo("涓嶅瓨鍦ㄥ悎鏍肩殑鐗╂枡鏄庣粏锛侊紒锛�");
+ orderPakoutService.updateById(orderPakout);
+ return FAIL;
+ }
- return SUCCESS;
+ OrderOutBatchUtil orderOutBatchUtil = new OrderOutBatchUtil(orderNo,orderPakout.getCstmrName(),"","MES涓嬪彂缁勮揣鍗�","缁勮揣鍗�",true,orderPakout.getItemName());
+ R r = orderOutBatchUtil.outGroupOrderForm(outLocBoxCs);
+ int code = Integer.parseInt(String.valueOf(r.get("code")));
+ if (code==200){
+ return SUCCESS;
+ }
+ String meg = String.valueOf(r.get("msg"));
+ orderPakout.setSettle(98L);
+ orderPakout.setMemo(meg);
+ orderPakoutService.updateById(orderPakout);
+ return FAIL;
}
}
diff --git a/src/main/java/com/zy/asrs/utils/CodeDetectionUtil.java b/src/main/java/com/zy/asrs/utils/CodeDetectionUtil.java
new file mode 100644
index 0000000..f8df8bc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/CodeDetectionUtil.java
@@ -0,0 +1,90 @@
+package com.zy.asrs.utils;
+
+import java.util.regex.Pattern;
+
+public class CodeDetectionUtil {
+
+ /**
+ * 妫�娴嬭揣鏋剁爜
+ */
+ public static boolean barcodeDetection(String barcode, int code) {
+ Pattern pattern = Pattern.compile("\\d{" + code + "}");//浣嶆暟瀛�
+ return pattern.matcher(barcode).matches();
+ }
+
+ /**
+ * 妫�娴嬪皬杞﹀湴鐮�
+ */
+ public static boolean carCodeDetection(String carCode) {
+ return carCode.contains("_");
+ }
+
+ /**
+ * 妫�娴嬫暟缁勬渶澶у�煎強鍏剁储寮�
+ */
+ public static int[] crnCodeDetectionMax(int[] arr) {
+ int max = arr[0];
+ int index = 0;
+ for (int i = 0; i < arr.length; i++) {
+ if (arr[i] > max) {
+ max = arr[i];
+ index = i;
+ }
+ }
+ return new int[]{index, max};
+ }
+
+ /**
+ * 妫�娴嬫暟缁勬渶澶у�煎強鍏剁储寮�
+ */
+ public static int[] crnCodeDetectionMaxT(int[] arr,Integer crnNoIndex) {
+ int max = arr[0];
+ if (crnNoIndex == 0){
+ max = arr[1];
+ }
+ int index = 0;
+ for (int i = 0; i < arr.length; i++) {
+ if (crnNoIndex == i){
+ continue;
+ }
+ if (arr[i] > max) {
+ max = arr[i];
+ index = i;
+ }
+ }
+ return new int[]{index, max};
+ }
+
+ /**
+ * 妫�娴嬫暟缁勬渶灏忓�煎強鍏剁储寮�
+ */
+ public static int[] crnCodeDetectionMin(int[] arr) {
+ int min = arr[0];
+ int index = 0;
+ for (int i = 0; i < arr.length; i++) {
+ if (arr[i] < min) {
+ min = arr[i];
+ index = i;
+ }
+ }
+ return new int[]{index, min};
+ }
+
+
+// public static void main(String[] args) {
+// System.out.println("barcodeDetection:" + "22222222===>" + barcodeDetection("22222222", 7));
+// System.out.println("barcodeDetection:" + "222222===>" + barcodeDetection("222222", 7));
+// System.out.println("barcodeDetection:" + "111===>" + barcodeDetection("111", 7));
+// System.out.println("barcodeDetection:" + "DB_123ss===>" + barcodeDetection("DB_123ss", 7));
+// System.out.println("barcodeDetection:" + "12_1231===>" + barcodeDetection("12_1231", 7));
+// System.out.println("barcodeDetection:" + "DB_123456===>" + barcodeDetection("DB_123456", 7));
+//
+// System.out.println("carCodeDetection:" + "22222222===>" + carCodeDetection("22222222"));
+// System.out.println("carCodeDetection:" + "222222===>" + carCodeDetection("222222"));
+// System.out.println("carCodeDetection:" + "111===>" + carCodeDetection("111"));
+// System.out.println("carCodeDetection:" + "DB_123ss===>" + carCodeDetection("DB_123ss"));
+// System.out.println("carCodeDetection:" + "12_1231===>" + carCodeDetection("12_1231"));
+// System.out.println("carCodeDetection:" + "DB_123456===>" + carCodeDetection("DB_123456"));
+// }
+
+}
diff --git a/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java b/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
index f30eab3..c12872c 100644
--- a/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
@@ -415,4 +415,181 @@
}
return R.error(requert);
}
+
+
+ public R outGroupOrderForm(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)) {
+ locDetlSou = new LocDetl();
+ locDetlSou.setBatch(outLocBoxC.getBoxNo());
+ locDetlSou.setModel(outLocBoxC.getRoll());
+ locDetlSou.setLocNo("鏃犲簱瀛�");
+// 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()) && !locDetlSou.getLocNo().equals("鏃犲簱瀛�")) {
+ 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;
+ } else if (!locMast.getLocSts().equals("F")) {
+// sign = false;
+ errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC.getBoxNo() + "鍗峰彿锛�" + outLocBoxC.getRoll() + " 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$() + "銆�===]";
+// continue;
+ } else {
+ // 鐩爣搴撲綅 ===>> 娴呭簱浣�
+ 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()) && !locDetlSou.getLocNo().equals("鏃犲簱瀛�")) {
+ 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());
+ }
+ }
+ }
+ }
+ } else if (sign && !outLocRollListNew.contains(outLocBoxC.getRoll()) && locDetlSou.getLocNo().equals("鏃犲簱瀛�")) {
+ if (!outLocRollListNew.contains(locDetlSou.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;
+ locDetl = new LocDetl();
+ locDetl.setBatch(outLocBoxC.getBoxNo());
+ locDetl.setModel(outLocBoxC.getRoll());
+ locDetl.setLocNo("鏃犲簱瀛�");
+ }
+
+ if (!Cools.isEmpty(outLocBoxC.getMemo())) {
+ if (Cools.isEmpty(locDetl.getMemo())) {
+ locDetl.setMemo(DateUtils.convert(new Date(), DateUtils.yyyyMMdd_C) + "澶囨敞锛�" + outLocBoxC.getMemo());
+ } else {
+ String memo = Cools.isEmpty(locDetl.getMemo()) ? "" : locDetl.getMemo() + "锛�";
+ locDetl.setMemo(memo + DateUtils.convert(new Date(), DateUtils.yyyyMMdd_C) + "澶囨敞锛�" + 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.startupFullTakeStoreOutGroupOrderForm(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);
+ }
}
diff --git a/src/main/webapp/views/orderPakout/order.html b/src/main/webapp/views/orderPakout/order.html
index babd8e0..2a0c422 100644
--- a/src/main/webapp/views/orderPakout/order.html
+++ b/src/main/webapp/views/orderPakout/order.html
@@ -113,10 +113,13 @@
<!-- <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">鍒犻櫎</a>-->
{{# } }}
{{# if (d.settle == 10) { }}
- <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">鍑哄簱</a>
+ <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">妫�楠屽嚭搴�</a>
+ {{# } }}
+ {{# if (d.settle == 13 || d.settle == 98) { }}
+ <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="inspection">鍑哄簱鍚堟牸鍝�</a>
{{# } }}
{{# if (d.settle == 98) { }}
- <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">閲嶆柊鍑哄簱</a>
+ <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">閲嶆柊妫�楠屽嚭搴�</a>
{{# } }}
</script>
<!-- 琛ㄦ牸鎿嶄綔鍒� -->
--
Gitblit v1.9.1