Index: ssts-web/src/main/webapp/mobileClient/SterileSupplySystem_Android_V4.7.36_20230731_v4_1_6p_release.apk =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/mobileClient/SterileSupplySystem_Android_V4.7.36_20230731_v4_1_nologo_release.apk =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/mobileClient/SterileSupplySystem_Android_V4.7.36_20230731_v4_1_release.apk =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/mobileClient/clientForAndroid.json =================================================================== diff -u -r36067 -r36452 --- ssts-web/src/main/webapp/mobileClient/clientForAndroid.json (.../clientForAndroid.json) (revision 36067) +++ ssts-web/src/main/webapp/mobileClient/clientForAndroid.json (.../clientForAndroid.json) (revision 36452) @@ -1,7 +1,7 @@ { "success":"true", - "version":"4.7.35", - "urlSuffix": "/mobileClient/SterileSupplySystem_Android_V4.7.35_20230605_v4_1_release.apk", - "urlSuffix-nologo":"/mobileClient/SterileSupplySystem_Android_V4.7.35_20230605_v4_1_nologo_release.apk", - "urlSuffix-6p": "/mobileClient/SterileSupplySystem_Android_V4.7.35_20230605_v4_1_6p_release.apk", + "version":"4.7.36", + "urlSuffix": "/mobileClient/SterileSupplySystem_Android_V4.7.36_20230731_v4_1_release.apk", + "urlSuffix-nologo":"/mobileClient/SterileSupplySystem_Android_V4.7.36_20230731_v4_1_nologo_release.apk", + "urlSuffix-6p": "/mobileClient/SterileSupplySystem_Android_V4.7.36_20230731_v4_1_6p_release.apk", } \ No newline at end of file Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r36399 -r36452 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 36399) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 36452) @@ -1179,7 +1179,7 @@ return obj.toString(); } /** - * 根据条码或登录名获取科室下的用户 + * 根据条码或登录名获取科室下的用户(发货单签收页面有调用此方法) * @param params * @return */ @@ -1189,6 +1189,7 @@ String msg = ""; boolean success = false; if(params != null){ + //这个参数其实是传的是条码,并不是工号(变量命令容易让人误解) String loginName = params.optString("loginName"); String departCoding = params.getString("departCoding"); String depart = params.getString("depart"); @@ -3028,6 +3029,18 @@ json.putAll(sterilizationRecordManager.getBarcodeTypeByDisposableGoodsBatch(barcodeDevice)); JSONUtil.addSuccess(json, true); return json.toString(); + } else if(StringUtils.equals(((BarcodeDevice)barcodeDevice).getType(),BarcodeDevice.BARCODE_TYPE_TOUSSEINSTANCESETCODE)){ + List resultTousseInstanceList = tousseInstanceManager.getTousseInstancesBySetCode(barcode); + resultTousseInstanceList = resultTousseInstanceList.stream().filter(ti -> { + return ti.isReviewed(); + }).collect(Collectors.toList()); + JSONArray datasJSONArray = JSONArray.fromObject( + resultTousseInstanceList, + buildJsonConfigForTousseInstance()); + JSONObject json = JSONUtil.buildJsonObject(true, datasJSONArray); + json.put("barcode", barcode); + json.put("type", "tousseInstanceSetCode"); + return json.toString(); } else { JSONObject json = JSONUtil.buildJsonObject(false,"条码无效"); if(barcodeDevice != null){ @@ -3479,6 +3492,7 @@ if (StringUtils.isBlank(taskGroup)) { return JSONUtil.buildErrorMsgJsonResult("缺失参数taskGroup"); } + String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); String barcodeType = null; String barcodeName = null; BarcodeDevice barcodeDevice = barcodeManager @@ -3489,10 +3503,21 @@ Container container = (Container) barcodeDevice; barcodeName = container.getContainerName(); barcodeType = container.getPurpose(); + //启用器械包的可选灭菌程序功能 + boolean enableAvailableSterilizationProgramsOfTousseFunction = + CssdUtils.getSystemSetConfigByNameBool("enableAvailableSterilizationProgramsOfTousseFunction"); if (!Container.CONTAINERTYPE_BASKET.equals(container .getContainerType())) { return JSONUtil.buildErrorMsgJsonResult("此容器非篮筐"); } + if (!Container.CONTAINER_PURPOSE_DISINFECTION.equals(container + .getPurpose())) { + return JSONUtil.buildErrorMsgJsonResult("此篮筐非灭菌篮筐"); + } + //ZSRY-20 【器械包管理】新增设置器械包“可选灭菌程序”功能 + if(enableAvailableSterilizationProgramsOfTousseFunction){ + return JSONUtil.buildErrorMsgJsonResult("启用可选灭菌程序时无法扫描灭菌篮筐进行审核"); + } if (!Arrays.asList(Container.CONTAINER_STATUS_FREE, Container.CONTAINER_STATUS_STERILIZELOADING).contains( container.getStatus())) { @@ -3599,6 +3624,32 @@ .key("barcode").value(barcode).key("type") .value("tousseInstanceList").key("data") .value(datasJSONArray).endObject().toString(); + }else if(StringUtils.equals(((BarcodeDevice)barcodeDevice).getType(),BarcodeDevice.BARCODE_TYPE_TOUSSEINSTANCESETCODE)){ + List tousseInstanceList = tousseInstanceManager.getTousseInstancesBySetCode(barcodeDevice.getBarcode()); + /*JSONArray tousses = new JSONArray(); + for (TousseInstance tousseInstance : tousseInstanceList) { + if(!StringUtils.equals(currentOrgUnitCode, tousseInstance.getOrgUnitCoding()) || !TousseInstance.STATUS_PACKED.equals(tousseInstance.getStatus())){ + continue; + } + JSONObject tousse = tousseInstanceManager.buildTousseInstanceSuccessJson(tousseInstance); + tousses.add(tousse); + } + if(tousses.size() == 0){ + throw new SystemException("该集合码中没有符合条件的器械包,无法加载。"); + }*/ + tousseInstanceList = tousseInstanceList.stream().filter(tousseInstance -> { + return StringUtils.equals(currentOrgUnitCode, tousseInstance.getOrgUnitCoding()) && TousseInstance.STATUS_PACKED.equals(tousseInstance.getStatus()); + }).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(tousseInstanceList)){ + throw new SystemException("该集合码中没有符合条件的器械包,无法加载。"); + } + JSONArray datasJSONArray = JSONArray.fromObject( + tousseInstanceList, + buildJsonConfigForTousseInstance()); + return new JSONStringer().object().key("success").value(true) + .key("barcode").value(barcode).key("type") + .value("tousseInstanceSetCode").key("data") + .value(datasJSONArray).endObject().toString(); } else { appLogManager.saveBarcodeScanLog(AcegiHelper.getLoginUser(), Log.MODEL_REVIEW, barcodeType, barcode, barcodeName); // 非法物品 @@ -5406,46 +5457,73 @@ if (StringUtils.isBlank(barcode)) { message = "缺失参数barcode"; }else{ - TousseInstance ti = tousseInstanceManager.getFirst("barcode", barcode); - if(ti != null){ - barcodeType = "tousseInstance"; - barcodeName = ti.getTousseName(); - final JSONObject extraParam = params.optJSONObject("extraParam"); - if (extraParam == null) { - message = "缺失参数extraParam"; - }else{ - String signerOrgUnitCoding = extraParam.optString("departCoding"); - if(StringTools.isBlank(signerOrgUnitCoding)){ - //没有签收人所属科室,就是没有扫描签收人 - message = "请扫描签收人"; - } - - if(tousseInstanceManager.canSign(ti, signerOrgUnitCoding, null, null)){ - success = true; - data = JSONObject.fromObject(ti,buildJsonConfigForTousseInstance()); - } + BarcodeDevice barcodeDevice = barcodeManager.getBarcodeByBarcode(barcode); + if(barcodeDevice == null){ + message = "只能扫描器械包或签收人条码"; + if(CssdUtils.getSystemSetConfigByNameBool("enableTousseNumberCollectionCodeFunction")){ + message = "只能扫描器械包或器械包集合码或签收人条码"; } }else{ - User user = userManager.getUserByBarcode(barcode); - if(user != null){ - if(user.isEnabled()){ - barcodeType = "user"; - barcodeName = user.getName(); - String orgUnitCode = user.getCurrentOrgUnitCode(); - OrgUnit ou = orgUnitManager.getByCode(orgUnitCode); - if(ou == null){ - message = "用户所属科室不能为空"; - }else{ + if(barcodeDevice instanceof TousseInstance){ + TousseInstance ti = (TousseInstance)barcodeDevice; + barcodeType = "tousseInstance"; + barcodeName = ti.getTousseName(); + final JSONObject extraParam = params.optJSONObject("extraParam"); + if (extraParam == null) { + message = "缺失参数extraParam"; + }else{ + String signerOrgUnitCoding = extraParam.optString("departCoding"); + if(StringTools.isBlank(signerOrgUnitCoding)){ + //没有签收人所属科室,就是没有扫描签收人 + message = "请扫描签收人"; + } + + if(tousseInstanceManager.canSign(ti, signerOrgUnitCoding, null, null)){ success = true; - data = new JSONObject(); - data.put("fullName", user.getFullName()); - data.put("name", user.getName()); - data.put("orgUnitCode", orgUnitCode); - data.put("orgUnitName", ou.getName()); + data = JSONObject.fromObject(ti,buildJsonConfigForTousseInstance()); } - }else{ - message = "该用户已被停用!"; } + }else if(barcodeDevice instanceof User){ + User user = (User)barcodeDevice; + if(user != null){ + if(user.isEnabled()){ + barcodeType = "user"; + barcodeName = user.getName(); + String orgUnitCode = user.getCurrentOrgUnitCode(); + OrgUnit ou = orgUnitManager.getByCode(orgUnitCode); + if(ou == null){ + message = "用户所属科室不能为空"; + }else{ + success = true; + data = new JSONObject(); + data.put("fullName", user.getFullName()); + data.put("name", user.getName()); + data.put("orgUnitCode", orgUnitCode); + data.put("orgUnitName", ou.getName()); + } + }else{ + message = "该用户已被停用!"; + } + } + }else if(StringUtils.equals(barcodeDevice.getType(),BarcodeDevice.BARCODE_TYPE_TOUSSEINSTANCESETCODE)){ + List resultTousseInstanceList = tousseInstanceManager.getTousseInstancesBySetCode(barcode); + resultTousseInstanceList = resultTousseInstanceList.stream().filter(ti -> { + return ti.isShipped() && StringUtils.equals(ti.getFinalLocation(),AcegiHelper.getCurrentOrgUnitCode()); + }).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(resultTousseInstanceList)){ + throw new SystemException("该集合码中没有符合条件的器械包,无法加载"); + } + JSONArray datasJSONArray = JSONArray.fromObject( + resultTousseInstanceList, + buildJsonConfigForTousseInstance()); + data = JSONUtil.buildJsonObject(true, datasJSONArray); + barcodeType = "tousseInstanceSetCode"; + success = true; + }else{ + message = "只能扫描器械包或签收人条码"; + if(CssdUtils.getSystemSetConfigByNameBool("enableTousseNumberCollectionCodeFunction")){ + message = "只能扫描器械包或器械包集合码或签收人条码"; + } } } }