Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r28662 -r28886 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 28662) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 28886) @@ -1371,6 +1371,56 @@ } @Override + public void saveAndReviewAndConvertUseRecordFromPda(JSONObject params) { + String formParams = params.optString("formParams", ""); + //使用物品物品(器械包、一次性物品等) + String items = params.optString("items", null); + //器械包实例登记使用记录所录入的丢失报损数据 + String tousseInstanceMaterialErrorDamageItems = params.optString("tousseInstanceMaterialErrorDamageItems", null); + //修改后的使用记录 + UseRecord modified = UseRecordUtil.buildUseRecordParamsForUpdate(formParams ,items , tousseInstanceMaterialErrorDamageItems , tousseInstanceManager,barcodeManager,objectDao); + String loginInfo = params.optString("loginInfo", ""); + if(StringUtils.isNotBlank(loginInfo) && StringUtils.isBlank(modified.getDepartCoding())){ + try{ + JSONObject loginInfoJsonObject = JSONObject.fromObject(loginInfo); + modified.setDepartCoding(loginInfoJsonObject.optString("orgUnitCodes")); + modified.setDepart(loginInfoJsonObject.optString("orgUnitName")); + modified.setOperator(loginInfoJsonObject.optString("userFullName")); + }catch(Exception e){ + e.printStackTrace(); + } + } + String operationTimeStr = params.optString("operationTimeStr", null); + if(StringUtils.isNotBlank(operationTimeStr)){ + modified.setOperationTime(ForgonDateUtils.safelyParseDate(operationTimeStr)); + } + //修改使用记录 + if(DatabaseUtil.isPoIdValid(modified.getId())){ + //修改前的使用记录 + UseRecord original = null; + String originalFormParams = params.optString("originalFormParams", ""); + String originalItems = params.optString("originalItems",""); + original = UseRecordUtil.buildUseRecordParamsForUpdate(originalFormParams ,originalItems , tousseInstanceMaterialErrorDamageItems , tousseInstanceManager,barcodeManager,objectDao); + UseRecordUtil.setUseRecordItemsFromParams(modified, items, tousseInstanceMaterialErrorDamageItems,tousseInstanceManager,barcodeManager,objectDao); + updateUseRecord_TRANS_REQUIRED(original, modified); + }else{ + //新增使用记录 + UseRecordUtil.setUseRecordItemsFromParams(modified, items, tousseInstanceMaterialErrorDamageItems,tousseInstanceManager,barcodeManager,objectDao); + saveUseRecord_TRANS_REQUIRED(modified); + } + Long useRecordId = modified.getId(); + UseRecord useRecord = get(useRecordId); + if(useRecord != null){ + String applicationFormType = CssdUtils.getSystemSetConfigByName("applicationFormType"); + List ids = new ArrayList<>(); + ids.add(useRecordId); + createRecyclingApplicationByUseRecords(ids, + useRecord.getOperator(), useRecord.getDepart(), useRecord.getDepartCoding(), + new Date(),applicationFormType,useRecord.getReviewer(),useRecord.getReviewerCode()); + } + } + + @Override public void saveUseRecord_TRANS_REQUIRED(UseRecord modified) { if(CssdUtils.getSystemSetConfigByNameBool("limitOneOperationRoomCanOnlyRegistOneUnAuditedUseRecord") && existsOtherUnauditedUseRecordOfOperationRoom(modified.getOperationRoom() , null)){ Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java =================================================================== diff -u -r27395 -r28886 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 27395) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 28886) @@ -114,6 +114,12 @@ */ void updateUseRecord_TRANS_REQUIRED_USEINTERFERE(UseRecord original, UseRecord modified, boolean useInterfere); + /** + * 接收pda的提交的使用记录参数,用于pda使用记录的保存审核并转换(解决报乐观锁不存在上下文的问题,将所有的业务代码整合到manager处理) + * @param params 详见方法调用处的参数说明 + */ + public void saveAndReviewAndConvertUseRecordFromPda(JSONObject params); + public void saveUseRecord_TRANS_REQUIRED(UseRecord modified); /** Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r28866 -r28886 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 28866) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 28886) @@ -1623,7 +1623,7 @@ public String saveAndReviewAndConvertUseRecord(JSONObject params){ //Long useRecordId = useRecordManager.saveOrUpdateWithPDA(params); JSONObject result = JSONUtil.buildJsonObject(false); - String formParams = params.optString("formParams", ""); + /*String formParams = params.optString("formParams", ""); //使用物品物品(器械包、一次性物品等) String items = params.optString("items", null); //器械包实例登记使用记录所录入的丢失报损数据 @@ -1673,7 +1673,21 @@ return JSONUtil.buildJsonObject(true).toString(); }else{ return JSONUtil.buildJsonObject(false, "保存使用记录失败").toString(); + }*/ + try{ + useRecordManager.saveAndReviewAndConvertUseRecordFromPda(params); + JSONUtil.addSuccess(result, true); + }catch(SystemException e){ + e.printStackTrace(); + JSONUtil.addMessage(result, e.getMessage()); + }catch(RuntimeException e){ + e.printStackTrace(); + JSONUtil.addMessage(result, e.getMessage()); + }catch(Exception e){ + e.printStackTrace(); + JSONUtil.addMessage(result, "保存使用记录失败"); } + return result.toString(); } // 在使用记录模块的上下文,根据条码获取信息