From 25e1bcba7282b350011950cdf5006e11f1bb9ba5 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 13 一月 2025 20:38:43 +0800
Subject: [PATCH] # 大屏分拣拍灯功能开发

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java                              |    9 +
 zy-asrs-wms/src/main/resources/application.yml                                                |    3 
 zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml                                     |   28 +++-
 zy-asrs-wms/src/main/resources/mapper/asrs/SeedSitesMapper.xml                                |    6 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WaveManagentService.java          |    4 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java               |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java            |   49 ++++++-
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/SeedSite.java                           |   46 ++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WaveManagentController.java     |   37 +++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/SeedSitesServices.java                 |    9 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java |   66 +++++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java            |    9 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java                       |   27 ++-
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/SeedSitesServicesImpl.java        |   12 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/SeedSitesMapper.java                    |   12 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java          |   42 +++++
 16 files changed, 331 insertions(+), 30 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WaveManagentController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WaveManagentController.java
index a79aad7..ce2cf7c 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WaveManagentController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WaveManagentController.java
@@ -43,6 +43,11 @@
     }
 
 
+    /**
+     * 澶у睆鑾峰彇浠诲姟鏄庣粏
+     * @param param
+     * @return
+     */
     @PostMapping("/task/detl/qutify")
     public R getTaskDetlQutify(@RequestBody Map<String, Object> param) {
         if (Objects.isNull(param)) {
@@ -55,6 +60,15 @@
 //        Long matnr = Long.valueOf(taskNo.get("matnr").toString());
 
         return waveManagentService.getTaskDetlQutify(taskNoStr);
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鎾澧欏簱浣嶄俊鎭�
+     * @return
+     */
+    @GetMapping("/seed/locs")
+    public R getSeedLoc() {
+        return waveManagentService.AllSeedLocs();
     }
 
     /***
@@ -73,6 +87,15 @@
      */
     @PostMapping("/sow/review")
     public R reviewSeeds(@RequestBody WaveSeedReviewParam reviewParam) {
+        if (Objects.isNull(reviewParam)) {
+            return R.error("鎾鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(reviewParam.getReviewNum())) {
+            return R.error("鎾鏁伴噺涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(reviewParam.getWaveSeedId())) {
+            return R.error("鎾鏄庣粏鏍囪瘑涓嶈兘涓虹┖锛侊紒");
+        }
         return waveManagentService.reviewSeeds(reviewParam);
     }
 
@@ -89,4 +112,18 @@
              return R.error("鍒犻櫎澶辫触锛侊紒");
          }
     }
+
+    /**
+     * 澶у睆鑾峰彇娉㈡鎵�鏈夎鍗曚俊鎭�
+     * @param waveNo
+     * @return
+     */
+    @GetMapping("/orders/{waveNo}")
+    public R getWaveOrders(@PathVariable String waveNo) {
+        if (StringUtils.isNullOrEmpty(waveNo)) {
+            return R.error("娉㈡缂栫爜涓嶈兘涓虹┖锛侊紒锛�");
+        }
+        return waveManagentService.getAllOrders(waveNo);
+    }
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java
index 9113fb2..0bf1ef7 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.wms.apis.wcs.entity.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -47,4 +48,12 @@
      */
     private Integer stock;
 
+    @TableField(exist = false)
+    private String siteNo;
+
+    /**
+     * 浠诲姟鏄庣粏鏍囪瘑
+     */
+    @TableField(exist = false)
+    private Long taskDetlId;
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
index 17653bd..1a502b0 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
@@ -1,22 +1,32 @@
 package com.zy.asrs.wms.apis.wcs.services.Impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mysql.cj.util.StringUtils;
 import com.zy.asrs.framework.common.R;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.apis.wcs.entity.domain.WaveTaskDetl;
 import com.zy.asrs.wms.apis.wcs.entity.response.SowSeeds;
 import com.zy.asrs.wms.apis.wcs.services.WaveManagentService;
+import com.zy.asrs.wms.asrs.entity.CacheSite;
+import com.zy.asrs.wms.asrs.entity.Order;
+import com.zy.asrs.wms.asrs.entity.OrderDetl;
 import com.zy.asrs.wms.asrs.entity.Task;
 import com.zy.asrs.wms.asrs.entity.dto.LargeScreenTaskDto;
 import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
 import com.zy.asrs.wms.asrs.entity.param.WaveSeedReviewParam;
+import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
+import com.zy.asrs.wms.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.wms.asrs.mapper.OrderMapper;
 import com.zy.asrs.wms.asrs.mapper.TaskMapper;
 import com.zy.asrs.wms.asrs.service.TaskService;
 import com.zy.asrs.wms.asrs.service.WaveSeedService;
+import org.aspectj.weaver.ast.Or;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class WaveManagentServiceImpl implements WaveManagentService {
@@ -25,9 +35,14 @@
 
     @Autowired
     private TaskService taskService;
-
     @Autowired
     private TaskMapper taskMapper;
+    @Autowired
+    private OrderMapper orderMapper;
+    @Autowired
+    private OrderDetlMapper orderDetlMapper;
+    @Autowired
+    private CacheSiteMapper cacheSiteMapper;
 
     @Override
     public R getSowSeeds() {
@@ -72,4 +87,53 @@
         List<WaveTaskDetl> taskDetls = taskMapper.getTaskDetlQutify(taskNo);
         return R.ok(taskDetls);
     }
+
+    /**
+     * 鑾峰彇娉㈡涓嬫墍鏈夎鍗�
+     * @param waveNo
+     * @return
+     */
+    @Override
+    public R getAllOrders(String waveNo) {
+        if (StringUtils.isNullOrEmpty(waveNo)) {
+            throw new CoolException("娉㈡缂栫爜涓嶈兘涓虹┖锛侊紒");
+        }
+        List<Order> orders = orderMapper.selectList(new LambdaQueryWrapper<Order>().eq(Order::getWaveNo, waveNo));
+        if (orders.isEmpty()) {
+            throw new CoolException("褰撳墠娉㈡涓嬫病鏈夎鍗�!!");
+        }
+
+        orders.forEach(order -> {
+            List<OrderDetl> detls = orderDetlMapper.selectList(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
+            if (detls.isEmpty()) {
+                throw new CoolException("璁㈠崟锛�" + order.getOrderNo() + " 娌℃湁鏄庣粏,璇疯仈绯荤鐞嗗憳锛侊紒");
+            }
+            List<OrderDetl> orderDetls = detls.stream().filter(orderDetl -> {
+                return orderDetl.getAnfme() == (orderDetl.getWorkQty() + orderDetl.getQty());
+            }).collect(Collectors.toList());
+
+            if (!orderDetls.isEmpty() && orderDetls.size() == detls.size()) {
+                order.setOrderStatus("宸插畬鎴�");//宸插畬鎴�
+            } else if (orderDetls.size() < detls.size() && orderDetls.size() != 0) {//閮ㄥ垎瀹屾垚
+                order.setOrderStatus("閮ㄥ垎瀹屾垚");
+            } else {//鏈畬鎴�
+                order.setOrderStatus("鏈畬鎴�");
+            }
+        });
+
+        return R.ok(orders);
+    }
+
+    /**
+     * 鑾蜂簡褰撳墠鎾澧欏簱浣嶄俊鎭�
+     * @return
+     */
+    @Override
+    public R AllSeedLocs() {
+        List<CacheSite> cacheSites = cacheSiteMapper.selectList(new LambdaQueryWrapper<CacheSite>());
+        if (cacheSites.isEmpty()) {
+            return R.error("褰撳墠鎾澧欎俊鎭湭璁剧疆锛侊紒");
+        }
+        return R.ok(cacheSites);
+    }
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WaveManagentService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WaveManagentService.java
index 1ad71e5..4239665 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WaveManagentService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WaveManagentService.java
@@ -16,4 +16,8 @@
     R getTaskDetl(String taskNo);
 
     R getTaskDetlQutify(String taskNo);
+
+    R getAllOrders(String waveNo);
+
+    R AllSeedLocs();
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
index 2e8116c..e64f756 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
@@ -115,7 +115,7 @@
         if (StringUtil.isNullOrEmpty(code)) {
             return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
         }
-        List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, code).eq(WaitPakin::getIoStatus, 0));
+        List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, code));
 
         return R.ok(waitPakins);
     }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
