package com.qianwen.smartman.modules.tpm.service.impl; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.excel.util.ExcelUtil; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.service.impl.BladeServiceImpl; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.oss.model.BladeFile; import com.qianwen.core.tool.utils.DateUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder; import com.qianwen.smartman.modules.system.service.ICodeGeneratorService; import com.qianwen.smartman.modules.tpm.convert.CheckRecordConvert; import com.qianwen.smartman.modules.tpm.dto.CheckRecordFileDTO; import com.qianwen.smartman.modules.tpm.dto.CheckRecordItemDTO; import com.qianwen.smartman.modules.tpm.entity.CheckRecord; import com.qianwen.smartman.modules.tpm.entity.CheckRecordFile; import com.qianwen.smartman.modules.tpm.entity.CheckRecordItem; import com.qianwen.smartman.modules.tpm.enums.FileTypeEnum; import com.qianwen.smartman.modules.tpm.enums.MetaTypeEnum; import com.qianwen.smartman.modules.tpm.mapper.CheckRecordMapper; import com.qianwen.smartman.modules.tpm.service.ICheckRecordFileService; import com.qianwen.smartman.modules.tpm.service.ICheckRecordItemService; import com.qianwen.smartman.modules.tpm.service.ICheckRecordService; import com.qianwen.smartman.modules.tpm.vo.CheckRecordDetailVO; import com.qianwen.smartman.modules.tpm.vo.CheckRecordItemVO; import com.qianwen.smartman.modules.tpm.vo.CheckRecordSearchVO; import com.qianwen.smartman.modules.tpm.vo.CheckRecordSubmitVO; import com.qianwen.smartman.modules.tpm.vo.CheckRecordTodayVO; import com.qianwen.smartman.modules.tpm.vo.CheckRecordUpdateVO; import com.qianwen.smartman.modules.tpm.vo.CheckRecordVO; import com.qianwen.smartman.modules.tpm.vo.RecordFilesVO; import com.qianwen.smartman.modules.tpm.vo.excel.CheckRecordExcel; @Service /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/tpm/service/impl/CheckRecordServiceImpl.class */ public class CheckRecordServiceImpl extends BladeServiceImpl implements ICheckRecordService { private static final Logger log = LoggerFactory.getLogger(CheckRecordServiceImpl.class); private final ICheckRecordItemService itemService; private final ICheckRecordFileService fileService; private final CheckRecordMapper checkRecordMapper; private final ICodeGeneratorService codeGeneratorService; private final OssBuilder ossBuilder; public CheckRecordServiceImpl(final ICheckRecordItemService itemService, final ICheckRecordFileService fileService, final CheckRecordMapper checkRecordMapper, final ICodeGeneratorService codeGeneratorService, final OssBuilder ossBuilder) { this.itemService = itemService; this.fileService = fileService; this.checkRecordMapper = checkRecordMapper; this.codeGeneratorService = codeGeneratorService; this.ossBuilder = ossBuilder; } @Override // org.springblade.modules.tpm.service.ICheckRecordService @Transactional(rollbackFor = {Exception.class}) public CheckRecord createCheckRecord(CheckRecordSubmitVO vo) { CheckRecord checkRecord = CheckRecordConvert.INSTANCE.convert(vo); if (Func.isBlank(vo.getCheckCode())) { String code = this.codeGeneratorService.getGeneratorCode(vo, MetaTypeEnum.CHECK_RECORD.getCode()); log.info("点检记录编码规则生成的code:{}", code + " ," + code.length()); checkRecord.setCheckCode(code); } String checkCode = checkRecord.getCheckCode(); validCheckCode(checkCode); save(checkRecord); List itemList = vo.getItemList(); if (Func.isEmpty(itemList)) { throw new ServiceException(MessageUtils.message("cps.tpm.check.item.can.not.empty", new Object[0])); } List items = itemList.stream().map(c -> { return CheckRecordItem.builder().checkRecordId(checkRecord.getId()).checkValue(c.getCheckValue()).itemId(c.getItemId()).name(c.getName()).valueType(c.getValueType()).requirement(c.getRequirement()).standardValue(c.getStandardValue()).build(); }).collect(Collectors.toList()); this.itemService.saveBatch(items); List pictureList = vo.getPictureList(); if (Func.isNotEmpty(pictureList)) { List files = pictureList.stream().map(c2 -> { return CheckRecordFile.builder().checkRecordId(checkRecord.getId()).fileName(c2.getFileName()).objectKey(c2.getObjectKey()).link(c2.getLink()).contentType(c2.getContentType()).fileSize(c2.getFileSize()).uploadTime(c2.getUploadTime()).fileType(FileTypeEnum.PICTURE.getType()).build(); }).collect(Collectors.toList()); this.fileService.saveBatch(files); } List fileList = vo.getFileList(); if (Func.isNotEmpty(fileList)) { List files2 = fileList.stream().map(c3 -> { return CheckRecordFile.builder().checkRecordId(checkRecord.getId()).fileName(c3.getFileName()).objectKey(c3.getObjectKey()).link(c3.getLink()).contentType(c3.getContentType()).fileSize(c3.getFileSize()).uploadTime(c3.getUploadTime()).fileType(FileTypeEnum.FILE.getType()).build(); }).collect(Collectors.toList()); this.fileService.saveBatch(files2); } return checkRecord; } private void validCheckCode(String code) { long count = count(Wrappers.lambdaQuery().eq(CheckRecord::getCheckCode, code)); if (count > 0) { throw new ServiceException(MessageUtils.message("cps.tpm.check.record.code.exists", new Object[0])); } } @Override // org.springblade.modules.tpm.service.ICheckRecordService public IPage pageCheckRecord(Query query, String keyWords, String deviceTypeId) { return this.baseMapper.pageCheckRecord(Condition.getPage(query), keyWords, deviceTypeId); } @Override // org.springblade.modules.tpm.service.ICheckRecordService @Transactional(rollbackFor = {Exception.class}) public boolean deleteCheckRecord(List ids) { if (Func.isNotEmpty(ids)) { removeByIds(Func.toLongList(ids)); this.itemService.remove(Wrappers.lambdaQuery().in(CheckRecordItem::getCheckRecordId, ids)); this.fileService.remove(Wrappers.lambdaQuery().in(CheckRecordFile::getCheckRecordId, ids)); /* this.itemService.remove((Wrapper) Wrappers.lambdaQuery().in((v0) -> { return v0.getCheckRecordId(); }, ids)); this.fileService.remove((Wrapper) Wrappers.lambdaQuery().in((v0) -> { return v0.getCheckRecordId(); }, ids));*/ return true; } return true; } @Override // org.springblade.modules.tpm.service.ICheckRecordService @Transactional(rollbackFor = {Exception.class}) public boolean updateCheckRecord(CheckRecordUpdateVO vo) { Long id = vo.getId(); Long checkProjectId = vo.getCheckProjectId(); Integer checkResult = vo.getCheckResult(); String remark = vo.getRemark(); update(Wrappers.lambdaUpdate() .set(Func.isNotEmpty(checkProjectId), CheckRecord::getCheckProjectId, checkProjectId) .set(Func.isNotEmpty(vo.getCheckProjectCode()), CheckRecord::getCheckProjectCode, vo.getCheckProjectCode()) .set(Func.isNotEmpty(vo.getCheckProjectName()), CheckRecord::getCheckProjectName, vo.getCheckProjectName()) .set(Func.isNotEmpty(checkResult), CheckRecord::getCheckResult, checkResult) .set(CheckRecord::getRemark, remark) .eq(CheckRecord::getId, id)); /* update((Wrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().set(Func.isNotEmpty(checkProjectId), (v0) -> { return v0.getCheckProjectId(); }, checkProjectId)).set(Func.isNotEmpty(vo.getCheckProjectCode()), (v0) -> { return v0.getCheckProjectCode(); }, vo.getCheckProjectCode())).set(Func.isNotEmpty(vo.getCheckProjectName()), (v0) -> { return v0.getCheckProjectName(); }, vo.getCheckProjectName())).set(Func.isNotEmpty(checkResult), (v0) -> { return v0.getCheckResult(); }, checkResult)).set((v0) -> { return v0.getRemark(); }, remark)).eq((v0) -> { return v0.getId(); }, id));*/ List itemList = vo.getItemList(); if (Func.isNotEmpty(checkProjectId)) { this.itemService.remove(Wrappers.lambdaQuery().eq(CheckRecordItem::getCheckRecordId, id)); if (Func.isNotEmpty(itemList)) { List items = itemList.stream().map(c -> { return CheckRecordItem.builder().checkRecordId(id).itemId(c.getItemId()).checkValue(c.getCheckValue()).name(c.getName()).valueType(c.getValueType()).requirement(c.getRequirement()).standardValue(c.getStandardValue()).build(); }).collect(Collectors.toList()); this.itemService.saveBatch(items); return true; } return true; } return true; } @Override // org.springblade.modules.tpm.service.ICheckRecordService public boolean removeItems(String recordId, List ids) { boolean flag = true; if (Func.isNotEmpty(ids)) { flag = this.itemService.remove(Wrappers.lambdaQuery() .eq(CheckRecordItem::getCheckRecordId, recordId) .in(CheckRecordItem::getId, ids)); /* flag = this.itemService.remove((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getCheckRecordId(); }, recordId)).in((v0) -> { return v0.getId(); }, ids)); */ } return flag; } @Override // org.springblade.modules.tpm.service.ICheckRecordService public boolean removeFiles(String recordId, List ids) { boolean flag = true; if (Func.isNotEmpty(ids)) { flag = this.fileService.remove(Wrappers.lambdaQuery() .eq(CheckRecordFile::getCheckRecordId, recordId) .in(CheckRecordFile::getId, ids)); /* flag = this.fileService.remove((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getCheckRecordId(); }, recordId)).in((v0) -> { return v0.getId(); }, ids));*/ } return flag; } @Override // org.springblade.modules.tpm.service.ICheckRecordService public boolean addFiles(Long recordId, RecordFilesVO vo) { List files = vo.getFiles(); boolean fileFlag = true; if (Func.isNotEmpty(files)) { List recordFiles = files.stream().map(c -> { return CheckRecordFile.builder().checkRecordId(recordId).fileName(c.getFileName()).link(c.getLink()).objectKey(c.getObjectKey()).contentType(c.getContentType()).fileSize(c.getFileSize()).uploadTime(c.getUploadTime()).fileType(FileTypeEnum.FILE.getType()).build(); }).collect(Collectors.toList()); fileFlag = this.fileService.saveBatch(recordFiles); } List pictures = vo.getPictures(); boolean pictureFlag = true; if (Func.isNotEmpty(pictures)) { List recordFiles2 = pictures.stream().map(c2 -> { return CheckRecordFile.builder().checkRecordId(recordId).fileName(c2.getFileName()).link(c2.getLink()).objectKey(c2.getObjectKey()).contentType(c2.getContentType()).fileSize(c2.getFileSize()).uploadTime(c2.getUploadTime()).fileType(FileTypeEnum.PICTURE.getType()).build(); }).collect(Collectors.toList()); pictureFlag = this.fileService.saveBatch(recordFiles2); } return fileFlag && pictureFlag; } @Override // org.springblade.modules.tpm.service.ICheckRecordService public IPage getTodayCheckRecords(CheckRecordSearchVO checkRecordSearchVO, Query query) { IPage page = Condition.getPage(query); List todayPage = this.checkRecordMapper.getTodayPage(checkRecordSearchVO, page); if (Func.isNotEmpty(todayPage)) { return page.setRecords(todayPage); } return page.setRecords(new ArrayList<>()); } @Override // org.springblade.modules.tpm.service.ICheckRecordService public Long checkRecordStatisticsNum() { LocalDate localDate = LocalDate.now(); Date now = DateUtil.toDate(localDate); Date plusDays = DateUtil.plusDays(now, 1L); return Long.valueOf(count(Wrappers.lambdaQuery().between(CheckRecord::getCreateTime, now, plusDays))); /* return Long.valueOf(count((Wrapper) Wrappers.lambdaQuery().between((v0) -> { return v0.getCreateTime(); }, now, plusDays)));*/ } @Override // org.springblade.modules.tpm.service.ICheckRecordService public CheckRecordDetailVO detail(String id) { List files = this.fileService.list(Wrappers.lambdaQuery().eq(CheckRecordFile::getCheckRecordId, id).eq(CheckRecordFile::getFileType, FileTypeEnum.FILE.getType())); List pictures = this.fileService.list(Wrappers.lambdaQuery().eq(CheckRecordFile::getCheckRecordId, id).eq(CheckRecordFile::getFileType, FileTypeEnum.PICTURE.getType())); /* List files = this.fileService.list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getCheckRecordId(); }, id)).eq((v0) -> { return v0.getFileType(); }, FileTypeEnum.FILE.getType())); List pictures = this.fileService.list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getCheckRecordId(); }, id)).eq((v0) -> { return v0.getFileType(); }, FileTypeEnum.PICTURE.getType()));*/ List items = this.itemService.listItem(id); return CheckRecordDetailVO.builder().files(CheckRecordConvert.INSTANCE.convertFile(files)).pictures(CheckRecordConvert.INSTANCE.convertFile(pictures)).items(items).build(); } @Override // org.springblade.modules.tpm.service.ICheckRecordService public BladeFile exportCheckRecord(String keyWords, String deviceTypeId) { List list = this.baseMapper.exportCheckRecord(keyWords, deviceTypeId); String fileName = String.format("%s-%s.xlsx", "点检记录数据", DateUtil.time()); List result = CheckRecordConvert.INSTANCE.convertExcel(list); MultipartFile multipartFile = ExcelUtil.exportToMultipartFile(fileName, "点检记录数据表", result, CheckRecordExcel.class); return this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile); } }