Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java =================================================================== diff -u -r40873 -r41487 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 40873) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 41487) @@ -3651,13 +3651,13 @@ throw new RuntimeException(String.format("refundRecordId = %s 的退费记录已经同步过了,不需要再次同步!", thirdPartyRefundRecordVo.getRefundRecordId())); } //2、判断对应的退费记录是否同步过,对应的收费记录还没同步时,退费记录不允许同步; - if(StringUtils.isBlank(thirdPartyRefundRecordVo.getChargeRecordId())){ + /*if(StringUtils.isBlank(thirdPartyRefundRecordVo.getChargeRecordId())){ throw new RuntimeException("关联的收费记录id不能为空!"); } if(objectDao.countBySql(String.format("select count(1) from %s where chargeRecordId = '%s' ", ThirdPartyChargeRecord.class.getSimpleName(), thirdPartyRefundRecordVo.getChargeRecordId())) <= 0){ throw new RuntimeException(String.format("chargeRecordId = %s 的收费记录不存在或者还没同步!", thirdPartyRefundRecordVo.getChargeRecordId())); - } + }*/ List thirdPartyRefundRecordVoItems = syncThirdPartyRefundRecordDao.findThirdPartyRefundRecordVoItemByRefundRecordId(thirdPartyRefundRecordVo.getRefundRecordId()); if(CollectionUtils.isEmpty(thirdPartyRefundRecordVoItems)){ throw new RuntimeException("退费记录物品明细为空,无法同步!"); @@ -3805,9 +3805,9 @@ if(StringUtils.isBlank(thirdPartyRefundRecord.getHospitalNumber())){ throw new SystemException("住院不能为空!"); } - if(StringUtils.isBlank(thirdPartyRefundRecord.getChargeRecordId())){ + /*if(StringUtils.isBlank(thirdPartyRefundRecord.getChargeRecordId())){ throw new SystemException("关联收费id不能为空!"); - } + }*/ if(StringUtils.isBlank(thirdPartyRefundRecord.getRefundRecordId())){ throw new SystemException("退费记录id不能为空!"); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r41447 -r41487 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 41447) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 41487) @@ -12546,7 +12546,9 @@ Map idDisposableGoodsMap = getThirdPartyChargeRecordDisposableGoodsMap(chargeRecordItems); Map nameUrgentLevelMap = getThirdPartyChargeRecordUrgentLevelMap(chargeRecordItems); Collection newTousseItemVoList = new ArrayList(); - Set disposableGoodsIdSet = new HashSet(); + //同名物品分组,数量累加 + Map disposableGoodsIdTousseItemVoMap = new LinkedHashMap(); + boolean enableUrgentFunction = CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction",false); for (ThirdPartyChargeRecordItem chargeRecordItem : chargeRecordItems) { DisposableGoods disposableGoods = idDisposableGoodsMap.get(chargeRecordItem.getDisposableGoodsId()); if(disposableGoods == null){ @@ -12555,46 +12557,76 @@ if(disposableGoods.getTransferScale() != null && disposableGoods.getTransferScale().intValue() > 0){ throw new SystemException(String.format("一次性物品%s申领转换系数为%s,单位不统一,不支持同步生成申请单!", disposableGoods.getShowName(), disposableGoods.getTransferScale())); } - TousseItemVo tousseItemVo = new TousseItemVo(); - tousseItemVo.setTousseName(disposableGoods.getShowName()); - tousseItemVo.setDisposableGoodsId(disposableGoods.getId()); - tousseItemVo.setDiposable(com.forgon.Constants.STR_YES); - tousseItemVo.setTousseType(DisposableGoods.TYPE_NAME); - tousseItemVo.setUnit(chargeRecordItem.getUnit()); - tousseItemVo.setExpressInvoice(com.forgon.Constants.STR_NO); - - if(disposableGoodsIdSet.contains(disposableGoods.getId())){ - throw new SystemException(String.format("申请单存在多个相同的一次性物品%s!", disposableGoods.getShowName())); + if(chargeRecordItem.getAmount() == null || chargeRecordItem.getAmount().intValue() <= 0){ + throw new SystemException(String.format("一次性物品%s同步失败,申请数量必须大于0!", disposableGoods.getShowName())); } - disposableGoodsIdSet.add(disposableGoods.getId()); + TousseItemVo tousseItemVo = disposableGoodsIdTousseItemVoMap.get(disposableGoods.getId()); + if(tousseItemVo == null){ + tousseItemVo = new TousseItemVo(); + tousseItemVo.setTousseName(disposableGoods.getShowName()); + tousseItemVo.setDisposableGoodsId(disposableGoods.getId()); + tousseItemVo.setDiposable(com.forgon.Constants.STR_YES); + tousseItemVo.setTousseType(DisposableGoods.TYPE_NAME); + tousseItemVo.setUnit(chargeRecordItem.getUnit()); + tousseItemVo.setExpressInvoice(com.forgon.Constants.STR_NO); + + tousseItemVo.setAmount(chargeRecordItem.getAmount()); + //tousseItemVo.setUnit(chargeRecordItem.getUnit()); + tousseItemVo.setPrice(chargeRecordItem.getReferencePrice()); + tousseItemVo.setRowPrice(chargeRecordItem.getRowPrice()); + }else{ + //申请数量累加 + if(tousseItemVo.getAmount() != null){ + tousseItemVo.setAmount(tousseItemVo.getAmount() + chargeRecordItem.getAmount()); + }else{ + tousseItemVo.setAmount(chargeRecordItem.getAmount()); + } + //价格累加 + if(tousseItemVo.getRowPrice() != null){ + tousseItemVo.setRowPrice(tousseItemVo.getRowPrice() + chargeRecordItem.getRowPrice()); + }else{ + tousseItemVo.setRowPrice(chargeRecordItem.getRowPrice()); + } + } - if(chargeRecordItem.getUrgentAmount() != null && chargeRecordItem.getUrgentAmount().intValue() > 0){ + if(enableUrgentFunction && chargeRecordItem.getUrgentAmount() != null && chargeRecordItem.getUrgentAmount().intValue() > 0){ if(StringUtils.isBlank(chargeRecordItem.getUrgentLevel())){ throw new SystemException(String.format("一次性物品%s同步失败,加急等级名称不能为空!", disposableGoods.getShowName())); } UrgentLevel urgentLevel = nameUrgentLevelMap.get(chargeRecordItem.getUrgentLevel()); if(urgentLevel == null){ throw new SystemException(String.format("一次性物品%s同步失败,不存在名称为%s的加急等级!", disposableGoods.getShowName(), chargeRecordItem.getUrgentLevel())); } - tousseItemVo.setUrgentAmount(chargeRecordItem.getUrgentAmount()); - tousseItemVo.setUrgent(com.forgon.Constants.STR_YES); - tousseItemVo.setUrgentLevel(chargeRecordItem.getUrgentLevel()); - tousseItemVo.setUrgentLevelId(urgentLevel.getId()); + UrgentLevel voUrgentLevel = nameUrgentLevelMap.get(tousseItemVo.getUrgentLevel()); + if(voUrgentLevel != null){ + //加急数量累加 + if(tousseItemVo.getUrgentAmount() != null){ + tousseItemVo.setUrgentAmount(tousseItemVo.getUrgentAmount() + chargeRecordItem.getUrgentAmount()); + }else{ + tousseItemVo.setUrgentAmount(chargeRecordItem.getUrgentAmount()); + } + tousseItemVo.setUrgent(com.forgon.Constants.STR_YES); + //比较加急等级,只取加急级别最高的加急等级 + if(voUrgentLevel.getGrade() < urgentLevel.getGrade()){ + tousseItemVo.setUrgentLevel(urgentLevel.getName()); + tousseItemVo.setUrgentLevelId(urgentLevel.getId()); + } + }else{ + tousseItemVo.setUrgentAmount(chargeRecordItem.getUrgentAmount()); + tousseItemVo.setUrgent(com.forgon.Constants.STR_YES); + tousseItemVo.setUrgentLevel(chargeRecordItem.getUrgentLevel()); + tousseItemVo.setUrgentLevelId(urgentLevel.getId()); + } if(tousseItemVo.getUrgentAmount() > tousseItemVo.getAmount()){ throw new SystemException(String.format("一次性物品%s同步失败,加急数量不能大于申请数量!", disposableGoods.getShowName())); } } - - if(chargeRecordItem.getAmount() == null || chargeRecordItem.getAmount().intValue() < 0){ - throw new SystemException(String.format("一次性物品%s同步失败,申请数量必须大于0!", disposableGoods.getShowName())); + disposableGoodsIdTousseItemVoMap.put(tousseItemVo.getDisposableGoodsId(), tousseItemVo); + } + if(MapUtils.isNotEmpty(disposableGoodsIdTousseItemVoMap)){ + for (Entry entry : disposableGoodsIdTousseItemVoMap.entrySet()) { + newTousseItemVoList.add(entry.getValue()); } - - tousseItemVo.setAmount(chargeRecordItem.getAmount()); - tousseItemVo.setUnit(chargeRecordItem.getUnit()); - tousseItemVo.setPrice(chargeRecordItem.getReferencePrice()); - tousseItemVo.setRowPrice(chargeRecordItem.getRowPrice()); - - newTousseItemVoList.add(tousseItemVo); } this.saveRecyclingApplication(application, newTousseItemVoList, true); //收费记录关联转换的申请单 @@ -12679,8 +12711,8 @@ thirdPartyChargeRecord.setSyncDateTime(syncDateTime); List chargeRecordItems = new ArrayList(); - //物质编码不能为空,并且不能重复 - Set inventorySerialNumberSet = new HashSet(); + //物质编码不能为空 + //Set inventorySerialNumberSet = new HashSet(); for (ThirdPartyChargeRecordVoItem voItem : thirdPartyChargeRecordVo.getItems()) { ThirdPartyChargeRecordItem item = new ThirdPartyChargeRecordItem(); item.setAmount(voItem.getAmount()); @@ -12696,10 +12728,10 @@ if(StringUtils.isBlank(item.getInventorySerialNumber())){ throw new SystemException(String.format("%s[%s]的物质编码为空!", voItem.getName(), voItem.getSpecification())); } - if(inventorySerialNumberSet.contains(item.getInventorySerialNumber())){ + /*if(inventorySerialNumberSet.contains(item.getInventorySerialNumber())){ throw new SystemException(String.format("物品重复,存在多个%s[%s],物质编码为%s!", voItem.getName(), voItem.getSpecification(), item.getInventorySerialNumber())); } - inventorySerialNumberSet.add(item.getInventorySerialNumber()); + inventorySerialNumberSet.add(item.getInventorySerialNumber());*/ chargeRecordItems.add(item); } thirdPartyChargeRecord.setChargeRecordItems(chargeRecordItems); Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java =================================================================== diff -u -r40764 -r41487 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 40764) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 41487) @@ -3752,7 +3752,7 @@ disposableGoods.setName(chargeRecordItem.getName()); disposableGoods.setInventorySerialNumber(chargeRecordItem.getInventorySerialNumber()); disposableGoods.setSpecification(chargeRecordItem.getSpecification()); - disposableGoods.setGoodsType(chargeRecordItem.getGoodsType()); + //disposableGoods.setGoodsType(chargeRecordItem.getGoodsType()); disposableGoods.setReferencePrice(chargeRecordItem.getReferencePrice()); disposableGoods.setUnit(chargeRecordItem.getUnit()); disposableGoods.setIsDisable(Constants.STR_NO);