From 3c577191d6ee0b488074b91c5e9b7d71a8e3d829 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 01 十二月 2025 14:31:51 +0800
Subject: [PATCH] #调整盘点

---
 src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java |  223 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 218 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
index c014d81..618b165 100644
--- a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
@@ -1,16 +1,25 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.R;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.CheckOrderDetl;
-import com.zy.asrs.entity.OrderDetlPakin;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.CheckTaskListParam;
+import com.zy.asrs.enums.CheckStatusEnum;
 import com.zy.asrs.mapper.CheckOrderMapper;
-import com.zy.asrs.entity.CheckOrder;
-import com.zy.asrs.service.CheckOrderDetlService;
-import com.zy.asrs.service.CheckOrderService;
+import com.zy.asrs.service.*;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.common.model.LocDto;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 @Service("checkOrderService")
 public class CheckOrderServiceImpl extends ServiceImpl<CheckOrderMapper, CheckOrder> implements CheckOrderService {
@@ -18,6 +27,21 @@
     @Autowired
     private CheckOrderDetlService checkOrderDetlService;
 
+    @Autowired
+    private LocMastService locMastService;
+
+    @Autowired
+    private LocDetlService locDetlService;
+
+    @Autowired
+    private StaDescService staDescService;
+
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    @Autowired
+    private WrkDetlService wrkDetlService;
+
     @Override
     public void remove(Long orderId) {
         if (this.baseMapper.deleteById(orderId) < 1 ) {
@@ -25,4 +49,193 @@
         }
         checkOrderDetlService.delete(new EntityWrapper<CheckOrderDetl>().eq("order_id", orderId));
     }
+
+    @Override
+    public List<LocDto> preview(Long orderId) {
+        CheckOrder checkOrder = this.baseMapper.selectById(orderId);
+        if (Cools.isEmpty(checkOrder)) {
+            throw new CoolException("鏁版嵁閿欒");
+        }
+
+        List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", orderId));
+        if (Cools.isEmpty(checkOrderDetls)) {
+            throw new CoolException("鑾峰彇鏄庣粏鏁版嵁閿欒");
+        }
+        List<LocDto> locDtos = new ArrayList<>();
+        for (CheckOrderDetl checkOrderDetl : checkOrderDetls) {
+            if (!checkOrderDetl.getStatus().equals(1)){
+                continue;
+            }
+            LocDto locDto = new LocDto(checkOrderDetl.getLocNo(), checkOrderDetl.getMatnr(), checkOrderDetl.getMaktx(), checkOrderDetl.getBatch(), checkOrderDetl.getOrderNo(),
+                    checkOrderDetl.getAnfme().doubleValue());
+            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", checkOrderDetl.getLocNo()));
+            if (!locMast.getLocSts().equals("F")){
+                continue;
+            }
+            LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
+            locDto.setFrozen(locDetl.getFrozen());
+            locDto.setFrozenLoc(locMast.getFrozen());
+            List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), 107);
+
+
+            locDto.setStaNos(staNos);
+            locDtos.add(locDto);
+        }
+
+        return locDtos;
+
+    }
+
+    @Override
+    public List<CheckOrderDetl> getTaskList(String barcode) {
+        List<CheckOrderDetl> checkOrderDetls = new ArrayList<>();
+
+        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException("鏈壘鍒颁换鍔�");
+        }
+
+        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+        if (Cools.isEmpty(wrkDetls)) {
+            throw new CoolException("鏈壘鍒颁换鍔℃槑缁�");
+        }
+
+        for (WrkDetl wrkDetl : wrkDetls) {
+            if(Cools.isEmpty(wrkDetl.getOrderNo())){
+                throw new CoolException("鏄庣粏鏁版嵁鏈夎锛屾棤璁㈠崟鍙锋暟鎹�");
+            }
+            CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId());
+            if(Cools.isEmpty(checkOrderDetl)){
+                throw new CoolException("鏄庣粏鏁版嵁鏈夎锛屾湭鎵惧埌鐩樼偣鍗曟暟鎹�");
+            }
+            if (checkOrderDetl.getStatus().equals(2)){
+                checkOrderDetls.add(checkOrderDetl);
+            }
+
+        }
+        if (Cools.isEmpty(checkOrderDetls)) {
+            throw new CoolException("璇ュ鍣ㄥ凡瀹屾垚鐩樼偣");
+        }
+
+        return checkOrderDetls;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R pdaComplete(CheckTaskListParam checkTaskListParam, Long userId) {
+
+        WrkMast wrkMast = wrkMastService.selectByBarcode(checkTaskListParam.getBarcode());
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException("鏈壘鍒颁换鍔�");
+        }
+        CheckOrder checkOrder = this.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", checkTaskListParam.getCheckOrderDetlList().get(0).getOrderNo()));
+        for (CheckOrderDetl checkOrderDetl: checkTaskListParam.getCheckOrderDetlList()){
+            if (Cools.isEmpty(checkOrderDetl.getId()) && !Cools.isEmpty(checkOrderDetl.getWorkQty())){
+                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("barcode", checkTaskListParam.getBarcode()));
+                if (Cools.isEmpty(locMast)){
+                    throw new CoolException("鏈壘鍒板簱浣嶆暟鎹�");
+                }
+                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                        .eq("loc_no", locMast.getLocNo())
+                        .eq("matnr", checkOrderDetl.getMatnr())
+                        .eq(!Cools.isEmpty(checkOrderDetl.getBatch()),"batch", checkOrderDetl.getBatch())
+                        .eq("supp_code", checkOrderDetl.getSuppCode())
+                );
+                if (!Cools.isEmpty(locDetl)){
+                    throw new CoolException("褰撳墠搴撲綅鏈夌浉鍚屽簱瀛樹俊鎭�");
+                }
+                Date now = new Date();
+                CheckOrderDetl checkOrderDetl1 = new CheckOrderDetl();
+                checkOrderDetl1.sync(checkOrderDetl);
+                checkOrderDetl1.setLocNo(locMast.getLocNo());
+                checkOrderDetl1.setOrderId(checkOrder.getId());
+                checkOrderDetl1.setOrderNo(checkOrder.getOrderNo());
+                checkOrderDetl1.setAnfme(checkOrderDetl.getAnfme());
+                checkOrderDetl1.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
+                checkOrderDetl1.setWorkQty(checkOrderDetl.getWorkQty());
+                checkOrderDetl1.setStatus(3);
+                checkOrderDetl1.setZpallet(checkTaskListParam.getBarcode());
+                checkOrderDetl1.setCreateBy(userId);
+                checkOrderDetl1.setCreateTime(now);
+                checkOrderDetl1.setUpdateBy(userId);
+                checkOrderDetl1.setUpdateTime(now);
+                checkOrderDetlService.insert(checkOrderDetl1);
+                LocDetl locDetl1 = new LocDetl();
+                locDetl1.sync(checkOrderDetl);
+                BeanUtils.copyProperties(checkOrderDetl, locDetl1);
+                locDetl1.setLocNo(locMast.getLocNo());
+                locDetl1.setZpallet(checkTaskListParam.getBarcode());
+                locDetl1.setAnfme(checkOrderDetl.getAnfme().doubleValue());
+                locDetl1.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
+                locDetl1.setAppeUser(userId);
+                locDetl1.setAppeTime(now);
+                locDetl1.setModiUser(userId);
+                locDetl1.setModiTime(now);
+                locDetlService.insert(locDetl1);
+            }else if (!Cools.isEmpty(checkOrderDetl.getId())){
+                checkOrderDetl.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
+                checkOrderDetl.setStatus(3);
+                if (!checkOrderDetlService.updateById(checkOrderDetl)){
+                    throw new CoolException("鏇存柊鐩樼偣鐘舵�佸け璐�");
+                }
+            }else {
+                throw new CoolException("鏁版嵁閿欒");
+            }
+
+        }
+
+        List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId()));
+        boolean is = checkOrderDetls.stream().allMatch(item -> item.getStatus().equals(3));
+        if (is){
+            checkOrder.setSettle(4L);
+            if (!this.updateById(checkOrder)){
+                throw new CoolException("鏇存柊鐩樼偣涓诲崟鐘舵�佸け璐�");
+            }
+
+        }
+
+
+        return R.ok();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void adjustOrderComplete(Long orderId, Long userId) {
+        CheckOrder checkOrder = this.selectById(orderId);
+        if (Cools.isEmpty(checkOrder)) {
+            throw new CoolException("鏁版嵁閿欒");
+        }
+        List<CheckOrderDetl> selectList = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", orderId));
+        for (CheckOrderDetl checkOrderDetl : selectList) {
+
+            LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
+            if (Cools.isEmpty(locDetl)) {
+                throw new CoolException("鏈壘鍒板簱瀛樻暟鎹�,鏁版嵁閿欒");
+            }
+            if (locDetl.getDiffQty().compareTo(BigDecimal.ZERO) == 0) {
+                throw new CoolException("搴撳瓨鏃犵洏鐐瑰樊寮傝褰�,鏁版嵁閿欒");
+            }
+            if (checkOrderDetl.getStatus().equals(CheckStatusEnum.ALLOW.type)) {
+                BigDecimal decimal = locDetl.getBookQty().add(checkOrderDetl.getDiffQty());
+                locDetl.setAnfme(decimal.doubleValue());
+            }else if (checkOrderDetl.getStatus().equals(CheckStatusEnum.FORBID.type)) {
+                if (locDetl.getDiffQty().compareTo(BigDecimal.ZERO) < 0) {
+                    BigDecimal subtract = new BigDecimal(locDetl.getAnfme().toString()).subtract(locDetl.getDiffQty());
+                    locDetl.setAnfme(subtract.doubleValue());
+                }
+            }
+
+            locDetl.setDiffQty(BigDecimal.ZERO);
+            locDetl.setModiTime(new Date());
+            if (!locDetlService.updateById(locDetl)){
+                throw new CoolException("鏇存柊搴撳瓨鏁版嵁澶辫触");
+            }
+        }
+
+        checkOrder.setSettle(4L);
+        checkOrder.setUpdateTime(new Date());
+        if (!this.updateById(checkOrder)){
+            throw new CoolException("鏇存柊璋冩暣鍗曠姸鎬佸け璐�");
+        }
+    }
 }

--
Gitblit v1.9.1