Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManager.java =================================================================== diff -u -r33005 -r33159 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManager.java (.../ProxyDisinfectionManager.java) (revision 33005) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManager.java (.../ProxyDisinfectionManager.java) (revision 33159) @@ -122,5 +122,26 @@ * @param proxyDisinfection */ public void canApplicantTousseInstance(TousseInstance tousseInstance, String handleDepartCoding, ProxyDisinfection proxyDisinfection); + + /** + * 根据器械包实例条码,查询对应的代理灭菌单 + * @param barcode + * @return + */ + public ProxyDisinfection loadProxyDisinfectionByTousseBarcode(String barcode); + + /** + * 在代理灭菌列表界面扫描代理灭菌包条码后,打开对应的代理灭菌单,返回JSON格式数据 + * @param barcode + * @return + */ + public JSONObject loadProxyDisinfectionJsonByTousseBarcode(String barcode); + /** + * 加载代理灭菌单,返回JSON格式数据 + * @param proxyDisinfection + * @return + */ + public JSONObject loadProxyDisinfectionJson(ProxyDisinfection proxyDisinfection); + } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java =================================================================== diff -u -r33020 -r33159 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 33020) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 33159) @@ -15,6 +15,8 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; +import net.sf.json.processors.DefaultValueProcessor; +import net.sf.json.util.PropertyFilter; import org.apache.commons.collections.MapUtils; import org.apache.commons.collections4.CollectionUtils; @@ -39,6 +41,7 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.proxydisinfection.ProxyDisinfection; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.recyclingapplication.service.InvoicePlanManager; +import com.forgon.disinfectsystem.sterilizationmanager.proxydisinfection.vo.ReviewedBasketVo; import com.forgon.disinfectsystem.sterilizationmanager.proxydisinfection.vo.TousseInstanceVo; import com.forgon.disinfectsystem.sterilizationmanager.proxydisinfection.vo.TousseItenInfo; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; @@ -52,6 +55,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.json.JsonPropertyFilter; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; @@ -1178,4 +1182,98 @@ return data; } + @Override + public ProxyDisinfection loadProxyDisinfectionByTousseBarcode(String barcode) { + if(StringUtils.isBlank(barcode)){ + throw new SystemException("请扫描器械包条码!"); + } + BarcodeDevice barcodeDevice = barcodeManager.getBarcodeByBarcode(barcode); + if(barcodeDevice == null){ + throw new SystemException("未找到条码为" + barcode + "的器械包!"); + } + if(!(barcodeDevice instanceof TousseInstance)){ + throw new SystemException("请扫描器械包条码!"); + } + TousseInstance tousseInstance = (TousseInstance) barcodeDevice; + ProxyDisinfection proxyDisinfection = this.get(tousseInstance.getProxyDisinfection_id()); + if(proxyDisinfection == null){ + throw new SystemException("未找到" + tousseInstance.getTousseDefinitionName() + "(条码" + tousseInstance.getBarcode() + ")所属的代理灭菌单"); + } + return proxyDisinfection; + } + + @Override + public JSONObject loadProxyDisinfectionJsonByTousseBarcode(String barcode) { + ProxyDisinfection proxyDisinfection = this.loadProxyDisinfectionByTousseBarcode(barcode); + if(proxyDisinfection == null){ + throw new SystemException("未找到条码为" + barcode + "的器械包对应的代理灭菌单!"); + } + JSONObject jsonObject = loadProxyDisinfectionJson(proxyDisinfection); + return jsonObject; + } + + @Override + public JSONObject loadProxyDisinfectionJson(ProxyDisinfection proxyDisinfection) { + if(proxyDisinfection == null){ + throw new SystemException("代理灭菌单不存在!"); + } + boolean editMode = true; + // 篮筐列表 + List basketVos = new ArrayList(); + for (ReviewedBasket basket : proxyDisinfection.getReviewedBaskets()) { + ReviewedBasketVo basketVo = new ReviewedBasketVo(); + basketVo.setId(basket.getId()); + basketVo.setBarcode(basket.getContainer().getBarcode()); + basketVo.setName(basket.getContainer().getContainerName()); + for (TousseInstance ti : basket.getTousseInstances(objectDao)) { + Long proxyDisinfection_id = ti.getProxyDisinfection_id(); + if (proxyDisinfection_id != null && proxyDisinfection_id.equals(proxyDisinfection.getId())) { + // 打开代理灭菌单时,如果有任何一个器械包的状态不是已审核(灭菌中或者已灭菌),则不允许修改该单的内容 + if (!TousseInstance.STATUS_REVIEWED.equals(ti.getStatus())){ + editMode = false; + } + this.addTousseInstance(basketVo.getInstances(), ti); + } + } + basketVos.add(basketVo); + } + // 器械包列表 + List instanceVos = new ArrayList(); + for (TousseInstance ti : proxyDisinfection.getProxyTousses(objectDao)) { + if (!TousseInstance.STATUS_REVIEWED.equals(ti.getStatus())){ + editMode = false; + } + this.addTousseInstance(instanceVos,ti); + } + JsonConfig config = new JsonConfig(); + PropertyFilter propertyFilter = new JsonPropertyFilter(new String[] { + "proxyTousses", "applicationItems", "invoice", + "reviewedBaskets" }); + config.setJsonPropertyFilter(propertyFilter); + config.registerDefaultValueProcessor(Integer.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue( + @SuppressWarnings("rawtypes") Class arg0) { + return null; + } + }); + config.registerDefaultValueProcessor(Long.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue( + @SuppressWarnings("rawtypes") Class arg0) { + return null; + } + }); + Map map = new HashMap(); + map.put("success", true); + map.put("editMode", editMode); + map.put("data", proxyDisinfection); + map.put("baskets", basketVos); + map.put("instances", instanceVos); + JSONObject jsonObject = JSONObject.fromObject(map, config); + return jsonObject; + } + } \ No newline at end of file Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/action/ProxyDisinfectionAction.java =================================================================== diff -u -r33000 -r33159 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/action/ProxyDisinfectionAction.java (.../ProxyDisinfectionAction.java) (revision 33000) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/action/ProxyDisinfectionAction.java (.../ProxyDisinfectionAction.java) (revision 33159) @@ -295,68 +295,26 @@ } public void loadProxyDisinfection() { - StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); - boolean editMode = true; - // 篮筐列表 - List basketVos = new ArrayList(); - for (ReviewedBasket basket : proxyDisinfection.getReviewedBaskets()) { - ReviewedBasketVo basketVo = new ReviewedBasketVo(); - basketVo.setId(basket.getId()); - basketVo.setBarcode(basket.getContainer().getBarcode()); - basketVo.setName(basket.getContainer().getContainerName()); - for (TousseInstance ti : basket.getTousseInstances(objectDao)) { - Long proxyDisinfection_id = ti.getProxyDisinfection_id(); - if (proxyDisinfection_id != null && proxyDisinfection_id.equals(proxyDisinfection.getId())) { - // 打开代理灭菌单时,如果有任何一个器械包的状态不是已审核(灭菌中或者已灭菌),则不允许修改该单的内容 - if (!TousseInstance.STATUS_REVIEWED.equals(ti.getStatus())){ - editMode = false; - } - proxyDisinfectionManager.addTousseInstance(basketVo.getInstances(), ti); - } - } - basketVos.add(basketVo); + try { + JSONObject result = proxyDisinfectionManager.loadProxyDisinfectionJson(proxyDisinfection); + StrutsResponseUtils.output(result); + } catch (Exception e) { + e.printStackTrace(); + StrutsResponseUtils.output(false, "加载失败:" + e.getMessage()); } - // 器械包列表 - List instanceVos = new ArrayList(); - for (TousseInstance ti : proxyDisinfection.getProxyTousses(objectDao)) { - if (!TousseInstance.STATUS_REVIEWED.equals(ti.getStatus())){ - editMode = false; - } - proxyDisinfectionManager.addTousseInstance(instanceVos,ti); - } - JsonConfig config = new JsonConfig(); - PropertyFilter propertyFilter = new JsonPropertyFilter(new String[] { - "proxyTousses", "applicationItems", "invoice", - "reviewedBaskets" }); - config.setJsonPropertyFilter(propertyFilter); - config.registerDefaultValueProcessor(Integer.class, - new DefaultValueProcessor() { - @Override - public Object getDefaultValue( - @SuppressWarnings("rawtypes") Class arg0) { - return null; - } - }); - config.registerDefaultValueProcessor(Long.class, - new DefaultValueProcessor() { - @Override - public Object getDefaultValue( - @SuppressWarnings("rawtypes") Class arg0) { - return null; - } - }); - Map map = new HashMap(); - map.put("success", true); - map.put("editMode", editMode); - map.put("data", proxyDisinfection); - map.put("baskets", basketVos); - map.put("instances", instanceVos); - JSONObject jsonObject = JSONObject.fromObject(map, config); - String jsonStr = jsonObject.toString(); + } + + /** + * 在代理灭菌列表界面扫描代理灭菌包条码后,即可自动打开对应的代理灭菌单GDSZYY-130 + */ + public void loadProxyDisinfectionByTousseBarcode() { try { - StrutsParamUtils.getResponse().getWriter().println(jsonStr); - } catch (IOException e) { + String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + JSONObject result = proxyDisinfectionManager.loadProxyDisinfectionJsonByTousseBarcode(barcode); + StrutsResponseUtils.output(result); + } catch (Exception e) { e.printStackTrace(); + StrutsResponseUtils.output(false, "加载失败:" + e.getMessage()); } }