Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java =================================================================== diff -u -r35377 -r35379 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 35377) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 35379) @@ -919,6 +919,10 @@ Date procStartTime = null; CommonSterilizerRecord record = null; List details = new ArrayList(); + int lineNum = 0;//非空数据行 + String beginStartTimeStr = null; + String endStartTimeStr = null; + Long sterilizationRecordId = null; while ((line = br.readLine()) != null) { if(StringUtils.isBlank(line)){ continue; @@ -956,6 +960,18 @@ if(procStartTime == null){ procStartTime = startDate; } + if(lineNum == 0){//第一行 + lineNum++; + if(DeviceInterface.PARAMATCHINGMETHOD_STARTDATE.equals(devInterface.getParaMatchingMethod())){ + Long time = procStartTime.getTime(); // 灭菌炉自动完成灭菌 + beginStartTimeStr = ForgonDateUtils.safelyFormatDate(new Date(time - 10*60*1000),ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); + endStartTimeStr = ForgonDateUtils.safelyFormatDate(new Date(time + 10*60*1000),ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); + sterilizationRecordId = sterilizationRecordManager.findMatchingSterilizationRecordId(beginStartTimeStr, endStartTimeStr, devInterface.getId(), cycleCounter, machineNumber); + if(!DatabaseUtil.isPoIdValid(sterilizationRecordId)){ + break; + } + } + } if(record == null){ record = new CommonSterilizerRecord(); record.setStartDate(startDate); @@ -977,17 +993,13 @@ details.add(detail); } if(record != null && isEnd){ - String beginStartTimeStr = null; - String endStartTimeStr = null; - if(DeviceInterface.PARAMATCHINGMETHOD_STARTDATE.equals(devInterface.getParaMatchingMethod())){ - Long time = procStartTime.getTime(); // 灭菌炉自动完成灭菌 - beginStartTimeStr = ForgonDateUtils.safelyFormatDate(new Date(time - 10*60*1000),ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); - endStartTimeStr = ForgonDateUtils.safelyFormatDate(new Date(time + 10*60*1000),ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); - } - //更新成功就保存数据 - if(refreshSterilizaerRecordAmounts(record,beginStartTimeStr, endStartTimeStr, devInterface.getId().toString(), machineData.optLong("cycleCounter"), machineNumber, enableDetailedDeviceInformation, loginUserData)){ - objectDao.save(record); - } + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, String.format("机器号[%s],循环次数 [%s],需要更新温度压力数据的灭菌记录id[%s]",machineNumber,cycleCounter,sterilizationRecordId)); + } + if(DatabaseUtil.isPoIdValid(sterilizationRecordId)){ + refreshSterilizationParaType(record, sterilizationRecordId); + objectDao.save(record); + } //返回数据 JSONObject reusltJson = new JSONObject(); reusltJson.put("machineNumber", machineNumber); @@ -1070,36 +1082,13 @@ /** - * 更新灭菌记录的温度压力数据 + * 更新灭菌记录图标 */ - public boolean refreshSterilizaerRecordAmounts(CommonSterilizerRecord xinRecord, String beginStartTimeStr, String endStartTimeStr, String devInterfaceId,Long cycleCounter,String machineNo, boolean enableDetailedDeviceInformation, LoginUserData loginUserData) - { - String queryString = "select max(sr.id) amount from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " - + " where s.deviceInterface_id = " - + devInterfaceId - + " and s.machineNumber = '" - + machineNo +"'"; - if(StringUtils.isNotBlank(beginStartTimeStr)){ - queryString += " and " + dateQueryAdapter.dateAreaSql("sr.startDate", beginStartTimeStr, endStartTimeStr, false); - }else{ - queryString += " and sr.cycleCounter = " + cycleCounter; - } - Long id = objectDao.getALongNum(queryString, "amount"); - if(enableDetailedDeviceInformation){ - appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, String.format("机器号[%s],循环次数 [%s],需要更新温度压力数据的灭菌记录id[%s]",machineNo,cycleCounter,id)); - } - boolean find = false; - if(id != null && id > 0) - { - find = true; - SterilizationRecord record = sterilizationRecordManager.getSterilizationRecordById(id); - record.setSterilizationParaType(SterilizationRecord.STERILIZATIONPARATYPE_TYPE_COMMON); - if(xinRecord != null){ - xinRecord.setSterilizationRecord(record); - } - sterilizationRecordManager.saveOrUpdate(record); - } - return find; + public void refreshSterilizationParaType(CommonSterilizerRecord xinRecord, Long sterilizationRecordId){ + SterilizationRecord record = sterilizationRecordManager.getSterilizationRecordById(sterilizationRecordId); + record.setSterilizationParaType(SterilizationRecord.STERILIZATIONPARATYPE_TYPE_COMMON); + xinRecord.setSterilizationRecord(record); + sterilizationRecordManager.saveOrUpdate(record); } public boolean isTemperatureAndPressureData(String line) Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java =================================================================== diff -u -r35288 -r35379 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 35288) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 35379) @@ -714,5 +714,14 @@ public JSONObject getBarcodeTypeByDisposableGoodsBatch(BarcodeDevice barcodeDevice); public void setRequest(HttpServletRequest request); - + /** + * 获取匹配的灭菌记录id + * @param beginStartTimeStr 开始时间 + * @param endStartTimeStr 结束时间 + * @param devInterfaceId 设备id + * @param cycleCounter 循环次数 + * @param machineNo 机器号 + * @return + */ + public Long findMatchingSterilizationRecordId(String beginStartTimeStr, String endStartTimeStr, Long devInterfaceId,String cycleCounter,String machineNo); } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r35289 -r35379 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 35289) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 35379) @@ -8810,4 +8810,19 @@ resultObj.put("data", obj); return resultObj; } + @Override + public Long findMatchingSterilizationRecordId(String beginStartTimeStr, String endStartTimeStr, Long devInterfaceId,String cycleCounter,String machineNo){ + String queryString = "select max(sr.id) amount from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " + + " where s.machineNumber = '" + + machineNo +"'"; + if(DatabaseUtil.isPoIdValid(devInterfaceId)){ + queryString += " and s.deviceInterface_id = "+ devInterfaceId; + } + if(StringUtils.isNotBlank(beginStartTimeStr)){ + queryString += " and " + dateQueryAdapter.dateAreaSql("sr.startDate", beginStartTimeStr, endStartTimeStr, false); + }else{ + queryString += " and sr.cycleCounter = " + cycleCounter; + } + return objectDao.getALongNum(queryString, "amount"); + } }