From b548ff3ac8e3a12bd6e5c95ddd629798b699bb0e Mon Sep 17 00:00:00 2001
From: 王佳豪 <g675230687@126.com>
Date: 星期四, 06 五月 2021 13:13:38 +0800
Subject: [PATCH] 1.平仓入库erp单号对应功能实现(double判断相等

---
 src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java |  136 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 132 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
index 73e8760..11c45fa 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
@@ -3,21 +3,32 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.LocNormal;
 import com.zy.asrs.mapper.LocNormalMapper;
+import com.zy.asrs.mapper.OutStockMapper;
 import com.zy.asrs.service.LocNormalService;
 import com.zy.common.service.erp.ErpSqlServer;
+import com.zy.common.service.erp.entity.CPICMO;
+import com.zy.common.service.erp.entity.OutStockBillEntry;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.text.MessageFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+@Slf4j
 @Service("locNormalService")
 public class LocNormalServiceImpl extends ServiceImpl<LocNormalMapper, LocNormal> implements LocNormalService {
     @Autowired
     ErpSqlServer erpSqlServer;
+    @Autowired
+    OutStockMapper outStockMapper;
 
     @Override
     public List<LocNormal> getLocNormalData() {
@@ -44,16 +55,98 @@
         // 骞充粨鍏ュ簱鍚庢洿鏂颁腑闂磋〃鏁版嵁锛孎flag_finish鏀逛负1锛岃〃绀哄钩浠撳叆搴撴垚鍔�
         if (list.size() > 0) {
             for (Integer i = 0; i < list.size(); i++) {
-                String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = '" + list.get(i).getWarehouse() + "' and Fnumber = '" + list.get(i).getMatnr() +"'";
-                erpSqlServer.update(sql);
+                if (!Cools.isEmpty(list.get(i).getSupplier())) { // 瀛樺湪鍏ュ簱鍗曞彿鐨勬墠杩涜erp鏇存柊
+                    String sqlSelect = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
+                    sqlSelect = MessageFormat.format(sqlSelect, list.get(i).getMatnr(), list.get(i).getSupplier());
+                    List<CPICMO> CPICMOList = erpSqlServer.select(sqlSelect,CPICMO.class);
+                    if (CPICMOList.size() > 0) { //  璇存槑erp鏈夊搴旂殑鍏ュ簱鍗�
+                        String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}''";
+                        sql = MessageFormat.format(sql, list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getSupplier());
+                        if (erpSqlServer.update(sql) > 0) {
+                            sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
+                            sql = MessageFormat.format(sql, list.get(i).getMatnr(), list.get(i).getSupplier());
+                            List<CPICMO> select = erpSqlServer.select(sql, CPICMO.class);
+                            CPICMO cpicmo = select.get(0);
+                            boolean complete = false;
+                            if (cpicmo.getFQty() > 0) {
+                                if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFQty())) {
+                                    complete = true;
+                                }
+                            } else {
+                                if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFAuxQty())) {
+                                    complete = true;
+                                }
+                            }
+                            if (complete) {
+                                if (!completeCPakIn(list.get(i).getSupplier(), list.get(i).getMatnr())) {
+                                    log.error("{}骞充粨鍏ュ簱鍗曟爣璁板畬鎴愬け璐�", list.get(i).getSupplier());
+                                }
+                            }
+                        }
+                    } else {
+                        throw new CoolException("ERP鏌ヨ涓嶅埌瀵瑰簲閫氱煡鍗�");
+                    }
+                } else {
+                    throw new CoolException("閫氱煡鍗曞彿涓嶅彲涓虹┖");
+                }
             }
+            // 骞充粨鍏ュ簱閫昏緫
+            baseMapper.locNormalIn(list);
         }
