Index: ssts-web/src/main/webapp/disinfectsystem/invoice/customInvoiceForm.js =================================================================== diff -u -r29294 -r29520 --- ssts-web/src/main/webapp/disinfectsystem/invoice/customInvoiceForm.js (.../customInvoiceForm.js) (revision 29294) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/customInvoiceForm.js (.../customInvoiceForm.js) (revision 29520) @@ -393,7 +393,9 @@ showResult("找不到该条码对应的信息。"); return; } - + if(result.isContainer && result.data.length){ + showResult("已添加篮筐内的"+ result.data.length +"个包"); + } var speakBasket = new SpeakBasket(); for(var x=0;x multiResult = loadSterilizeBasketInsideTousseInstance( - barcode, departCodeOfInvoicePlan); + barcode, departCodeOfInvoicePlan,invoiceType); boolean success = (Boolean) multiResult.get("success"); if (!success) { String errorMsg = (String) multiResult.get("error"); @@ -7244,45 +7245,85 @@ * 根据篮筐条码及部门编码查询器械包实例 * @param barcode 灭菌篮筐条码 * @param departCodeOfInvoicePlan + * @param invoiceType 发货类型,如果为自定义发货,则限制只查器械包、敷料包等类型的物品 * @return */ private Map loadSterilizeBasketInsideTousseInstance( - String barcode, final String departCodeOfInvoicePlan) { + String barcode, final String departCodeOfInvoicePlan , String invoiceType) { Map multiResult = new HashMap(); if (StringUtils.isBlank(barcode)) { multiResult.put("success", false); multiResult.put("error", "条码有误"); return multiResult; } + Container container = (Container)objectDao.getByProperty(Container.class.getSimpleName(), "barcode", barcode); + if(container == null){ + multiResult.put("success", false); + multiResult.put("error", "此篮筐已不存在"); + return multiResult; + } + if(!container.isDisinfectionBasket()){ + multiResult.put("success", false); + multiResult.put("error", String.format("此篮筐不为%s,请扫描%s", Container.CONTAINER_PURPOSE_DISINFECTION, Container.CONTAINER_PURPOSE_DISINFECTION)); + return multiResult; + } + if(!container.free()){ + multiResult.put("success", false); + multiResult.put("error", String.format("此篮筐状态不为%s,请扫描状态为%s的%s", Container.CONTAINER_STATUS_FREE, Container.CONTAINER_STATUS_FREE, Container.CONTAINER_PURPOSE_DISINFECTION)); + return multiResult; + } String sql = String - .format(" where po.container.barcode='%s' and po.container.status='%s' order by id desc", - barcode, Container.CONTAINER_STATUS_FREE); + .format(" where po.container.id=%s order by id desc", container.getId()); ReviewedBasket basket = (ReviewedBasket) objectDao.getBySql( ReviewedBasket.class.getSimpleName(), sql); if (basket == null) { multiResult.put("success", false); - multiResult.put("error", "查找篮筐失败"); + multiResult.put("error", "篮筐中没有待发货物品"); return multiResult; } Set tousseInstances = basket .getTousseInstances(objectDao); if (CollectionUtils.isEmpty(tousseInstances)) { multiResult.put("success", false); - multiResult.put("error", "篮筐中无物品"); + multiResult.put("error", "篮筐中没有待发货物品"); return multiResult; } // 按器械包名称分组 MultiValueMap groupDatasByName = new MultiValueMap<>(); for (TousseInstance tousseInstance : tousseInstances) { - if (!TousseInstance.STATUS_SHIPPED - .equals(tousseInstance.getStatus())) { - groupDatasByName.put(tousseInstance.getTousseName(), tousseInstance); + if (tousseInstance.isSteriled() || tousseInstance.isDisinfected()) { + if(StringUtils.equals(invoiceType, Invoice.TYPE_CUSTOM)){ + TousseDefinition td = tousseInstance.getTousseDefinition(); + if(td.isInsideTousse() || td.isDressing() || td.isForeignOrSplitTousse()){ + String limitInvoiceDepart = td.getLimitInvoiceDepart(); + //如果限制发货科室 + if(StringUtils.equals(limitInvoiceDepart, Constants.STR_YES)){ + String departCodingOfTousseInstance = tousseInstance.getInvoiceGroupByDepartCoding(InvoiceUtils.getInvoiceGroupByConfig()); + if(StringUtils.isNotBlank(departCodingOfTousseInstance)){ + if(StringUtils.equals(departCodeOfInvoicePlan, departCodingOfTousseInstance)){ + groupDatasByName.put(tousseInstance.getTousseName(), tousseInstance); + } + }else{ + groupDatasByName.put(tousseInstance.getTousseName(), tousseInstance); + } + }else{ + groupDatasByName.put(tousseInstance.getTousseName(), tousseInstance); + } + } + }else{ + groupDatasByName.put(tousseInstance.getTousseName(), tousseInstance); + } } } + if(MapUtils.isEmpty(groupDatasByName)){ + multiResult.put("success", false); + multiResult.put("error", "篮筐中没有待发货物品"); + return multiResult; + } Collection resultTousseInstances = CollectionUtils .emptyCollection(); @@ -7472,55 +7513,6 @@ return true; } }; - - /** - * 加载灭菌篮筐里面的器械包 - * - * @param barcode - * 灭菌篮筐条码 - * @return - */ - @Override - public Map loadSterilizeBasketInsideTousse(String barcode, - String departCodeOfInvoicePlan) { - Map multiResult = loadSterilizeBasketInsideTousseInstance( - barcode, departCodeOfInvoicePlan); - boolean success = (Boolean) multiResult.get("success"); - if (!success) { - return multiResult; - } - - Collection tousseInstances = (Collection) multiResult - .get("data"); - List invoiceGoodsVoList = new ArrayList(); - for (TousseInstance tousseInstance : tousseInstances) { - InvoiceGoodsVo vo = new InvoiceGoodsVo(); - vo.setBarcode(tousseInstance.getBarcode()); - vo.setCount(1); - vo.setDiposable("否"); - - vo.setEndDate(tousseInstance.getSterileEndTime()); - vo.setName(tousseInstance.getTousseName()); - vo.setShowTousseName(tousseInstance.getShowTousseName()); - vo.setIsTracable(tousseInstance.getTousseDefinition() - .getIsTraceable()); - vo.setStorage("" + 1); - vo.setPrice("" + tousseInstance.getPrice()); - vo.setFluctuationPrice("" + tousseInstance.getFluctuationPrice()); - vo.setTousseType(tousseInstance.getTousseDefinition() - .getTousseType()); - vo.setSterilizerName(tousseInstance.getSterilizerName()); - vo.setFrequency(tousseInstance.getSterileFrequency()); - vo.setBatchNumber(tousseInstance.getSterileEndTime()); - vo.setBarcode(tousseInstance.getBarcode()); - vo.setTousseDefinitionId("" - + tousseInstance.getTousseDefinition().getId()); - invoiceGoodsVoList.add(vo); - } - - multiResult.put("data", invoiceGoodsVoList); - return multiResult; - } // 代理灭菌单的处理 private Set getAvaliableInvoiceItemForProxyDisinfection(InvoicePlan invoicePlan, Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManager.java =================================================================== diff -u -r28509 -r29520 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManager.java (.../InvoiceManager.java) (revision 28509) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManager.java (.../InvoiceManager.java) (revision 29520) @@ -195,8 +195,6 @@ */ public Collection getWaitDeliverGoods(Long invoicePlanId, String applyDate, String tousseType,String disposableGoodsType,String sterilingMethods, String tousseGroupIds); - public Map loadSterilizeBasketInsideTousse(String barcode, - String departCodeOfInvoicePlan); /** * 获取科室已发货未签收的所有发货单 * @param invoiceOrgUnitCoding 发货的科室(供应室)编码,为空时不管条码