From 33f9eae4ad4321860e4881f5f38dad6368c878ef Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 26 五月 2026 16:04:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New_pro' into dev_New_pro
---
src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java | 93 +++++++++++++++++++++++++++++++++++++---------
1 files changed, 75 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index 20b563a..607f47d 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -4,16 +4,25 @@
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.approve.bean.dto.ApprovalInstanceDto;
+import com.ruoyi.approve.mapper.ApprovalTemplateMapper;
+import com.ruoyi.approve.pojo.ApprovalTemplate;
import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.service.ApprovalInstanceService;
import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
import com.ruoyi.basic.enums.ApplicationTypeEnum;
import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.security.LoginUser;
+import com.ruoyi.procurementrecord.bean.vo.ShippingProductVo;
import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.sales.dto.SalesLedgerProductDto;
+import com.ruoyi.sales.dto.ShippingApproveDto;
import com.ruoyi.sales.dto.ShippingInfoDto;
+import com.ruoyi.sales.dto.ShippingProductDetailDto;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.mapper.ShippingProductDetailMapper;
@@ -24,7 +33,9 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.time.LocalDateTime;
import java.util.List;
/**
@@ -49,11 +60,13 @@
private final ApproveProcessServiceImpl approveProcessService;
private final FileUtil fileUtil;
private final ShippingProductDetailMapper shippingProductDetailMapper;
+ private final ApprovalTemplateMapper approvalTemplateMapper;
+ private final ApprovalInstanceService approvalInstanceService;
@Override
public IPage<ShippingInfoDto> listPage(Page page, ShippingInfo req) {
IPage<ShippingInfoDto> listPage = shippingInfoMapper.listPage(page, req);
- listPage.getRecords().forEach(item ->{
+ listPage.getRecords().forEach(item -> {
item.setStorageBlobVOs(fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.IMAGE, RecordTypeEnum.SHIPPING_INFO, item.getId()));
});
return listPage;
@@ -66,8 +79,7 @@
throw new RuntimeException("鍙戣揣淇℃伅涓嶅瓨鍦�");
}
//鎵e噺搴撳瓨
- if(!"宸插彂璐�".equals(byId.getStatus())){
-// SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(byId.getSalesLedgerProductId());
+ if (!"宸插彂璐�".equals(byId.getStatus())) {
List<ShippingProductDetail> shippingProductDetails = shippingProductDetailMapper.selectList(new LambdaQueryWrapper<ShippingProductDetail>().eq(ShippingProductDetail::getShippingInfoId, req.getId()));
if (CollectionUtils.isEmpty(shippingProductDetails)) {
throw new RuntimeException("鍙戣揣淇℃伅涓嶅瓨鍦�");
@@ -84,31 +96,31 @@
boolean update = this.updateById(byId);
// 淇濆瓨鏂囦欢
fileUtil.saveStorageAttachment(ApplicationTypeEnum.IMAGE, RecordTypeEnum.SHIPPING_INFO, req.getId(), req.getStorageBlobDTOs());
- return update ;
+ return update;
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean delete(List<Long> ids) {
List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>()
.in(ShippingInfo::getId, ids));
- if(CollectionUtils.isEmpty(shippingInfos)) return false;
+ if (CollectionUtils.isEmpty(shippingInfos)) return false;
+ // 鍙湁寰呭鏍哥姸鎬佹墠鑳藉垹闄�
+ boolean allPending = shippingInfos.stream().allMatch(s -> "寰呭鏍�".equals(s.getStatus()));
+ if (!allPending) throw new RuntimeException("鍙湁寰呭鏍哥姸鎬佹墠鑳藉垹闄�");
// 鍒犻櫎闄勪欢
commonFileService.deleteByBusinessIds(ids, FileNameType.SHIP.getValue());
- // 鎵e凡鍙戣揣搴撳瓨
- for (ShippingInfo shippingInfo : shippingInfos) {
- if("宸插彂璐�".equals(shippingInfo.getStatus())) {
- stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode());
- }
- }
// 鍒犻櫎鍙戣揣瀹℃壒
- if(CollectionUtils.isNotEmpty(shippingInfos)){
- for (ShippingInfo shippingInfo : shippingInfos){
+ if (CollectionUtils.isNotEmpty(shippingInfos)) {
+ for (ShippingInfo shippingInfo : shippingInfos) {
List<ApproveProcess> one = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
.like(ApproveProcess::getApproveReason, shippingInfo.getShippingNo()));
- if(one != null){
+ if (one != null) {
List<Long> list = one.stream().map(ApproveProcess::getId).toList();
approveProcessService.delByIds(list);
}
+ // 鎵e凡鍙戣揣搴撳瓨
+ stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode());
}
}
//鍒犻櫎鍙戣揣鏄庣粏
@@ -118,8 +130,8 @@
}
@Override
- public List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId) {
- return shippingInfoMapper.getReturnManagementDtoById(shippingId );
+ public List<ShippingProductVo> getReturnManagementDtoById(Long shippingId) {
+ return shippingInfoMapper.getReturnManagementDtoById(shippingId);
}
@@ -130,9 +142,54 @@
@Override
public boolean add(ShippingInfoDto req) {
- this.save( req);
+ this.save(req);
req.getBatchNoDetailList().forEach(item -> item.setShippingInfoId(req.getId()));
shippingProductDetailMapper.insert(req.getBatchNoDetailList());
+ for (ShippingProductDetail shippingProductDetail : req.getBatchNoDetailList()) {
+ stockUtils.substractStock(shippingProductDetail.getProductModelId(), shippingProductDetail.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId(), shippingProductDetail.getBatchNo());
+ }
+ // 淇濆瓨鏂囦欢
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.IMAGE, RecordTypeEnum.SHIPPING_INFO, req.getId(), req.getStorageBlobDTOs());
+ return true;
+ }
+
+ @Override
+ public List<ShippingProductDetailDto> getDetail(Long id) {
+ return shippingProductDetailMapper.getDetail(id);
+ }
+
+ @Override
+ public ShippingApproveDto getDateilByShippingNo(String shippingNo) {
+ ShippingApproveDto shippingApproveDto = new ShippingApproveDto();
+ ShippingInfo shippingInfo = new ShippingInfo();
+ shippingInfo.setShippingNo(shippingNo);
+ shippingApproveDto.setShippingInfo(shippingInfoMapper.listPage(new Page(1, -1), shippingInfo).getRecords().get(0));
+ List<ShippingProductDetailDto> dateilByShippingNo = shippingProductDetailMapper.getDateilByShippingNo(shippingNo);
+ shippingApproveDto.setShippingProductDetailDtoList(dateilByShippingNo);
+ return shippingApproveDto;
+ }
+
+ @Override
+ public boolean addReq(ShippingInfoDto req) {
+
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ String sh = OrderUtils.countTodayByCreateTime(shippingInfoMapper, "SH","shipping_no");
+ // 鍏堜繚瀛樺彂璐у崟锛屽啀鍙戣捣瀹℃壒锛涙棤瀹℃牳浜鸿嚜鍔ㄩ�氳繃鏃堕渶瑕佹寜鍙戣揣缂栧彿鍥炲啓鍙戣揣鐘舵�併��
+ req.setShippingNo(sh);
+ req.setStatus("寰呭鏍�");
+ boolean save = this.add(req);
+ // 鍙戣揣瀹℃壒
+ ApprovalInstanceDto approvalInstance = new ApprovalInstanceDto();
+ approvalInstance.setTemplateId(approvalTemplateMapper.selectOne(new LambdaQueryWrapper<ApprovalTemplate>().eq(ApprovalTemplate::getBusinessType,6L).orderByDesc(ApprovalTemplate::getId).last("LIMIT 1")).getId());
+ approvalInstance.setTemplateName(approvalTemplateMapper.selectOne(new LambdaQueryWrapper<ApprovalTemplate>().eq(ApprovalTemplate::getBusinessType,6L).orderByDesc(ApprovalTemplate::getId).last("LIMIT 1")).getTemplateName());
+ approvalInstance.setBusinessId(req.getId());
+ approvalInstance.setBusinessType(6L);
+ approvalInstance.setCurrentLevel(1);
+ approvalInstance.setTitle(sh+"瀹℃壒");
+ approvalInstance.setApplicantId(loginUser.getUserId());
+ approvalInstance.setApplicantName(loginUser.getNickName());
+ approvalInstance.setApplyTime(LocalDateTime.now());
+ approvalInstanceService.add(approvalInstance);
return true;
}
}
--
Gitblit v1.9.3