From 11cd06db08d1ff21ee061300dc171006205b0d50 Mon Sep 17 00:00:00 2001 From: 王佳豪 <g675230687@126.com> Date: 星期五, 07 五月 2021 07:56:58 +0800 Subject: [PATCH] 1.平仓入库允许分批入库 --- src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java | 187 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 129 insertions(+), 58 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 11c45fa..3de54ca 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java @@ -1,14 +1,19 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; 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.entity.WaitPakin; +import com.zy.asrs.entity.WaitPakinLog; import com.zy.asrs.mapper.LocNormalMapper; import com.zy.asrs.mapper.OutStockMapper; import com.zy.asrs.service.LocNormalService; +import com.zy.asrs.service.WaitPakinLogService; +import com.zy.asrs.service.WaitPakinService; import com.zy.common.service.erp.ErpSqlServer; import com.zy.common.service.erp.entity.CPICMO; import com.zy.common.service.erp.entity.OutStockBillEntry; @@ -29,6 +34,12 @@ ErpSqlServer erpSqlServer; @Autowired OutStockMapper outStockMapper; + @Autowired + LocNormalService locNormalService; + @Autowired + WaitPakinService waitPakinService; + @Autowired + WaitPakinLogService waitPakinLogService; @Override public List<LocNormal> getLocNormalData() { @@ -55,43 +66,36 @@ // 骞充粨鍏ュ簱鍚庢洿鏂颁腑闂磋〃鏁版嵁锛孎flag_finish鏀逛负1锛岃〃绀哄钩浠撳叆搴撴垚鍔� if (list.size() > 0) { for (Integer i = 0; i < list.size(); i++) { + List<LocNormal> addList = new ArrayList<>(); + List<LocNormal> updateList = new ArrayList<>(); 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()); - } - } + // 鍒ゆ柇鍘熷厛骞充粨鏄惁瀛樺湪鏈夎揣,濡傛灉鏈夎揣鏁伴噺杩涜绱姞 + LocNormal oldLocList = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("supplier", list.get(i).getSupplier()).and().eq("state", "1").eq("warehouse", list.get(i).getWarehouse())); + if (!Cools.isEmpty(oldLocList)) { + // erp鏇存柊 + updateCPICMO(list.get(i)); + Double updateAnfme = new Double(list.get(i).getAnfme().doubleValue()); + // 骞充粨鍏ュ簱锛堟洿鏂帮級閫昏緫 + list.get(i).setAnfme(oldLocList.getAnfme().add(list.get(i).getAnfme())); + updateList.add(list.get(i)); + if (baseMapper.pdaLocNormalUpdate(updateList) > 0) { + // cust_wait_pakin杞琧ust_wait_pakin_log锛屽苟鏇存柊鏁伴噺 + custWaitPakinToLog(list.get(i), updateAnfme); } } else { - throw new CoolException("ERP鏌ヨ涓嶅埌瀵瑰簲閫氱煡鍗�"); + // erp鏇存柊 + updateCPICMO(list.get(i)); + // 骞充粨鍏ュ簱閫昏緫 + addList.add(list.get(i)); + if (baseMapper.pdaLocNormalIn(addList) > 0) { + // cust_wait_pakin杞琧ust_wait_pakin_log锛屽苟鏇存柊鏁伴噺 + custWaitPakinToLog(list.get(i), list.get(i).getAnfme().doubleValue()); + } } } else { throw new CoolException("閫氱煡鍗曞彿涓嶅彲涓虹┖"); } } - // 骞充粨鍏ュ簱閫昏緫 - baseMapper.locNormalIn(list); } } @@ -109,46 +113,113 @@ // 骞充粨鍏ュ簱鍚庢洿鏂颁腑闂磋〃鏁版嵁锛孎flag_finish鏀逛负1锛岃〃绀哄钩浠撳叆搴撴垚鍔� if (list.size() > 0) { for (Integer i = 0; i < list.size(); i++) { + List<LocNormal> addList = new ArrayList<>(); + List<LocNormal> updateList = new ArrayList<>(); 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()); - } - } + // 鍒ゆ柇鍘熷厛骞充粨鏄惁瀛樺湪鏈夎揣,濡傛灉鏈夎揣鏁伴噺杩涜绱姞 + LocNormal oldLocList = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("supplier", list.get(i).getSupplier()).and().eq("state", "1").and().eq("warehouse", list.get(i).getWarehouse())); + if (!Cools.isEmpty(oldLocList)) { + // erp鏇存柊 + updateCPICMO(list.get(i)); + Double updateAnfme = new Double(list.get(i).getAnfme().doubleValue()); + // 骞充粨鍏ュ簱锛堟洿鏂伴�昏緫) + list.get(i).setAnfme(oldLocList.getAnfme().add(list.get(i).getAnfme())); + updateList.add(list.get(i)); + if (baseMapper.pdaLocNormalUpdate(updateList) > 0) { + // cust_wait_pakin杞琧ust_wait_pakin_log锛屽苟鏇存柊鏁伴噺 + custWaitPakinToLog(list.get(i), updateAnfme); } } else { - throw new CoolException("ERP鏌ヨ涓嶅埌瀵瑰簲閫氱煡鍗�"); + // erp鏇存柊 + updateCPICMO(list.get(i)); + // 骞充粨鍏ュ簱閫昏緫 + addList.add(list.get(i)); + if (baseMapper.pdaLocNormalIn(addList) > 0){ + // cust_wait_pakin杞琧ust_wait_pakin_log锛屽苟鏇存柊鏁伴噺 + custWaitPakinToLog(list.get(i), list.get(i).getAnfme().doubleValue()); + } } } else { throw new CoolException("閫氱煡鍗曞彿涓嶅彲涓虹┖"); } } - // 骞充粨鍏ュ簱閫昏緫 - baseMapper.pdaLocNormalIn(list); + } } + /* cust_wait_pakin杞琧ust_wait_pakin_log锛屽苟鏇存柊鏁伴噺 */ + private boolean custWaitPakinToLog(LocNormal list, Double updateAnfme) { + WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("supplier", list.getSupplier()).and().eq("matnr", list.getMatnr())); + WaitPakinLog waitPakinLog = new WaitPakinLog(); + waitPakinLog.setAnfme(updateAnfme); + waitPakinLog.setMatnr(waitPakin.getMatnr()); + waitPakinLog.setMaktx(waitPakin.getMaktx()); + waitPakinLog.setLgnum(waitPakin.getLgnum()); + waitPakinLog.setType(waitPakin.getType()); + waitPakinLog.setMnemonic(waitPakin.getMnemonic()); + waitPakinLog.setSupplier(waitPakin.getSupplier()); + waitPakinLog.setWarehouse(waitPakin.getWarehouse()); + waitPakinLog.setBrand(waitPakin.getBrand()); + waitPakinLog.setAltme(waitPakin.getAltme()); + waitPakinLog.setZpallet(waitPakin.getZpallet()); + waitPakinLog.setBname(waitPakin.getBname()); + waitPakinLog.setLocNo(waitPakin.getLocNo()); + waitPakinLog.setStatus(waitPakin.getStatus()); + waitPakinLog.setIoStatus(waitPakin.getIoStatus()); + waitPakinLog.setMemo(waitPakin.getMemo()); + waitPakinLog.setModiTime(waitPakin.getModiTime()); + waitPakinLog.setModiUser(waitPakin.getModiUser()); + waitPakinLog.setAppeTime(waitPakin.getAppeTime()); + waitPakinLog.setAppeUser(waitPakin.getAppeUser()); + // 杞叆搴撻�氱煡鍘嗗彶妗� + waitPakinLogService.insert(waitPakinLog); + // 淇敼鍏ュ簱鍚屽織妗g墿鏂欐暟閲� + Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>(); + wrapper.eq("supplier", list.getSupplier()) + .eq("matnr", list.getMatnr()) + .isNull("zpallet"); + WaitPakin pakin = new WaitPakin(); + pakin.setAnfme(waitPakin.getAnfme() - updateAnfme); + waitPakinService.update(pakin, wrapper); + return true; + } + + /* 鏇存柊erp鍏ュ簱琛� */ + private boolean updateCPICMO(LocNormal list) { + String sqlSelect = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''"; + sqlSelect = MessageFormat.format(sqlSelect, list.getMatnr(), list.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.getAnfme(), list.getMatnr(), list.getSupplier()); + if (erpSqlServer.update(sql) > 0) { + sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''"; + sql = MessageFormat.format(sql, list.getMatnr(), list.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.getSupplier(), list.getMatnr())) { + log.error("{}骞充粨鍏ュ簱鍗曟爣璁板畬鎴愬け璐�", list.getSupplier()); + } + } + } + } else { + throw new CoolException("ERP鏌ヨ涓嶅埌瀵瑰簲閫氱煡鍗�"); + } + + return true; + } + @Override public List<LocNormal> pdaLocNormalQuery(String matnr, String warehouse, String billNo) { return baseMapper.pdaLocNormalQuery(matnr, warehouse, billNo); -- Gitblit v1.9.1