index 051eb49..44aada0 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
@@ -141,6 +141,15 @@
     @ApiModelProperty(value= "鏄惁鐢熸垚娉㈡ 1: 鏄�  0: 鍚�  ")
     private Integer hasWave;
 
+    /**
+     * 璁㈠崟鐘舵��
+     * 1. 宸插畬鎴�
+     * 0. 鏈畬鎴�
+     * 2. 閮ㄥ垎瀹屾垚
+     */
+    @TableField(exist = false)
+    private String orderStatus;
+
     public Order() {}
 
     public Order(String orderNo,String orderTime,Long orderType,Long orderSettle,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/SeedSite.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/SeedSite.java
new file mode 100644
index 0000000..72e7653
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/SeedSite.java
@@ -0,0 +1,46 @@
+package com.zy.asrs.wms.asrs.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+@TableName("man_seed_site")
+public class SeedSite implements Serializable {
+
+    @TableId
+    private Long id;
+    /**
+     * 鎷栫洏鐮�
+     */
+    private String barcode;
+    /**
+     * 璁㈠崟缂栧彿
+     */
+    private String orderNo;
+    /**
+     * 鎾绔欑偣缂栫爜
+     */
+    private String siteNo;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+    /**
+     * 淇敼浜�
+     */
+    private String updateBy;
+    /**
+     * 鍒涘缓浜�
+     */
+    private String createBy;
+    /**
+     * 淇敼鏃堕棿
+     */
+    private Date updateTime;
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/SeedSitesMapper.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/SeedSitesMapper.java
new file mode 100644
index 0000000..8944cc0
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/SeedSitesMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wms.asrs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zy.asrs.wms.asrs.entity.SeedSite;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface SeedSitesMapper extends BaseMapper<SeedSite> {
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/SeedSitesServices.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/SeedSitesServices.java
new file mode 100644
index 0000000..2fa87c8
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/SeedSitesServices.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.wms.asrs.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.wms.asrs.entity.SeedSite;
+
+public interface SeedSitesServices extends IService<SeedSite> {
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
index 77f09a9..f078b36 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -1,9 +1,8 @@
 package com.zy.asrs.wms.asrs.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
 import com.zy.asrs.wms.asrs.entity.dto.PickSheetDetlDto;
@@ -11,12 +10,13 @@
 import com.zy.asrs.wms.asrs.entity.enums.OrderType;
 import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam;
 import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
-import com.zy.asrs.wms.asrs.entity.param.PageRequest;
 import com.zy.asrs.wms.asrs.entity.param.PakinOnShelvesParams;
 import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
+import com.zy.asrs.wms.asrs.mapper.SeedSitesMapper;
 import com.zy.asrs.wms.asrs.service.*;
 import com.zy.asrs.wms.system.entity.Host;
 import com.zy.asrs.wms.system.service.HostService;
+import io.netty.util.internal.StringUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -63,6 +63,9 @@
     private WaveDetlService waveDetlService;
     @Autowired
     private CacheSiteMapper cacheSiteMapper;
+
+    @Autowired
+    private SeedSitesMapper seedSitesMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -157,7 +160,7 @@
             locDetl.setLocId(loc.getId());
             locDetl.setMatnr(pakin.getMatnr());
             Mat one = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, pakin.getMatnr()));
-            if (!Objects.isNull(one)) {
+            if (Objects.isNull(one)) {
                 throw new CoolException("褰撳墠鐗╂枡涓嶅瓨鍦紒锛�");
             }
             locDetl.setMatId(one.getId());
@@ -292,6 +295,9 @@
         }
 
         List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, pickSheet.getWaveId()));
