From 6d8e9ef3653639275d262a975ad477fa0bf5e366 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 30 三月 2026 10:51:53 +0800
Subject: [PATCH] fix: 加工编号缺失,发货修改为整个订单发货
---
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | 3 +
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 25 +++-----
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductProcessServiceImpl.java | 4 +
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 8 ++
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | 6 ++
src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | 87 +++++++++++++++++++++++------
doc/河南鹤壁天沐钢化玻璃厂.sql | 5 +
7 files changed, 103 insertions(+), 35 deletions(-)
diff --git "a/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql" "b/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
index 4971c0a..68b67e0 100644
--- "a/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
+++ "b/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
@@ -84,4 +84,7 @@
ALTER TABLE `product-inventory-management-hbtmblc`.`customer_regions` COMMENT = '瀹㈡埛鍦板尯琛�';
ALTER TABLE `product-inventory-management-hbtmblc`.`customer`
- ADD COLUMN `regions_id` bigint NULL COMMENT '鍦板尯ID' AFTER `regions`;
\ No newline at end of file
+ ADD COLUMN `regions_id` bigint NULL COMMENT '鍦板尯ID' AFTER `regions`;
+
+ALTER TABLE `sales_ledger`
+ ADD COLUMN `delivery_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鍙戣揣鐘舵�侊細0-鏈彂璐э紝1-宸插彂璐�' AFTER `delivery_date`;
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index db3c5b9..1be6dce 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -1,33 +1,33 @@
package com.ruoyi.sales.controller;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+// 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.approve.mapper.ApproveProcessMapper;
-import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
-import com.ruoyi.approve.vo.ApproveProcessVO;
-import com.ruoyi.common.enums.FileNameType;
+// import com.ruoyi.approve.mapper.ApproveProcessMapper;
+// import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
+// import com.ruoyi.approve.vo.ApproveProcessVO;
+// import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.OrderUtils;
-import com.ruoyi.common.utils.SecurityUtils;
+// import com.ruoyi.common.utils.SecurityUtils;
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.security.LoginUser;
+// import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.other.service.impl.TempFileServiceImpl;
-import com.ruoyi.procurementrecord.utils.StockUtils;
+// import com.ruoyi.other.service.impl.TempFileServiceImpl;
+// import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.sales.dto.ShippingInfoDto;
-import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
+// import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
-import com.ruoyi.sales.pojo.ShipmentApproval;
+// import com.ruoyi.sales.pojo.ShipmentApproval;
import com.ruoyi.sales.pojo.ShippingInfo;
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 com.ruoyi.sales.service.impl.CommonFileServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
@@ -37,7 +37,8 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.time.LocalDate;
+// import java.time.LocalDate;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -52,13 +53,20 @@
@Autowired
private ShippingInfoService shippingInfoService;
- @Autowired
- private CommonFileServiceImpl commonFileService;
+ // @Autowired
+ // private CommonFileServiceImpl commonFileService;
+
+ // @Autowired
+ // private ApproveProcessServiceImpl approveProcessService;
+
+ // @Autowired
+ // private StockUtils stockUtils;
@Autowired
- private ApproveProcessServiceImpl approveProcessService;
+ private ISalesLedgerProductService salesLedgerProductService;
+
@Autowired
- private StockUtils stockUtils;
+ private ISalesLedgerService salesLedgerService;
@GetMapping("/listPage")
@@ -73,8 +81,10 @@
@Transactional(rollbackFor = Exception.class)
@Log(title = "鍙戣揣淇℃伅绠$悊", businessType = BusinessType.INSERT)
public AjaxResult add(@RequestBody ShippingInfoDto req) throws Exception {
- LoginUser loginUser = SecurityUtils.getLoginUser();
+ // LoginUser loginUser = SecurityUtils.getLoginUser();
String sh = OrderUtils.countTodayByCreateTime(shippingInfoMapper, "SH");
+
+ /* // 鍘熸湁鐨勫崟浜у搧鍙戣揣鍙婂鎵归�昏緫
// 鍙戣揣瀹℃壒
ApproveProcessVO approveProcessVO = new ApproveProcessVO();
approveProcessVO.setApproveType(7);
@@ -89,6 +99,47 @@
req.setStatus("寰呭鏍�");
boolean save = shippingInfoService.save(req);
return save ? AjaxResult.success() : AjaxResult.error();
+ */
+
+ // 鎸夋暣涓鍗曞彂璐э紝涓嶉渶瀹℃壒
+ if (req.getSalesLedgerId() == null) {
+ return AjaxResult.error("璇烽�夋嫨鍙戣揣璁㈠崟");
+ }
+
+ // 鑾峰彇璇ヨ鍗曚笅鐨勬墍鏈変骇鍝�
+ SalesLedgerProduct query = new SalesLedgerProduct();
+ query.setSalesLedgerId(req.getSalesLedgerId());
+ List<SalesLedgerProduct> productList = salesLedgerProductService.selectSalesLedgerProductList(query);
+
+ if (CollectionUtils.isEmpty(productList)) {
+ return AjaxResult.error("璇ヨ鍗曚笅鏃犲緟鍙戣揣浜у搧");
+ }
+
+ // 涓烘瘡涓骇鍝佸垱寤哄彂璐т俊鎭�
+ List<ShippingInfo> shippingInfoList = new ArrayList<>();
+ for (SalesLedgerProduct product : productList) {
+ ShippingInfo shippingInfo = new ShippingInfo();
+ shippingInfo.setSalesLedgerId(req.getSalesLedgerId());
+ shippingInfo.setSalesLedgerProductId(product.getId());
+ shippingInfo.setShippingNo(sh);
+ shippingInfo.setStatus("瀹℃牳閫氳繃"); // 鐩存帴璁句负瀹℃牳閫氳繃锛岃烦杩囧鎵�
+ shippingInfo.setType(req.getType());
+ shippingInfo.setExpressCompany(req.getExpressCompany());
+ shippingInfo.setExpressNumber(req.getExpressNumber());
+ shippingInfo.setShippingDate(req.getShippingDate());
+ shippingInfo.setShippingCarNumber(req.getShippingCarNumber());
+ shippingInfoList.add(shippingInfo);
+ }
+
+ boolean save = shippingInfoService.saveBatch(shippingInfoList);
+ if (save) {
+ // 鏇存柊閿�鍞彴璐︾殑鍙戣揣鐘舵�佷负宸插彂璐�
+ SalesLedger salesLedger = new SalesLedger();
+ salesLedger.setId(req.getSalesLedgerId());
+ salesLedger.setDeliveryStatus(1);
+ salesLedgerService.updateById(salesLedger);
+ }
+ return save ? AjaxResult.success() : AjaxResult.error();
}
@ApiOperation("鍙戣揣鎵e簱瀛�")
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index ca01dab..06c0a40 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -59,4 +59,7 @@
@ApiModelProperty(value = "浜よ揣鏃ユ湡")
private LocalDate deliveryDate;
+
+ @ApiModelProperty(value = "鏄惁鍙戣揣")
+ private Integer deliveryStatus;
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index bcd1620..93766d9 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -142,6 +142,12 @@
@TableField(value = "delivery_date")
private LocalDate deliveryDate;
+ /**
+ * 鍙戣揣鐘舵�侊細0-鏈彂璐э紝1-宸插彂璐�
+ */
+ @ApiModelProperty("鍙戣揣鐘舵�侊細0-鏈彂璐э紝1-宸插彂璐�")
+ private Integer deliveryStatus;
+
@TableField(exist = false)
@ApiModelProperty(value = "浜よ揣澶╂暟宸�")
private Integer deliveryDaysDiff;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductProcessServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductProcessServiceImpl.java
index 556fcb4..62cc2ba 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductProcessServiceImpl.java
@@ -33,6 +33,10 @@
public void addProcess(SalesLedgerProductProcess process) {
checkDuplicate(process.getProcessName(), null, process.getProcessName());
this.save(process);
+ if (!StringUtils.hasText(process.getCode())) {
+ process.setCode("P" + process.getId());
+ this.updateById(process);
+ }
}
@Override
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 871597a..dd15ac8 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -460,6 +460,8 @@
salesLedger.setContractAmount(salesLedgerProductImportDtos.stream()
.map(SalesLedgerProductImportDto::getTaxInclusiveTotalPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add));
+ // 鍙戣揣鐘舵��
+ salesLedger.setDeliveryStatus(0);
salesLedgerMapper.insert(salesLedger);
for (SalesLedgerProductImportDto salesLedgerProductImportDto : salesLedgerProductImportDtos) {
@@ -729,8 +731,12 @@
if (salesLedger.getId() == null) {
String contractNo = generateSalesContractNo();
salesLedger.setSalesContractNo(contractNo);
+ salesLedger.setDeliveryStatus(0);
salesLedgerMapper.insert(salesLedger);
} else {
+ if (salesLedger.getDeliveryStatus() == 1) {
+ throw new ServiceException("璁㈠崟宸插彂璐�,绂佹缂栬緫");
+ }
salesLedgerMapper.updateById(salesLedger);
}
@@ -865,7 +871,7 @@
// 娓呯┖閿�鍞骇鍝佺粦瀹氱殑鍔犲伐
salesLedgerProductProcessBindService.updateProductProcessBind(salesLedgerProduct.getSalesProductProcessList(), salesLedgerProduct.getId());
// 娣诲姞鐢熶骇鏁版嵁
- salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
+// salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
}
}
}
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 01e269c..7612cda 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -31,7 +31,8 @@
T1.execution_date,
T2.nick_name AS entry_person_name,
T1.payment_method,
- DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff
+ DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff,
+ T1.delivery_status AS deliveryStatus
FROM
sales_ledger T1
LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
@@ -43,7 +44,8 @@
</select>
<select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.pojo.SalesLedger">
- SELECT T1.id,
+ SELECT
+ T1.id,
T1.sales_contract_no,
T1.customer_contract_no,
T1.project_name,
@@ -62,20 +64,9 @@
T1.payment_method,
T1.delivery_date,
DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff,
- CASE
- WHEN shipping_status_counts.total_count = 0 THEN false
- WHEN shipping_status_counts.unshipped_count = 0 THEN true
- ELSE false
- END AS is_fh
+ T1.delivery_status AS deliveryStatus
FROM sales_ledger T1
LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
- LEFT JOIN (
- SELECT sales_ledger_id,
- COUNT(*) as total_count,
- SUM(CASE WHEN status != '宸插彂璐�' THEN 1 ELSE 0 END) as unshipped_count
- FROM shipping_info
- GROUP BY sales_ledger_id
- ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id
<where>
<if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
@@ -95,8 +86,12 @@
<if test="salesLedgerDto.entryDateEnd != null and salesLedgerDto.entryDateEnd != '' ">
AND T1.entry_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
</if>
+
+ <if test="salesLedgerDto.deliveryStatus != null">
+ AND T1.delivery_status = #{salesLedgerDto.deliveryStatus}
+ </if>
</where>
- order by T1.entry_date desc
+ ORDER BY T1.entry_date DESC
</select>
<select id="selectIncomeStats" resultType="com.ruoyi.home.dto.IncomeExpenseAnalysisDto">
--
Gitblit v1.9.3