|  |  | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  |  | 
 |  |  | import javax.annotation.Resource; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | 
 |  |  |                 // 根据套餐内所有项目查询该套餐是否第一次使用,若第一次使用则更新该套餐有效期 | 
 |  |  |                 List<SysBeauticianState> taocanHas = beauticianStateDao.selectByProjUse(taocanProjUses, Dictionary.SERVICE_STATU_YYQX); | 
 |  |  |                 if (CollectionUtils.isEmpty(taocanHas)) { | 
 |  |  |                     Date useInvalidTime = shoppingGoodsService.calInvalidTime(sysProjInfo, 2, sysProjUse.getFailTime()); | 
 |  |  |                     ShoppingGoods taocanInfo = shoppingGoodsDao.selectById(taocan.getProjId()); | 
 |  |  |                     Date useInvalidTime = shoppingGoodsService.calInvalidTime(taocanInfo, 2, sysProjUse.getFailTime()); | 
 |  |  |                     taocan.setFailTime(useInvalidTime); | 
 |  |  |                 } | 
 |  |  |                 sysProjUseDao.updateSurplusCount(taocan); | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     private void backProjCount(SysProjServices projServices) { | 
 |  |  |         List<SysBeauticianState> beauticianStateList = beauticianStateDao.selectBySerIds(projServices.getId()); | 
 |  |  |  | 
 |  |  |         Map<Long ,List<SysProjUse>> taocanMap = new HashMap<>(); | 
 |  |  |         // 回退项目余额 | 
 |  |  |         for (SysBeauticianState beauticianState : beauticianStateList) { | 
 |  |  |             // 该修改为 有效日期判断更新所有 | 
 |  |  |             beauticianState.setState(Dictionary.BEATUI_STATE_YYQX); | 
 |  |  |             beauticianStateDao.update(beauticianState); | 
 |  |  |  | 
 |  |  |             SysProjUse sysProjUse = sysProjUseDao.selectById(beauticianState.getPuseId()); | 
 |  |  |             if (sysProjUse != null && sysProjUse.getId() != null) { | 
 |  |  |                 sysProjUse = sysProjUseDao.selectById(sysProjUse.getId()); | 
 |  |  | 
 |  |  |                 int surplus = sysProjUse.getSurplusCount() + beauticianState.getCount(); | 
 |  |  |                 upProjUse.setSurplusCount(surplus); | 
 |  |  |                 upProjUse.setBalance(MoneyUtil.add(sysProjUse.getBalance(), sysProjUse.getPrice())); | 
 |  |  |  | 
 |  |  |                 // 取消时,判断该项目之前是否有使用过,若使用过则非第一次使用,则不更新有效日期,若未使用表明此次为第一次使用,则更新有效日期为购买日期或统一失效日期 | 
 |  |  |                 List<SysBeauticianState> hasBeautician = beauticianStateDao.selectBeauticianStateByPuseIdAndNoStatus(beauticianState.getPuseId(), Dictionary.BEATUI_STATE_YYQX); | 
 |  |  |                 if (hasBeautician.isEmpty()) { | 
 |  |  |                     ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(beauticianState.getProjId()); | 
 |  |  |                     Date useInvalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 1, null); | 
 |  |  |                     upProjUse.setFailTime(useInvalidTime); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (sysProjUse.getTaocanId() != null) { | 
 |  |  |                     List<SysProjUse> sysProjUses = taocanMap.get(sysProjUse.getTaocanId()); | 
 |  |  |                     if (CollectionUtils.isEmpty(sysProjUses)) { | 
 |  |  |                         List<SysProjUse> taocanItems = new ArrayList<>(); | 
 |  |  |                         taocanItems.add(sysProjUse); | 
 |  |  |                         taocanMap.put(sysProjUse.getTaocanId(), taocanItems); | 
 |  |  |                     } else { | 
 |  |  |                         sysProjUses.add(sysProjUse); | 
 |  |  |                         taocanMap.put(sysProjUse.getTaocanId(), sysProjUses); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 sysProjUseDao.updateSurplusCount(upProjUse); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (taocanMap.size() != 0) { | 
 |  |  |             for (Map.Entry<Long, List<SysProjUse>> entry : taocanMap.entrySet()) { | 
 |  |  |                 List<SysBeauticianState> taocanUse = beauticianStateDao.selectByProjUse(entry.getValue(), Dictionary.BEATUI_STATE_YYQX); | 
 |  |  |                 if (CollectionUtils.isEmpty(taocanUse)) { | 
 |  |  |                     SysProjUse taocan = sysProjUseDao.selectById(entry.getKey()); | 
 |  |  |                     ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(taocan.getProjId()); | 
 |  |  |                     Date buyInvalidDate = shoppingGoodsService.calInvalidTime(shoppingGoods, 1, null); | 
 |  |  |                     taocan.setFailTime(buyInvalidDate); | 
 |  |  |  | 
 |  |  |                     sysProjUseDao.update(taocan); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 划扣 jyy |