Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r20495 -r20506 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 20495) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 20506) @@ -1380,71 +1380,29 @@ // 提交单条使用记录 @SuppressWarnings("unchecked") public String submitUseRecord(JSONObject params) { - - JSONObject useRecordJsonObj = params.optJSONObject("useRecord"); - JSONArray tousseInstanceBarcodeJsonArray = params - .optJSONArray("tousseInstanceBarcodeList"); - JSONArray tousseInstanceActualUsedArray = params - .optJSONArray("tousseInstanceActualUsed"); - if (useRecordJsonObj == null) { - return JSONUtil.buildErrorMsgJsonResult("缺失参数useRecord"); + useRecordManager.saveOrUpdateWithPDA(params); + return JSONUtil.buildJsonObject(true).toString(); + } + + /** + * 保存并审核、转换申请单。PDA上只处理器械包的情况,没有丢失报损 + * @param params + * @return + */ + public String saveAndReviewAndConvertUseRecord(JSONObject params){ + Long useRecordId = useRecordManager.saveOrUpdateWithPDA(params); + UseRecord useRecord = useRecordManager.get(useRecordId); + if(useRecord != null){ + String applicationFormType = CssdUtils.getSystemSetConfigByName("applicationFormType"); + List ids = new ArrayList<>(); + ids.add(useRecordId); + useRecordManager.createRecyclingApplicationByUseRecords(ids, + useRecord.getOperator(), useRecord.getDepart(), useRecord.getDepartCoding(), + new Date(),applicationFormType); + return JSONUtil.buildJsonObject(true).toString(); + }else{ + return JSONUtil.buildJsonObject(false, "保存使用记录失败").toString(); } - if (tousseInstanceBarcodeJsonArray == null) { - return JSONUtil.buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodeList"); - } - - Object useRecordObj = JSONObject.toBean(useRecordJsonObj, - UseRecord.class); - if (useRecordObj == null || !(useRecordObj instanceof UseRecord)) { - return JSONUtil.buildErrorMsgJsonResult("参数useRecord无法转换为Bean"); - } - Object barcodeCol = JSONArray.toCollection( - tousseInstanceBarcodeJsonArray, String.class); - if (barcodeCol == null) { - return JSONUtil.buildErrorMsgJsonResult("参数tousseInstanceBarcodeList无法转换为字符串集合"); - } - - UseRecord newUseRecord = (UseRecord) useRecordObj; - UseRecord editUseRecord = newUseRecord; - if (newUseRecord.getId() != null) { - UseRecord originalUseRecord = useRecordManager - .getUseRecordById(newUseRecord.getId()); - if (originalUseRecord != null) { - editUseRecord = originalUseRecord; - - // 修改使用记录:拷贝属性 - editUseRecord.setHospitalNum(newUseRecord.getHospitalNum()); - editUseRecord.setTreatmentNum(newUseRecord.getTreatmentNum()); - editUseRecord.setPatientName(newUseRecord.getPatientName()); - editUseRecord.setPatientAge(newUseRecord.getPatientAge()); - editUseRecord.setPatientIDCard(newUseRecord.getPatientIDCard()); - editUseRecord.setDoctorName(newUseRecord.getDoctorName()); - editUseRecord.setOperation(newUseRecord.getOperation()); - editUseRecord.setOperator(newUseRecord.getOperator()); - editUseRecord.setDepart(newUseRecord.getDepart()); - editUseRecord.setDepartCoding(newUseRecord.getDepartCoding()); - editUseRecord.setOperationRoom(newUseRecord.getOperationRoom()); - editUseRecord.setWashHandNurse(newUseRecord.getWashHandNurse()); - editUseRecord.setCircuitNurse(newUseRecord.getCircuitNurse()); - editUseRecord.setPatientArea(newUseRecord.getPatientArea()); - } - } - Map actualUsedMap = new HashMap(); - if(CollectionUtils.isNotEmpty(tousseInstanceActualUsedArray)){ - for(int i = 0;i < tousseInstanceActualUsedArray.size();++i){ - JSONObject json = tousseInstanceActualUsedArray.optJSONObject(i); - if(json != null){ - String barcode = json.optString("barcode"); - if(StringTools.isNotBlank(barcode)){ - actualUsedMap.put(barcode, json.optString("actualUsed")); - } - } - } - } - useRecordManager.saveOrUpdateUseRecordAndTousseInstanceList( - editUseRecord, (Collection) barcodeCol,actualUsedMap); - return new JSONStringer().object().key("success").value(true) - .endObject().toString(); } // 在使用记录模块的上下文,根据条码获取信息 Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r20470 -r20506 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 20470) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 20506) @@ -66,7 +66,6 @@ import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; -import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; @@ -86,6 +85,7 @@ import com.forgon.disinfectsystem.toussetransition.service.TousseTransitionPlanManager; import com.forgon.disinfectsystem.vo.TousseSimpleVO; import com.forgon.disinfectsystem.vo.UseMaterialGoodsItem; +import com.forgon.exception.SystemException; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.serialnumber.model.SerialNum; @@ -94,11 +94,9 @@ import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; -import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.DateJsonValueProcessor; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; -import com.forgon.tools.util.ObjectUtil; /** * @@ -650,14 +648,83 @@ return list; } + public Long saveOrUpdateWithPDA(JSONObject params){ + JSONObject useRecordJsonObj = params.optJSONObject("useRecord"); + JSONArray tousseInstanceBarcodeJsonArray = params + .optJSONArray("tousseInstanceBarcodeList"); + JSONArray tousseInstanceActualUsedArray = params + .optJSONArray("tousseInstanceActualUsed"); + if (useRecordJsonObj == null) { + throw new SystemException("缺失参数useRecord"); + } + if (tousseInstanceBarcodeJsonArray == null) { + throw new SystemException("缺失参数tousseInstanceBarcodeList"); + } + + Object useRecordObj = JSONObject.toBean(useRecordJsonObj, + UseRecord.class); + if (useRecordObj == null || !(useRecordObj instanceof UseRecord)) { + throw new SystemException("参数useRecord无法转换为Bean"); + } + Object barcodeCol = JSONArray.toCollection( + tousseInstanceBarcodeJsonArray, String.class); + if (barcodeCol == null) { + throw new SystemException("参数tousseInstanceBarcodeList无法转换为字符串集合"); + } + + UseRecord newUseRecord = (UseRecord) useRecordObj; + UseRecord editUseRecord = newUseRecord; + if (newUseRecord.getId() != null) { + UseRecord originalUseRecord = getUseRecordById(newUseRecord.getId()); + if (originalUseRecord != null) { + editUseRecord = originalUseRecord; + + // 修改使用记录:拷贝属性 + editUseRecord.setHospitalNum(newUseRecord.getHospitalNum()); + editUseRecord.setTreatmentNum(newUseRecord.getTreatmentNum()); + editUseRecord.setPatientName(newUseRecord.getPatientName()); + editUseRecord.setPatientAge(newUseRecord.getPatientAge()); + editUseRecord.setPatientIDCard(newUseRecord.getPatientIDCard()); + editUseRecord.setDoctorName(newUseRecord.getDoctorName()); + editUseRecord.setOperation(newUseRecord.getOperation()); + editUseRecord.setOperator(newUseRecord.getOperator()); + editUseRecord.setDepart(newUseRecord.getDepart()); + editUseRecord.setDepartCoding(newUseRecord.getDepartCoding()); + editUseRecord.setOperationRoom(newUseRecord.getOperationRoom()); + editUseRecord.setWashHandNurse(newUseRecord.getWashHandNurse()); + editUseRecord.setCircuitNurse(newUseRecord.getCircuitNurse()); + editUseRecord.setPatientArea(newUseRecord.getPatientArea()); + } + } + Map actualUsedMap = new HashMap(); + if(CollectionUtils.isNotEmpty(tousseInstanceActualUsedArray)){ + for(int i = 0;i < tousseInstanceActualUsedArray.size();++i){ + JSONObject json = tousseInstanceActualUsedArray.optJSONObject(i); + if(json != null){ + String barcode = json.optString("barcode"); + if(StringTools.isNotBlank(barcode)){ + actualUsedMap.put(barcode, json.optString("actualUsed")); + } + } + } + } + saveOrUpdateUseRecordAndTousseInstanceList( + editUseRecord, (Collection) barcodeCol,actualUsedMap); + return editUseRecord.getId(); + } + @Override public boolean saveOrUpdateUseRecordAndTousseInstanceList( UseRecord useRecord, Collection tousseInstanceBarcodes,Map actualUsedMap) { - if (useRecord == null || tousseInstanceBarcodes == null - || tousseInstanceBarcodes.isEmpty() - || !UseRecord.STATUS_UNAUDITED.equals(useRecord.getStatus())) { - return false; + if(useRecord == null){ + throw new SystemException("使用记录不能为空"); } + if(CollectionUtils.isEmpty(tousseInstanceBarcodes)){ + throw new SystemException("包实例不能为空"); + } + if(!useRecord.isUnaudited()){ + throw new SystemException("只有未审核的使用记录才能修改。使用记录当前状态为:" + useRecord.getStatus()); + } boolean newUseRecord = useRecord.getId() == null; if (newUseRecord) { Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java =================================================================== diff -u -r20463 -r20506 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 20463) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 20506) @@ -72,7 +72,19 @@ * @param isInterfere 是否干预 */ public void deleteUseRecordById(String useRecordIds , boolean isInterfere); - + /** + * pda保存并修改使用使用记录的接口 + * @param params + * @return 使用记录id + */ + public Long saveOrUpdateWithPDA(JSONObject params); + /** + * PDA上保存使用记录。 需要修改成跟pc上一样 + * @param useRecord + * @param tousseInstanceBarcodes + * @param actualUsedMap + * @return + */ public boolean saveOrUpdateUseRecordAndTousseInstanceList( UseRecord useRecord, Collection tousseInstanceBarcodes,Map actualUsedMap);