|
@ -4,8 +4,11 @@ import static com.kms.yxgh.sz.service.SzCheckingService.PART_SEPARATOR; |
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
import com.kms.common.utils.BaseEntityUtils; |
|
|
import com.kms.common.utils.BaseEntityUtils; |
|
|
|
|
|
import com.kms.system.service.SysUserService; |
|
|
import com.kms.yxgh.base.enums.CheckingStatus; |
|
|
import com.kms.yxgh.base.enums.CheckingStatus; |
|
|
import com.kms.yxgh.base.enums.RecordStatus; |
|
|
import com.kms.yxgh.base.enums.RecordStatus; |
|
|
import com.kms.yxgh.sz.domain.dto.StartPlan; |
|
|
import com.kms.yxgh.sz.domain.dto.StartPlan; |
|
@ -15,17 +18,23 @@ import com.kms.yxgh.sz.domain.dto.SzRecordDetailDto; |
|
|
import com.kms.yxgh.sz.domain.dto.SzRecordDetailDto.SzRecordItemDto; |
|
|
import com.kms.yxgh.sz.domain.dto.SzRecordDetailDto.SzRecordItemDto; |
|
|
import com.kms.yxgh.sz.domain.entity.SzRecord; |
|
|
import com.kms.yxgh.sz.domain.entity.SzRecord; |
|
|
import com.kms.yxgh.sz.domain.entity.SzRecordItem; |
|
|
import com.kms.yxgh.sz.domain.entity.SzRecordItem; |
|
|
|
|
|
import com.kms.yxgh.sz.domain.dto.SzRecordSearchDto; |
|
|
import com.kms.yxgh.sz.mapper.SzRecordItemMapper; |
|
|
import com.kms.yxgh.sz.mapper.SzRecordItemMapper; |
|
|
import com.kms.yxgh.sz.mapper.SzRecordMapper; |
|
|
import com.kms.yxgh.sz.mapper.SzRecordMapper; |
|
|
import com.kms.yxgh.util.BeanCopyUtils; |
|
|
import com.kms.yxgh.util.BeanCopyUtils; |
|
|
import com.kms.yxgh.util.StreamUtils; |
|
|
import com.kms.yxgh.util.StreamUtils; |
|
|
|
|
|
import com.shuili.common.core.domain.SearchParam; |
|
|
|
|
|
import com.shuili.common.core.domain.entity.SysUser; |
|
|
import com.shuili.common.core.service.BaseService; |
|
|
import com.shuili.common.core.service.BaseService; |
|
|
import com.shuili.common.exception.BaseException; |
|
|
import com.shuili.common.exception.BaseException; |
|
|
import com.shuili.common.utils.DateUtils; |
|
|
import com.shuili.common.utils.DateUtils; |
|
|
import com.shuili.common.utils.StringUtils; |
|
|
import com.shuili.common.utils.StringUtils; |
|
|
import java.util.Arrays; |
|
|
import java.util.Arrays; |
|
|
|
|
|
import java.util.Collections; |
|
|
import java.util.Comparator; |
|
|
import java.util.Comparator; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
import java.util.Optional; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
import lombok.AllArgsConstructor; |
|
|
import lombok.AllArgsConstructor; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
@ -41,15 +50,54 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
@AllArgsConstructor |
|
|
@AllArgsConstructor |
|
|
public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> { |
|
|
public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> { |
|
|
|
|
|
|
|
|
private final SzRecordItemMapper SzRecordItemMapper; |
|
|
private final SzRecordItemMapper szRecordItemMapper; |
|
|
private final SzCheckingService SzCheckingService; |
|
|
private final SzCheckingService szCheckingService; |
|
|
private final SzPlanService SzPlanService; |
|
|
private final SzPlanService szPlanService; |
|
|
|
|
|
private final SysUserService userService; |
|
|
|
|
|
|
|
|
|
|
|
public IPage<SzRecordSearchDto> search(SearchParam<SzRecord> sp) { |
|
|
|
|
|
IPage<SzRecord> page = selectPage(sp); |
|
|
|
|
|
if (CollectionUtil.isNotEmpty(page.getRecords())) { |
|
|
|
|
|
List<String> ids = page.getRecords().stream().map(SzRecord::getId) |
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery() |
|
|
|
|
|
.in(SzRecordItem::getRecordId, ids) |
|
|
|
|
|
.eq(SzRecordItem::getStatus, CheckingStatus.ABNORMAL.getValue()); |
|
|
|
|
|
Map<String, List<SzRecordItem>> items = Optional.ofNullable(szRecordItemMapper.selectList(wp)) |
|
|
|
|
|
.map(list -> list.stream().collect( |
|
|
|
|
|
Collectors.groupingBy(SzRecordItem::getRecordId, Collectors.toList()))) |
|
|
|
|
|
.orElseGet(Collections::emptyMap); |
|
|
|
|
|
|
|
|
|
|
|
List<SzRecordSearchDto> records = page.getRecords().stream().map(r -> { |
|
|
|
|
|
SzRecordSearchDto dto = BeanCopyUtils.copy(r, SzRecordSearchDto |
|
|
|
|
|
.class); |
|
|
|
|
|
if (dto != null) { |
|
|
|
|
|
dto.setParts(items.getOrDefault(r.getPlanId(), Collections.emptyList()) |
|
|
|
|
|
.stream().map(item -> { |
|
|
|
|
|
List<String> parts = Arrays.stream(item.getParts().split( |
|
|
|
|
|
SzCheckingService.PART_SEPARATOR)) |
|
|
|
|
|
.sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList()); |
|
|
|
|
|
return parts.get(parts.size() - 1); |
|
|
|
|
|
}).collect(Collectors.toList())); |
|
|
|
|
|
dto.setOperatorName(Optional.ofNullable(userService.getWithRedis(r.getCreateUid())).map( |
|
|
|
|
|
SysUser::getNickName).orElse("")); |
|
|
|
|
|
} |
|
|
|
|
|
return dto; |
|
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
|
Page<SzRecordSearchDto> recordSearchDtoPage = new Page<>(page.getCurrent(), page.getSize(), |
|
|
|
|
|
page.getTotal()); |
|
|
|
|
|
recordSearchDtoPage.setRecords(records); |
|
|
|
|
|
return recordSearchDtoPage; |
|
|
|
|
|
} else { |
|
|
|
|
|
return new Page<>(page.getCurrent(), page.getSize(), page.getTotal()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public SzRecordDetailDto start(StartPlan startPlan) { |
|
|
public SzRecordDetailDto start(StartPlan startPlan) { |
|
|
SzPlanDetailDto planDetailDto = SzPlanService.getDetailById(startPlan.getPlanId()); |
|
|
SzPlanDetailDto planDetailDto = szPlanService.getDetailById(startPlan.getPlanId()); |
|
|
if (planDetailDto != null) { |
|
|
if (planDetailDto != null) { |
|
|
SzCheckingDetailDto checkingDetailDto = SzCheckingService.getDetailById( |
|
|
SzCheckingDetailDto checkingDetailDto = szCheckingService.getDetailById( |
|
|
planDetailDto.getXcId()); |
|
|
planDetailDto.getXcId()); |
|
|
if (checkingDetailDto != null) { |
|
|
if (checkingDetailDto != null) { |
|
|
SzRecord record = new SzRecord(); |
|
|
SzRecord record = new SzRecord(); |
|
@ -67,7 +115,7 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> { |
|
|
item.setStatus(CheckingStatus.NORMAL.getValue()); |
|
|
item.setStatus(CheckingStatus.NORMAL.getValue()); |
|
|
item.setRecordId(""); |
|
|
item.setRecordId(""); |
|
|
BaseEntityUtils.preInsert(item); |
|
|
BaseEntityUtils.preInsert(item); |
|
|
SzRecordItemMapper.insert(item); |
|
|
szRecordItemMapper.insert(item); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
return this.getDetailById(id); |
|
|
return this.getDetailById(id); |
|
@ -84,7 +132,7 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> { |
|
|
SzRecordDetailDto dto = BeanCopyUtils.copy(record, SzRecordDetailDto.class); |
|
|
SzRecordDetailDto dto = BeanCopyUtils.copy(record, SzRecordDetailDto.class); |
|
|
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery() |
|
|
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery() |
|
|
.eq(SzRecordItem::getRecordId, id); |
|
|
.eq(SzRecordItem::getRecordId, id); |
|
|
List<SzRecordItem> items = SzRecordItemMapper.selectList(wp); |
|
|
List<SzRecordItem> items = szRecordItemMapper.selectList(wp); |
|
|
if (CollectionUtil.isNotEmpty(items) && dto != null) { |
|
|
if (CollectionUtil.isNotEmpty(items) && dto != null) { |
|
|
dto.setItems(StreamUtils.toList(items, r -> { |
|
|
dto.setItems(StreamUtils.toList(items, r -> { |
|
|
SzRecordItemDto itemDto = BeanCopyUtils.copy(r, SzRecordItemDto.class); |
|
|
SzRecordItemDto itemDto = BeanCopyUtils.copy(r, SzRecordItemDto.class); |
|
@ -100,6 +148,7 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> { |
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public SzRecordDetailDto update(SzRecordDetailDto SzRecord) { |
|
|
public SzRecordDetailDto update(SzRecordDetailDto SzRecord) { |
|
|
if (CollectionUtil.isNotEmpty(SzRecord.getItems())) { |
|
|
if (CollectionUtil.isNotEmpty(SzRecord.getItems())) { |
|
|
SzRecord.getItems().forEach(o -> { |
|
|
SzRecord.getItems().forEach(o -> { |
|
@ -110,12 +159,13 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> { |
|
|
item.setStatus(o.getStatus()); |
|
|
item.setStatus(o.getStatus()); |
|
|
item.setProblem(o.getProblem()); |
|
|
item.setProblem(o.getProblem()); |
|
|
BaseEntityUtils.preUpdate(item); |
|
|
BaseEntityUtils.preUpdate(item); |
|
|
SzRecordItemMapper.updateById(item); |
|
|
szRecordItemMapper.updateById(item); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
return SzRecord; |
|
|
return SzRecord; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public Boolean deleteById(String id) { |
|
|
public Boolean deleteById(String id) { |
|
|
boolean rt = removeById(id); |
|
|
boolean rt = removeById(id); |
|
|
if (rt) { |
|
|
if (rt) { |
|
@ -127,6 +177,6 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> { |
|
|
private void deleteItems(String id) { |
|
|
private void deleteItems(String id) { |
|
|
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery() |
|
|
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery() |
|
|
.eq(SzRecordItem::getRecordId, id); |
|
|
.eq(SzRecordItem::getRecordId, id); |
|
|
SzRecordItemMapper.delete(wp); |
|
|
szRecordItemMapper.delete(wp); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|