ComputeDrugCostDetailRepository.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.kcim.dao.repository;
  2. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.kcim.dao.mapper.ComputeDrugCostDetailMapper;
  5. import com.kcim.dao.model.ComputeDrugCostDetail;
  6. import com.kcim.vo.SessionUserVO;
  7. import org.springframework.stereotype.Repository;
  8. import org.springframework.util.CollectionUtils;
  9. import java.util.ArrayList;
  10. import java.util.Date;
  11. import java.util.List;
  12. import java.util.stream.Collectors;
  13. import java.util.stream.Stream;
  14. /**
  15. * @program: CostAccount
  16. * @description: 药材成本计算明细表数据库交互
  17. * @author: Wang.YS
  18. * @create: 2024-01-11 20:06
  19. **/
  20. @Repository
  21. public class ComputeDrugCostDetailRepository extends ServiceImpl<ComputeDrugCostDetailMapper, ComputeDrugCostDetail> {
  22. static Integer MAX_NUMBER = 500;
  23. private static Integer countStep(Integer size) {
  24. return (size + MAX_NUMBER - 1) / MAX_NUMBER;
  25. }
  26. public void removeByItemCostId(List<Integer> costIds, SessionUserVO currentUser) {
  27. if (!CollectionUtils.isEmpty(costIds)) {
  28. int limit = countStep(costIds.size());
  29. //方法一:使用流遍历操作
  30. List<List<Integer>> mglist = new ArrayList<>();
  31. Stream.iterate(0, n -> n + 1).limit(limit).forEach(i -> {
  32. mglist.add(costIds.stream().skip(i * MAX_NUMBER).limit(MAX_NUMBER).collect(Collectors.toList()));
  33. });
  34. for (List<Integer> integers : mglist) {
  35. UpdateWrapper<ComputeDrugCostDetail> updateWrapper = new UpdateWrapper<>();
  36. updateWrapper.lambda().eq(ComputeDrugCostDetail::getDelFlag, 0)
  37. .eq(ComputeDrugCostDetail::getHospId, currentUser.getHospId())
  38. .in(ComputeDrugCostDetail::getDrugCostId, integers)
  39. .set(ComputeDrugCostDetail::getDelFlag, 1);
  40. this.update(updateWrapper);
  41. }
  42. }
  43. }
  44. public void removeByComputeDate(String computeDate, SessionUserVO currentUser) {
  45. UpdateWrapper<ComputeDrugCostDetail> updateWrapper = new UpdateWrapper<>();
  46. updateWrapper.lambda().eq(ComputeDrugCostDetail::getDelFlag, 0)
  47. .eq(ComputeDrugCostDetail::getHospId, currentUser.getHospId())
  48. .eq(ComputeDrugCostDetail::getComputeDate, computeDate)
  49. .set(ComputeDrugCostDetail::getDeleteTime,new Date())
  50. .set(ComputeDrugCostDetail::getDeleteUser,String.valueOf(currentUser.getId()))
  51. .set(ComputeDrugCostDetail::getDelFlag, 1);
  52. this.update(updateWrapper);
  53. }
  54. }