From 07dad0e9ef89346439cfcfb5978b0f1cb8f1b512 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 27 五月 2025 12:31:30 +0800
Subject: [PATCH] 新增PDA并板操作

---
 src/main/java/com/zy/asrs/service/OrderService.java                    |    2 
 src/main/java/com/zy/asrs/service/LocDetlService.java                  |    4 
 src/main/java/com/zy/asrs/entity/param/PickMergeDto.java               |   17 +
 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java         |   16 +
 src/main/java/com/zy/asrs/controller/MobileController.java             |  167 +++++++++++++
 src/main/java/com/zy/common/model/LocDto.java                          |   28 ++
 src/main/resources/mapper/AdjDetlMapper.xml                            |    1 
 src/main/java/com/zy/asrs/entity/param/WarehouseOutPickMergeParam.java |   21 +
 src/main/java/com/zy/asrs/entity/param/PickMergeOrderDto.java          |   16 +
 src/main/java/com/zy/asrs/service/OrderDetlService.java                |    2 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java           |   26 ++
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java       |   28 ++
 src/main/webapp/static/js/adjDetl/adjDetl.js                           |    3 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java          |  246 +++++++++++++++++++
 src/main/java/com/zy/asrs/entity/param/PickMatParam.java               |   33 ++
 src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java          |    8 
 src/main/java/com/zy/asrs/entity/AdjDetl.java                          |   50 ++++
 src/main/resources/application.yml                                     |    4 
 src/main/java/com/zy/asrs/service/MobileService.java                   |    3 
 19 files changed, 661 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index bc16861..c3ea41f 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -8,10 +8,7 @@
 import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.GDYKConfirmGoodsParam;
-import com.zy.asrs.entity.param.MobileAdjustParam;
-import com.zy.asrs.entity.param.OffSaleParam;
+import com.zy.asrs.entity.param.*;
 import com.zy.asrs.entity.result.MobileAdjustResult;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
@@ -23,6 +20,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -472,5 +470,166 @@
         return R.ok().add(vos);
     }
 