-        baseMapper.locNormalIn(list);
+    }
+
+    /**
+     * 鎴愬搧鍏ュ簱鍗曟爣璁板畬鎴�
+     */
+    private boolean completeCPakIn(String FBillNo, String Fnumber){
+        String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}''";
+        sql = MessageFormat.format(sql, FBillNo, Fnumber);
+        return erpSqlServer.update(sql) > 0;
     }
 
     @Override
     public void pdaLocNormalIn(List<LocNormal> list) {
-        baseMapper.pdaLocNormalIn(list);
+        // 骞充粨鍏ュ簱鍚庢洿鏂颁腑闂磋〃鏁版嵁锛孎flag_finish鏀逛负1锛岃〃绀哄钩浠撳叆搴撴垚鍔�
+        if (list.size() > 0) {
+            for (Integer i = 0; i < list.size(); i++) {
+                if (!Cools.isEmpty(list.get(i).getSupplier())) { // 瀛樺湪鍏ュ簱鍗曞彿鐨勬墠杩涜erp鏇存柊
+                    String sqlSelect = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
+                    sqlSelect = MessageFormat.format(sqlSelect, list.get(i).getMatnr(), list.get(i).getSupplier());
+                    List<CPICMO> CPICMOList = erpSqlServer.select(sqlSelect,CPICMO.class);
+                    if (CPICMOList.size() > 0) { //  璇存槑erp鏈夊搴旂殑鍏ュ簱鍗�
+                        String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}''";
+                        sql = MessageFormat.format(sql, list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getSupplier());
+                        if (erpSqlServer.update(sql) > 0) {
+                            sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
+                            sql = MessageFormat.format(sql, list.get(i).getMatnr(), list.get(i).getSupplier());
+                            List<CPICMO> select = erpSqlServer.select(sql, CPICMO.class);
+                            CPICMO cpicmo = select.get(0);
+                            boolean complete = false;
+                            if (cpicmo.getFQty() > 0) {
+                                if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFQty())) {
+                                    complete = true;
+                                }
+                            } else {
+                                if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFAuxQty())) {
+                                    complete = true;
+                                }
+                            }
+                            if (complete) {
+                                if (!completeCPakIn(list.get(i).getSupplier(), list.get(i).getMatnr())) {
+                                    log.error("{}骞充粨鍏ュ簱鍗曟爣璁板畬鎴愬け璐�", list.get(i).getSupplier());
+                                }
+                            }
+                        }
+                    } else {
+                        throw new CoolException("ERP鏌ヨ涓嶅埌瀵瑰簲閫氱煡鍗�");
+                    }
+                } else {
+                    throw new CoolException("閫氱煡鍗曞彿涓嶅彲涓虹┖");
+                }
+            }
+            // 骞充粨鍏ュ簱閫昏緫
+            baseMapper.pdaLocNormalIn(list);
+        }
     }
 
     @Override
@@ -83,4 +176,39 @@
     public void pdaLocNormalMove(List<LocNormal> list) {
         baseMapper.pdaLocNormalMove(list);
     }
+
+    @Override
+    public List<LocNormal> queryLocNorlMatnr(String fbillNo) {
+        List<OutStockBillEntry> matList = outStockMapper.queryMatnrWithBillNo(fbillNo);
+        List<LocNormal> locNormal = new ArrayList<>();
+        List<LocNormal> locNormalResult = new ArrayList<>();
+        for (Integer i = 0; i < matList.size(); i++) {
+            locNormal = baseMapper.queryLocNorlMatnr(matList.get(i).getFnumber()) ;
+            if (locNormal.size() > 0) {
+                for (LocNormal e:locNormal) {
+                    LocNormal obj = new LocNormal();
+                    obj.setMatnr(e.getMatnr());
+                    obj.setMaktx(e.getMaktx());
+                    obj.setLgnum(e.getLgnum());
+                    obj.setType(e.getType());
+                    obj.setMnemonic(e.getMnemonic());
+                    obj.setSupplier(e.getSupplier());
+                    obj.setWarehouse(e.getWarehouse());
+                    obj.setBrand(e.getBrand());
+                    obj.setAnfme(e.getAnfme());
+                    obj.setBname(e.getBname());
+                    obj.setMemo(e.getMemo());
+                    obj.setModiUser(e.getModiUser());
+                    obj.setModiTime(e.getModiTime());
+                    obj.setAppeUser(e.getAppeUser());
+                    obj.setAppeTime(e.getAppeTime());
+                    obj.setState(e.getState());
+                    obj.setWarehouseName(e.getWarehouseName());
+                    obj.setId(e.getId());
+                    locNormalResult.add(obj);
+                }
+            }
+        }
+       return locNormalResult;
+    }
 }

--
Gitblit v1.9.1