From ebf0db91e09be33fcbfe97ed5b91965dc2e61dfd Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 01 八月 2024 10:54:26 +0800
Subject: [PATCH] 1. 托盘管理 2. 入库通知档导入功能 3. 工作档明细 新增来源单据类型及单据编号 4. 库存明细统计表 增加一栏ERP数量(需跟ERP确认接口实现方式)。 5. 存货档案、单据管理、库存管理可以支持模糊搜索(各个单据界面)。

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java |  140 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 121 insertions(+), 19 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 92226a3..24df00e 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,6 +3,8 @@
 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;
@@ -21,8 +23,12 @@
 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
@@ -47,6 +53,31 @@
     @Autowired
     private DocTypeService docTypeService;
 
+    @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) {
+            BigDecimal c1 = new BigDecimal(o.getEnableQty()).setScale(2,BigDecimal.ROUND_HALF_UP);
+            o.setAnfme(c1.doubleValue());
+            orderDetls.add(o);
+        }
+        return R.ok(orderDetls);
+    }
+
+    @RequestMapping(value = "/order/list/all")
+    @ManagerAuth
+    public R orderList() {
+        return R.ok(orderService.selectAllorderNo(getHostId()));
+    }
+
+    @RequestMapping(value = "/outOrder/list/all")
+    @ManagerAuth
+    public R orderOutList() {
+        return R.ok(orderService.selectAllOutOrderNo(getHostId()));
+    }
+
     @RequestMapping(value = "/order/{id}/auth")
     @ManagerAuth
     public R get(@PathVariable("id") String id) {
@@ -60,16 +91,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,31 +109,39 @@
     @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"))) {
-            DocType docType = docTypeService.getOne(new LambdaQueryWrapper<DocType>().eq(DocType::getDocName, param.get("docName")));
-            wrapper.eq(Order::getDocType, docType.getDocId());
+            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);
         return R.ok(orderService.page(new Page<>(curr, limit), wrapper));
     }
 
@@ -185,10 +225,12 @@
         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(), hostId);
                 for (LocDetl locDetl : locDetls) {
@@ -210,6 +252,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);
@@ -238,6 +283,7 @@
                 .add("totalQty", totalQty)
                 .add("wrkQty", wrkQty)
                 .add("lackQty", lackQty)
+                .add("endQty",endQty)
         );
     }
 
@@ -300,7 +346,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け璐�");
@@ -315,6 +361,7 @@
                 orderDetl.setUpdateTime(now);
                 orderDetl.setStatus(1);
                 orderDetl.setQty(0.0D);
+                orderDetl.setWorkQty(0.0D);
                 if (!orderDetlService.save(orderDetl)) {
                     throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
                 }
@@ -352,4 +399,59 @@
         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("璁㈠崟淇敼鎴愬姛");
+    }
+
 }

--
Gitblit v1.9.1