Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r40688 -r41005 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 40688) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 41005) @@ -5880,7 +5880,7 @@ batchUpdateTousseInstanceTableData(invoiceToInvoiceItemListMap, tousseItemToTdToTiListMapMap, invoicePlanToInvoiceMap,orgUnit,targetWarehouse, params, currentDateTime, idColumnName, idColumnValue, tousseInstanceIdToIsRoutineMap, - disposableGoodsStorageAdjustVoTotalList); + disposableGoodsStorageAdjustVoTotalList, context); /* * 器械包库存(根据仓库id与器械包定义id查询库存对象,如果存在则update,否则insert) * 供应室方面仓库库存扣减 @@ -6495,7 +6495,7 @@ Map invoicePlanToInvoiceMap, OrgUnit orgUnit,WareHouse targetWarehouse,JSONObject params,Date currentDateTime, String idColumnName,String idColumnValue,Map tousseInstanceIdToIsRoutineMap, - List disposableGoodsStorageAdjustVoTotalList){ + List disposableGoodsStorageAdjustVoTotalList, SubmitInvoiceContext submitInvoiceContext){ List> tousseInstanceUpdateMapList = new ArrayList>(); //所发的包实例所属的聚合包实例也需要更新状态为已发货及发货时间与发货人等信息 List comboTousseInstanceIdList = new ArrayList(); @@ -6625,6 +6625,25 @@ invoicePlanToInvoiceMap,orgUnit,targetWarehouse,params,currentDateTime, idColumnName, idColumnValue, disposableGoodsStorageAdjustVoTotalList); + + if(CollectionUtils.isNotEmpty(tousseInstanceUpdateMapList) && CssdUtils.getSystemSetConfigByNameBool("enableInstrumentLifeCycleTraceabilityManagement")){ + Map> updateStockInfo = submitInvoiceContext.getUpdateStockInfo(); + if(updateStockInfo == null){ + updateStockInfo = new HashMap>(); + } + for (Map tousseInstanceUpdateMap : tousseInstanceUpdateMapList) { + Long invoice_id = (Long)tousseInstanceUpdateMap.get("invoice_id"); + Long id = (Long)tousseInstanceUpdateMap.get("id"); + Invoice invoice = (Invoice) objectDao.getById(Invoice.class.getSimpleName(), invoice_id); + Collection tousseInstanceList = updateStockInfo.get(invoice); + if(tousseInstanceList == null){ + tousseInstanceList = new ArrayList(); + } + tousseInstanceList.add((TousseInstance)objectDao.getById(TousseInstance.class.getSimpleName(), id)); + updateStockInfo.put(invoice, tousseInstanceList); + } + submitInvoiceContext.setUpdateStockInfo(updateStockInfo); + } } /** @@ -9351,6 +9370,25 @@ } }); + if(CollectionUtils.isNotEmpty(updateTousseInstanceMapList) && CssdUtils.getSystemSetConfigByNameBool("enableInstrumentLifeCycleTraceabilityManagement")){ + Map> updateStockInfo = submitInvoiceContext.getUpdateStockInfo(); + if(updateStockInfo == null){ + updateStockInfo = new HashMap>(); + } + for (Map tousseInstanceUpdateMap : updateTousseInstanceMapList) { + Long id = (Long)tousseInstanceUpdateMap.get("id"); + String invoiceserialNumber = (String)tousseInstanceUpdateMap.get("invoiceserialNumber"); + Invoice invoice = serialNumberToInvoiceMap.get(invoiceserialNumber); + Collection tousseInstanceList = updateStockInfo.get(invoice); + if(tousseInstanceList == null){ + tousseInstanceList = new ArrayList(); + } + tousseInstanceList.add((TousseInstance)objectDao.getById(TousseInstance.class.getSimpleName(), id)); + updateStockInfo.put(invoice, tousseInstanceList); + } + submitInvoiceContext.setUpdateStockInfo(updateStockInfo); + } + return invoiceList; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentinstance/service/InstrumentInstanceManagerImpl.java =================================================================== diff -u -r40898 -r41005 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentinstance/service/InstrumentInstanceManagerImpl.java (.../InstrumentInstanceManagerImpl.java) (revision 40898) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentinstance/service/InstrumentInstanceManagerImpl.java (.../InstrumentInstanceManagerImpl.java) (revision 41005) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.tousse.instrumentinstance.service; +import java.math.BigDecimal; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -145,11 +146,11 @@ classToHasGenerateNewTousseInstanceMap.put(RecyclingRecord.class, false); classToHasGenerateNewTousseInstanceMap.put(WashAndDisinfectRecord.class, false); - classToHasGenerateNewTousseInstanceMap.put(PackingRecord.class, false); - classToHasGenerateNewTousseInstanceMap.put(SterilizationRecord.class, false); - classToHasGenerateNewTousseInstanceMap.put(Invoice.class, false); - classToHasGenerateNewTousseInstanceMap.put(SignRecord.class, false); - classToHasGenerateNewTousseInstanceMap.put(UseRecord.class, false); + classToHasGenerateNewTousseInstanceMap.put(PackingRecord.class, true); + classToHasGenerateNewTousseInstanceMap.put(SterilizationRecord.class, true); + classToHasGenerateNewTousseInstanceMap.put(Invoice.class, true); + classToHasGenerateNewTousseInstanceMap.put(SignRecord.class, true); + classToHasGenerateNewTousseInstanceMap.put(UseRecord.class, true); } @Override @@ -510,6 +511,28 @@ } }); } + //器械循环实例关联器械包实例 + if(StringUtils.equals(cls.getSimpleName(), PackingRecord.class.getSimpleName()) && ti != null){ + if(CollectionUtils.isNotEmpty(datMapList)){ + String batchUpdateSql = + String.format("update %s set tousseInstanceId=? where id=?", InstrumentCycleInstance.class.getSimpleName()); + + jdbcTemplate.batchUpdate(batchUpdateSql, new BatchPreparedStatementSetter() { + + @Override + public void setValues(PreparedStatement ps, int i) throws SQLException { + Map map = datMapList.get(i); + ps.setLong(1, ti.getId()); + ps.setLong(2, (Long)map.get("instrumentCycleInstanceId")); + } + + @Override + public int getBatchSize() { + return CollectionUtils.size(datMapList); + } + }); + } + } } /** @@ -713,7 +736,9 @@ idToTousseInstanceMap.put(instance.getId(), instance); }); Optional.of(tousseInstanceMapList).orElse(new ArrayList>()).stream().forEach(map -> { - idCardInstanceIdTousseInstanceMap.put((Long)map.get("idCardInstanceID"), idToTousseInstanceMap.get((Long)map.get("id"))); + BigDecimal idCardInstanceIDBigDecimal = (BigDecimal)map.get("idCardInstanceID"); + BigDecimal id = (BigDecimal)map.get("id"); + idCardInstanceIdTousseInstanceMap.put(idCardInstanceIDBigDecimal.longValue(), idToTousseInstanceMap.get(id.longValue())); }); } } @@ -1527,15 +1552,22 @@ if(instrumentInstance == null || !DatabaseUtil.isPoIdValid(instrumentInstance.getId())){ return 0; } - - String sql = String.format("select count(ici.id) from %s ii " + //第一次发货记录数量 + String sql1 = String.format("select count(ici.id) from %s ii " + "join %s ici on ici.instrumentInstanceId = ii.id " + "where ii.id = %s and ici.invoiceId is not null", InstrumentInstance.class.getSimpleName(), InstrumentCycleInstance.class.getSimpleName(), instrumentInstance.getId()); + //退货重发的发货记录数量 + String sql2 = String.format("select count(ici.id) from %s ii " + + "join %s ici on ici.instrumentInstanceId = ii.id " + + "where ii.id = %s and ici.secondInvoiceId is not null", + InstrumentInstance.class.getSimpleName(), + InstrumentCycleInstance.class.getSimpleName(), + instrumentInstance.getId()); - return objectDao.countBySql(sql); + return objectDao.countBySql(sql1) + objectDao.countBySql(sql2); } @Override