|  |  | 
 |  |  |             List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_XM); | 
 |  |  |             assembleList.forEach(item -> { | 
 |  |  |                 //TODO 补综合卡逻辑 | 
 |  |  |                 createProjuseByAssemble(order, sysOrderItem, item, null, null,null); | 
 |  |  |                 createProjuseByAssemble(order, sysOrderItem, item, null, null,null,0); | 
 |  |  |             }); | 
 |  |  |  | 
 |  |  |             //处理综合卡中包含的套餐 | 
 |  |  | 
 |  |  |      * 通过组合关系创建用户项目余次 | 
 |  |  |      */ | 
 |  |  |     private SysProjUse createProjuseByAssemble(SysOrder order, SysOrderItem sysOrderItem, | 
 |  |  |                                                ShoppingGoodsAssemble goodsAssemble, Long taocanId, Date failTime,String source) { | 
 |  |  |                                                ShoppingGoodsAssemble goodsAssemble, Long taocanId, Date failTime,String source,int maxCount) { | 
 |  |  |         //计算折扣 | 
 |  |  |         Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice(); | 
 |  |  |  | 
 |  |  | 
 |  |  |         puse.setIsOver(Dictionary.DELETED_N); | 
 |  |  |         puse.setOrderItemId(sysOrderItem.getId()); | 
 |  |  |         puse.setProjId(goodsAssemble.getAssembleGoodId()); | 
 |  |  |         puse.setSurplusCount(goodsAssemble.getTotal()); | 
 |  |  |         puse.setSurplusCount(goodsAssemble.getTotal()==null?maxCount: goodsAssemble.getTotal()); | 
 |  |  |         puse.setDeductionNum(goodsAssemble.getDeductionNum()); | 
 |  |  |         puse.setProjName(goodsAssemble.getShoppingGoods().getName()); | 
 |  |  |         puse.setVipId(order.getVipId()); | 
 |  |  | 
 |  |  |         //创建套餐绑定的项目 | 
 |  |  |         List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(projId, ShoppingGoods.SHOPPING_GOODS_TYPE_XM); | 
 |  |  |         for (ShoppingGoodsAssemble assemble : assembleList) { | 
 |  |  |             SysProjUse tempUse = createProjuseByAssemble(order, sysOrderItem, assemble, taocanProjUse.getId(),taocanProjUse.getFailTime(),taocanProjUse.getSource()); | 
 |  |  |             SysProjUse tempUse = createProjuseByAssemble(order, sysOrderItem, assemble, taocanProjUse.getId(),taocanProjUse.getFailTime(),taocanProjUse.getSource(),taocanShoppingGoods.getCarUseCount()); | 
 |  |  |             sumBanance += tempUse.getBalance(); | 
 |  |  |             surplusCount += tempUse.getSurplusCount(); | 
 |  |  |         } | 
 |  |  |         if (Dictionary.FLAG_NO_N.equals(taocanShoppingGoods.getIsCourse())) { | 
 |  |  |             //固定套餐,剩余次数等于绑定项目的次数 | 
 |  |  |             taocanProjUse.setSurplusCount(surplusCount); | 
 |  |  |             //合计套餐余额 | 
 |  |  |             taocanProjUse.setBalance(sumBanance); | 
 |  |  |         } else { | 
 |  |  |             //任选套餐剩余次数等于最大使用次数 | 
 |  |  |             taocanProjUse.setSurplusCount(taocanShoppingGoods.getCarUseCount()); | 
 |  |  |             taocanProjUse.setBalance(sysOrderItem.getZkPrice()); | 
 |  |  |         } | 
 |  |  |         //合计套餐余额 | 
 |  |  |         taocanProjUse.setBalance(sumBanance); | 
 |  |  |  | 
 |  |  |         sysProjUseDao.update(taocanProjUse); | 
 |  |  |     } | 
 |  |  |  |