+    //------------------------------------------------------------------------------------------------------------------------------------------------骞舵澘鍔熻兘鏂板---------------------------------------------------------------------------------------------
+
+    /**
+     * 鏂板鎷f枡閫斾腑骞舵澘鍔熻兘
+     */
+    @RequestMapping("/barcode/list/pick")
+    @ManagerAuth(memo = "鎷f枡鍏ュ簱閫斾腑骞舵澘")
+    @Transactional
+    public R orderOutListOrderPick(@RequestBody String barcode) {
+        ArrayList<WrkMast> wrkMastArrayList = new ArrayList<>();
+        if (Cools.isEmpty(barcode) || barcode.isEmpty()) {
+            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                    .eq("wrk_sts", 14L)
+                    .eq("io_type", 103));
+            wrkMastArrayList.addAll(wrkMasts);
+        } else {
+            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                    .like("barcode", barcode)
+                    .eq("wrk_sts", 14L)
+                    .eq("io_type", 103));
+            wrkMastArrayList.addAll(wrkMasts);
+        }
+
+        return R.ok().add(wrkMastArrayList);
+    }
+    @RequestMapping("/pick/mat/list")
+    @ManagerAuth(memo = "鑾峰彇骞舵澘鐗╂枡")
+    public R pickMats(@RequestParam(required = false) String matnr, @RequestParam(required = false) String orderNo) {
+        List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        ArrayList<Long> typeList = new ArrayList<>();
+        for (DocType docType : docTypes) {
+            typeList.add(docType.getDocId());
+        }
+
+        EntityWrapper<Order> wrapper = new EntityWrapper<>();
+        wrapper.eq("status", 1);
+        wrapper.in("doc_type", typeList);
+        List<Order> orders = orderService.selectList(wrapper);
+
+        ArrayList<Long> orderIds = new ArrayList<>();
+        for (Order order : orders) {
+            orderIds.add(order.getId());
+        }
+
+        //鎼滅储鏄庣粏
+        EntityWrapper<OrderDetl> wrapper1 = new EntityWrapper<>();
+        wrapper1.eq("status", 1);
+        wrapper1.in("order_id", orderIds);
+        wrapper1.orderBy("create_time", false);
+        if (!Cools.isEmpty(matnr)) {
+            wrapper1.like("matnr", matnr);
+        }
+        if (!Cools.isEmpty(orderNo)) {
+            wrapper1.like("order_no", orderNo);
+        }
+        List<OrderDetl> list = orderDetlService.selectList(wrapper1);
+
+        ArrayList<PickMatParam> maps = new ArrayList<>();
+        for (OrderDetl orderDetl : list) {
+            //鍓╀綑鍙敤鏁伴噺
+            double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+            if (count <= 0) {
+                continue;
+            }
+
+            PickMatParam matParam = new PickMatParam();
+            matParam.setMatnr(orderDetl.getMatnr());
+            matParam.setMaktx(orderDetl.getMaktx());
+            matParam.setBatch(orderDetl.getBatch());
+            matParam.setOrderNo(orderDetl.getOrderNo());
+            matParam.setOrderId(orderDetl.getOrderId());
+            matParam.setCount(count);
+            matParam.setUseCount(count);
+            ////"outOrderNo", "luHao", "packing", "sPgNO", "proType","color"};
+            matParam.setOutOrderNo(orderDetl.getOutOrderNo());
+            matParam.setLuHao(orderDetl.getLuHao());
+            matParam.setPacking(orderDetl.getPacking());
+            matParam.setProType(orderDetl.getProType());
+            matParam.setSPgNO(orderDetl.getSPgNO());
+            matParam.setColor(orderDetl.getColor());
+            maps.add(matParam);
+        }
+        return R.ok().add(maps);
+    }
+
+    @RequestMapping(value = "/order/list/orderNo")
+    public R orderListorderNo(@RequestParam String orderNo) {
+        //鏁伴噺淇敼鎴愪负瀹屾垚鏁伴噺
+        List<OrderDetl> orderDetl1 = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("orderNo", 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());
+            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());
+    }
+
+    @RequestMapping(value = "/orderDetl/forOrderNo/mergePakin/v1")
+    @ManagerAuth
+    public R forOrderNoMergePakinV1(@RequestParam String orderNo) {
+        List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        ArrayList<Long> docTypeIds = new ArrayList<>();
+        for (DocType docType : docTypes) {
+            docTypeIds.add(docType.getDocId());
+        }
+
+        if (docTypeIds.isEmpty()) {
+            return R.error("鍗曟嵁绫诲瀷涓嶅瓨鍦�");
+        }
+
+        List<Order> orders = orderService.selectList(new EntityWrapper<Order>().in("doc_type", docTypeIds).in("settle", 0, 1, 2));
+        if (orders.isEmpty()) {
+            return R.error("鏈煡璇㈠埌璁㈠崟");
+        }
+
+        ArrayList<Long> orderIds = new ArrayList<>();
+        for (Order order : orders) {
+            orderIds.add(order.getId());
+        }
+
+        List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
+                .in("order_id", orderIds)
+                .like("order_no", orderNo)
+        );
+        if (Cools.isEmpty(orderDetlList)){
+            return R.error("鏈煡璇㈠埌姝よ鍗曟鐗╂枡鏁版嵁");
+        }
+
+        ArrayList<OrderDetl> orderDetls = new ArrayList<>();
+        for(OrderDetl orderDetl:orderDetlList){
+            double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+            if (count <= 0D) {
+                continue;
+            }
+            orderDetl.setAnfme(count);
+            orderDetls.add(orderDetl);
+        }
+        return R.ok(orderDetls);
+    }
+
+    /**
+     * 鎷f枡閫斾腑骞舵澘
+     *
+     * @param param
+     * @return
+     */
+    @RequestMapping("/pda/WarehouseOutPickMerge/v1")
+    @ManagerAuth
+    public R WarehouseOutPickMergeV1(@RequestBody WarehouseOutPickMergeParam param) {
+        return mobileService.WarehouseOutPickMergeV1(param,getUserId());
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/AdjDetl.java b/src/main/java/com/zy/asrs/entity/AdjDetl.java
index e6a3cc0..b1042a4 100644
--- a/src/main/java/com/zy/asrs/entity/AdjDetl.java
+++ b/src/main/java/com/zy/asrs/entity/AdjDetl.java
@@ -132,6 +132,21 @@
     @TableField("appe_time")
     private Date appeTime;
 
+    /**
+     * 璁㈠崟鍙�
+     */
+    @ApiModelProperty(value= "璁㈠崟鍙�")
+    @TableField("order_no")
+    private String orderNo;
+
+    /**
+     * 鎵╁厖
+     * "outOrderNo", "luHao", "packing", "sPgNO", "proType","color"};
+     */
+    @ApiModelProperty(value= "鎵╁厖")
+    @TableField("expand")
+    private String expand;
+
     public AdjDetl() {}
 
     public AdjDetl(String locNo, String matnr, String batch, Double oriCtns, Double oriQty, Double oriWt, Double adjCtns, Double adjQty, Double adjWt, String memo, Long modiUser, Date modiTime, Long appeUser, Date appeTime) {
@@ -201,5 +216,40 @@
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
     }
+    //"outOrderNo", "luHao", "packing", "sPgNO", "proType","color"};
+    public String setExpand(LocDetl locDetl){
+        if (Cools.isEmpty(locDetl.getOutOrderNo())){
+            this.expand = " "+"_";
+        }else {
+            this.expand = locDetl.getOutOrderNo()+"_";
+        }
+        if (Cools.isEmpty(locDetl.getLuHao())){
+            this.expand = this.expand+" "+"_";
+        }else {
+            this.expand = this.expand+locDetl.getLuHao()+"_";
+        }
+        if (Cools.isEmpty(locDetl.getPacking())){
+            this.expand = this.expand+" "+"_";
+        }else {
+            this.expand = this.expand+locDetl.getPacking()+"_";
+        }
+        if (Cools.isEmpty(locDetl.getSPgNO())){
+            this.expand = this.expand+" "+"_";
+        }else {
+            this.expand = this.expand+locDetl.getSPgNO()+"_";
+        }
+        if (Cools.isEmpty(locDetl.getProType())){
+            this.expand = this.expand+" "+"_";
+        }else {
+            this.expand = this.expand+locDetl.getProType()+"_";
+        }
+        if (Cools.isEmpty(locDetl.getColor())){
+            this.expand = this.expand+" "+"_";
+        }else {
+            this.expand = this.expand+locDetl.getColor()+"_";
+        }
+
+        return this.expand;
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/param/PickMatParam.java b/src/main/java/com/zy/asrs/entity/param/PickMatParam.java
new file mode 100644
index 0000000..885f307
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PickMatParam.java
@@ -0,0 +1,33 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class PickMatParam {
+
+    private String matnr;
+    private String maktx;
+
+    private String batch;
+
+    private String orderNo;
+
+    private Long orderId;
+
+    private Double count;
+
+    private Double useCount;
+    ////"outOrderNo", "luHao", "packing", "sPgNO", "proType","color"};
+    private  String outOrderNo;
+
+    private String luHao;
+
+    private String packing;
+
+    private String sPgNO;
+
+    private String proType;
+
+    private String color;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/PickMergeDto.java b/src/main/java/com/zy/asrs/entity/param/PickMergeDto.java
new file mode 100644
index 0000000..412e50e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PickMergeDto.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.entity.param;
+
+import com.zy.asrs.entity.LocDetl;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PickMergeDto {
+
+    private Double originAnfme;
+
+    private LocDetl locDetl;
+
+    private List<PickMergeOrderDto> orders;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/PickMergeOrderDto.java b/src/main/java/com/zy/asrs/entity/param/PickMergeOrderDto.java
new file mode 100644
index 0000000..4b5fcfc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PickMergeOrderDto.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class PickMergeOrderDto {
+
+    private String orderNo;
+
+    private Double anfme;
+
+    public PickMergeOrderDto(String orderNo, Double anfme) {
+        this.orderNo = orderNo;
+        this.anfme = anfme;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/WarehouseOutPickMergeParam.java b/src/main/java/com/zy/asrs/entity/param/WarehouseOutPickMergeParam.java
new file mode 100644
index 0000000..1a65caa
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/WarehouseOutPickMergeParam.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.entity.param;
+
+
+import com.zy.asrs.entity.OrderDetl;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WarehouseOutPickMergeParam {
+
+    // 鍗曟嵁缂栧彿
+    private String orderNo;
+
+    // 搴撲綅缂栧彿
+    private String locNo;
+
+    //缁勬墭鐗╂枡
+    private List<OrderDetl> combMats;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java b/src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java
new file mode 100644
index 0000000..38028c1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+
+@Data
+public class OrderNameListDto {
+    private String order_no;
+}
diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java
index d04a603..f17b8f3 100644
--- a/src/main/java/com/zy/asrs/service/LocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -88,4 +88,8 @@
     List<Map<String, Object>> selectLocDetlUnilateralMoveShuttleMap(Integer crnNo);
 
     List<LocDetl> selectLocDetlUnilateralMoveShuttle(String matnr, String batch, String grade, Integer crnNo);
+    /**
+     * 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鍔犲簱瀛�
+     */
+    boolean updateAnfmeAdd(Double anfme, String locNo, LocDetl locDetl);
 }
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 3b13e61..966b1b5 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -1,12 +1,14 @@
 package com.zy.asrs.service;
 
 import com.alibaba.fastjson.JSONObject;
+import com.core.common.R;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
 import com.zy.asrs.entity.param.OffSaleParam;
+import com.zy.asrs.entity.param.WarehouseOutPickMergeParam;
 
 import java.util.Date;
 
@@ -38,4 +40,5 @@
 
     void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
                   Double curOutQty, Integer ioType, Long userId, Date now);
+    R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index ddee929..c8b98a7 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -54,4 +54,6 @@
     OrderDetl selectItem(LocDto locDto);
 
     OrderDetl selectItem(WrkDetl wrkDetl);
+    boolean increaseWorkQtyByOrderNo(String orderNo, OrderDetl orderDetl, Double workQty);
+    boolean increaseQtyByOrderNo1(String orderNo, OrderDetl orderDetl, Double qty);
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index af6ff2c..ac806be 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -5,6 +5,7 @@
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.result.OrderNameListDto;
 
 import java.util.List;
 
@@ -31,5 +32,6 @@
 
     Order selectOrderMoveStatus();
     Order selectOrderMoveStatusInitial();
+    public List<OrderNameListDto> selectAllorderNo();
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index c22d465..6756c06 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -71,6 +71,20 @@
     }
 
     @Override
+    public boolean updateAnfmeAdd(Double anfme, String locNo, LocDetl locDetl) {
+        List<LocDetl> locDetls = this.baseMapper.selectItem3(locNo, locDetl.getMatnr());
+        if (locDetls.isEmpty()) {
+            return false;
+        }
+        for (LocDetl locDetl1 : locDetls) {
+            if (MatCompareUtils.compare(locDetl1, locDetl)) {
+                return baseMapper.updateAnfme(anfme, locNo, locDetl) > 0;
+            }
+        }
+        return false;
+    }
+
+    @Override
     public boolean updateLocNo(String newLocNo, String oldLocNo) {
         return baseMapper.updateLocNo(newLocNo, oldLocNo) > 0;
     }
@@ -202,6 +216,8 @@
         return this.baseMapper.selectLocDetlUnilateralMoveShuttleN(matnr, batch, grade);
     }
 
+
+
     @Override
     public LocDetl selectItem(String locNo, WrkDetl wrkDetl) {
         List<LocDetl> locDetls = this.baseMapper.selectItem3(locNo, wrkDetl.getMatnr());
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 0f8a0f9..153765b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -5,25 +5,24 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.MobileAdjustParam;
-import com.zy.asrs.entity.param.OffSaleParam;
+import com.zy.asrs.entity.param.*;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.MatCompareUtils;
 import com.zy.common.model.DetlDto;
+import com.zy.common.model.LocDto;
 import com.zy.common.service.CommonService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
@@ -71,6 +70,8 @@
     private ManLocDetlService manLocDetlService;
     @Autowired
     private ManLocDetlMapper manLocDetlMapper;
+    @Autowired
+    private AdjDetlService adjDetlService;
 
 
     @Override
@@ -630,4 +631,235 @@
             throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+    /**
+     * 鎷f枡閫斾腑骞舵澘鐩存帴鍔犲埌搴撳瓨涓�
+     * @param param
+     * @param userId
+     * @return
+     */
+    @Override
+    @Transactional
+    public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long userId) {
+        //鍒ゆ柇搴撲綅鐘舵��
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
+        if (Cools.isEmpty(locMast)){
+            return R.error("璇ュ簱浣嶄笉瀛樺湪");
+        }
+        if (!locMast.getLocSts().equals("P")){
+            return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",涓嶆弧瓒虫嫞鏂欓�斾腑骞舵澘鏉′欢锛侊紒锛�");
+        }
+
+        HashMap<String, OrderDetl> mapData = new HashMap<>();
+        for (OrderDetl orderDetl : param.getCombMats()) {
+            String key = orderDetl.getMatnr();
+//            private static final String[] sameFields = {"matnr", "batch", "outOrderNo", "luHao", "packing", "sPgNO", "proType","color"};
+            if (!Cools.isEmpty(orderDetl.getBatch())) {
+                key += "_" + orderDetl.getBatch();
+            }
+            if (!Cools.isEmpty(orderDetl.getOutOrderNo())) {
+                key += "_" + orderDetl.getOutOrderNo();
+            }
+            if (!Cools.isEmpty(orderDetl.getLuHao())) {
+                key += "_" + orderDetl.getLuHao();
+            }
+            if (!Cools.isEmpty(orderDetl.getPacking())) {
+                key += "_" + orderDetl.getPacking();
+            }
+            if (!Cools.isEmpty(orderDetl.getSPgNO())) {
+                key += "_" + orderDetl.getSPgNO();
+            }
+            if (!Cools.isEmpty(orderDetl.getProType())) {
+                key += "_" + orderDetl.getProType();
+            }
+            if (!Cools.isEmpty(orderDetl.getColor())) {
+                key += "_" + orderDetl.getColor();
+            }
+
+            OrderDetl value = mapData.get(key);
+            if(value == null){
+                mapData.put(key, orderDetl);
+            }else {
+                value.setAnfme(value.getAnfme() + orderDetl.getAnfme());
+                mapData.put(key, value);
+            }
+        }
+
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
+
+        HashMap<String, PickMergeDto> locData = new HashMap<>();
+        for (LocDetl locDetl : locDetls) {
+            String matKey = locDetl.getMatnr();
+            if (!Cools.isEmpty(locDetl.getBatch())) {
+                matKey += "_" + locDetl.getBatch();
+            }
+            if (!Cools.isEmpty(locDetl.getOutOrderNo())) {
+                matKey += "_" + locDetl.getOutOrderNo();
+            }
+            if (!Cools.isEmpty(locDetl.getLuHao())) {
+                matKey += "_" + locDetl.getLuHao();
+            }
+            if (!Cools.isEmpty(locDetl.getPacking())) {
+                matKey += "_" + locDetl.getPacking();
+            }
+            if (!Cools.isEmpty(locDetl.getSPgNO())) {
+                matKey += "_" + locDetl.getSPgNO();
+            }
+            if (!Cools.isEmpty(locDetl.getProType())) {
+                matKey += "_" + locDetl.getProType();
+            }
+            if (!Cools.isEmpty(locDetl.getColor())) {
+                matKey += "_" + locDetl.getColor();
+            }
+
+            PickMergeDto dto = new PickMergeDto();
+            dto.setOriginAnfme(locDetl.getAnfme());
+            dto.setLocDetl(locDetl);
+            dto.setOrders(new ArrayList<>());
+            locData.put(matKey, dto);
+        }
+
+        for (Map.Entry<String, OrderDetl> entry : mapData.entrySet()) {
+            OrderDetl orderDetl = entry.getValue();
+            LocDetl locDetl = new LocDetl();
+            locDetl.sync(orderDetl);
+            locDetl.setLocNo(param.getLocNo());
+            locDetl.setBarcode(locMast.getBarcode());
+            Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr",locDetl.getMatnr()));
+            locDetl.setMaktx(mat.getMaktx());
+
+            String matKey = locDetl.getMatnr();
+            if (!Cools.isEmpty(locDetl.getBatch())) {
+                matKey += "_" + locDetl.getBatch();
+            }
+            if (!Cools.isEmpty(locDetl.getOutOrderNo())) {
+                matKey += "_" + locDetl.getOutOrderNo();
+            }
+            if (!Cools.isEmpty(locDetl.getLuHao())) {
+                matKey += "_" + locDetl.getLuHao();
+            }
+            if (!Cools.isEmpty(locDetl.getPacking())) {
+                matKey += "_" + locDetl.getPacking();
+            }
+            if (!Cools.isEmpty(locDetl.getSPgNO())) {
+                matKey += "_" + locDetl.getSPgNO();
+            }
+            if (!Cools.isEmpty(locDetl.getProType())) {
+                matKey += "_" + locDetl.getProType();
+            }
+            if (!Cools.isEmpty(locDetl.getColor())) {
+                matKey += "_" + locDetl.getColor();
+            }
+
+
+            PickMergeDto dto = locData.get(matKey);
+            if (dto == null) {
+                ArrayList<PickMergeOrderDto> orders = new ArrayList<>();
+                orders.add(new PickMergeOrderDto(locDetl.getOrderNo(), locDetl.getAnfme()));
+
+                dto = new PickMergeDto();
+                dto.setOriginAnfme(0.0);
+                dto.setLocDetl(locDetl);
+                dto.setOrders(orders);
+
+                locData.put(matKey, dto);
+            }else {
+                LocDetl detl = dto.getLocDetl();
+                List<PickMergeOrderDto> orders = dto.getOrders();
+
+                detl.setAnfme(detl.getAnfme() + locDetl.getAnfme());
+                orders.add(new PickMergeOrderDto(locDetl.getOrderNo(), locDetl.getAnfme()));
+
+                dto.setLocDetl(detl);
+                dto.setOrders(orders);
+
+                locData.put(matKey, dto);
+            }
+        }
+
+
+        for (Map.Entry<String, PickMergeDto> entry : locData.entrySet()) {
+            PickMergeDto dto = entry.getValue();
+
+            Double originAnfme = dto.getOriginAnfme();
+            LocDetl locDetl = dto.getLocDetl();
+            List<PickMergeOrderDto> orders = dto.getOrders();
+
+            Boolean b=false;
+            for (LocDetl detl : locDetls) {
+                b= MatCompareUtils.compare(detl, locDetl);
+                if (b) break;
+            }
+
+            if (b){
+                if (!locDetlService.updateAnfmeAdd(locDetl.getAnfme(),locDetl.getLocNo(),locDetl)) {
+                    throw new CoolException("骞舵澘搴撳瓨鏇存柊澶辫触");
+                }
+            }else {
+                locDetl.setZpallet(locDetl.getBarcode());
+                if (!locDetlService.insert(locDetl)) {
+                    throw new CoolException("骞舵澘搴撳瓨鎻掑叆澶辫触");
+                }
+            }
+
+            if (!orders.isEmpty()){
+                for (PickMergeOrderDto orderDto : orders) {
+                    Order order = orderService.selectByNo(orderDto.getOrderNo());
+                    if (Cools.isEmpty(order)){
+                        continue;
+                    }
+                    if (order.getSettle() == 1){
+                        orderService.updateSettle(order.getId(), 2L, 9527L);
+                    }
+
+
+                    LocDto locDto = new LocDto(locDetl.getOrderNo(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getOutOrderNo(),locDetl.getLuHao(),locDetl.getPacking(),locDetl.getSPgNO(),locDetl.getProType(),locDetl.getColor());
+                    OrderDetl orderDetl = orderDetlService.selectItem(locDto);
+                    if (Cools.isEmpty(orderDetl)){
+                        continue;
+                    }
+                    if (orderDetl.getAnfme() < (orderDetl.getWorkQty() + orderDto.getAnfme())) {
+                        throw new CoolException("骞舵澘鏁伴噺鍑洪敊,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗗苟鏉挎暟閲忎箣鍜岋紒锛侊紒");
+                    }
+                    // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
+                    if (!orderDetlService.increaseWorkQtyByOrderNo(orderDto.getOrderNo(), orderDetl, orderDto.getAnfme())) {
+                        throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
+                    }
+                    // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+                    if (!orderDetlService.increaseQtyByOrderNo1(orderDto.getOrderNo(), orderDetl, orderDto.getAnfme())) {
+                        throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
+                    }
+                    // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+                    orderService.checkComplete(orderDto.getOrderNo());
+
+                    try {
+                        //澶勭悊搴撳瓨淇℃伅
+                        AdjDetl adjDetl = new AdjDetl();
+                        adjDetl.setLocNo(locDetl.getLocNo());
+                        adjDetl.setMatnr(locDetl.getMatnr());
+                        adjDetl.setBatch(locDetl.getBatch());
+                        adjDetl.setOriQty(originAnfme);
+                        adjDetl.setAdjQty(locDetl.getAnfme());
+                        adjDetl.setMemo("鎷f枡閫斾腑骞舵澘");
+                        adjDetl.setModiUser(userId);
+                        adjDetl.setAppeUser(userId);
+                        adjDetl.setAppeTime(new Date());
+                        adjDetl.setModiTime(new Date());
+                        adjDetl.setExpand(locDetl);//瀵规墿鍏呰繘琛屾嫾鎺�
+                        adjDetl.setOrderNo(order.getOrderNo());
+
+                        if (!adjDetlService.save(adjDetl,userId)) {
+                            throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
+                    }
+                }
+            }
+
+
+        }
+        return R.ok();
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 548f49c..da36c49 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -247,4 +247,32 @@
             return null;
         }
     }
+
+    @Override
+    public boolean increaseWorkQtyByOrderNo(String orderNo, OrderDetl orderDetl, Double workQty) {
+        List<OrderDetl> detlList = this.baseMapper.listByOrderNo(orderNo);
+        if (detlList == null || detlList.isEmpty()) {
+            return false;
+        }
+        for (OrderDetl orderDetl1 : detlList) {
+            if (MatCompareUtils.compare(orderDetl1, orderDetl)) {
+                return baseMapper.increaseWorkQty(orderDetl.getId(), workQty) > 0;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public boolean increaseQtyByOrderNo1(String orderNo, OrderDetl orderDetl, Double qty) {
+        List<OrderDetl> detlList = this.baseMapper.listByOrderNo(orderNo);
+        if (detlList == null || detlList.isEmpty()) {
+            return false;
+        }
+        for (OrderDetl orderDetl1 : detlList) {
+            if (MatCompareUtils.compare(orderDetl1, orderDetl)) {
+                return baseMapper.increaseQtyById(orderDetl.getId(), qty) > 0;
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index ca68042..7460f1d 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -5,8 +5,10 @@
 import com.core.common.Cools;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
+import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.result.OrderNameListDto;
 import com.zy.asrs.mapper.OrderDetlMapper;
 import com.zy.asrs.mapper.OrderMapper;
 import com.zy.asrs.service.*;
@@ -14,6 +16,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Slf4j
@@ -32,6 +35,8 @@
     private DocTypeService docTypeService;
     @Autowired
     private WrkDetlService wrkDetlService;
+    @Autowired
+    private OrderService orderService;
 
     @Override
     public Order selectByNo(String orderNo) {
@@ -165,4 +170,25 @@
         return this.baseMapper.selectOrderMoveStatusInitial();
     }
 
+    @Override
+    public List<OrderNameListDto> selectAllorderNo() {
+        List<Order> list = orderService.selectList(new EntityWrapper<Order>().orderBy("create_time"));
+        if (Cools.isEmpty(list)){
+            return null;
+        }
+        ArrayList<OrderNameListDto> orderNameListDtos = new ArrayList<>();
+        for (Order order :list){
+            DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_id", order.getDocType()));
+
+            if (docType.getPakin() == 1){
+                OrderNameListDto orderNameListDto = new OrderNameListDto();
+                orderNameListDto.setOrder_no(order.getOrderNo());
+                orderNameListDtos.add(orderNameListDto);
+            }
+        }
+
+        return orderNameListDtos;
+
+    }
+
 }
diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java
index c059370..85119c6 100644
--- a/src/main/java/com/zy/common/model/LocDto.java
+++ b/src/main/java/com/zy/common/model/LocDto.java
@@ -73,6 +73,34 @@
         this.anfme = anfme;
     }
 
+    public LocDto(String orderNo,String matnr, String batch, String outOrderNo, String luHao, String packing, String sPgNO, String proType, String color) {
+        this.matnr = matnr;
+        this.orderNo = orderNo;
+        if(!Cools.isEmpty(batch)){
+            this.batch = batch;
+        }
+        if(!Cools.isEmpty(outOrderNo)){
+            this.outOrderNo = outOrderNo;
+        }
+        if(!Cools.isEmpty(luHao)){
+            this.luHao = luHao;
+        }
+        if(!Cools.isEmpty(packing)){
+            this.packing = packing;
+        }
+        if(!Cools.isEmpty(sPgNO)){
+            this.sPgNO = sPgNO;
+        }
+        if(!Cools.isEmpty(proType)){
+            this.proType = proType;
+        }
+        if(!Cools.isEmpty(color)){
+            this.color = color;
+        }
+    }
+
+
+
     public String getTitle() {
         return this.matnr + "锛�" + this.maktx + "锛�";
     }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 41805fa..c598475 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 8085
   servlet:
     context-path: /@pom.build.finalName@
 
@@ -10,7 +10,7 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=xgmFlasrs
+    url: jdbc:sqlserver://127.0.0.1:50948;databasename=xgmFlasrs
     username: sa
     password: sa@123
   mvc:
diff --git a/src/main/resources/mapper/AdjDetlMapper.xml b/src/main/resources/mapper/AdjDetlMapper.xml
index 2aafe74..3a3152e 100644
--- a/src/main/resources/mapper/AdjDetlMapper.xml
+++ b/src/main/resources/mapper/AdjDetlMapper.xml
@@ -20,6 +20,7 @@
         <result column="modi_time" property="modiTime" />
         <result column="appe_user" property="appeUser" />
         <result column="appe_time" property="appeTime" />
+        <result column="order_no" property="orderNo" />
 
     </resultMap>
 
diff --git a/src/main/webapp/static/js/adjDetl/adjDetl.js b/src/main/webapp/static/js/adjDetl/adjDetl.js
index 1fe7723..880ee86 100644
--- a/src/main/webapp/static/js/adjDetl/adjDetl.js
+++ b/src/main/webapp/static/js/adjDetl/adjDetl.js
@@ -23,6 +23,7 @@
 //             {field: 'adjId', align: 'center',title: '搴忓彿'}
             {field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
             ,{field: 'matnrOld', align: 'center',title: '鍘熷搧鍙�'}
+            ,{field: 'orderNo', align: 'center',title: '璁㈠崟鍙�'}
             ,{field: 'matnr', align: 'center',title: '褰撳墠鍝佸彿'}
             ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
             // ,{field: 'oriCtns', align: 'center',title: '鍘熺鏁�'}
@@ -31,7 +32,7 @@
             // ,{field: 'adjCtns', align: 'center',title: '鍙樻洿绠辨暟'}
             ,{field: 'adjQty', align: 'center',title: '鍙樻洿鏁伴噺'}
             // ,{field: 'adjWt', align: 'center',title: '鍙樻洿閲嶉噺'}
-            ,{field: 'memo', align: 'center',title: '澶囨敞',hide:true}
+            ,{field: 'memo', align: 'center',title: '鍙樻洿绫诲瀷'}
             ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
             ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
             // ,{field: 'appeUser', align: 'center',title: '鍒涘缓鑰�'}

--
Gitblit v1.9.1