Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/action/ReturnGoodsRecordAction.java =================================================================== diff -u -r30961 -r31114 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/action/ReturnGoodsRecordAction.java (.../ReturnGoodsRecordAction.java) (revision 30961) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/action/ReturnGoodsRecordAction.java (.../ReturnGoodsRecordAction.java) (revision 31114) @@ -293,101 +293,8 @@ // 是否为器械包 boolean isTousse = "true".equals(StrutsParamUtils.getPraramValue( "isTousse", "")); - JSONObject returnMsg = new JSONObject(); - returnMsg.put("success", false); - if (StringUtils.isNotBlank(barcode)) { - try { - if (isTousse) {// 是否为器械包 - TousseInstance tousseInstance = tousseInstanceManager - .getTousseInstanceByBarcode(barcode); - - if (tousseInstance == null) { - //msg = "false#&找不到该条码所应的器械包"; - returnMsg.put("errMsg", "找不到该条码所应的器械包"); - } else { - TousseDefinition tousseDefinition = tousseInstance.getTousseDefinition(); - if(tousseDefinition == null){ - throw new RuntimeException("包定义已不存在!"); - } - String tousseType = tousseInstance.getTousseDefinition() - .getTousseType(); - boolean isFixedBarcodeTousseInstance = TousseInstanceUtils.isFixedBarcodeTousseInstance(tousseInstance); - Double fluctuationPrice = tousseInstance.getFluctuationPrice(); - Double price = tousseInstance.getPrice(); - if(!isFixedBarcodeTousseInstance){ - if (!TousseDefinition.PACKAGE_TYPE_INSIDE - .equals(tousseType) && !TousseDefinition.PACKAGE_TYPE_DRESSING - .equals(tousseType) && !TousseDefinition.PACKAGE_TYPE_DISINFECTION - .equals(tousseType) && !tousseDefinition.isForeignOrSplitTousse()) { - // 验证器械包类型 - throw new RuntimeException("只能退货普通器械包或敷料包或消毒物品或外来器械"); - } - if (TousseInstance.STATUS_RETURNED - .equals(tousseInstance.getStatus())) { - // 验证是否已退货 - throw new RuntimeException("["+ tousseInstance.getTousseDefinition() - .getName() + "]已退货!"); - } - if (!tousseInstance.isShipped() && !tousseInstance.isSigned()) { - // 验证是否已发货 - throw new RuntimeException(String.format("%s为 %s状态,不能退货!", tousseInstance.getTousseName(),tousseInstance.getStatus())); - } - }else{ - if(tousseDefinition.isDisinfection()){ - price = TousseDefinitionUtils.getTousseDefinitionPrice(tousseDefinition); - fluctuationPrice = supplyRoomConfigManager.getTousseFluctuationPrice(price); - } - } - - returnMsg.put("success", true); -// // 设置结算科室 -// String settleAccountsDepart = TousseInstanceUtils.getSettleAccountsDepartFromInvoice(tousseInstance.getId().toString(), objectDao); -// tousseInstance.setSettleAccountsDepart(settleAccountsDepart); - - String tousseJsonStr = JSONUtil.toJSONStringEx(tousseInstance,true,TousseInstance.filterProperties); - JSONObject tousseJson = JSONObject.fromObject(tousseJsonStr); - - Invoice invoice = null; - InvoicePlan invoicePlan = null; - Long invoice2_id = tousseInstance.getInvoice2_id(); - Long Invoice_id = tousseInstance.getInvoice_id(); - if(DatabaseUtil.isPoIdValid(invoice2_id)){ - invoice = (Invoice) objectDao.getById(Invoice.class.getSimpleName(), invoice2_id); - }else if(DatabaseUtil.isPoIdValid(Invoice_id)){ - invoice = (Invoice) objectDao.getById(Invoice.class.getSimpleName(), Invoice_id); - } - - if(invoice != null){ - invoicePlan = invoice.getInvoicePlan(); - if(invoicePlan != null){ - // 结算科室自动取值退货物品包实例对应的发货单对应的申请单中的结算科室; - tousseJson.put("settleAccountsDepartOfReturnRecord", invoicePlan.getSettleAccountsDepart()); - tousseJson.put("settleAccountsDepartCodeOfReturnRecord", invoicePlan.getSettleAccountsDepartCoding()); - }else{ - // 如果退货时扫描的包实例的发货单没有对应的申请单,则退货时的结算科室取值发货单上的结算科室;(存在自定义发货的物品没有对应的申请单) - tousseJson.put("settleAccountsDepartOfReturnRecord", invoice.getSettleAccountsDepart()); - tousseJson.put("settleAccountsDepartCodeOfReturnRecord", invoice.getSettleAccountsDepartCoding()); - } - } - - tousseJson.put("price", price); - tousseJson.put("fluctuationPrice", fluctuationPrice); - returnMsg.put("tousseInstance", tousseJson); -// msg = "true#&" -// + tousseInstance.getTousseDefinition() -// .getName() + "#&" -// + tousseInstance.getFluctuationPrice()+"#&"+tousseInstance.getLocation()+"#&"+tousseInstance.getLocationForDisplay(); - - } - } else {} - - } catch (Exception e) { - e.printStackTrace(); - returnMsg.put("errMsg", e.getMessage()); - } - }else{ - returnMsg.put("errMsg", "条码不能为空!"); - } + + JSONObject returnMsg = returnGoodsRecordManager.loadTousseInstanceInfo(barcode, isTousse); try { StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); if(isTousse){ Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java =================================================================== diff -u -r31104 -r31114 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 31104) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 31114) @@ -27,6 +27,8 @@ import com.forgon.disinfectsystem.basedatamanager.goodsstock.service.GoodsStockManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigUtils; +import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseDefinitionUtils; +import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager; @@ -1999,4 +2001,104 @@ return tousses; } + + @Override + public JSONObject loadTousseInstanceInfo(String barcode, boolean isTousse) { + JSONObject returnMsg = new JSONObject(); + returnMsg.put("success", false); + if (StringUtils.isNotBlank(barcode)) { + try { + if (isTousse) {// 是否为器械包 + TousseInstance tousseInstance = tousseInstanceManager + .getTousseInstanceByBarcode(barcode); + + if (tousseInstance == null) { + //msg = "false#&找不到该条码所应的器械包"; + returnMsg.put("errMsg", "找不到该条码所应的器械包"); + } else { + TousseDefinition tousseDefinition = tousseInstance.getTousseDefinition(); + if(tousseDefinition == null){ + throw new RuntimeException("包定义已不存在!"); + } + String tousseType = tousseInstance.getTousseDefinition() + .getTousseType(); + boolean isFixedBarcodeTousseInstance = TousseInstanceUtils.isFixedBarcodeTousseInstance(tousseInstance); + Double fluctuationPrice = tousseInstance.getFluctuationPrice(); + Double price = tousseInstance.getPrice(); + if(!isFixedBarcodeTousseInstance){ + if (!TousseDefinition.PACKAGE_TYPE_INSIDE + .equals(tousseType) && !TousseDefinition.PACKAGE_TYPE_DRESSING + .equals(tousseType) && !TousseDefinition.PACKAGE_TYPE_DISINFECTION + .equals(tousseType) && !tousseDefinition.isForeignOrSplitTousse()) { + // 验证器械包类型 + throw new RuntimeException("只能退货普通器械包或敷料包或消毒物品或外来器械"); + } + if (TousseInstance.STATUS_RETURNED + .equals(tousseInstance.getStatus())) { + // 验证是否已退货 + throw new RuntimeException("["+ tousseInstance.getTousseDefinition() + .getName() + "]已退货!"); + } + if (!tousseInstance.isShipped() && !tousseInstance.isSigned()) { + // 验证是否已发货 + throw new RuntimeException(String.format("%s为 %s状态,不能退货!", tousseInstance.getTousseName(),tousseInstance.getStatus())); + } + }else{ + if(tousseDefinition.isDisinfection()){ + price = TousseDefinitionUtils.getTousseDefinitionPrice(tousseDefinition); + fluctuationPrice = supplyRoomConfigManager.getTousseFluctuationPrice(price); + } + } + + returnMsg.put("success", true); +// // 设置结算科室 +// String settleAccountsDepart = TousseInstanceUtils.getSettleAccountsDepartFromInvoice(tousseInstance.getId().toString(), objectDao); +// tousseInstance.setSettleAccountsDepart(settleAccountsDepart); + + String tousseJsonStr = JSONUtil.toJSONStringEx(tousseInstance,true,TousseInstance.filterProperties); + JSONObject tousseJson = JSONObject.fromObject(tousseJsonStr); + + Invoice invoice = null; + InvoicePlan invoicePlan = null; + Long invoice2_id = tousseInstance.getInvoice2_id(); + Long Invoice_id = tousseInstance.getInvoice_id(); + if(DatabaseUtil.isPoIdValid(invoice2_id)){ + invoice = (Invoice) objectDao.getById(Invoice.class.getSimpleName(), invoice2_id); + }else if(DatabaseUtil.isPoIdValid(Invoice_id)){ + invoice = (Invoice) objectDao.getById(Invoice.class.getSimpleName(), Invoice_id); + } + + if(invoice != null){ + invoicePlan = invoice.getInvoicePlan(); + if(invoicePlan != null){ + // 结算科室自动取值退货物品包实例对应的发货单对应的申请单中的结算科室; + tousseJson.put("settleAccountsDepartOfReturnRecord", invoicePlan.getSettleAccountsDepart()); + tousseJson.put("settleAccountsDepartCodeOfReturnRecord", invoicePlan.getSettleAccountsDepartCoding()); + }else{ + // 如果退货时扫描的包实例的发货单没有对应的申请单,则退货时的结算科室取值发货单上的结算科室;(存在自定义发货的物品没有对应的申请单) + tousseJson.put("settleAccountsDepartOfReturnRecord", invoice.getSettleAccountsDepart()); + tousseJson.put("settleAccountsDepartCodeOfReturnRecord", invoice.getSettleAccountsDepartCoding()); + } + } + + tousseJson.put("price", price); + tousseJson.put("fluctuationPrice", fluctuationPrice); + returnMsg.put("tousseInstance", tousseJson); +// msg = "true#&" +// + tousseInstance.getTousseDefinition() +// .getName() + "#&" +// + tousseInstance.getFluctuationPrice()+"#&"+tousseInstance.getLocation()+"#&"+tousseInstance.getLocationForDisplay(); + + } + } else {} + + } catch (Exception e) { + e.printStackTrace(); + returnMsg.put("errMsg", e.getMessage()); + } + }else{ + returnMsg.put("errMsg", "条码不能为空!"); + } + return returnMsg; + } } Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManager.java =================================================================== diff -u -r30062 -r31114 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManager.java (.../ReturnGoodsRecordManager.java) (revision 30062) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManager.java (.../ReturnGoodsRecordManager.java) (revision 31114) @@ -7,6 +7,7 @@ import java.util.Map; import net.sf.json.JSONArray; +import net.sf.json.JSONObject; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsItem; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; @@ -61,4 +62,12 @@ public JSONArray loadDiposableGoodsReturnGoodsInfoByInvoicePlanId(String warehouseID,Long invoicePlanId); public JSONArray loadReturnedTousseItemsByInvoicePlanId(Long invoicePlanId); public JSONArray loadReturnedTousseItemsByInvoiceId(Long invoiceId); + + /** + * 录退货单时,扫条码获取器械包信息 + * @param barcode + * @param isTousse + * @return + */ + public JSONObject loadTousseInstanceInfo(String barcode, boolean isTousse); }