Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntoussecharge/service/ChargeSettingManagerImpl.java =================================================================== diff -u -r32734 -r32749 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntoussecharge/service/ChargeSettingManagerImpl.java (.../ChargeSettingManagerImpl.java) (revision 32734) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntoussecharge/service/ChargeSettingManagerImpl.java (.../ChargeSettingManagerImpl.java) (revision 32749) @@ -33,6 +33,7 @@ import com.forgon.tools.Constants; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.ForgonNumberUtils; import com.forgon.tools.util.SqlUtils; @@ -173,64 +174,99 @@ if(CollectionUtils.isNotEmpty(applicationItems)){ SupplyRoomConfig systemParams = supplyRoomConfigManager .getSystemParamsObj(); + int foreignTousseSplitPriceType = ConfigUtils.getSystemSetConfigByNameInt("foreignTousseSplitPriceType", TousseDefinition.FOREIGNTOUSSE_SPLIT_PRICE_TYPE_TD); List tousseItemIdList = new ArrayList(); + List invoiceIdList = new ArrayList(); for(TousseItem tousseItem : applicationItems){ Long tousseDefinitionId = tousseItem.getTousseDefinitionId(); ChargeSetting chargeSetting = savedChargeSettingMap.get(tousseDefinitionId); if(chargeSetting != null){ - tousseItemIdList.add(tousseItem.getId()); Double price = chargeSetting.getTotalPrice(); TousseDefinition td = tousseDefinitionManager.get(tousseDefinitionId); if(price == null || price.doubleValue() == 0.0){ price = systemParams.getForeignToussePrice(); } td.setPrice(price); objectDao.saveOrUpdate(td); - //修改发货项价格 - String sql1 = new StringBuffer(500) - .append("update ") - .append(InvoiceItem.class.getSimpleName()) - .append(" set settlementPrice=") - .append(price) - .append(",settlementDiscountPrice=") - .append(price) - .append(" where id in (") - .append("select ii.id from ") - .append(Invoice.class.getSimpleName()) - .append(" i inner join ") - .append(InvoiceItem.class.getSimpleName()) - .append(" ii on ii.invoice_id=i.id inner join ") - .append(TousseItem.class.getSimpleName()) - .append(" ti on ti.recyclingApplication_ID=i.invoicePlan_ID inner join ") - .append(TousseDefinition.class.getSimpleName()) - .append(" td on td.id=ii.tousseDefinitionId ") - .append(" where ti.id=") - .append(tousseItem.getId()) - .append(" and (ti.tousseDefinitionId=ii.tousseDefinitionId or ti.tousseDefinitionId=td.parentID))").toString(); - objectDao.excuteSQL(sql1); - String sql2 = new StringBuffer(500) - .append("update ") - .append(TousseInstance.class.getSimpleName()) - .append(" set price=") - .append(price) - .append(",fluctuationPrice=") - .append(price) - .append(",discountPrice=") - .append(price) - .append(" where id in (") - .append("select ti.id from ") - .append(TousseInstance.class.getSimpleName()) - .append(" ti inner join ") - .append(TousseItem.class.getSimpleName()) - .append(" tim on ti.invoicePlanID=tim.recyclingApplication_ID ") - .append(" inner join ") - .append(TousseDefinition.class.getSimpleName()) - .append(" td on td.id=ti.tousseDefinition_id ") - .append(" where tim.id=") - .append(tousseItem.getId()) - .append(" and (ti.tousseDefinition_id=tim.tousseDefinitionId or td.parentID=tim.tousseDefinitionId))").toString(); - //修改包实例价格 - objectDao.excuteSQL(sql2); + + if(foreignTousseSplitPriceType == TousseDefinition.FOREIGNTOUSSE_SPLIT_PRICE_TYPE_AVG){//拆分算,拆分单价为n个包份 + String findHql = "where po.invoicePlanID = ( select invoicePlan.id from " + +TousseItem.class.getSimpleName() + +" where id="+ tousseItem.getId() + +") and (po.tousseDefinition.id=" + + tousseDefinitionId + + " or po.tousseDefinition.parentID="+ tousseDefinitionId +")"; + //申请项对应的包实例 + List tis = objectDao.findBySql(TousseInstance.class.getSimpleName(),findHql); + if(CollectionUtils.isNotEmpty(tis)){ + double[] prices = ForgonNumberUtils.splitPrice(price, tis.size());//价格可能会不一致 + for (int i=0;i