Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r30161 -r30165 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 30161) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 30165) @@ -110,6 +110,7 @@ import com.forgon.disinfectsystem.print.vo.PrintRowVo; import com.forgon.disinfectsystem.print.vo.PrintSummaryVo; import com.forgon.disinfectsystem.printRecyclingApplicationConfig.service.PrintConfigManager; +import com.forgon.disinfectsystem.project.model.BudgetProjectWriteBackData; import com.forgon.disinfectsystem.project.service.ProjectManager; import com.forgon.disinfectsystem.recyclingapplication.updateLog.ApplicationLogManager; import com.forgon.disinfectsystem.recyclingapplication.vo.ReturnGoodVo; @@ -603,12 +604,13 @@ } if(applicationMoney.doubleValue() > 0){ applicationMoney = MathTools.mul(applicationMoney, -1.0).doubleValue(); - projectManager.writeBudgetProjectTakeCssdData( - invoicePlan.getProjCode(), invoicePlan.getProjName(), + BudgetProjectWriteBackData budgetProjectWriteBackData = new BudgetProjectWriteBackData( + BudgetProjectWriteBackData.OPERATION_TYPE_DELETE, + invoicePlan.getProjCode(), invoicePlan.getProjName(), invoicePlan.getDetailCode(), invoicePlan.getDetailName(), applicationMoney, invoicePlan.getSubmitTime(), - invoicePlan.getApplicantCode(), invoicePlan.getApplicant(), - invoicePlan.getSerialNumber()); + invoicePlan.getApplicant(), invoicePlan.getApplicantCode(), invoicePlan.getSerialNumber()); + projectManager.writeBudgetProjectTakeCssdData(budgetProjectWriteBackData); } } applicationLogManager.saveApplicationLog(invoicePlan, "申请单删除", ApplicationLogStatusEnum.DELETE); @@ -4431,6 +4433,7 @@ // 值为true:一次性物品申请单界面显示【科研项目】和【指标名称】2个下拉框,提交申请单时进行申请金额是否超支的检查,并且回写数据到中间表 boolean enableSciProjectDisposableGoodsApply = ConfigUtils.getSystemSetConfigByNameBool("enableSciProjectDisposableGoodsApply", false); Collection modifyTousseItemVoList = new ArrayList(); + int operationType = DatabaseUtil.isPoIdValid(application.getId()) ? BudgetProjectWriteBackData.OPERATION_TYPE_UPDATE : BudgetProjectWriteBackData.OPERATION_TYPE_ADD; if(enableSciProjectDisposableGoodsApply){ modifyTousseItemVoList = getModifyTousseItemVoList(application, newTousseItemVoList); }else{ @@ -4500,11 +4503,12 @@ if(projectManager != null && StringUtils.isNotBlank(application.getDetailCode()) && StringUtils.isNotBlank(application.getProjCode())){ Double applicationMoney = getTotalRowPrice(modifyTousseItemVoList); if(applicationMoney.doubleValue() != 0){ - projectManager.writeBudgetProjectTakeCssdData( - application.getProjCode(), application.getProjName(), - application.getDetailCode(), application.getDetailName(), + BudgetProjectWriteBackData budgetProjectWriteBackData = new BudgetProjectWriteBackData( + operationType, application.getProjCode(), application.getProjName(), + application.getDetailCode(), application.getDetailName(), applicationMoney, application.getSubmitTime(), application.getApplicantCode(), application.getApplicant(), application.getSerialNumber()); + projectManager.writeBudgetProjectTakeCssdData(budgetProjectWriteBackData); } } } @@ -4561,15 +4565,20 @@ if(tousseItem.getDisposableGoodsId().longValue() == tousseItemVo.getDisposableGoodsId().longValue()){ removeTousseItems.add(tousseItem); removeTousseItemVos.add(tousseItemVo); - Integer modifyAmount = tousseItemVo.getAmount() - tousseItem.getAmount(); + Integer transferScale = tousseItemVo.getTransferScale(); + Integer voAmount = tousseItemVo.getAmount(); + if(transferScale != null && transferScale.intValue() > 0){ + voAmount = voAmount * transferScale; + } + Integer modifyAmount = voAmount - tousseItem.getAmount(); if(modifyAmount.intValue() != 0){ TousseItemVo vo = new TousseItemVo(); try { BeanUtils.copyProperties(vo, tousseItemVo); } catch (Exception e) { e.printStackTrace(); } - vo.setAmount(modifyAmount); + vo.setAmount(tousseItemVo.getAmount() - tousseItem.getAmount()); vo.setRowPrice(MathTools.sub(tousseItemVo.getRowPrice(), tousseItem.getRowPrice()).doubleValue()); modifyTousseItemVos.add(vo); break; @@ -4580,26 +4589,28 @@ copyTousseItems.removeAll(removeTousseItems); if(CollectionUtils.isNotEmpty(copyTousseItems)){ - for (TousseItem tousseItem : removeTousseItems) { + for (TousseItem tousseItem : copyTousseItems) { TousseItemVo vo = new TousseItemVo(); vo.setDiposable(TousseDefinition.STR_YES); vo.setRowPrice(tousseItem.getRowPrice() * -1.0); vo.setPrice(tousseItem.getPrice()); vo.setAmount(tousseItem.getAmount() * -1); vo.setDisposableGoodsId(tousseItem.getDisposableGoodsId()); + vo.setTousseName(tousseItem.getTousseName()); modifyTousseItemVos.add(vo); } } copyTousseItemVos.removeAll(removeTousseItemVos); if(CollectionUtils.isNotEmpty(copyTousseItemVos)){ - for (TousseItemVo tousseItemVo : removeTousseItemVos) { + for (TousseItemVo tousseItemVo : copyTousseItemVos) { TousseItemVo vo = new TousseItemVo(); vo.setDiposable(TousseDefinition.STR_YES); vo.setRowPrice(tousseItemVo.getRowPrice()); vo.setPrice(tousseItemVo.getPrice()); vo.setAmount(tousseItemVo.getAmount()); vo.setDisposableGoodsId(tousseItemVo.getDisposableGoodsId()); + vo.setTousseName(tousseItemVo.getTousseName()); modifyTousseItemVos.add(vo); } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r30096 -r30165 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 30096) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 30165) @@ -90,6 +90,7 @@ import com.forgon.disinfectsystem.goodsBindingConfig.entity.GoodsBindingConfig; import com.forgon.disinfectsystem.idpredicate.IDOperators; import com.forgon.disinfectsystem.packing.service.PackingManager; +import com.forgon.disinfectsystem.project.model.BudgetProjectWriteBackData; import com.forgon.disinfectsystem.project.service.ProjectManager; import com.forgon.disinfectsystem.recyclingapplication.factory.DeliverManagerFactory; import com.forgon.disinfectsystem.recyclingapplication.updateLog.ApplicationLogManager; @@ -3277,11 +3278,13 @@ } if(applicationMoney.doubleValue() != 0){ applicationMoney = MathTools.mul(applicationMoney, -1.0).doubleValue(); - projectManager.writeBudgetProjectTakeCssdData( + BudgetProjectWriteBackData budgetProjectWriteBackData = new BudgetProjectWriteBackData( + BudgetProjectWriteBackData.OPERATION_TYPE_END, invoicePlan.getProjCode(), invoicePlan.getProjName(), invoicePlan.getDetailCode(), invoicePlan.getDetailName(), applicationMoney, invoicePlan.getSubmitTime(), invoicePlan.getApplicant(), invoicePlan.getApplicantCode(), invoicePlan.getSerialNumber()); + projectManager.writeBudgetProjectTakeCssdData(budgetProjectWriteBackData); } } } @@ -3391,6 +3394,25 @@ setInvoicePlanToTerminateStatus(invoicePlan);// 某些情况下,计算状态的方法有问题 objectDao.saveOrUpdate(invoicePlan); applicationLogManager.saveApplicationLog(invoicePlan, "申请单被终止,原因如下:" + endCause, ApplicationLogStatusEnum.TERMINATE); + // 单上的物品被全部终止或者部分终止:将被终止的物品的总金额,写入负数到中间表(GDSZYY-57 科研项目耗材申领(一次性物品申领)功能开发) + if(projectManager != null){ + Double applicationMoney = 0.0; + if(CollectionUtils.isNotEmpty(applicationItems) && StringUtils.isNotBlank(invoicePlan.getProjCode()) && StringUtils.isNotBlank(invoicePlan.getDetailCode())){ + for (TousseItem tousseItem : applicationItems) { + applicationMoney = MathTools.add(applicationMoney, tousseItem.getRowPrice()).doubleValue(); + } + if(applicationMoney.doubleValue() != 0){ + applicationMoney = MathTools.mul(applicationMoney, -1.0).doubleValue(); + BudgetProjectWriteBackData budgetProjectWriteBackData = new BudgetProjectWriteBackData( + BudgetProjectWriteBackData.OPERATION_TYPE_END, + invoicePlan.getProjCode(), invoicePlan.getProjName(), + invoicePlan.getDetailCode(), invoicePlan.getDetailName(), + applicationMoney, invoicePlan.getSubmitTime(), + invoicePlan.getApplicant(), invoicePlan.getApplicantCode(), invoicePlan.getSerialNumber()); + projectManager.writeBudgetProjectTakeCssdData(budgetProjectWriteBackData); + } + } + } } /**