InspectionTemplateService.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.jd.lightapplication.service;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.jd.lightapplication.model.InspectionProject;
  8. import com.jd.lightapplication.model.InspectionTemplate;
  9. import com.jd.lightapplication.mapper.InspectionTemplateMapper;
  10. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11. import com.jd.lightapplication.model.InspectionTemplateProject;
  12. import com.jd.lightapplication.model.dto.InspectionTemplateAddOrUpdateDto;
  13. import com.jd.lightapplication.model.dto.InspectionTemplateQueryDto;
  14. import lombok.AllArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.util.List;
  18. import java.util.stream.Collectors;
  19. @Service
  20. @AllArgsConstructor
  21. public class InspectionTemplateService extends ServiceImpl<InspectionTemplateMapper, InspectionTemplate> {
  22. private InspectionTemplateProjectService inspectionTemplateProjectService;
  23. /**
  24. * 新增或者修改方法 id为null新增 id不为null修改
  25. *
  26. * @param inspectionTemplateAddOrUpdateDto
  27. * @return
  28. */
  29. @Transactional(rollbackFor = Exception.class)
  30. public Boolean saveOrUpdate(InspectionTemplateAddOrUpdateDto inspectionTemplateAddOrUpdateDto) {
  31. //如果修改或者是保存的日常巡检模板并且是启用状态,把之前启用的日常巡检模板设为禁用
  32. if (inspectionTemplateAddOrUpdateDto.getType() == 10 && inspectionTemplateAddOrUpdateDto.getIsEnable() == 10) {
  33. baseMapper.disableCurrentDailyInspectionTemplate();
  34. }
  35. //先保存或者修改巡检模板主表信息
  36. InspectionTemplate inspectionTemplate = new InspectionTemplate()
  37. .setId(inspectionTemplateAddOrUpdateDto.getId())
  38. .setName(inspectionTemplateAddOrUpdateDto.getName())
  39. .setType(inspectionTemplateAddOrUpdateDto.getType())
  40. .setIsEnable(inspectionTemplateAddOrUpdateDto.getIsEnable())
  41. .setCreateTime(DateUtil.now());
  42. this.saveOrUpdate(inspectionTemplate);
  43. //再根据巡检模板id删除中间表数据
  44. LambdaQueryWrapper<InspectionTemplateProject> wrapper = new LambdaQueryWrapper<>();
  45. wrapper.eq(InspectionTemplateProject::getTemplateId, inspectionTemplate.getId());
  46. inspectionTemplateProjectService.remove(wrapper);
  47. //最后再保存巡检模板和巡检项目中间表数据
  48. if (inspectionTemplateAddOrUpdateDto.getInspectionProjectIds() == null) {
  49. return true;
  50. }
  51. List<InspectionTemplateProject> templateProjectList = inspectionTemplateAddOrUpdateDto.getInspectionProjectIds().stream().map(t -> {
  52. return new InspectionTemplateProject()
  53. .setTemplateId(inspectionTemplate.getId())
  54. .setProjectId(t)
  55. .setCreateTime(DateUtil.now());
  56. }).collect(Collectors.toList());
  57. inspectionTemplateProjectService.saveBatch(templateProjectList);
  58. return true;
  59. }
  60. public List<InspectionProject> getProjectByTemplateId(Long templateId) {
  61. return baseMapper.getProjectByTemplateId(templateId);
  62. }
  63. public IPage<InspectionTemplate> page(Page page, InspectionTemplateQueryDto inspectionTemplateQueryDto) {
  64. LambdaQueryWrapper<InspectionTemplate> wrapper = new LambdaQueryWrapper<>();
  65. if (StrUtil.isNotBlank(inspectionTemplateQueryDto.getName())) {
  66. wrapper.like(InspectionTemplate::getName, inspectionTemplateQueryDto.getName());
  67. }
  68. if (inspectionTemplateQueryDto.getType() != null && inspectionTemplateQueryDto.getType() != 0) {
  69. wrapper.eq(InspectionTemplate::getType, inspectionTemplateQueryDto.getType());
  70. }
  71. wrapper.orderByDesc(InspectionTemplate::getCreateTime);
  72. return this.page(page, wrapper);
  73. }
  74. public List<InspectionProject> getDailyInspectionProject() {
  75. //先找到日常巡检的模板
  76. LambdaQueryWrapper<InspectionTemplate> wrapper = new LambdaQueryWrapper<>();
  77. wrapper.eq(InspectionTemplate::getType, 10);
  78. wrapper.eq(InspectionTemplate::getIsEnable, 10);
  79. wrapper.orderByDesc(InspectionTemplate::getCreateTime);
  80. List<InspectionTemplate> inspectionTemplateList = baseMapper.selectList(wrapper);
  81. if (inspectionTemplateList.size() == 0 || inspectionTemplateList.get(0) == null) {
  82. return null;
  83. }
  84. return this.getProjectByTemplateId(inspectionTemplateList.get(0).getId());
  85. }
  86. public Boolean updateIsEnableById(Long templateId, Integer isEnable) {
  87. //如果这个模板是日常巡检模板,并且是启用,要把之前启用的日常巡检模板禁用掉
  88. InspectionTemplate inspectionTemplate = baseMapper.selectById(templateId);
  89. if (inspectionTemplate.getType() == 10 && isEnable == 10) {
  90. baseMapper.disableCurrentDailyInspectionTemplate();
  91. }
  92. inspectionTemplate.setIsEnable(isEnable);
  93. return baseMapper.updateById(inspectionTemplate) > 0;
  94. }
  95. }