src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -67,7 +67,7 @@ LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveId, id); queryWrapper.eq(ApproveProcess::getApproveDelete, 0); queryWrapper.eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()); // queryWrapper.eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()); queryWrapper.last("limit 1"); ApproveProcess one = approveProcessMapper.selectOne(queryWrapper); return one; @@ -104,14 +104,14 @@ LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveNode::getApproveProcessId, id); queryWrapper.eq(ApproveNode::getDeleteFlag, 0); queryWrapper.eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()); // queryWrapper.eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()); List<ApproveNode> list = list(queryWrapper); // 按照 approveNodeOrder 字段升序排序 list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder)); LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, id) .eq(ApproveProcess::getApproveDelete, 0) .eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()) // .eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .last("limit 1"); ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper); if(approveProcess != null && approveProcess.getApproveStatus() == 3){ @@ -137,7 +137,7 @@ LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, approveNode.getApproveProcessId()) .eq(ApproveProcess::getApproveDelete, 0) .eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()) // .eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .last("limit 1"); ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper); if(approveProcess == null) throw new RuntimeException("审批不存在"); @@ -145,7 +145,7 @@ approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveNode.getApproveProcessId()) .eq(ApproveNode::getApproveNodeOrder, approveNode.getApproveNodeOrder() + 1) .eq(ApproveNode::getDeleteFlag, 0) .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) // .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .last("limit 1"); ApproveNode approveNode1 = approveNodeMapper.selectOne(approveNodeLambdaQueryWrapper); approveProcess.setApproveStatus(status); src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -192,7 +192,7 @@ LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveId, id); queryWrapper.eq(ApproveProcess::getApproveDelete, 0); queryWrapper.eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()); // queryWrapper.eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()); queryWrapper.last("limit 1"); ApproveProcess one = getOne(queryWrapper); one.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>() @@ -232,7 +232,7 @@ LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId()) .eq(ApproveNode::getDeleteFlag, 0) .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) // .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .orderByAsc(ApproveNode::getApproveNodeOrder); approveNodeMapper.delete(approveNodeLambdaQueryWrapper); approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approveProcess.getApproveId(), approveProcess.getTenantId()); @@ -273,7 +273,7 @@ LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approve.getApproveId()) .eq(ApproveNode::getDeleteFlag, 0) .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) // .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .orderByAsc(ApproveNode::getApproveNodeOrder); approveNodeMapper.delete(approveNodeLambdaQueryWrapper); approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approve.getApproveId(), approve.getTenantId()); src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -11,7 +11,11 @@ MEASURING(5), //计量器具台账 MEASURINGRecord(6),//计量器具台账记录 ApproveNode(7), //协同审批节点审核 ApproveProcess(8); //协同审批主数据 ApproveProcess(8),//协同审批主数据 SHIP(9),//发货台账 INSPECTION_PRODUCTION_BEFORE(10), INSPECTION_PRODUCTION_AFTER(11), INSPECTION(12);//巡检 生产前 private final int value; src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -402,8 +402,8 @@ LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveDelete, 0) .eq(ApproveProcess::getApproveUserCurrentId, loginUser.getUserId()) .ne(ApproveProcess::getApproveStatus, 2) .eq(ApproveProcess::getTenantId, loginUser.getTenantId()); .ne(ApproveProcess::getApproveStatus, 2); // .eq(ApproveProcess::getTenantId, loginUser.getTenantId()) List<ApproveProcess> approveProcesses = approveProcessMapper.selectList(approveProcessLambdaQueryWrapper); if(CollectionUtils.isEmpty(approveProcesses)){ approveProcesses = new ArrayList<>(); src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author :yys @@ -58,7 +59,7 @@ @PostMapping("/addOrEditInspectionTask") @ApiOperation("巡检任务表新增修改") @Transactional(rollbackFor = Exception.class) public R addOrEditInspectionTask(@RequestBody InspectionTaskDto inspectionTaskDto) { public R addOrEditInspectionTask(@RequestBody InspectionTaskDto inspectionTaskDto) throws IOException { return R.ok(inspectionTaskService.addOrEditInspectionTask(inspectionTaskDto)); } src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
@@ -1,8 +1,10 @@ package com.ruoyi.inspectiontask.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.inspectiontask.pojo.InspectionTask; import com.ruoyi.sales.pojo.CommonFile; import lombok.Data; import java.util.List; @@ -10,11 +12,16 @@ @Data public class InspectionTaskDto extends InspectionTask { private List<StorageBlobDTO> storageBlobDTO; private List<StorageBlobDTO> beforeProduction; private List<StorageBlobDTO> afterProduction; private List<StorageBlobDTO> productionIssues; // private List<StorageBlobDTO> storageBlobDTO; // private List<StorageBlobDTO> beforeProduction; // private List<StorageBlobDTO> afterProduction; // private List<StorageBlobDTO> productionIssues; private List<StorageAttachment> attachments; private List<String> tempFileIds; private List<CommonFile> commonFileList; //生产中 private List<CommonFile> commonFileListAfter; //生产后 private List<CommonFile> commonFileListBefore; //生产前 // private List<StorageAttachment> attachments; } src/main/java/com/ruoyi/inspectiontask/service/InspectionTaskService.java
@@ -6,6 +6,8 @@ import com.ruoyi.inspectiontask.dto.InspectionTaskDto; import com.ruoyi.inspectiontask.pojo.InspectionTask; import java.io.IOException; /** * @author :yys * @date : 2025/9/19 10:49 @@ -14,7 +16,7 @@ IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto); int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto); int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) throws IOException; int delByIds(Long[] ids); } src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -11,6 +11,7 @@ import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.basic.pojo.StorageBlob; import com.ruoyi.basic.service.StorageAttachmentService; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.MinioUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; @@ -21,10 +22,14 @@ import com.ruoyi.inspectiontask.service.InspectionTaskService; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.function.Function; @@ -60,6 +65,12 @@ @Autowired private SysUserMapper sysUserMapper; @Autowired private CommonFileServiceImpl commonFileService; @Autowired private CommonFileMapper commonFileMapper; @Override public IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto) { LambdaQueryWrapper<InspectionTask> queryWrapper = new LambdaQueryWrapper<>(); @@ -82,9 +93,6 @@ } else { sysUserMap = new HashMap<>(); } //巡检人ids List<String> inspectorIds = entityPage.getRecords().stream().map(InspectionTask::getInspectorId).collect(Collectors.toList()); //获取所有不重复的用户ID Set<Long> allUserIds = entityPage.getRecords().stream() .map(InspectionTask::getInspectorId) // 获取"2,3"这样的字符串 @@ -111,22 +119,13 @@ (existing, replacement) -> existing)); //处理附件 Map<Long, List<StorageAttachment>> attachmentsMap = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>().in(StorageAttachment::getRecordId, ids) .eq(StorageAttachment::getRecordType, InspectionTasks.ordinal())) .stream() .collect(Collectors.groupingBy(StorageAttachment::getRecordId)); // 批量查询所有需要的文件数据 Set<Long> blobIds = attachmentsMap.values() .stream() .flatMap(List::stream) .map(StorageAttachment::getStorageBlobId) .collect(Collectors.toSet()); Map<Long, StorageBlob> blobMap = blobIds.isEmpty() ? Collections.emptyMap() : storageBlobMapper.selectList(new LambdaQueryWrapper<StorageBlob>().in(StorageBlob::getId, blobIds)) .stream() .collect(Collectors.toMap(StorageBlob::getId, Function.identity())); List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>() .in(CommonFile::getCommonId, ids) .in(CommonFile::getType, Arrays.asList(FileNameType.INSPECTION.getValue(), FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue(), FileNameType.INSPECTION_PRODUCTION_AFTER.getValue()))); if(commonFiles == null){ commonFiles = new ArrayList<>(); } List<CommonFile> finalCommonFiles = commonFiles; List<InspectionTaskDto> dtoList = entityPage.getRecords().stream().map(inspectionTask -> { InspectionTaskDto dto = new InspectionTaskDto(); BeanUtils.copyProperties(inspectionTask, dto); // 复制主对象属性 @@ -154,37 +153,9 @@ dto.setDateStr(inspectionTask.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); // 初始化三个附件列表 dto.setBeforeProduction(new ArrayList<>()); dto.setAfterProduction(new ArrayList<>()); dto.setProductionIssues(new ArrayList<>()); // 处理附件分类 Optional.ofNullable(attachmentsMap.get(inspectionTask.getId())) .orElse(Collections.emptyList()) .forEach(attachment -> { StorageBlob blob = blobMap.get(attachment.getStorageBlobId()); if (blob != null) { // 创建附件DTO StorageBlobDTO blobDto = createBlobDto(blob); // 根据type分类 switch ((int) blob.getType().longValue()) { case 0: dto.getBeforeProduction().add(blobDto); break; case 1: dto.getAfterProduction().add(blobDto); break; case 2: dto.getProductionIssues().add(blobDto); break; default: // 可选:记录未分类类型 break; } } }); dto.setCommonFileList(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION.getValue())).collect(Collectors.toList())); dto.setCommonFileListAfter(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_AFTER.getValue())).collect(Collectors.toList())); dto.setCommonFileListBefore(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue())).collect(Collectors.toList())); return dto; }).collect(Collectors.toList()); @@ -219,7 +190,7 @@ } @Override public int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) { public int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) throws IOException { InspectionTask inspectionTask = new InspectionTask(); BeanUtils.copyProperties(inspectionTaskDto, inspectionTask); inspectionTask.setRegistrantId(SecurityUtils.getLoginUser().getUserId()); @@ -231,20 +202,21 @@ i = inspectionTaskMapper.updateById(inspectionTask); } if (inspectionTaskDto.getStorageBlobDTO() != null && !inspectionTaskDto.getStorageBlobDTO().isEmpty()) { List<StorageAttachment> attachments = new ArrayList<>(); for (StorageBlobDTO storageBlobDTO : inspectionTaskDto.getStorageBlobDTO()) { StorageAttachment storageAttachment = new StorageAttachment( StorageAttachmentFile, (long) InspectionTasks.ordinal(), inspectionTask.getId() ); storageAttachment.setStorageBlobDTO(storageBlobDTO); attachments.add(storageAttachment); } storageAttachmentService.saveStorageAttachment(attachments, inspectionTask.getId(), InspectionTasks, StorageAttachmentFile); } // if (inspectionTaskDto.getStorageBlobDTO() != null && !inspectionTaskDto.getStorageBlobDTO().isEmpty()) { // List<StorageAttachment> attachments = new ArrayList<>(); // // for (StorageBlobDTO storageBlobDTO : inspectionTaskDto.getStorageBlobDTO()) { // StorageAttachment storageAttachment = new StorageAttachment( // StorageAttachmentFile, // (long) InspectionTasks.ordinal(), // inspectionTask.getId() // ); // storageAttachment.setStorageBlobDTO(storageBlobDTO); // attachments.add(storageAttachment); // } // storageAttachmentService.saveStorageAttachment(attachments, inspectionTask.getId(), InspectionTasks, StorageAttachmentFile); // } commonFileService.migrateTempFilesToFormal(inspectionTask.getId(),inspectionTaskDto.getTempFileIds()); return i; } @@ -254,6 +226,9 @@ if (ids == null || ids.length == 0) { return 0; } commonFileService.deleteByBusinessIds(Arrays.asList(ids),FileNameType.INSPECTION.getValue()); commonFileService.deleteByBusinessIds(Arrays.asList(ids),FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue()); commonFileService.deleteByBusinessIds(Arrays.asList(ids),FileNameType.INSPECTION_PRODUCTION_AFTER.getValue()); return inspectionTaskMapper.deleteBatchIds(Arrays.asList(ids)); } src/main/java/com/ruoyi/project/common/CommonController.java
@@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse; import com.ruoyi.basic.service.StorageBlobService; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.framework.web.domain.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -237,6 +237,9 @@ .in(ReceiptPayment::getInvoiceLedgerId, invoiceLedgers.stream().map(InvoiceLedger::getId).collect(Collectors.toList()))); } for (SalesLedger salesLedger : iPage.getRecords()) { if(salesLedger.getShippingDate() != null){ salesLedger.setShippingStatus("已发货"); } boolean existFlag = false; BigDecimal noInvoiceAmountTotal = BigDecimal.ZERO; BigDecimal invoiceTotal = BigDecimal.ZERO; @@ -277,8 +280,9 @@ } if (ObjectUtils.isNotEmpty(salesLedgerDto.getStatus())) { if (salesLedgerDto.getStatus()) { long count = iPage.getRecords().stream().filter(salesLedger -> Objects.equals(salesLedger.getNoInvoiceAmountTotal(), new BigDecimal("0.00"))).count(); iPage.getRecords().removeIf(salesLedger -> Objects.equals(salesLedger.getNoInvoiceAmountTotal(), new BigDecimal("0.00"))); iPage.setTotal(iPage.getRecords().size()); iPage.setTotal(iPage.getTotal() - count); } } src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.sales.mapper.ShipmentApprovalMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.SalesLedger; @@ -17,6 +19,7 @@ import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.sales.service.ISalesLedgerService; import com.ruoyi.sales.service.ShippingInfoService; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections4.CollectionUtils; @@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** @@ -43,6 +47,12 @@ @Autowired private ISalesLedgerProductService salesLedgerProductService; @Autowired private TempFileServiceImpl tempFileService; @Autowired private CommonFileServiceImpl commonFileService; @GetMapping("/listPage") @ApiOperation("发货信息列表") @@ -54,64 +64,38 @@ @PostMapping("/add") @ApiOperation("添加发货信息") @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody ShippingInfo req) { LambdaQueryWrapper<ShippingInfo> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ShippingInfo::getSalesLedgerId, req.getSalesLedgerId()); wrapper.eq(ShippingInfo::getSalesLedgerProductId, req.getSalesLedgerProductId()); List<ShippingInfo> list = shippingInfoService.list(wrapper); if(!CollectionUtils.isEmpty(list)){ return AjaxResult.error("发货信息已存在"); } public AjaxResult add(@RequestBody ShippingInfo req) throws IOException { boolean save = shippingInfoService.save(req); if(save){ ShippingInfo shippingInfo = shippingInfoService.getOne(wrapper); ShipmentApproval shipmentApproval = new ShipmentApproval(); shipmentApproval.setSalesLedgerId(req.getSalesLedgerId()); shipmentApproval.setSalesLedgerProductId(req.getSalesLedgerProductId()); shipmentApproval.setApproveUserId(req.getApproverId()); shipmentApproval.setApproveStatus(2); shipmentApproval.setShippingInfoId(shippingInfo.getId()); shipmentApprovalMapper.insert(shipmentApproval); SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(req.getSalesLedgerProductId()); if(salesLedgerProduct != null){ salesLedgerProduct.setApproveStatus(2); salesLedgerProductService.updateById(salesLedgerProduct); } // 迁移文件 if(CollectionUtils.isNotEmpty(req.getTempFileIds())){ tempFileService.migrateTempFilesToFormal(req.getId(), req.getTempFileIds(), FileNameType.SHIP.getValue()); } return save ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @ApiOperation("修改发货信息") public AjaxResult update(@RequestBody ShippingInfo req) { @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody ShippingInfo req) throws IOException { ShippingInfo byId = shippingInfoService.getById(req.getId()); if (byId == null) { return AjaxResult.error("发货信息不存在"); } Long userId = getLoginUser().getUserId(); if(!userId.equals(Long.parseLong(byId.getCreateUser().toString()))){ return AjaxResult.error("您没有权限修改此发货信息"); } boolean update = shippingInfoService.updateById(req); if(CollectionUtils.isNotEmpty(req.getTempFileIds())){ tempFileService.migrateTempFilesToFormal(req.getId(), req.getTempFileIds(), FileNameType.SHIP.getValue()); } return update ? AjaxResult.success() : AjaxResult.error(); } @DeleteMapping("/delete") @ApiOperation("删除发货信息") @Transactional(rollbackFor = Exception.class) public AjaxResult delete(@RequestBody List<Long> ids) { Long userId = getLoginUser().getUserId(); ids.forEach(id -> { ShippingInfo byId = shippingInfoService.getById(id); if (byId == null) { throw new RuntimeException("发货信息不存在"); } if(!userId.equals(Long.parseLong(byId.getCreateUser().toString()))){ throw new RuntimeException("您没有权限删除此发货信息"); } }); if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请选择要删除的记录"); boolean delete = shippingInfoService.removeBatchByIds(ids); // 删除附件 commonFileService.deleteByBusinessIds(ids, FileNameType.SHIP.getValue()); return delete ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败"); } src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -48,6 +48,12 @@ private String shippingCarNumber; /** * 发货状态 */ @TableField(exist = false) private String shippingStatus = "未发货"; /** * 发货日期 */ @Excel(name = "发货日期", width = 30, dateFormat = "yyyy-MM-dd") src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
@@ -9,6 +9,7 @@ import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * @author :yys @@ -20,6 +21,9 @@ @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "发货类型") private String type; @ApiModelProperty(value = "销售台账id") private Long salesLedgerId; @@ -45,6 +49,14 @@ @Excel(name = "发货车牌号") private String shippingCarNumber; @ApiModelProperty(value = "快递单号") @Excel(name = "快递单号") private String expressNumber; @ApiModelProperty(value = "快递公司") @Excel(name = "快递公司") private String expressCompany; @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @@ -69,4 +81,9 @@ @TableField(exist = false) private Integer approverId; @TableField(exist = false) private List<String> tempFileIds; @TableField(exist = false) private List<CommonFile> commonFileList; } src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
@@ -1,7 +1,10 @@ package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.other.mapper.TempFileMapper; import com.ruoyi.other.pojo.TempFile; import com.ruoyi.sales.mapper.CommonFileMapper; @@ -50,6 +53,16 @@ return commonFileMapper.deleteBatchIds(Arrays.asList(ids)); } public void deleteByBusinessId(Long businessId,Integer type) { commonFileMapper.delete(new LambdaQueryWrapper<CommonFile>().eq(CommonFile::getCommonId, businessId) .eq(CommonFile::getType, type)); } public void deleteByBusinessIds(List<Long> businessId,Integer type) { commonFileMapper.delete(new LambdaQueryWrapper<CommonFile>().in(CommonFile::getCommonId, businessId) .eq(CommonFile::getType, type)); } @Override public CommonFile uploadFile(MultipartFile file, Long id, Integer type) throws IOException { // 1. 生成正式文件ID和路径 src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -1,9 +1,13 @@ package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.ShippingInfoService; import lombok.extern.slf4j.Slf4j; @@ -20,11 +24,17 @@ @Autowired private ShippingInfoMapper shippingInfoMapper; @Autowired private CommonFileMapper commonFileMapper; @Override public IPage<ShippingInfo> listPage(Page page, ShippingInfo req) { IPage<ShippingInfo> listPage = shippingInfoMapper.listPage(page, req); listPage.getRecords().forEach(item ->{ item.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>() .eq(CommonFile::getCommonId, item.getId()) .eq(CommonFile::getType, FileNameType.SHIP.getValue()))); }); return listPage; } } src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -58,10 +58,12 @@ T1.contract_amount, T1.execution_date, T2.nick_name AS entry_person_name, T1.payment_method T1.payment_method, T3.shipping_date FROM sales_ledger T1 LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id left join shipping_info T3 on T1.id = T3.sales_ledger_id <where> <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' "> AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%') src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -4,15 +4,7 @@ <select id="listPage" resultType="com.ruoyi.sales.pojo.ShippingInfo"> SELECT s.id, s.sales_ledger_id, s.shipping_date, s.shipping_car_number, s.create_time, s.update_time, s.create_user, s.update_user, s.tenant_id, s.*, sl.sales_contract_no, sl.customer_name FROM shipping_info s @@ -24,6 +16,9 @@ <if test="req.shippingCarNumber != null and req.shippingCarNumber != ''"> AND s.shipping_car_number LIKE CONCAT('%',#{req.shippingCarNumber},'%') </if> <if test="req.expressNumber != null and req.expressNumber != ''"> AND s.express_number LIKE CONCAT('%',#{req.expressNumber},'%') </if> </select> <select id="listAll" resultType="com.ruoyi.sales.pojo.ShippingInfo"> SELECT