From b0d80cc56a883a6fac242623e778a3ae20c71b79 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 19 十二月 2025 14:59:08 +0800
Subject: [PATCH] #库存预留
---
src/main/java/com/zy/asrs/controller/OrderPakoutController.java | 215 ++++++++++++++++++++++++++++++++++-------------------
1 files changed, 139 insertions(+), 76 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
index 461175e..0165712 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
@@ -15,6 +15,7 @@
import com.zy.common.web.BaseController;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -44,6 +45,8 @@
private WrkMastLogService wrkMastLogService;
@Autowired
private ClientService clientService;
+ @Autowired
+ private InventoryReserveService inventoryReserveService;
@RequestMapping(value = "/order/nav/list/auth")
@ManagerAuth
@@ -76,10 +79,10 @@
@RequestMapping(value = "/order/head/page/auth")
@ManagerAuth
public R head(@RequestParam(defaultValue = "1") Integer curr,
- @RequestParam(defaultValue = "10") Integer limit,
- @RequestParam(required = false) String orderByField,
- @RequestParam(required = false) String orderByType,
- @RequestParam Map<String, Object> param) {
+ @RequestParam(defaultValue = "10") Integer limit,
+ @RequestParam(required = false) String orderByField,
+ @RequestParam(required = false) String orderByType,
+ @RequestParam Map<String, Object> param) {
EntityWrapper<OrderPakout> wrapper = new EntityWrapper<>();
excludeTrash(param);
convert(param, wrapper);
@@ -115,45 +118,45 @@
return R.error("鍗曟嵁缂栧彿宸插瓨鍦�");
}
Client client = clientService.selectOne(new EntityWrapper<Client>().eq("name", param.getCstmrName()));
- if (null == client){
+ if (null == client) {
return R.error("瀹㈡埛涓嶅瓨鍦�");
}
Date now = new Date();
order = new OrderPakout(
- String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
- param.getOrderNo(), // 璁㈠崟缂栧彿
- param.getOrderTime(), // 鍗曟嵁鏃ユ湡
- param.getDocType(), // 鍗曟嵁绫诲瀷
- null, // 椤圭洰缂栧彿
- null, //
- null, // 璋冩嫧椤圭洰缂栧彿
- null, // 鍒濆绁ㄦ嵁鍙�
- null, // 绁ㄦ嵁鍙�
- client.getCode(), // 瀹㈡埛缂栧彿
- client.getName(), // 瀹㈡埛
- null, // 鑱旂郴鏂瑰紡
- null, // 鎿嶄綔浜哄憳
- null, // 鍚堣閲戦
- null, // 浼樻儬鐜�
- null, // 浼樻儬閲戦
- null, // 閿�鍞垨閲囪喘璐圭敤鍚堣
- null, // 瀹炰粯閲戦
- null, // 浠樻绫诲瀷
- null, // 涓氬姟鍛�
- null, // 缁撶畻澶╂暟
- null, // 閭垂鏀粯绫诲瀷
- null, // 閭垂
- null, // 浠樻鏃堕棿
- null, // 鍙戣揣鏃堕棿
- null, // 鐗╂祦鍚嶇О
- null, // 鐗╂祦鍗曞彿
- 1L, // 璁㈠崟鐘舵��
- 1, // 鐘舵��
- getUserId(), // 娣诲姞浜哄憳
- now, // 娣诲姞鏃堕棿
- getUserId(), // 淇敼浜哄憳
- now, // 淇敼鏃堕棿
- null // 澶囨敞
+ String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ param.getOrderNo(), // 璁㈠崟缂栧彿
+ param.getOrderTime(), // 鍗曟嵁鏃ユ湡
+ param.getDocType(), // 鍗曟嵁绫诲瀷
+ null, // 椤圭洰缂栧彿
+ null, //
+ null, // 璋冩嫧椤圭洰缂栧彿
+ null, // 鍒濆绁ㄦ嵁鍙�
+ null, // 绁ㄦ嵁鍙�
+ client.getCode(), // 瀹㈡埛缂栧彿
+ client.getName(), // 瀹㈡埛
+ null, // 鑱旂郴鏂瑰紡
+ null, // 鎿嶄綔浜哄憳
+ null, // 鍚堣閲戦
+ null, // 浼樻儬鐜�
+ null, // 浼樻儬閲戦
+ null, // 閿�鍞垨閲囪喘璐圭敤鍚堣
+ null, // 瀹炰粯閲戦
+ null, // 浠樻绫诲瀷
+ null, // 涓氬姟鍛�
+ null, // 缁撶畻澶╂暟
+ null, // 閭垂鏀粯绫诲瀷
+ null, // 閭垂
+ null, // 浠樻鏃堕棿
+ null, // 鍙戣揣鏃堕棿
+ null, // 鐗╂祦鍚嶇О
+ null, // 鐗╂祦鍗曞彿
+ 1L, // 璁㈠崟鐘舵��
+ 1, // 鐘舵��
+ getUserId(), // 娣诲姞浜哄憳
+ now, // 娣诲姞鏃堕棿
+ getUserId(), // 淇敼浜哄憳
+ now, // 淇敼鏃堕棿
+ null // 澶囨敞
);
if (!orderService.insert(order)) {
throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触");
@@ -164,8 +167,10 @@
orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
if (DetlDto.has(list, dto)) {
- OrderDetlPakout item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBrand(),
- orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
+ OrderDetlPakout item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(),
+ orderDetl.getBatch(), orderDetl.getBrand(),
+ orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
+ orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
if (!orderDetlService.updateById(item)) {
throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
@@ -199,23 +204,26 @@
Date now = new Date();
Long userId = getUserId();
Client client = clientService.selectOne(new EntityWrapper<Client>().eq("name", param.getCstmrName()));
- if (null == client){
+ if (null == client) {
return R.error("瀹㈡埛涓嶅瓨鍦�");
}
+ order.setCstmr(client.getCode());
+ order.setCstmrName(client.getName());
// 淇敼涓绘。
if (!param.getDocType().equals(order.getDocType()) || !param.getOrderTime().equals(order.getOrderTime())) {
- order.setCstmr(client.getCode());
- order.setCstmrName(client.getName());
+
order.setDocType(param.getDocType());
order.setOrderTime(param.getOrderTime());
- order.setUpdateBy(userId);
- order.setUpdateTime(now);
- if (!orderService.updateById(order)) {
- throw new CoolException("淇敼璁㈠崟绫诲瀷澶辫触");
- }
+
}
+ order.setUpdateBy(userId);
+ order.setUpdateTime(now);
+ if (!orderService.updateById(order)) {
+ throw new CoolException("淇敼璁㈠崟绫诲瀷澶辫触");
+ }
+
// 淇敼鏄庣粏妗�
-// List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
+ // List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
// 1.娓呯┖鏄庣粏妗�
if (!orderDetlService.delete(new EntityWrapper<OrderDetlPakout>().eq("order_id", order.getId()))) {
throw new CoolException("娓呯┖璁㈠崟鏄庣粏澶辫触");
@@ -227,7 +235,8 @@
orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
if (DetlDto.has(list, dto)) {
- OrderDetlPakout item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),
+ OrderDetlPakout item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(),
+ orderDetl.getBatch(),
orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
@@ -271,7 +280,8 @@
endQty = endQty + orderDetl.getQty();
double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
if (issued > 0.0) {
- List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrigin(), null);
+ List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getOrigin(), null);
for (LocDetl locDetl : locDetls) {
if (issued > 0) {
issued = issued - locDetl.getAnfme();
@@ -288,11 +298,14 @@
List<WrkTraceVo> wrkTraceVos = new ArrayList<>();
List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNoGroupByMatnrOfSum(order.getOrderNo());
for (WrkDetl wrkDetl : wrkDetls) {
- WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()));
+ WrkMast wrkMast = wrkMastService.selectOne(
+ new EntityWrapper<WrkMast>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()));
if (wrkMast == null) {
- WrkMastLog wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()));
+ WrkMastLog wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>()
+ .eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()));
if (wrkMastLog.getIoType() == 103) {
- wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()).eq("io_type", 53));
+ wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>()
+ .eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()).eq("io_type", 53));
}
if (wrkMastLog != null) {
wrkMast = new WrkMast();
@@ -303,18 +316,21 @@
}
boolean exist = false;
for (WrkTraceVo vo : wrkTraceVos) {
- if (vo.getWrkNo().equals(wrkMast.getWrkNo()) && vo.getIoTimeStr().equals(DateUtils.convert(wrkMast.getIoTime()))) {
+ if (vo.getWrkNo().equals(wrkMast.getWrkNo())
+ && vo.getIoTimeStr().equals(DateUtils.convert(wrkMast.getIoTime()))) {
vo.getWrkDetls().add(wrkDetl);
exist = true;
}
}
if (!exist) {
- WrkTraceVo vo = new WrkTraceVo(wrkMast.getWrkNo(), DateUtils.convert(wrkMast.getIoTime()), wrkMast, wrkDetl);
+ WrkTraceVo vo = new WrkTraceVo(wrkMast.getWrkNo(), DateUtils.convert(wrkMast.getIoTime()), wrkMast,
+ wrkDetl);
wrkTraceVos.add(vo);
}
}
if (!Cools.isEmpty(wrkTraceVos) && wrkTraceVos.size() > 1) {
- wrkTraceVos.sort((o1, o2) -> (int) (o2.getWrkMast().getIoTime().getTime() - o1.getWrkMast().getIoTime().getTime()));
+ wrkTraceVos.sort(
+ (o1, o2) -> (int) (o2.getWrkMast().getIoTime().getTime() - o1.getWrkMast().getIoTime().getTime()));
}
return R.ok().add(Cools
.add("list", wrkTraceVos)
@@ -322,10 +338,8 @@
.add("totalQty", totalQty)
.add("wrkQty", wrkQty)
.add("lackQty", lackQty)
- .add("endQty", endQty)
- );
+ .add("endQty", endQty));
}
-
// ------------------------------------------------------------------------------------------------
@@ -338,10 +352,10 @@
@RequestMapping(value = "/order/list/auth")
@ManagerAuth
public R list(@RequestParam(defaultValue = "1") Integer curr,
- @RequestParam(defaultValue = "10") Integer limit,
- @RequestParam(required = false) String orderByField,
- @RequestParam(required = false) String orderByType,
- @RequestParam Map<String, Object> param) {
+ @RequestParam(defaultValue = "10") Integer limit,
+ @RequestParam(required = false) String orderByField,
+ @RequestParam(required = false) String orderByType,
+ @RequestParam Map<String, Object> param) {
EntityWrapper<OrderPakout> wrapper = new EntityWrapper<>();
excludeTrash(param);
convert(param, wrapper);
@@ -371,10 +385,11 @@
return R.error();
}
- //璁㈠崟瀹岀粨鍓嶏紝鍒ゆ柇鏄惁瀛樺湪浣滀笟涓暟鎹紝瀛樺湪鍒欎笉鑳藉畬缁�
+ // 璁㈠崟瀹岀粨鍓嶏紝鍒ゆ柇鏄惁瀛樺湪浣滀笟涓暟鎹紝瀛樺湪鍒欎笉鑳藉畬缁�
if (order.getSettle() == 4) {
int wrkCount = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", order.getOrderNo()));
- int pakinCount = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("order_no", order.getOrderNo()));
+ int pakinCount = waitPakinService
+ .selectCount(new EntityWrapper<WaitPakin>().eq("order_no", order.getOrderNo()));
if (wrkCount > 0 || pakinCount > 0) {
throw new CoolException("瀛樺湪浣滀笟涓暟鎹紝涓嶈兘瀹岀粨銆傝妫�鏌ュ叆搴撻�氱煡妗e拰宸ヤ綔妗�");
}
@@ -393,14 +408,14 @@
@Transactional
public R delete(@RequestParam Long orderId) {
orderService.remove(orderId);
-// Order order = orderService.selectById(orderId);
-// if (order != null) {
-// order.setStatus(0);
-// }
-// if (!orderService.updateById(order)) {
-// throw new CoolException("鍒犻櫎璁㈠崟澶辫触");
-// }
-// orderDetlService.modifyStatus(orderId, 0);
+ // Order order = orderService.selectById(orderId);
+ // if (order != null) {
+ // order.setStatus(0);
+ // }
+ // if (!orderService.updateById(order)) {
+ // throw new CoolException("鍒犻櫎璁㈠崟澶辫触");
+ // }
+ // orderDetlService.modifyStatus(orderId, 0);
return R.ok();
}
@@ -434,11 +449,59 @@
@RequestMapping(value = "/order/check/column/auth")
@ManagerAuth
public R query(@RequestBody JSONObject param) {
- Wrapper<OrderPakout> wrapper = new EntityWrapper<OrderPakout>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ Wrapper<OrderPakout> wrapper = new EntityWrapper<OrderPakout>().eq(humpToLine(String.valueOf(param.get("key"))),
+ param.get("val"));
if (null != orderService.selectOne(wrapper)) {
return R.parse(BaseRes.REPEAT).add(getComment(OrderPakout.class, String.valueOf(param.get("key"))));
}
return R.ok();
}
+ @RequestMapping(value = "/order/reserve/auth")
+ @ManagerAuth(memo = "璁㈠崟搴撳瓨棰勭暀")
+ @Transactional
+ public R reserve(@RequestParam Long orderId,
+ @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date expireTime) {
+ OrderPakout order = orderService.selectById(orderId);
+ if (order == null) {
+ return R.error("璁㈠崟涓嶅瓨鍦�");
+ }
+ // 妫�鏌ユ槸鍚﹀凡瀛樺湪璇ヨ鍗曠殑棰勭暀璁板綍
+ int existCount = inventoryReserveService.selectCount(
+ new EntityWrapper<InventoryReserve>().eq("order_no", order.getOrderNo()));
+ if (existCount > 0) {
+ return R.error("璇ヨ鍗曞凡瀛樺湪棰勭暀璁板綍锛屼笉鑳介噸澶嶅垱寤�");
+ }
+ // 鏌ヨ璁㈠崟鏄庣粏
+ List<OrderDetlPakout> orderDetls = orderDetlService.selectByOrderId(orderId);
+ if (Cools.isEmpty(orderDetls)) {
+ return R.error("璁㈠崟鏄庣粏涓虹┖");
+ }
+ Date now = new Date();
+ Long userId = getUserId();
+ // 涓烘瘡鏉℃槑缁嗗垱寤哄簱瀛橀鐣欒褰�
+ for (OrderDetlPakout detl : orderDetls) {
+ InventoryReserve reserve = new InventoryReserve();
+ reserve.setMatnr(detl.getMatnr());
+ reserve.setMaktx(detl.getMaktx());
+ reserve.setOrderNo(order.getOrderNo());
+ reserve.setBatch(detl.getBatch());
+ reserve.setQuantity(java.math.BigDecimal.valueOf(detl.getAnfme()));
+ reserve.setExpireTime(expireTime);
+ reserve.setCreateTime(now);
+ reserve.setCreateBy(userId);
+ reserve.setUpdateTime(now);
+ reserve.setUpdateBy(userId);
+ reserve.setBrand(detl.getBrand());
+ reserve.setStandby1(detl.getStandby1());
+ reserve.setStandby2(detl.getStandby2());
+ reserve.setStandby3(detl.getStandby3());
+ reserve.setBoxType1(detl.getBoxType1());
+ reserve.setBoxType2(detl.getBoxType2());
+ reserve.setBoxType3(detl.getBoxType3());
+ inventoryReserveService.insert(reserve);
+ }
+ return R.ok("棰勭暀鎴愬姛锛屽叡鍒涘缓 " + orderDetls.size() + " 鏉¢鐣欒褰�");
+ }
+
}
--
Gitblit v1.9.1