From 5947312785023d815227cee2bca8feed5153cedd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Fri, 23 May 2025 19:27:31 +0800 Subject: [PATCH] =?UTF-8?q?add:=E9=87=87=E8=B4=AD=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=86=B2=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MaterialUndoController.java | 2 +- .../service/Impl/MaterialUndoServiceImpl.java | 75 +++++++++++++------ 2 files changed, 55 insertions(+), 22 deletions(-) diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java index f9e524e..aaf75e2 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java @@ -77,7 +77,7 @@ public class MaterialUndoController { // } if ("Z002".equals(inv_TYPE) || "Z003".equals(inv_TYPE) || "Z004".equals(inv_TYPE) || "Z001".equals(inv_TYPE) || "Z005".equals(inv_TYPE) || "Z006".equals(inv_TYPE) || "Z007".equals(inv_TYPE)) { -// materialUndoServiceImpl.rkUndo(undoId, userId); // 入库 + materialUndoServiceImpl.rkUndo(undoId, userId); // 入库 materialUndoServiceImpl.cgrkUndo(undoId, userId); // 采购入库 } // else if ("Z002".equals(inv_TYPE) || "Z003".equals(inv_TYPE) || "Z004".equals(inv_TYPE)) { diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java index 39acda8..329b7d5 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java @@ -73,33 +73,66 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService { */ @Transactional public void cgrkUndo (String undoId, String user) throws Exception { + String billCode = toSAPService.cancelShipInter(undoId, user); + if (billCode == null) { + throw new GlobalException("报送ERP失败,请联系IT处理!"); + } -// String billCode = toSAPService.cancelShipInter(undoId, user); -// if (billCode == null) { -// throw new GlobalException("报送ERP失败,请联系IT处理!"); -// } - - EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("采购入库冲销", user, "采购入库冲销"); - String condition="WHERE UNDOID =? "; - String[] bindSet={undoId}; + EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("采购入库冲销", user, "采购入库冲销"); + String condition="SELECT MATERIALPACKINGNAME FROM MATERIALPACKING WHERE UNDOID = :UNDOID "; +// String[] bindSet={undoId}; + Map hashMap = new HashMap (); + hashMap.put("UNDOID", undoId); //根据物料凭证找到所有的待冲销数据,更新库存状态为创建 + List> MPlIST = IDMFrameServiceProxy.getSqlTemplate().queryForList(condition, hashMap); + SetEventInfo setEventInfo = new SetEventInfo(); + setEventInfo.setUserColumns(hashMap); + RemoveInfo removeInfo = new RemoveInfo(); + for (Map MP : MPlIST) { + //根据当前的数据跟新完工报告且删除入库表的数据 + String sql = "SELECT M.RECEIVEREQUESTNAME,M.RECEIVEREQUESTDETAILNAME,M.QTY FROM MATERIALPACKINGSUB M WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" + + "UNION \r\n" + + "SELECT M.RECEIVEREQUESTNAME,M.RECEIVEREQUESTDETAILNAME,M.QTY FROM MATERIALPACKINGSUBHISTORY M WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; + String MATERIALPACKINGNAME = MP.get("MATERIALPACKINGNAME").toString(); + hashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); + for (int i = 0; i < queryForList.size(); i++) { + String dh = queryForList.get(i).get("RECEIVEREQUESTNAME").toString(); + hashMap.put("RECEIVEREQUESTNAME", dh); + String hh = queryForList.get(i).get("RECEIVEREQUESTDETAILNAME").toString(); + hashMap.put("RECEIVEREQUESTDETAILNAME", hh); +// String sl = queryForList.get(i).get("QTY").toString(); + String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T \r\n" + + "SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - ( \r\n" + + " SELECT NVL(SUM(M.QTY),0) \r\n" + + " FROM MATERIALPACKINGSUB M \r\n" + + " WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME \r\n" + + " AND M.RECEIVEREQUESTNAME = T.RECEIVEREQUESTNAME \r\n" + + " AND M.RECEIVEREQUESTDETAILNAME = T.RECEIVEREQUESTDETAILNAME \r\n" + + ") \r\n" + + "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME \r\n" + + " AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME"; + IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap); - // 直接删除生成的标签 - List list = MaterialPackingServiceProxy.getMaterialPackingService().select(condition, bindSet); - if(list.size() > 0) { - for (MaterialPacking materialPacking : list) { - MaterialPackingKey key = materialPacking.getKey(); -// MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo); - String delSql = "DELETE FROM MATERIALPACKING WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; - String MATERIALPACKINGNAME = materialPacking.getMaterialPackingName(); - Map hashMap = new HashMap (); - hashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME); -// SetEventInfo setEventInfo = new SetEventInfo(); -// setEventInfo.setUserColumns(hashMap); - IDMFrameServiceProxy.getSqlTemplate().update(delSql, hashMap); + String updateSql2 = "UPDATE MATERIALRECEIVEREQUESTDETAIL T \r\n" + + "SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - ( \r\n" + + " SELECT NVL(SUM(M.QTY),0) \r\n" + + " FROM MATERIALPACKINGSUBHISTORY M \r\n" + + " WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME \r\n" + + " AND M.RECEIVEREQUESTNAME = T.RECEIVEREQUESTNAME \r\n" + + " AND M.RECEIVEREQUESTDETAILNAME = T.RECEIVEREQUESTDETAILNAME \r\n" + + ") \r\n" + + "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME \r\n" + + " AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME"; + IDMFrameServiceProxy.getSqlTemplate().update(updateSql2, hashMap); + + String deleteSql = " DELETE FROM MATERIALPACKINGSUB T WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND " + + "T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME AND T.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; + IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap); } + MaterialPackingServiceProxy.getMaterialPackingService().remove(new MaterialPackingKey("SDK", MATERIALPACKINGNAME), makeEventInfo, removeInfo); } // 更新凭证冲销状态