From 469d41fe09ceec3dc5259d01a4060aac1448e09f Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期三, 03 九月 2025 09:59:34 +0800
Subject: [PATCH] 完善订单组托可用数据显示功能
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 213 insertions(+), 18 deletions(-)
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java
index 70f9092..9e808a5 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java
@@ -3,11 +3,14 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.Query;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.common.domain.dto.DetlDto;
import com.zy.asrs.common.domain.dto.WrkTraceVo;
import com.zy.asrs.common.domain.param.OrderDomainParam;
import com.zy.asrs.common.wms.entity.*;
+import com.zy.asrs.common.wms.mapper.OrderDetlMapper;
import com.zy.asrs.common.wms.service.*;
import com.zy.asrs.framework.annotations.ManagerAuth;
import com.zy.asrs.framework.common.Cools;
@@ -17,12 +20,17 @@
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.framework.exception.CoolException;
+import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.net.URLDecoder;
import java.util.*;
@RestController
@@ -46,6 +54,48 @@
private SnowflakeIdWorker snowflakeIdWorker;
@Autowired
private DocTypeService docTypeService;
+ @Autowired
+ private LocInPrintMatService locInPrintMatService;
+ @Autowired
+ private MatService matService;
+
+ @RequestMapping(value = "/order/list/orderNo")
+ public R orderListorderNo(@RequestParam String orderNo) {
+ //鏁伴噺淇敼鎴愪负瀹屾垚鏁伴噺
+ List<OrderDetl> orderDetl1 = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo, orderNo));
+ List<OrderDetl> orderDetls= new ArrayList<OrderDetl>();
+ for (OrderDetl o: orderDetl1) {
+ if (o.getAnfme().equals(0.0)){
+ continue;
+ }
+ orderDetls.add(o);
+ }
+ return R.ok(orderDetls);
+ }
+
+ @RequestMapping(value = "/order/list/all")
+ @ManagerAuth
+ public R orderList() {
+ return R.ok(orderService.selectAllorderNo(getHostId()));
+ }
+
+ @RequestMapping(value = "/order/comb/list/all")
+ @ManagerAuth
+ public R orderListComb() {
+ return R.ok(orderService.selectAllCombOrderNo(getHostId()));
+ }
+
+// @RequestMapping(value = "/outOrder/list/all")
+// @ManagerAuth
+// public R orderOutList() {
+// return R.ok(orderService.selectAllOutOrderNo(getHostId()));
+// }
+
+ @RequestMapping(value = "/outOrder/list/all")
+ @ManagerAuth
+ public R orderOutListOrder(@RequestBody String orderNo) {
+ return R.ok(orderService.selectAllOutOrderNo(orderNo,getHostId()));
+ }
@RequestMapping(value = "/order/{id}/auth")
@ManagerAuth
@@ -60,16 +110,17 @@
@RequestParam(required = false) String condition,
@RequestParam(required = false) String timeRange,
@RequestParam Map<String, Object> param) {
- LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(Order::getHostId, getHostId());
+ QueryWrapper<Order> wrapper = new QueryWrapper<>();
+ wrapper.eq("host_id", getHostId());
if (!Cools.isEmpty(condition)) {
- wrapper.like(Order::getId, condition);
+ wrapper.like("id", condition);
}
if (!Cools.isEmpty(timeRange)) {
String[] range = timeRange.split(RANGE_TIME_LINK);
- wrapper.ge(Order::getCreateTime, DateUtils.convert(range[0]));
- wrapper.le(Order::getCreateTime, DateUtils.convert(range[1]));
+ wrapper.ge("create_time", DateUtils.convert(range[0]));
+ wrapper.le("create_time", DateUtils.convert(range[1]));
}
+ allLike(Order.class, param.keySet(), wrapper, condition);
return R.ok(orderService.page(new Page<>(curr, limit), wrapper));
}
@@ -77,27 +128,40 @@
@ManagerAuth
public R head(@RequestParam(defaultValue = "1")Integer curr,
@RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false) String condition,
@RequestParam(required = false)String orderByField,
@RequestParam(required = false)String orderByType,
- @RequestParam Map<String, Object> param){
- LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
+ @RequestParam Map<String, Object> param) throws UnsupportedEncodingException {
+ if(!Cools.isEmpty(condition)){
+ condition = condition.trim();
+ }
+ QueryWrapper<Order> wrapper = new QueryWrapper<>();
excludeTrash(param);
- wrapper.eq(Order::getStatus, 1);
- wrapper.eq(Order::getHostId, getHostId());
+ wrapper.eq("status", 1);
+ wrapper.eq("host_id", getHostId());
if (!Cools.isEmpty(param.get("order_no"))) {
- wrapper.eq(Order::getOrderNo, param.get("order_no"));
+ wrapper.eq("order_no", param.get("order_no"));
}
if (!Cools.isEmpty(param.get("create_time"))) {
String[] range = param.get("create_time").toString().split(RANGE_TIME_LINK);
- wrapper.ge(Order::getCreateTime, DateUtils.convert(range[0]));
- wrapper.le(Order::getCreateTime, DateUtils.convert(range[1]));
+ wrapper.ge("create_time", DateUtils.convert(range[0]));
+ wrapper.le("create_time", DateUtils.convert(range[1]));
}
if (!Cools.isEmpty(param.get("doc_type"))) {
- wrapper.eq(Order::getDocType, param.get("doc_type"));
+ wrapper.eq("doc_type", param.get("doc_type"));
+ }
+ if (!Cools.isEmpty(param.get("docName"))) {
+ String docName = URLDecoder.decode(param.get("docName").toString(), "UTF-8");
+ DocType docType = docTypeService.getOne(new LambdaQueryWrapper<DocType>().eq(DocType::getDocName, docName));
+ wrapper.eq("doc_type", docType.getDocId());
}
if (!Cools.isEmpty(param.get("settle"))) {
- wrapper.eq(Order::getSettle, param.get("settle"));
+ wrapper.eq("settle", param.get("settle"));
}
+
+ param.remove("order_no");
+ allLike(Order.class, param.keySet(), wrapper, condition);
+ wrapper.orderByDesc("create_time");
return R.ok(orderService.page(new Page<>(curr, limit), wrapper));
}
@@ -134,6 +198,30 @@
}
if (!orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId))) {
throw new CoolException("鍒犻櫎鍗曟嵁鏄庣粏澶辫触");
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/order/dy")
+ @ManagerAuth(memo = "鎵嬪姩鍒犻櫎璁㈠崟")
+ @Transactional
+ public R dy(@RequestParam Long orderId){
+ List<OrderDetl> list = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId));
+ for (OrderDetl orderDetl : list) {
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, orderDetl.getMatnr()));
+ LocInPrintMat locInPrintMat = new LocInPrintMat();
+ locInPrintMat.setMatnr(orderDetl.getMatnr());
+ locInPrintMat.setMaktx(orderDetl.getMaktx());
+ locInPrintMat.setStatus(1);
+ locInPrintMat.setOrderNo(orderDetl.getOrderNo());
+ locInPrintMat.setBatch(orderDetl.getBatch());
+ locInPrintMat.setCreateBy(getUserId());
+ locInPrintMat.setCreateTime(new Date());
+ locInPrintMat.setUpdateTime(new Date());
+ if(!Cools.isEmpty(mat)){
+ locInPrintMat.setDecrees(mat.getDecrees());
+ }
+ locInPrintMatService.save(locInPrintMat);
}
return R.ok();
}
@@ -181,12 +269,14 @@
double totalQty = 0;
double wrkQty = 0;
double lackQty = 0;
+ double endQty = 0;
for (OrderDetl orderDetl : orderDetls) {
totalQty = totalQty + orderDetl.getAnfme();
- wrkQty = wrkQty + orderDetl.getQty();
- double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
+ wrkQty = wrkQty + orderDetl.getWorkQty();
+ 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(), hostId);
for (LocDetl locDetl : locDetls) {
if (issued > 0) {
issued = issued - locDetl.getAnfme();
@@ -206,6 +296,9 @@
WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMast::getIoTime, wrkDetl.getIoTime()));
if (wrkMast == null) {
WrkMastLog wrkMastLog = wrkMastLogService.getOne(new LambdaQueryWrapper<WrkMastLog>().eq(WrkMastLog::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMastLog::getIoTime, wrkDetl.getIoTime()));
+ if (wrkMastLog.getIoType()==103){
+ wrkMastLog = wrkMastLogService.getOne(new LambdaQueryWrapper<WrkMastLog>().eq(WrkMastLog::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMastLog::getIoTime, wrkDetl.getIoTime()).eq(WrkMastLog::getIoType,53));
+ }
if (wrkMastLog != null) {
wrkMast = new WrkMast();
BeanUtils.copyProperties(wrkMastLog, wrkMast);
@@ -234,6 +327,7 @@
.add("totalQty", totalQty)
.add("wrkQty", wrkQty)
.add("lackQty", lackQty)
+ .add("endQty",endQty)
);
}
@@ -296,7 +390,7 @@
for (OrderDetl orderDetl : param.getOrderDetlList()) {
DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
if (DetlDto.has(list, dto)) {
- OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
+ OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(), getHostId());
item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
if (!orderDetlService.updateById(item)) {
throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
@@ -311,6 +405,7 @@
orderDetl.setUpdateTime(now);
orderDetl.setStatus(1);
orderDetl.setQty(0.0D);
+ orderDetl.setWorkQty(0.0D);
if (!orderDetlService.save(orderDetl)) {
throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
}
@@ -348,4 +443,104 @@
return R.ok().add(orders);
}
+ @RequestMapping(value = "/order/form/modify/auth")
+ @ManagerAuth(memo = "鎵嬪姩淇敼璁㈠崟")
+ @Transactional
+ public R formModify(@RequestBody OrderDomainParam param){
+ Order order = orderService.getOne(new LambdaQueryWrapper<Order>()
+ .eq(Order::getId, param.getOrderId())
+ .eq(Order::getHostId, getHostId()));
+ if (order == null || order.getStatus() == 0) {
+ return R.error("璁㈠崟涓嶅瓨鍦�");
+ }
+ Date now = new Date();
+ Long userId = getUserId();
+ // 淇敼涓绘。
+ if (!param.getDocType().equals(order.getDocType())) {
+ order.setDocType(param.getDocType());
+ order.setUpdateBy(userId);
+ order.setUpdateTime(now);
+ if (!orderService.updateById(order)) {
+ throw new CoolException("淇敼璁㈠崟绫诲瀷澶辫触");
+ }
+ }
+ // 淇敼鏄庣粏妗�
+// List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
+ // 1.娓呯┖鏄庣粏妗�
+ if (!orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()))) {
+ throw new CoolException("娓呯┖璁㈠崟鏄庣粏澶辫触");
+ }
+ // 2.閲嶇粍鏁版嵁
+ List<DetlDto> list = new ArrayList<>();
+ for (OrderDetl orderDetl : param.getOrderDetlList()) {
+ DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
+ if (DetlDto.has(list, dto)) {
+ OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(), getHostId());
+ item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
+ if (!orderDetlService.updateById(item)) {
+ throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
+ }
+ } else {
+ list.add(dto);
+ orderDetl.setOrderId(order.getId());
+ orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setCreateBy(getUserId());
+ orderDetl.setCreateTime(now);
+ orderDetl.setUpdateBy(getUserId());
+ orderDetl.setUpdateTime(now);
+ orderDetl.setStatus(1);
+ orderDetl.setQty(0.0D);
+ if (!orderDetlService.save(orderDetl)) {
+ throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
+ }
+ }
+ }
+ return R.ok("璁㈠崟淇敼鎴愬姛");
+ }
+
+ @RequestMapping(value = "/order/export/auth")
+ @ManagerAuth(memo = "璁㈠崟鏄庣粏瀵煎嚭")
+ public synchronized R export(@RequestBody JSONObject param){
+ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ QueryWrapper<OrderDetl> wrapper = new QueryWrapper<>();
+ JSONArray orderNo = param.getJSONArray("orderNo");
+ List<String> orderNoList = new ArrayList<>();
+ for (int i = 0; i < orderNo.size(); i++) {
+ Object o = orderNo.get(i);
+ orderNoList.add(o.toString());
+ }
+ List<OrderDetl> list = orderDetlService.list(new QueryWrapper<OrderDetl>().in("order_no", orderNoList));
+ return R.ok(exportSupport(list, fields));
+ }
+
+ private <T> void convert(Map<String, Object> map, QueryWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ if(Cools.eq(entry.getKey(),"curr")
+ || Cools.eq(entry.getKey(),"limit")
+ || Cools.eq(entry.getKey(),"unreason")
+ || Cools.eq(entry.getKey(),"orderByField")
+ || Cools.eq(entry.getKey(),"orderByType")
+ || Cools.eq(entry.getKey(),"row")
+ || Cools.eq(entry.getKey(),"condition")){
+ continue;
+ }
+
+ if(Cools.isEmpty(entry.getValue())){
+ continue;
+ }
+
+ String val = String.valueOf(entry.getValue());
+ 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]));
+ } else {
+ if (entry.getKey().equals("locNo")) {
+ wrapper.eq("loc_no", String.valueOf(entry.getValue()));
+ } else {
+ wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
+ }
+ }
+ }
+ }
}
--
Gitblit v1.9.1