+        if (orders.isEmpty()) {
+            throw new CoolException("娉㈡璁㈠崟涓嶅瓨鍦紒锛�");
+        }
         List<Long> list = orders.stream().map(Order::getId).collect(Collectors.toList());
         boolean remove = orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, list));
         if (!remove) {
@@ -304,20 +310,49 @@
         return true;
     }
 
+    /**
+     * 鑾峰彇鎾澧欑珯鐐�
+     * @return
+     */
     @Override
     public List<CacheSite> getSeedLocs() {
         return cacheSiteMapper.selectList(new LambdaQueryWrapper<>());
     }
 
     /**
-     * 璁㈠崟缁戝畾鎾澧�
+     * 璁㈠崟缁戝畾鎾澧欑珯鐐�+
      * @param param
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean bindOrderBySite(Map<String, Object> param) {
-//        return cacheSiteMapper.bindOrderBySite(param);
-        return false;
+        CacheSite siteNo = cacheSiteMapper.selectOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteNo, param.get("siteNo")), false);
+        if (Objects.isNull(siteNo)) {
+            throw new CoolException("绔欑偣寮傚父锛侊紒");
+        }
+        if (param.get("type").equals("bind")) {
+            if (!StringUtil.isNullOrEmpty(siteNo.getOrderNo())) {
+                throw new CoolException("褰撳墠鎾绔欑偣宸茬粦瀹氳鍗曪紒锛�");
+            }
+            Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, param.get("orderNo").toString()));
+            if (Objects.isNull(order)) {
+                throw new CoolException("缁戝畾璁㈠崟涓嶅瓨鍦紒锛�");
+            }
+            siteNo.setOrderNo(order.getOrderNo()).setOrderId(order.getId()).setSiteStatus(CacheSiteStatusType.R.id);
+            if (cacheSiteMapper.updateById(siteNo) < 1) {
+                throw new CoolException("璁㈠崟鎾浣嶇粦瀹氬け璐ワ紒锛�" );
+            }
+        } else {
+            if (StringUtil.isNullOrEmpty(siteNo.getOrderNo())) {
+                throw new CoolException("褰撳墠鎾绔欑偣鏈粦瀹氳鍗曪紒锛�");
+            }
+           siteNo.setOrderId(null).setOrderNo(null).setSiteNo("0");
+            if (cacheSiteMapper.updateById(siteNo) < 1) {
+                throw new CoolException("璁㈠崟涓庢挱绉嶄綅瑙g粦澶辫触锛侊紒" );
+            }
+        }
+        return true;
     }
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/SeedSitesServicesImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/SeedSitesServicesImpl.java
new file mode 100644
index 0000000..3501eec
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/SeedSitesServicesImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wms.asrs.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.wms.asrs.entity.SeedSite;
+import com.zy.asrs.wms.asrs.mapper.SeedSitesMapper;
+import com.zy.asrs.wms.asrs.service.SeedSitesServices;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SeedSitesServicesImpl extends ServiceImpl<SeedSitesMapper, SeedSite> implements SeedSitesServices {
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java
index 3e4a0a5..b7dec62 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java
@@ -4,21 +4,40 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.apis.wcs.entity.response.SowSeeds;
+import com.zy.asrs.wms.asrs.entity.Order;
+import com.zy.asrs.wms.asrs.entity.OrderDetl;
+import com.zy.asrs.wms.asrs.entity.TaskDetl;
 import com.zy.asrs.wms.asrs.entity.param.WaveSeedReviewParam;
+import com.zy.asrs.wms.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.wms.asrs.mapper.OrderMapper;
+import com.zy.asrs.wms.asrs.mapper.TaskDetlMapper;
 import com.zy.asrs.wms.asrs.mapper.WaveSeedMapper;
 import com.zy.asrs.wms.asrs.entity.WaveSeed;
+import com.zy.asrs.wms.asrs.service.OrderDetlService;
 import com.zy.asrs.wms.asrs.service.WaveSeedService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 @Service("waveSeedService")
 public class WaveSeedServiceImpl extends ServiceImpl<WaveSeedMapper, WaveSeed> implements WaveSeedService {
 
+    @Autowired
+    private OrderMapper orderMapper;
+    @Autowired
+    private OrderDetlMapper orderDetlMapper;
+    @Autowired
+    private TaskDetlMapper taskDetlMapper;
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void waveSeedReview(WaveSeedReviewParam param) {
         if (param == null) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
@@ -41,16 +60,37 @@
             throw new CoolException("鎾鏁版嵁涓嶅瓨鍦�");
         }
 
+
+
         Double stock = Optional.of(waveSeed.getAnfme() - waveSeed.getWorkQty()).orElse(0.0D);
         if (stock - param.getReviewNum() < 0) {
             throw new CoolException("鎾鏁伴噺宸叉弧");
         }
-
         waveSeed.setWorkQty(waveSeed.getWorkQty() + param.getReviewNum());
+
+        TaskDetl taskDetl = taskDetlMapper.selectOne(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getId, waveSeed.getTaskDetlId()));
+        if (Objects.isNull(taskDetl)) {
+            throw new CoolException("褰撳墠鎾浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+        if (param.getReviewNum() > taskDetl.getAnfme()) {
+            throw new CoolException("鎷h揣鏁伴噺澶т簬褰撳墠浠诲姟闇�姹傛暟锛�" + taskDetl.getAnfme());
+        }
+
+        OrderDetl orderDetl = orderDetlMapper.selectOne(new LambdaUpdateWrapper<OrderDetl>().eq(OrderDetl::getId, waveSeed.getOrderDetlId()));
+        if (Objects.isNull(orderDetl)) {
+            throw new CoolException("褰撳墠鎾璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+        orderDetl.setWorkQty(orderDetl.getWorkQty() + param.getReviewNum());
+        if (orderDetlMapper.updateById(orderDetl) < 1) {
+            throw new CoolException("璁㈠崟鏄庣粏鏁伴噺鏇存柊澶辫触");
+        }
+
         waveSeed.setUpdateTime(new Date());
         if (!this.updateById(waveSeed)) {
             throw new CoolException("鎾澶嶆牳鏇存柊澶辫触");
         }
+
+
     }
 
     @Override
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
index ae9d121..92e794e 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
@@ -118,14 +118,15 @@
 
                             orderUtils.updateWorkQty(orderDetl.getId(), workQty, true);
 
-                            CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
-                            if (cacheSite == null) {
-                                throw new CoolException("缂撳瓨绔欑┖闂翠笉瀛樺湪");
-                            }
+                            //fixme 鐢熸垚娉㈡鎾鏁版嵁鏃讹紝涓嶈嚜鍔ㄦ坊鍔犵珯鐐圭粦瀹氾紝绔欑偣缁戝畾璋冩暣鑷冲嚭搴撶粦瀹氭挱绉嶅簱浣嶆椂鏇存柊
+//                            CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
+//                            if (cacheSite == null) {
+//                                throw new CoolException("缂撳瓨绔欑┖闂翠笉瀛樺湪");
+//                            }
 
                             WaveSeed waveSeed = new WaveSeed();
-                            waveSeed.setSiteId(cacheSite.getId());
-                            waveSeed.setSiteNo(cacheSite.getSiteNo());
+//                            waveSeed.setSiteId(cacheSite.getId());
+//                            waveSeed.setSiteNo(cacheSite.getSiteNo());
                             waveSeed.setOrderNo(orderDetl.getOrderNo());
                             waveSeed.setOrderId(orderDetl.getOrderId());
                             waveSeed.setOrderDetlId(orderDetl.getId());
@@ -141,13 +142,13 @@
                             if (!waveSeedService.save(waveSeed)) {
                                 throw new CoolException("娉㈡鎾鍒涘缓澶辫触");
                             }
-                            cacheSite.setOrderId(orderDetl.getOrderId());
-                            cacheSite.setOrderNo(orderDetl.getOrderNo());
-                            cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
-                            cacheSite.setUpdateTime(new Date());
-                            if (!cacheSiteService.updateById(cacheSite)) {
-                                throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
-                            }
+//                            cacheSite.setOrderId(orderDetl.getOrderId());
+//                            cacheSite.setOrderNo(orderDetl.getOrderNo());
+//                            cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
+//                            cacheSite.setUpdateTime(new Date());
+//                            if (!cacheSiteService.updateById(cacheSite)) {
+//                                throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
+//                            }
 
                         }
                     }
diff --git a/zy-asrs-wms/src/main/resources/application.yml b/zy-asrs-wms/src/main/resources/application.yml
index 156e996..6f72699 100644
--- a/zy-asrs-wms/src/main/resources/application.yml
+++ b/zy-asrs-wms/src/main/resources/application.yml
@@ -17,6 +17,9 @@
 #    url: jdbc:mysql://127.0.0.1:3306/wms_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
     username: root
     password: 34821015
+#    url: jdbc:mysql://47.76.147.249:3306/wms_dev_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
+#    username: wms_dev_test
+#    password: smjPbTrkmTMEGKaD
 #    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
 #    url: jdbc:sqlserver://47.97.1.152:51433;databasename=jkasrs
 #    username: sa
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/SeedSitesMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/SeedSitesMapper.xml
new file mode 100644
index 0000000..214621c
--- /dev/null
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/SeedSitesMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.wms.asrs.mapper.SeedSitesMapper">
+
+
+</mapper>
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml
index 5db1164..3a0916c 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml
@@ -21,17 +21,31 @@
         </if>
     </select>
     <select id="getTaskDetlQutify" resultType="com.zy.asrs.wms.apis.wcs.entity.domain.WaveTaskDetl">
-        SELECT * FROM (
+        SELECT
+         *
+        FROM
+        (
             SELECT
-                id,matnr,order_no, SUM(anfme) anfme ,wave_no, SUM(work_qty) work_qty, batch, task_detl_id
+                mws.id,
+                mws.matnr,
+                mws.order_no,
+                mws.order_id,
+                SUM( mws.anfme ) anfme,
+                mws.wave_no,
+                SUM( mws.work_qty ) work_qty,
+                mws.batch,
+                mws.task_detl_id ,
+                mcs.site_no
             FROM
-                man_wave_seed
+                man_wave_seed mws LEFT JOIN man_cache_site mcs ON mws.order_id = mcs.order_id
             WHERE
                 task_detl_id IN ( SELECT mtd.id FROM man_task mt INNER JOIN man_task_detl mtd ON mt.id = mtd.task_id
-            <if test="taskNo != null and taskNo != ''">
-                AND mt.task_no = #{taskNo}
-            </if>
-            ) GROUP BY order_no, matnr
+                <if test="taskNo != null and taskNo != ''">
+                    AND mt.task_no = #{taskNo}
+                </if>
+            )
+            GROUP BY
+                order_no, matnr
         ) t
     </select>
     <select id="getTaskIntegrateByTaskNo" resultType="com.zy.asrs.wms.asrs.entity.dto.LargeScreenTaskDto">

--
Gitblit v1.9.1