Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r31111 -r31138 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 31111) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 31138) @@ -4,20 +4,16 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.ResultSet; import java.sql.SQLException; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -77,7 +73,6 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.exception.SterilingModeNotTheSameException; -import com.forgon.exception.SystemException; import com.forgon.exception.UnScanSterilizationMonitoringPackageException; import com.forgon.exception.service.ExceptionHandler; import com.forgon.log.model.Log; @@ -403,10 +398,27 @@ String position = goodsItem[1]; barcodePositionMap.put(barcode, position); if(fixedBarcodeMap.containsKey(barcode)){ + // 固定条码需要拿固定条码对应的器械包实例条码关联位置信息(DGZYY-181) List barcodes = fixedBarcodeMap.get(barcode); for (String code : barcodes) { barcodePositionMap.put(code, position); } + }else if(DatabaseUtil.isPoIdValid(sterilizationRecord.getId()) + && StringUtils.equals(sterilizationRecord.getStatus(), SterilizationRecord.STERILIZATION_STATUS_BEGIN)){ + // 保存灭菌中的灭菌记录时,如果记录包含固定条码的器械包,而且数量没有变动,前台不会再传固定条码过来, + // 需要再判断条码是否固定条码,然后根据固定条码查询当前灭菌记录中的包实例条码,再用包实例条码关联位置信息(DGZYY-181) + String ancestorTdId = tousseInstanceManager.checkIsFixedBarcode(barcode); + if(StringUtils.isBlank(ancestorTdId)){ + continue; + } + JSONArray arr = tousseInstanceManager.getTousseInsBarcodeArrBySterilizationRecord(sterilizationRecord.getId(), barcode); + if(arr != null && arr.size() > 0){ + for (int i=0;i 0){ tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstance.setSterilizerPosition(null); tousseInstanceManager.save(tousseInstance); subTdAmountMap.put(td, (subTdAmountMap.get(td)-1)); delfixedBarcodeTousseIns.add(tousseInstance); @@ -1952,6 +1954,19 @@ Collection allNewTousseInstances = sterilizationRecord .getTousseInstanceList(); whithoutBasketTousseIns.addAll(allNewTousseInstances); + + // 修改灭菌中的灭菌记录的位置信息(不追溯的包,如果数量没变动,就不会再传条码,所以需要对灭菌记录的器械包重新设置位置信息)(DGZYY-181) + if(barcodePositionMap != null && CollectionUtils.isNotEmpty(whithoutBasketTousseIns) && DatabaseUtil.isPoIdValid(sterilizationRecord.getId())){ + for (TousseInstance tousseInstance : whithoutBasketTousseIns) { + // 设置器械包位置 + String positoin = barcodePositionMap.get(tousseInstance.getBarcode()); + if(StringUtils.isNotBlank(positoin)){ + tousseInstance.setSterilizerPosition(positoin); + } + tousseInstanceList.add(tousseInstance); + } + } + // 灭菌篮筐中的器械包 List reviewedBasketTousseInstance = new ArrayList(); for (ReviewedBasket reviewedBasket : sterilizationRecord Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r31074 -r31138 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 31074) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 31138) @@ -1157,5 +1157,14 @@ * @return */ public Map queryPackedMaterialInstanceCount(String foreignTousseAppId, Long parentId); + + /** + * 根据固定条码及灭菌记录获取灭菌中的器械包实例 + * @param id + * @param barcode + * @return + */ + public JSONArray getTousseInsBarcodeArrBySterilizationRecord(Long id, + String barcode); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r31110 -r31138 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 31110) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 31138) @@ -8893,4 +8893,43 @@ } return packedMaterialInstanceCountMap; } + + + @Override + public JSONArray getTousseInsBarcodeArrBySterilizationRecord(Long id, String barcode) { + if(!DatabaseUtil.isPoIdValid(id) || StringUtils.isBlank(barcode)){ + return new JSONArray(); + } + + StringBuffer sql = new StringBuffer(); + sql.append("select bd.id, bd.barcode, st.sterilizationRecord_id from "); + sql.append(TousseInstance.class.getSimpleName() + " ti join " + BarcodeDevice.class.getSimpleName() + " bd on bd.id = ti.id "); + sql.append("join " + TousseDefinition.class.getSimpleName() + " td on td.id = ti.tousseDefinition_id "); + sql.append("join sterilization_tousseInstance st on st.tousseInstance_id = ti.id "); + sql.append("where td.ancestorID in(select ancestor.id from "); + sql.append(BarcodeDevice.class.getSimpleName() + " bd1 join TousseInstance ti1 on bd1.id = ti1.id "); + sql.append("join " + TousseDefinition.class.getSimpleName() + " td1 on td1.id = ti1.tousseDefinition_id "); + sql.append("join " + TousseDefinition.class.getSimpleName() + " ancestor on ancestor.id = td1.ancestorID "); + sql.append("where bd1.barcode = '" + barcode + "' and ti1.tousseFixedBarcode = 1 and ancestor.isTraceable = '否') "); + sql.append("and st.sterilizationRecord_id = " + id); + + ResultSet rs = objectDao.executeSql(sql.toString()); + JSONArray arr = new JSONArray(); + try { + while(rs.next()){ + JSONObject obj = new JSONObject(); + Long tiId = rs.getLong("id"); + String tiBarcode = rs.getString("barcode"); + obj.put("id", tiId); + obj.put("barcode", tiBarcode); + arr.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return arr; + + } }