| src/main/java/com/ruoyi/approve/service/impl/ApproveBusinessStatusService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/approve/service/impl/ApproveBusinessStatusService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,175 @@ package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.mapper.QualityInspectParamMapper; import com.ruoyi.quality.mapper.QualityTestStandardMapper; import com.ruoyi.quality.mapper.QualityTestStandardParamMapper; 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.SalesLedgerProductMapper; import com.ruoyi.sales.mapper.SalesQuotationMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.SalesQuotation; import com.ruoyi.sales.pojo.ShippingInfo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.Date; import java.util.List; @Service @RequiredArgsConstructor public class ApproveBusinessStatusService { private final PurchaseLedgerMapper purchaseLedgerMapper; private final SalesQuotationMapper salesQuotationMapper; private final ShippingInfoMapper shippingInfoMapper; private final SalesLedgerProductMapper salesLedgerProductMapper; private final StockUtils stockUtils; private final QualityInspectMapper qualityInspectMapper; private final QualityTestStandardMapper qualityTestStandardMapper; private final QualityTestStandardParamMapper qualityTestStandardParamMapper; private final QualityInspectParamMapper qualityInspectParamMapper; /** * ç»ä¸åæ¥å®¡æ¹ç»æå¯¹åºçä¸å¡åæ®ç¶æã * statusï¼1-å®¡æ ¸ä¸ï¼2-å®¡æ ¸å®æï¼3-å®¡æ ¸æªéè¿ã */ public void syncBusinessStatus(Integer approveType, String approveReason, Integer status) { if (approveType == null || status == null || !StringUtils.hasText(approveReason)) { return; } switch (approveType) { case 5: syncPurchaseStatus(approveReason, status); break; case 6: syncSalesQuotationStatus(approveReason, status); break; case 7: syncShippingStatus(approveReason, status); break; default: break; } } // éè´å®¡æ¹éè¿æ¶ï¼æäº§åè´¨æ£é ç½®å³å®çæè´¨æ£åæç´æ¥å ¥åºã private void syncPurchaseStatus(String approveReason, Integer status) { PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>() .eq(PurchaseLedger::getPurchaseContractNumber, approveReason) .last("limit 1")); if (purchaseLedger == null) { return; } if (status.equals(2)) { purchaseLedger.setApprovalStatus(3); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>() .lambda().eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId()).eq(SalesLedgerProduct::getType, 2)); for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) { if (Boolean.TRUE.equals(salesLedgerProduct.getIsChecked())) { addQualityInspect(purchaseLedger, salesLedgerProduct); } else { stockUtils.addStockWithBatchNo( salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId(), purchaseLedger.getPurchaseContractNumber() + "-" + salesLedgerProduct.getId()); } } } else if (status.equals(3)) { purchaseLedger.setApprovalStatus(4); } else if (status.equals(1)) { purchaseLedger.setApprovalStatus(2); } else { return; } purchaseLedgerMapper.updateById(purchaseLedger); } // æ¥ä»·å®¡æ¹ç¶æååå°é宿¥ä»·åç¶æã private void syncSalesQuotationStatus(String approveReason, Integer status) { SalesQuotation salesQuote = salesQuotationMapper.selectOne(new LambdaQueryWrapper<SalesQuotation>() .eq(SalesQuotation::getQuotationNo, approveReason) .last("limit 1")); if (salesQuote == null) { return; } if (status.equals(2)) { salesQuote.setStatus("éè¿"); } else if (status.equals(3)) { salesQuote.setStatus("æç»"); } else if (status.equals(1)) { salesQuote.setStatus("å®¡æ ¸ä¸"); } else { return; } salesQuotationMapper.updateById(salesQuote); } // å货审æ¹éè¿æ¶åæ¥åè´§ç¶æååºåºå®¡æ¹ç¶æï¼æç»æ¶å é¤å¾ 确认åºåºè®°å½ã private void syncShippingStatus(String approveReason, Integer status) { ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>() .eq(ShippingInfo::getShippingNo, approveReason) .orderByDesc(ShippingInfo::getCreateTime) .last("limit 1")); if (shippingInfo == null) { return; } if (status.equals(2)) { shippingInfo.setStatus("å®¡æ ¸éè¿"); shippingInfo.setShippingDate(new Date()); stockUtils.shipmentStatus(StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), shippingInfo.getId()); } else if (status.equals(3)) { stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode()); shippingInfo.setStatus("å®¡æ ¸æç»"); } else if (status.equals(1)) { shippingInfo.setStatus("å®¡æ ¸ä¸"); } else { return; } shippingInfoMapper.updateById(shippingInfo); } // çæéè´è´¨æ£åï¼å¹¶æäº§åè´¨æ£æ ååå§åè´¨æ£åæ°ã private void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) { QualityInspect qualityInspect = new QualityInspect(); qualityInspect.setInspectType(0); qualityInspect.setSupplier(purchaseLedger.getSupplierName()); qualityInspect.setPurchaseLedgerId(purchaseLedger.getId()); qualityInspect.setProductId(saleProduct.getProductId()); qualityInspect.setProductName(saleProduct.getProductCategory()); qualityInspect.setModel(saleProduct.getSpecificationModel()); qualityInspect.setProductModelId(saleProduct.getProductModelId()); qualityInspect.setUnit(saleProduct.getUnit()); qualityInspect.setQuantity(saleProduct.getQuantity()); qualityInspectMapper.insert(qualityInspect); List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(saleProduct.getProductId(), 0, null); if (qualityTestStandard.size() > 0) { qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId()); qualityInspectMapper.updateById(qualityInspect); qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery() .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId())) .forEach(qualityTestStandardParam -> { QualityInspectParam param = new QualityInspectParam(); com.ruoyi.common.utils.bean.BeanUtils.copyProperties(qualityTestStandardParam, param); param.setId(null); param.setInspectId(qualityInspect.getId()); qualityInspectParamMapper.insert(param); }); } } } src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -1,7 +1,6 @@ package com.ruoyi.approve.service.impl; 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.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -14,26 +13,12 @@ import com.ruoyi.basic.enums.RecordTypeEnum; import com.ruoyi.basic.utils.FileUtil; 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.procurementrecord.utils.StockUtils; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.project.system.service.ISysNoticeService; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.mapper.QualityInspectParamMapper; import com.ruoyi.quality.mapper.QualityTestStandardMapper; import com.ruoyi.quality.mapper.QualityTestStandardParamMapper; 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.*; import com.ruoyi.sales.pojo.*; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -55,18 +40,8 @@ private final SysUserMapper sysUserMapper; private final ISysNoticeService sysNoticeService; private final CommonFileMapper fileMapper; private final DeviceRepairMapper deviceRepairMapper; private final PurchaseLedgerMapper purchaseLedgerMapper; private final SalesQuotationMapper salesQuotationMapper; private final ShippingInfoMapper shippingInfoMapper; private final ShippingProductDetailMapper shippingProductDetailMapper; private final CommonFileServiceImpl commonFileService; private final StockUtils stockUtils; private final SalesLedgerProductMapper salesLedgerProductMapper; private final QualityInspectMapper qualityInspectMapper; private final QualityTestStandardMapper qualityTestStandardMapper; private final QualityTestStandardParamMapper qualityTestStandardParamMapper; private final QualityInspectParamMapper qualityInspectParamMapper; private final ApproveBusinessStatusService approveBusinessStatusService; private final FileUtil fileUtil; @@ -162,74 +137,7 @@ } approveProcessMapper.updateById(approveProcess); //éè´å®¡æ ¸ if (approveProcess.getApproveType().equals(5)) { PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>() .eq(PurchaseLedger::getPurchaseContractNumber, approveProcess.getApproveReason()) .last("limit 1")); if (purchaseLedger != null) { if (status.equals(2)) { // åæ purchaseLedger.setApprovalStatus(3); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>() .lambda().eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId()).eq(SalesLedgerProduct::getType, 2)); for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) { // è´¨æ£ if (salesLedgerProduct.getIsChecked()) { addQualityInspect(purchaseLedger, salesLedgerProduct); } else { //ç´æ¥å ¥åº stockUtils.addStockWithBatchNo(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId(), purchaseLedger.getPurchaseContractNumber() + "-" + salesLedgerProduct.getId()); } } } else if (status.equals(3)) { // æç» purchaseLedger.setApprovalStatus(4); } else if (status.equals(1)) { // å®¡æ ¸ä¸ purchaseLedger.setApprovalStatus(2); } purchaseLedgerMapper.updateById(purchaseLedger); } } // é宿¥ä»·ç¶æä¿®æ¹ if (approveProcess.getApproveType().equals(6)) { SalesQuotation salesQuote = salesQuotationMapper.selectOne(new LambdaQueryWrapper<SalesQuotation>() .eq(SalesQuotation::getQuotationNo, approveProcess.getApproveReason()) .last("limit 1")); // åæ if (status.equals(2) && salesQuote != null) { salesQuote.setStatus("éè¿"); } else if (status.equals(3) && salesQuote != null) { salesQuote.setStatus("æç»"); } else if (status.equals(1) && salesQuote != null) { salesQuote.setStatus("å®¡æ ¸ä¸"); } salesQuotationMapper.updateById(salesQuote); } // åºåºå®¡æ¹ä¿®æ¹=åè´§å®¡æ¹ if (approveProcess.getApproveType().equals(7)) { ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>() .eq(ShippingInfo::getShippingNo, approveProcess.getApproveReason()) .orderByDesc(ShippingInfo::getCreateTime) .last("limit 1")); if (shippingInfo != null) { if (status.equals(2)) { shippingInfo.setStatus("å®¡æ ¸éè¿"); shippingInfo.setShippingDate(new Date()); //æ´æ¹åºåºå®¡æ ¸ç¶æï¼å¾ ç¡®è®¤æ¹æå¾ å®¡æ ¸ï¼ stockUtils.shipmentStatus(StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), shippingInfo.getId()); } else if (status.equals(3)) { //å é¤åæ¬ï¼å¾ 确认ï¼çåºåºå®¡æ ¸ç¶æ stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode()); shippingInfo.setStatus("å®¡æ ¸æç»"); } else if (status.equals(1)) { shippingInfo.setStatus("å®¡æ ¸ä¸"); } shippingInfoMapper.updateById(shippingInfo); } } approveBusinessStatusService.syncBusinessStatus(approveProcess.getApproveType(), approveProcess.getApproveReason(), status); fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_NODE, approveNode.getId(), approveNode.getStorageBlobDTOS()); } @@ -305,34 +213,6 @@ return "åå ¬ç¨å审æ¹"; } return null; } private void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) { QualityInspect qualityInspect = new QualityInspect(); qualityInspect.setInspectType(0); qualityInspect.setSupplier(purchaseLedger.getSupplierName()); qualityInspect.setPurchaseLedgerId(purchaseLedger.getId()); qualityInspect.setProductId(saleProduct.getProductId()); qualityInspect.setProductName(saleProduct.getProductCategory()); qualityInspect.setModel(saleProduct.getSpecificationModel()); qualityInspect.setProductModelId(saleProduct.getProductModelId()); qualityInspect.setUnit(saleProduct.getUnit()); qualityInspect.setQuantity(saleProduct.getQuantity()); qualityInspectMapper.insert(qualityInspect); List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(saleProduct.getProductId(), 0, null); if (qualityTestStandard.size() > 0) { qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId()); qualityInspectMapper.updateById(qualityInspect); qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery() .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId())) .forEach(qualityTestStandardParam -> { QualityInspectParam param = new QualityInspectParam(); com.ruoyi.common.utils.bean.BeanUtils.copyProperties(qualityTestStandardParam, param); param.setId(null); param.setInspectId(qualityInspect.getId()); qualityInspectParamMapper.insert(param); }); } } } src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -1,8 +1,6 @@ package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -25,10 +23,8 @@ import com.ruoyi.basic.enums.RecordTypeEnum; import com.ruoyi.basic.utils.FileUtil; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysNotice; import com.ruoyi.project.system.domain.SysUser; @@ -38,10 +34,8 @@ import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.RequiredArgsConstructor; @@ -53,15 +47,12 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class ApproveProcessServiceImpl extends ServiceImpl<ApproveProcessMapper, ApproveProcess> implements IApproveProcessService { private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd"); private final SysDeptMapper sysDeptMapper; private final IApproveNodeService approveNodeService; private final SysUserMapper sysUserMapper; @@ -70,11 +61,10 @@ private final CommonFileServiceImpl commonFileService; private final ISysNoticeService sysNoticeService; private final PurchaseLedgerMapper purchaseLedgerMapper; private final SalesLedgerProductMapper salesLedgerProductMapper; private final StockUtils stockUtils; private final ShippingInfoMapper shippingInfoMapper; private final ApproveNodeMapper approveNodeMapper; private final ApproveProcessConfigNodeService approveProcessConfigNodeService; private final ApproveBusinessStatusService approveBusinessStatusService; private final FileUtil fileUtil; private final ApproveProcessConfigNodeMapper approveProcessConfigNodeMapper; @@ -82,63 +72,34 @@ public void addApprove(ApproveProcessVO approveProcessVO) throws Exception { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); SysDept sysDept = sysDeptMapper.selectDeptById(SecurityUtils.getLoginUser().getCurrentDeptId()); List<ApproveProcessConfigNodeVo> list = approveProcessConfigNodeService.listNode(approveProcessVO.getApproveType()); if (sysDept == null) throw new RuntimeException("é¨é¨ä¸åå¨"); if (sysUser == null) throw new RuntimeException("ç³è¯·äººä¸åå¨"); List<ApproveProcessConfigNodeVo> list = Optional.ofNullable(approveProcessConfigNodeService.listNode(approveProcessVO.getApproveType())) .orElse(Collections.emptyList()); List<Long> nodeIds = list.stream() .map(ApproveProcessConfigNodeVo::getApproverId) .filter(Objects::nonNull) .collect(Collectors.toList()); // æ å®¡æ ¸äººé»è¾æ·»å // 审æ¹é ç½®æ²¡æææå®¡æ ¸äººæ¶ï¼ä¸æ°å¢ååå®¡æ¹æµç¨ï¼ç´æ¥æ§è¡ä¸å¡å®¡æ ¸éè¿é»è¾ã if (CollectionUtils.isEmpty(nodeIds)) { autoPassPurchaseApproveIfNoApprover(approveProcessVO); // éè´åæ å®¡æ ¸äººé»è¾ approveBusinessStatusService.syncBusinessStatus(approveProcessVO.getApproveType(), approveProcessVO.getApproveReason(), 2); return; } List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds); if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("å®¡æ ¸ç¨æ·ä¸åå¨"); if (sysDept == null) throw new RuntimeException("é¨é¨ä¸åå¨"); if (sysUser == null) throw new RuntimeException("ç³è¯·äººä¸åå¨"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); ApproveProcess approveProcess = new ApproveProcess(); String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "", "approve_id"); approveProcess.setApproveId(no); approveProcess.setApproveUser(sysUser.getUserId()); approveProcess.setApproveUserName(sysUser.getNickName()); approveProcess.setApproveDeptId(sysDept.getDeptId()); approveProcess.setApproveUserIds(nodeIds.stream().map(String::valueOf).collect(Collectors.joining(","))); approveProcess.setApproveDeptName(sysDept.getDeptName()); approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? new Date() : dateFormat.parse(approveProcessVO.getApproveTime())); approveProcess.setApproveReason(approveProcessVO.getApproveReason()); approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId()); approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice()); approveProcess.setPrice(approveProcessVO.getPrice()); approveProcess.setStartDate(approveProcessVO.getStartDate()); approveProcess.setEndDate(approveProcessVO.getEndDate()); approveProcess.setStartDateTime(approveProcessVO.getStartDateTime()); approveProcess.setEndDateTime(approveProcessVO.getEndDateTime()); approveProcess.setApproveStatus(0); approveProcess.setApproveDelete(0); approveProcess.setApproveType(approveProcessVO.getApproveType()); approveProcess.setCreateTime(LocalDateTime.now()); approveProcess.setTenantId(approveProcessVO.getApproveDeptId()); approveProcess.setApproveUserCurrentId(nodeIds.get(0)); approveProcess.setApproveUserCurrentName(sysUsers .stream() .filter(SysUser -> SysUser.getUserId().equals(nodeIds.get(0))) .collect(Collectors.toList()) .get(0) .getNickName()); // è®¾ç½®ç¶æä¸ºéæ°æäº¤ if (approveProcessVO.getId() != null) { ApproveProcess approveProcess1 = approveProcessMapper.selectById(approveProcessVO.getId()); approveProcess1.setApproveStatus(4); approveProcessMapper.updateById(approveProcess1); } // æå®¡æ ¸äººæ¶ï¼ææ£å¸¸ååå®¡æ¹æµç¨å建审æ¹ä¸»è¡¨ã审æ¹èç¹å¹¶éç¥é¦ä¸ªå®¡æ ¸äººã ApproveProcess approveProcess = buildApproveProcess(approveProcessVO, sysUser, sysDept, nodeIds, sysUsers, 0); markResubmitted(approveProcessVO); save(approveProcess); //åå§å审æ¹èç¹ String nodeIdStr = nodeIds.stream() .map(String::valueOf) .collect(Collectors.joining(",")); approveNodeService.initApproveNodes(nodeIdStr, no, approveProcessVO.getApproveDeptId()); approveNodeService.initApproveNodes(nodeIdStr, approveProcess.getApproveId(), approveProcessVO.getApproveDeptId()); // éä»¶ç»å® fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_PROCESS, approveProcess.getId(), approveProcessVO.getStorageBlobDTOS()); /*æ¶æ¯éç¥*/ @@ -156,24 +117,56 @@ } } private void autoPassPurchaseApproveIfNoApprover(ApproveProcessVO approveProcessVO) { if (!Objects.equals(approveProcessVO.getApproveType(), 5) || !StringUtils.hasText(approveProcessVO.getApproveReason())) { throw new RuntimeException("å®¡æ ¸ç¨æ·ä¸åå¨"); private ApproveProcess buildApproveProcess(ApproveProcessVO approveProcessVO, SysUser sysUser, SysDept sysDept, List<Long> nodeIds, List<SysUser> sysUsers, Integer approveStatus) throws Exception { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); ApproveProcess approveProcess = new ApproveProcess(); String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "", "approve_id"); approveProcess.setApproveId(no); approveProcess.setApproveUser(sysUser.getUserId()); approveProcess.setApproveUserName(sysUser.getNickName()); approveProcess.setApproveDeptId(sysDept.getDeptId()); approveProcess.setApproveDeptName(sysDept.getDeptName()); approveProcess.setApproveUserIds(nodeIds.stream().map(String::valueOf).collect(Collectors.joining(","))); approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? new Date() : dateFormat.parse(approveProcessVO.getApproveTime())); approveProcess.setApproveReason(approveProcessVO.getApproveReason()); approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId()); approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice()); approveProcess.setPrice(approveProcessVO.getPrice()); approveProcess.setStartDate(approveProcessVO.getStartDate()); approveProcess.setEndDate(approveProcessVO.getEndDate()); approveProcess.setStartDateTime(approveProcessVO.getStartDateTime()); approveProcess.setEndDateTime(approveProcessVO.getEndDateTime()); approveProcess.setApproveStatus(approveStatus); approveProcess.setApproveDelete(0); approveProcess.setApproveType(approveProcessVO.getApproveType()); approveProcess.setCreateTime(LocalDateTime.now()); approveProcess.setTenantId(approveProcessVO.getApproveDeptId()); if (!CollectionUtils.isEmpty(nodeIds)) { SysUser currentUser = sysUsers.stream() .filter(user -> user.getUserId().equals(nodeIds.get(0))) .findFirst() .orElseThrow(() -> new RuntimeException("å®¡æ ¸ç¨æ·ä¸åå¨")); approveProcess.setApproveUserCurrentId(currentUser.getUserId()); approveProcess.setApproveUserCurrentName(currentUser.getNickName()); } if (approveStatus.equals(2) || approveStatus.equals(3) || approveStatus.equals(4)) { approveProcess.setApproveOverTime(new Date()); } return approveProcess; } purchaseLedgerMapper.update(null, new LambdaUpdateWrapper<PurchaseLedger>() .eq(PurchaseLedger::getPurchaseContractNumber, approveProcessVO.getApproveReason()) .set(PurchaseLedger::getApprovalStatus, 3)); //éè´å ¥åº PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>() .eq(PurchaseLedger::getPurchaseContractNumber, approveProcessVO.getApproveReason()) .last("limit 1")); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>() .lambda().eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId()).eq(SalesLedgerProduct::getType, 2)); for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) { stockUtils.addStockWithBatchNo(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId(),purchaseLedger.getPurchaseContractNumber()+"-"+salesLedgerProduct.getId()); private void markResubmitted(ApproveProcessVO approveProcessVO) { if (approveProcessVO.getId() == null) { return; } ApproveProcess approveProcess = approveProcessMapper.selectById(approveProcessVO.getId()); if (approveProcess == null) { return; } approveProcess.setApproveStatus(4); approveProcessMapper.updateById(approveProcess); } @Override src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -65,12 +65,15 @@ approveProcessVO.setApproveUserIds(req.getApproveUserIds()); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessService.addApprove(approveProcessVO); // æ·»å åè´§æ¶æ¯ // å ä¿ååè´§åï¼åå起审æ¹ï¼æ å®¡æ ¸äººèªå¨éè¿æ¶éè¦æåè´§ç¼å·åååè´§ç¶æã req.setShippingNo(sh); req.setStatus("å¾ å®¡æ ¸"); boolean save = shippingInfoService.add(req); return save ? AjaxResult.success() : AjaxResult.error(); if (!save) { return AjaxResult.error(); } approveProcessService.addApprove(approveProcessVO); return AjaxResult.success(); } @Operation(summary = "åè´§æ£åºå")