src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
@@ -31,4 +31,5 @@ ApproveProcess getApproveById(String id); void deleteByRecordId(Long id); } src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.mapper.ApproveNodeMapper; @@ -13,10 +12,8 @@ import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.mapper.DeviceRepairMapper; import com.ruoyi.device.pojo.DeviceRepair; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.project.system.domain.SysUser; @@ -41,6 +38,7 @@ import com.ruoyi.sales.pojo.SalesQuotation; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import com.ruoyi.sales.service.impl.SalesLedgerProductServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -73,6 +71,7 @@ private final QualityTestStandardMapper qualityTestStandardMapper; private final QualityTestStandardParamMapper qualityTestStandardParamMapper; private final QualityInspectParamMapper qualityInspectParamMapper; private final SalesLedgerProductServiceImpl salesLedgerProductServiceImpl; public ApproveProcess getApproveById(String id) { @@ -230,6 +229,11 @@ } } if (approveProcess.getApproveType().equals(10)) { //生成生产订单 List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>().lambda().eq(SalesLedgerProduct::getSalesLedgerId, approveProcess.getRecordId())); salesLedgerProducts.forEach(salesLedgerProductServiceImpl::addProductionData); } // 绑定附件 if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){ tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue()); @@ -304,6 +308,8 @@ return "发货审批"; case 8: return "危险作业审批"; case 10: return "销售审批"; } return null; } src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -89,11 +89,12 @@ // String approveID = today + formattedCount; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); ApproveProcess approveProcess = new ApproveProcess(); String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "approve_id","SP"); String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "SP","approve_id"); approveProcess.setApproveId(no); approveProcess.setApproveUser(sysUser.getUserId()); approveProcess.setApproveUserName(sysUser.getNickName()); approveProcess.setApproveDeptId(sysDept.getDeptId()); approveProcess.setRecordId(approveProcessVO.getRecordId()); approveProcess.setApproveUserIds(nodeIds.stream().map(String::valueOf).collect(Collectors.joining(","))); approveProcess.setApproveDeptName(sysDept.getDeptName()); approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); @@ -293,6 +294,17 @@ return one; } @Override public void deleteByRecordId(Long recordId) { LambdaQueryWrapper<ApproveProcess> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ApproveProcess::getRecordId, recordId) .eq(ApproveProcess::getApproveType, 6); List<ApproveProcess> approveProcess = list(wrapper); if (approveProcess != null) { approveProcess.forEach(p -> this.removeById(p.getId())); } } // 报价审批编辑审核人 public void updateApproveUser(ApproveGetAndUpdateVo approveGetAndUpdateVo) { @@ -433,6 +445,8 @@ return "发货审批"; case 8: return "危险作业审批"; case 10: return "销售审批"; } return null; } src/main/java/com/ruoyi/common/enums/ApproveTypeEnum.java
@@ -22,7 +22,8 @@ REIMBURSEMENT(4, "报销管理"), PURCHASE(5, "采购审批"), QUOTATION(6, "报价审批"), DELIVERY(7, "发货审批"); DELIVERY(7, "发货审批"), SALES(10, "销售审批"); private final Integer code; private final String name; src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -1,29 +1,23 @@ package com.ruoyi.purchase.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.account.pojo.AccountIncome; import com.ruoyi.account.service.AccountExpenseService; import com.ruoyi.account.service.AccountIncomeService; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.basic.mapper.ProductMapper; import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.basic.mapper.SupplierManageMapper; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.Product; import com.ruoyi.basic.pojo.ProductModel; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; @@ -39,19 +33,25 @@ import com.ruoyi.purchase.dto.PurchaseLedgerImportDto; import com.ruoyi.purchase.dto.PurchaseLedgerProductImportDto; import com.ruoyi.purchase.mapper.*; import com.ruoyi.purchase.pojo.*; import com.ruoyi.purchase.pojo.PaymentRegistration; import com.ruoyi.purchase.pojo.ProductRecord; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.pojo.TicketRegistration; import com.ruoyi.purchase.service.IPurchaseLedgerService; import com.ruoyi.quality.mapper.*; import com.ruoyi.quality.pojo.*; import com.ruoyi.sales.dto.SalesLedgerImportDto; import com.ruoyi.sales.dto.SalesLedgerProductImportDto; import com.ruoyi.sales.mapper.*; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.QualityTestStandard; import com.ruoyi.quality.pojo.QualityTestStandardParam; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.BeanUtils; @@ -172,6 +172,7 @@ @Transactional(rollbackFor = Exception.class) public int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws Exception { PurchaseLedger purchaseLedger = new PurchaseLedger(); BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger); SalesLedger salesLedger = salesLedgerMapper.selectById(purchaseLedgerDto.getSalesLedgerId()); //录入人 SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId()); @@ -188,7 +189,6 @@ // DTO转Entity BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger); LoginUser loginUser = SecurityUtils.getLoginUser(); if (ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) { purchaseLedger.setTenantId(loginUser.getTenantId()); src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -599,6 +599,12 @@ SalesLedger.class ); } //如果是更新的话需要删除审批重新添加 if (salesLedger.getId() != null) { approveProcessService.deleteByRecordId(salesLedger.getId()); } //添加审批 submitApprove(salesLedger, salesLedger.getSalesContractNo(), SecurityUtils.getLoginUser()); // 5. 迁移临时文件到正式目录 if (salesLedgerDto.getTempFileIds() != null && !salesLedgerDto.getTempFileIds().isEmpty()) { @@ -609,7 +615,20 @@ throw new BaseException("文件迁移失败: " + e.getMessage()); } } private void submitApprove(SalesLedger salesLedger, String customerNo, LoginUser loginUser) { ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(10); approveProcessVO.setRecordId(salesLedger.getId()); approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId()); approveProcessVO.setApproveReason(customerNo); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); try { approveProcessService.addApprove(approveProcessVO); }catch (Exception e){ throw new RuntimeException("审批失败"); } } /** * 将临时文件迁移到正式目录 * @@ -712,20 +731,6 @@ salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice()); salesLedgerProductMapper.insert(salesLedgerProduct); //添加销售审批 审批成功之后添加生产数据 ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(9); approveProcessVO.setApproveDeptId(SecurityUtils.getDeptId()[0]); approveProcessVO.setApproveReason(contractNo); approveProcessVO.setRecordId(salesLedgerProduct.getId()); approveProcessVO.setApproveUser(SecurityUtils.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessVO.setApproveId(salesLedgerProduct.getId().toString()); try { approveProcessService.addApprove(approveProcessVO); }catch (Exception e) { log.error("添加销售审批异常", e); } // 添加生产数据 // salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct); } src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
@@ -77,20 +77,7 @@ }).collect(Collectors.toList()); salesQuotationProductService.saveBatch(products); // 报价审批 ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(6); approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId()); approveProcessVO.setApproveReason(quotationNo); approveProcessVO.setApproveUserIds(salesQuotationDto.getApproveUserIds()); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessVO.setPrice(salesQuotationDto.getTotalAmount()); try { approveProcessService.addApprove(approveProcessVO); }catch (Exception e){ log.error("SalesQuotationServiceImpl error:{}", e); throw new RuntimeException("审批失败"); } submitApprove(salesQuotationDto, salesQuotationDto.getQuotationNo(), SecurityUtils.getLoginUser()); return true; } @Override @@ -117,13 +104,33 @@ }).collect(Collectors.toList()); salesQuotationProductService.saveBatch(products); // 修改报价审批 vo.setApproveUserIds(salesQuotationDto.getApproveUserIds()); vo.setApproveType(6); vo.setApproveReason(salesQuotationDto.getQuotationNo()); approveProcessService.updateApproveUser(vo); // 修改报价审批 不删除之前的报价审批,直接结束,重新发起一个审批 approveProcessService.lambdaUpdate() .set(ApproveProcess::getApproveStatus, 4) .eq(ApproveProcess::getApproveType, 6) .eq(ApproveProcess::getApproveStatus, 0).or().eq(ApproveProcess::getApproveStatus, 1) .eq(ApproveProcess::getRecordId, salesQuotationDto.getId()).update(); submitApprove(salesQuotationDto, salesQuotationDto.getQuotationNo(), SecurityUtils.getLoginUser()); return true; } private void submitApprove(SalesQuotationDto salesQuotationDto, String quotationNo, LoginUser loginUser) { ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(6); approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId()); approveProcessVO.setApproveReason(quotationNo); approveProcessVO.setApproveUserIds(salesQuotationDto.getApproveUserIds()); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessVO.setPrice(salesQuotationDto.getTotalAmount()); try { approveProcessService.addApprove(approveProcessVO); }catch (Exception e){ log.error("SalesQuotationServiceImpl error:{}", e); throw new RuntimeException("审批失败"); } } @Override public QuotationRecordJSON importData(MultipartFile file, String approveUserIdsJson) { @@ -147,4 +154,4 @@ } } } src/main/resources/mapper/sales/SalesQuotationMapper.xml
@@ -4,12 +4,9 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.sales.mapper.SalesQuotationMapper"> <select id="listPage" resultType="com.ruoyi.sales.dto.SalesQuotationDto"> SELECT t1.*, t2.approve_user_ids SELECT t1.* FROM sales_quotation t1 LEFT JOIN approve_process t2 ON t1.quotation_no = t2.approve_reason and t2.approve_type = 6 and t2.approve_status = 0 WHERE 1=1 and t2.approve_deleted = 0 <if test="salesQuotationDto.quotationNo != null and salesQuotationDto.quotationNo != '' "> AND t1.quotation_no LIKE CONCAT('%',#{salesQuotationDto.quotationNo},'%') </if>