From 15c8f00ab3a1e3d2d96b56bae0ec11efedd60231 Mon Sep 17 00:00:00 2001 From: 18516761980 <4761516tqsxp> Date: 星期三, 29 九月 2021 11:14:15 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/service/erp/ErpService.java | 290 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 216 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/zy/common/service/erp/ErpService.java b/src/main/java/com/zy/common/service/erp/ErpService.java index de28db0..ee4d384 100644 --- a/src/main/java/com/zy/common/service/erp/ErpService.java +++ b/src/main/java/com/zy/common/service/erp/ErpService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; +import com.core.exception.CoolException; import com.zy.asrs.service.OutStockMainService; import com.zy.asrs.service.OutStockService; import com.zy.common.service.erp.dto.InStockDto; @@ -10,6 +11,7 @@ import com.zy.common.service.erp.entity.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -27,6 +29,8 @@ @Autowired private ErpSqlServer erpSqlServer; + @Autowired + private JdbcTemplate jdbcTemplate; public List<StockEntryCensus> get(){ return erpSqlServer.select("select * from StockEntryCensus where 1=1",StockEntryCensus.class); @@ -40,8 +44,9 @@ return erpSqlServer.update("delete from M_item where 1=1 and Mnumber = '" + Mnumber + "'") > 0; } + //////////////////////鎴愬搧銆佸師鏉愭枡鍏ュ簱閫氱煡鍗曟暟鎹彁鍙�////////////////////////////////////////////////// /** - * 鑾峰彇鏈鍙栬繃鐨勫師鏉愭枡鍏ュ簱鍗曟嵁 + * 鎻愬彇涓棿琛ㄥ師鏉愭枡鍏ュ簱鍗曟嵁 */ public List<InStockDto> getReadyInStock() { List<InStockDto> result = new ArrayList<>(); @@ -63,30 +68,114 @@ } /** - * 鑾峰彇鏈鍙栬繃鐨勬垚鍝佸叆搴撳崟鎹� + * 鏌ヨ鍚屼竴鍗曞彿鏄惁瀛樺湪鐩稿悓鐗╂枡鐨勬渶澶ф暟閲忓�硷紝 + * @return */ - public List<CPICMO> getReadyCPICMO() { - String sql = "select * from CPICMO where 1=1 and Fflag_rw = 0"; - return erpSqlServer.select(sql, CPICMO.class); + public Number QueryFnumberInCount(Integer FInterID) { + String sql = "select top 1 qty from (\n" + + "select Fnumber,count(*) as qty from InStockbill a,InStockbillEntry b\n" + + "where a.FInterID=b.FInterID and a.FInterID=" + FInterID + + " group by Fnumber\n" + + ") a\n" + + "order by qty desc"; + return erpSqlServer.executeQueryCount(sql,"qty"); + } + + /** + * 鑾峰彇鍏ュ簱鐗╂祦鏄庣粏 + * @param fInterID 鍗曟嵁鍐呯爜 + */ + private List<InStockBillEntry> getInStockBillEntry(Integer fInterID) { + String sql = "select * from InStockBillEntry where 1=1 and FSourceBillNo!='' and FAuxCommitQty=0 and FInterID = " + fInterID; + return erpSqlServer.select(sql, InStockBillEntry.class); } /** * 灏嗘湭璇荤殑鍘熸潗鏂欏叆搴撳崟鎹缃负宸茶 */ - public boolean haveReadInStock(String FBillNo){ - String sql = "update InStockBill set Fflag_rw = 1 where FBillNo = ''{0}''"; - sql = MessageFormat.format(sql, FBillNo); + public boolean haveReadInStock(String FBillNo, Integer value){ + String sql = "update InStockBill set Fflag_rw = {1,number,#} where FBillNo = ''{0}''"; + sql = MessageFormat.format(sql, FBillNo, value); return erpSqlServer.update(sql) > 0; + } + + /** + * 鎻愬彇涓棿琛ㄦ垚鍝佸叆搴撳崟鎹� + */ + public List<CPICMO> getReadyCPICMO() { + String sql = "select * from CPICMO where 1=1 and FSourceBillNo!='' and FAuxCommitQty=0 and Fflag_rw = 0"; + return erpSqlServer.select(sql, CPICMO.class); + } + + /** + * 鏌ヨ鍚屼竴鍗曞彿鏄惁瀛樺湪鐩稿悓鐗╂枡鐨勬渶澶ф暟閲忓�硷紝 + * @return + */ + public Number QueryFnumberCPICMOCount(Integer FInterID) { + String sql = "select top 1 qty from (\n" + + "select count(*) as qty from CPICMO\n" + + "where FInterID=" + FInterID + + " group by Fnumber\n" + + ") a\n" + + "order by qty desc"; + return erpSqlServer.executeQueryCount(sql,"qty"); } /** * 灏嗘湭璇荤殑鎴愬搧鍏ュ簱鍗曟嵁璁剧疆涓哄凡璇� */ - public boolean haveReadCPICMO(String FBillNo){ - String sql = "update CPICMO set Fflag_rw = 1 where FBillNo = ''{0}''"; - sql = MessageFormat.format(sql, FBillNo); + public boolean haveReadCPICMO(Integer FInterID, Integer value){ + String sql = "update CPICMO set Fflag_rw = {1,number,#} where FInterID = ''{0,number,#}''"; + sql = MessageFormat.format(sql, FInterID, value); return erpSqlServer.update(sql) > 0; } + //////////////////////////////////////////////////////////////////////////////////////// + + ////////////////////// 鍑哄簱閫氱煡鍗曟暟鎹彁鍙�////////////////////////////////////////////////// + /** + * 鏌ヨerp涓棿琛ㄨ〃澶碠utStockBill鏁版嵁 + * @return + */ + public List<OutStockBill> syncOutStock() { + return erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class); +// return erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class); + } + + /** + * 鏌ヨ鍚屼竴鍗曞彿鏄惁瀛樺湪鐩稿悓鐗╂枡鐨勬渶澶ф暟閲忓�硷紝 + * @return + */ + public Number QueryFnumberOutCount(Integer FInterID) { + String sql = "select top 1 qty from (\n" + + "select Fnumber,count(*) as qty from OutStockbill a,OutStockbillEntry b\n" + + "where a.FInterID=b.FInterID and a.FInterID=" + FInterID + + " group by Fnumber\n" + + ") a\n" + + "order by qty desc"; + return erpSqlServer.executeQueryCount(sql,"qty"); + } + + /** + * 鏌ヨerp涓棿琛ㄨ〃浣揙utStockbillEntry鏁版嵁 + * @param FInterID + * @return + */ + public List<OutStockBillEntry> syncOutStockDetail(Integer FInterID) { + return erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBillEntry where FSourceBillNo!='' and FAuxCommitQty=0 and FInterID=" + FInterID, OutStockBillEntry.class); + } + + /** + * 灏嗘彁鍙栧畬鎴愮殑鎴愬搧鍑哄簱閫氱煡鍗曟嵁璁剧疆涓哄凡璇� + */ + public boolean haveReadOutBill(String FBrNo, Integer FInterID, Integer value){ + String sql = "update OutStockbill set Fflag_rw = {2,number,#} where FBillNo = ''{0}'' and FInterID = {1,number,#} "; + sql = MessageFormat.format(sql, FBrNo, FInterID, value); + return erpSqlServer.update(sql) > 0; + } + //////////////////////////////////////////////////////////////////////////////////////////// + + + /** * 鎻愪氦瀹為檯鏀惰揣鏁伴噺 @@ -104,15 +193,29 @@ * 鍘熸潗鏂欏閲忓叆搴� */ public boolean incrementPakIn(String FBillNo, String Fnumber, Double increment) { +// String[] arrays = Fnumbers.split("|"); +// String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿 + String sql = "update ise \n" + "set ise.FAuxCommitQty = (ise.FAuxCommitQty + {0,number,#}) \n" + "from InStockBillEntry ise\n" + "left join InStockbill isb on isb.FInterID = ise.FInterID\n" + "where 1=1 \n" + "and ise.Fnumber = ''{1}''\n" + - "and isb.FBillNo= ''{2}''"; + "and isb.FBillNo= ''{2}''\n"; sql = MessageFormat.format(sql, increment, Fnumber, FBillNo); + +// Fnumber = arrays[0]; +// if(arrays.length>1){ +// sBillNo = arrays[1]; +// sql = sql + "and ise.FSourceBillNo= ''{3}''"; +// sql = MessageFormat.format(sql, increment, Fnumber, FBillNo, sBillNo); +// } else { +// sql = MessageFormat.format(sql, increment, Fnumber, FBillNo); +// } + if (erpSqlServer.update(sql) > 0) { +// log.error("鏇存柊ERP涓棿琛ㄦ垚鍔�===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumber,increment); List<InStockBillEntry> inStockBillEntries = getInStockBillEntry(FBillNo); boolean complete = true; // 姣旇緝鍗曠瑪璧勬枡鐗╂枡鏄惁鍏ㄩ儴瀹屾垚 @@ -137,6 +240,7 @@ } return true; } else { + log.error("鏇存柊ERP涓棿琛ㄥけ璐�===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumber,increment); return false; } } @@ -145,11 +249,29 @@ * 鎴愬搧澧為噺鍏ュ簱 */ public boolean incrementCPakIn(String FBillNo, String Fnumber, Double increment) { - String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}''"; +// String[] arrays = Fnumbers.split("|"); +// String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿 + + String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}'' "; sql = MessageFormat.format(sql, increment, Fnumber, FBillNo); + +// Fnumber = arrays[0]; +// if(arrays.length>1){ +// sBillNo = arrays[1]; +// sql = sql + " and FSourceBillNo= ''{3}''"; +// sql = MessageFormat.format(sql, increment, Fnumber, FBillNo, sBillNo); +// } else { +// sql = MessageFormat.format(sql, increment, Fnumber, FBillNo); +// } + if (erpSqlServer.update(sql) > 0) { - sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''"; - sql = MessageFormat.format(sql, Fnumber, FBillNo); +// if(arrays.length>1) { +// sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}'' and FSourceBillNo= ''{2}''"; +// sql = MessageFormat.format(sql, Fnumber, FBillNo, sBillNo); +// } else { + sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''"; + sql = MessageFormat.format(sql, Fnumber, FBillNo); +// } List<CPICMO> select = erpSqlServer.select(sql, CPICMO.class); CPICMO cpicmo = select.get(0); boolean complete = false; @@ -232,6 +354,8 @@ * @param qty 鏁伴噺锛堟琛ㄧず鐩樼泩銆佽礋琛ㄧず鐩樹簭锛� */ public boolean checkStockEntity(String FNumber, Double qty){ +// String[] arrays = FNumber.split("|"); +// FNumber = arrays[0]; String sql = "insert [dbo].[StockCheckRecord] ([FNumber],[CheckQty],[Fflag_rw],[Fflag_finish],[sync_id]) values (''{0}'', {1,number,#}, 0, 0, -1);"; sql = MessageFormat.format(sql, FNumber, qty); if (erpSqlServer.update(sql) == 0) { @@ -242,15 +366,6 @@ } // 绉佹湁鏂规硶 -------------------------------------------------------------------------------------- - - /** - * 鑾峰彇鍏ュ簱鐗╂祦鏄庣粏 - * @param fInterID 鍗曟嵁鍐呯爜 - */ - private List<InStockBillEntry> getInStockBillEntry(Integer fInterID) { - String sql = "select * from InStockBillEntry where 1=1 and FInterID = " + fInterID; - return erpSqlServer.select(sql, InStockBillEntry.class); - } private List<InStockBillEntry> getInStockBillEntry(String FBillNo) { String sql = "select ise.* from InStockBillEntry ise left join InStockbill isb on isb.FInterID = ise.FInterID where 1=1 and isb.FBillNo = '" + FBillNo +"'"; @@ -270,58 +385,85 @@ * 鎴愬搧鍏ュ簱鍗曟爣璁板畬鎴� */ 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; +// if(Cools.isEmpty(sBillNo)) { + 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; +// } else { +// String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}'' and FSourceBillNo= ''{2}'' "; +// sql = MessageFormat.format(sql, FBillNo, Fnumber, sBillNo); +// return erpSqlServer.update(sql) > 0; +// } } - /** - * 鍑哄簱鍗曟爣璁板畬鎴� - */ - private boolean completePakOut(Integer fInterID){ - String sql = "update OutStockBill set Fflag_finish = 1 where FInterID = {0,number,#}"; - sql = MessageFormat.format(sql, fInterID); - return erpSqlServer.update(sql) > 0; - } - - /* 鏌ヨerp涓勾琛∣utStockBill鏁版嵁 */ - public List<OutStockBill> syncOutStock() { - return erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBill", OutStockBill.class); - } - - public List<OutStockBillEntry> syncOutStockDetail() { - return erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBillEntry", OutStockBillEntry.class); - } +// /** +// * 鍑哄簱鍗曟爣璁板畬鎴� +// */ +// private boolean completePakOut(Integer fInterID){ +// String sql = "update OutStockBill set Fflag_finish = 1 where FInterID = {0,number,#}"; +// sql = MessageFormat.format(sql, fInterID); +// return erpSqlServer.update(sql) > 0; +// } /* 鎴愬搧澧為噺鍑哄簱 */ public boolean incrementCPakOut(Integer FInterID, String Fnumber, Double increment, String FBillNo) { - String sql = "update OutStockbillEntry set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FInterID = {2,number,#}"; +// String[] arrays = Fnumbers.split("|"); +// String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿 + + String sql = "update OutStockbillEntry set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FInterID = {2,number,#} "; sql = MessageFormat.format(sql, increment, Fnumber, FInterID); - if (erpSqlServer.update(sql) > 0) { - sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#}"; - sql = MessageFormat.format(sql, Fnumber, FInterID); - List<OutStockBillEntry> select = erpSqlServer.select(sql, OutStockBillEntry.class); - OutStockBillEntry outStockBillEntry = select.get(0); - boolean complete = false; - if (outStockBillEntry.getFQty().compareTo(BigDecimal.ZERO) == 1) { - if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFQty()) > -1) { - complete = true; + +// Fnumber = arrays[0]; +// if(arrays.length>1){ +// sBillNo = arrays[1]; +// sql = sql + " and FSourceBillNo= ''{3}''"; +// sql = MessageFormat.format(sql, increment, Fnumber, FInterID, sBillNo); +// } else { +// sql = MessageFormat.format(sql, increment, Fnumber, FInterID); +// } + + try { + if (erpSqlServer.update(sql) > 0) { +// if(arrays.length>1) { +// sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#} and FSourceBillNo= ''{2}''"; +// sql = MessageFormat.format(sql, Fnumber, FInterID, sBillNo); +// } else { + sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#}"; + sql = MessageFormat.format(sql, Fnumber, FInterID); +// } + + List<OutStockBillEntry> select = erpSqlServer.select(sql, OutStockBillEntry.class); + OutStockBillEntry outStockBillEntry = select.get(0); + boolean complete = false; + if (outStockBillEntry.getFQty().compareTo(BigDecimal.ZERO) == 1) { + if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFQty()) > -1) { + complete = true; + } + } else { + if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFAuxQty()) > -1) { + complete = true; + } } + if (complete) { + if (!completeCPakOut(FBillNo)) { + log.error("{}鍑哄簱鍗曟爣璁板畬鎴愬け璐�", FBillNo); + } + int updateCount = jdbcTemplate.update("update OutStockbill set Fflag_finish=1 where FBillNo='" + FBillNo + "'"); + if(updateCount<=0){ + throw new CoolException("鏇存柊鍑哄簱閫氱煡妗e畬鎴愭爣璁板け璐FBillNo="+FBillNo+"]"); + } + } + return true; } else { - if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFAuxQty()) > -1) { - complete = true; - } + return false; } - if (complete) { - if (!completeCPakOut(FBillNo)) { - log.error("{}鍑哄簱鍗曟爣璁板畬鎴愬け璐�", FBillNo); - } - } - return true; - } else { + }catch (Exception e){ + e.printStackTrace(); + log.error("incrementCPakOut----" + sql); return false; } + } /* 鎴愬搧鍑哄簱鍗曟爣璁板畬鎴� */ @@ -332,17 +474,17 @@ } - public boolean updateFnumber(Integer itemId, String FNumber){ - String sql = "update InStockbillEntry set Fnumber = ''{0}'' where FItemID = {1,number,#}"; - sql = MessageFormat.format(sql, FNumber, itemId); - return erpSqlServer.update(sql) > 0; - } +// public boolean updateFnumber(Integer itemId, String FNumber){ +// String sql = "update InStockbillEntry set Fnumber = ''{0}'' where FItemID = {1,number,#}"; +// sql = MessageFormat.format(sql, FNumber, itemId); +// return erpSqlServer.update(sql) > 0; +// } - public boolean updateCFnumber(Integer itemId, String FNumber){ - String sql = "update CPICMO set Fnumber = ''{0}'' where FItemID = {1,number,#}"; - sql = MessageFormat.format(sql, FNumber, itemId); - return erpSqlServer.update(sql) > 0; - } +// public boolean updateCFnumber(Integer itemId, String FNumber){ +// String sql = "update CPICMO set Fnumber = ''{0}'' where FItemID = {1,number,#}"; +// sql = MessageFormat.format(sql, FNumber, itemId); +// return erpSqlServer.update(sql) > 0; +// } public List<CPICMO> queryErpCPICMO(String fbillNo, String fsourceBillNo) { String sql = "select * from CPICMO"; -- Gitblit v1.9.1