From bf8b7d7ea57296afdf23968b1811fa631fc54fa3 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期五, 08 五月 2026 17:29:34 +0800
Subject: [PATCH] 形态转换单接口完成,形态转换出库单不上报
---
src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java | 2
src/main/java/com/zy/asrs/controller/OpenController.java | 24 ++++++++
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | 9 ++
src/main/java/com/zy/common/model/DetlDto.java | 3 +
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 119 +++++++++++++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/service/OpenService.java | 6 ++
6 files changed, 161 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 004dd8a..24e121e 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -270,6 +270,30 @@
// }
/**
+ * 娣诲姞褰㈡�佽浆鎹㈠崟
+ */
+ @PostMapping("/order/createFormConversionOrder")
+ @AppAuth(memo = "娣诲姞褰㈡�佽浆鎹㈠崟")
+ public synchronized R createFormConversionOrder(@RequestHeader(required = false) String appkey,
+ @RequestBody OpenOrderPakinParam param,
+ HttpServletRequest request) {
+ auth(appkey, param, request);
+ if (Cools.isEmpty(param)) {
+ return R.parse(BaseRes.PARAM);
+ }
+ if (Cools.isEmpty(param.getOrderNo())) {
+ return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖");
+ }
+ if (Cools.isEmpty(param.getOrderType())) {
+ return R.error("鍗曟嵁绫诲瀷[orderType]涓嶈兘涓虹┖");
+ }
+ if (Cools.isEmpty(param.getOrderDetails())) {
+ return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖");
+ }
+ return openService.createFormConversionOrder(param);
+ }
+
+ /**
* 娣诲姞鍏ュ簱鍗�
*/
@PostMapping("/order/pakin/default/v1")
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 6e85104..c704cfa 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service;
+import com.core.common.R;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
import com.zy.asrs.entity.result.StockVo;
@@ -44,4 +45,9 @@
* @param param
*/
void syncMat(MatSyncParam param);
+
+ /**
+ * 鍒涘缓褰㈡�佽浆鎹㈠崟
+ */
+ R createFormConversionOrder(OpenOrderPakinParam param);
}
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 06fe192..5545bae 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,6 +3,7 @@
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.asrs.entity.*;
@@ -15,6 +16,7 @@
import com.zy.common.model.DetlDto;
import com.zy.common.utils.NodeUtils;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -586,4 +588,121 @@
}
+ @Override
+ public R createFormConversionOrder(OpenOrderPakinParam param) {
+ OrderPakin order = orderPakinService.selectByNo(param.getOrderNo());
+ if (!Cools.isEmpty(order)) {
+ return R.parse(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
+ }
+ DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
+ Date now = new Date();
+ // 鍗曟嵁涓绘。
+ order = new OrderPakin(
+ 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, // 鐘舵��
+ 9527L, // 娣诲姞浜哄憳
+ now, // 娣诲姞鏃堕棿
+ 9527L, // 淇敼浜哄憳
+ now, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!orderPakinService.insert(order)) {
+ throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+
+ // 鍗曟嵁鏄庣粏妗�
+ List<DetlDto> list = new ArrayList<>();
+ List<DetlDto> orderDetails = param.getOrderDetails();
+ 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(),detail.getSku());
+ dto.setManu(detail.getManu());
+ dto.setWorkOrder(detail.getWorkOrder());
+ if (DetlDto.hasLineNumber(list, dto)) {
+ DetlDto detlDto = DetlDto.findLineNumber(list, dto.getMatnr(), dto.getBatch(), dto.getBrand(), dto.getStandby1(), dto.getStandby2(), dto.getStandby3(), dto.getLineNumber(), dto.getBoxType1(), dto.getBoxType2(), dto.getBoxType3(),dto.getSku());
+ assert detlDto != null;
+ detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+ } else {
+ list.add(dto);
+ }
+ }
+ // 娣诲姞褰㈡�佽浆鎹㈠嚭搴撳崟
+ DocType docType2 = docTypeService.selectOrAdd("褰㈡�佽浆鎹㈠嚭搴撳崟", Boolean.FALSE);
+ OrderPakout outOrder = new OrderPakout();
+ BeanUtils.copyProperties(order, outOrder);
+ outOrder.setOrderNo("XTC" + outOrder.getOrderNo());
+ outOrder.setDocType(docType2.getDocId());
+ if (!orderPakoutService.insert(outOrder)) {
+ throw new CoolException("鐢熸垚褰㈡�佽浆鎹㈠嚭搴撳崟澶辫触");
+ }
+
+ for (DetlDto detlDto : list) {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+ }
+ OrderDetlPakin orderDetl = new OrderDetlPakin();
+ orderDetl.sync(mat);
+ orderDetl.setSku(String.valueOf(detlDto.getSku()));
+ orderDetl.setManu(detlDto.getManu());
+ 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(1);
+ if (!orderDetlPakinService.insert(orderDetl)) {
+ throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ // 娣诲姞褰㈡�佽浆鎹㈠嚭搴撳崟鏄庣粏
+ OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
+ BeanUtils.copyProperties(orderDetl, orderDetlPakout);
+ orderDetlPakout.setOrderId(outOrder.getId());
+ orderDetlPakout.setOrderNo(outOrder.getOrderNo());
+ orderDetlPakout.setStandby1(detlDto.getWorkOrder());
+ orderDetlPakout.setPakinPakoutStatus(2);
+ if (!orderDetlPakoutService.insert(orderDetlPakout)) {
+ throw new CoolException("鐢熸垚褰㈡�佽浆鎹㈠嚭搴撳崟鏄庣粏澶辫触");
+ }
+ }
+
+ return R.ok("娣诲姞鎴愬姛");
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index f0c4ba5..8d82982 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -20,6 +20,7 @@
import javax.annotation.Resource;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
/**
* updated by IX in 2024/12/17
@@ -80,7 +81,13 @@
@Async("orderThreadPool")
public void reportOutStockOrders() {
if (loadingConfigTimer.getErpReport()) {
- List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().where("qty > units"));
+ List<OrderPakout> orderPakoutList = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().in("settle", 2, 4));
+ // 鍘婚櫎褰㈡�佽浆鎹㈠嚭搴撳崟涓嶄笂鎶�
+ List<Long> collect = orderPakoutList.stream().filter(orderPakout -> !orderPakout.getDocType$().equals("褰㈡�佽浆鎹㈠嚭搴撳崟")).map(OrderPakout::getId).collect(Collectors.toList());
+ if(collect.isEmpty()){
+ return;
+ }
+ List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().where("qty > units").in("order_id",collect));
if (!orderDetlPakoutList.isEmpty()) {
orderPakoutSyncHandler.reportOutStockOrders(orderDetlPakoutList);
}
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
index 492f520..b9bd12e 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
@@ -110,7 +110,7 @@
List<OrderPakout> orderPakouts = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().where("settle = 4"));
// 浣跨敤 removeIf 绠�鍖栦唬鐮�
- orderPakouts.removeIf(orderPakout -> orderDetlPakoutMapper.selectReportComplete(orderPakout.getId()) == 0);
+ orderPakouts.removeIf(orderPakout -> orderDetlPakoutMapper.selectReportComplete(orderPakout.getId()) == 0 && orderPakout.getDocType$().equals("褰㈡�佽浆鎹㈠嚭搴撳崟"));
// 瀵瑰墿浣欐暟鎹繘琛宻ettle璁剧疆
orderPakouts.forEach(orderPakin -> orderPakin.setSettle(6L));
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index 3908fd5..5a5704b 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -43,6 +43,9 @@
// 浠撳簱
private String manu;
+ // 杞崲鍓嶅伐鍗曞彿
+ private String workOrder;
+
public DetlDto() {
}
--
Gitblit v1.9.1