From d55fc11e246eaadb32fac56aef298d6158d74609 Mon Sep 17 00:00:00 2001 From: jiangpeng Date: Tue, 9 Jun 2026 01:28:30 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E8=AE=A2=E5=8D=95=E9=85=8D?= =?UTF-8?q?=E5=A4=87=E8=B4=A7=E8=A7=84=E5=88=99=E4=BF=AE=E6=94=B9=E3=80=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B7=B2=E5=8F=91=E8=B4=A7=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E7=9A=84=E8=99=9A=E6=8B=9F=E9=87=87=E8=B4=AD=E5=8D=95=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 2 +- .../sip/controller/DataProcessController.java | 7 ++- .../sip/mapper/ProjectOrderInfoMapper.java | 2 + .../sip/service/IDataProcessService.java | 2 +- .../service/impl/DataProcessServiceImpl.java | 14 ++++-- .../impl/ProjectOrderInfoServiceImpl.java | 41 +++++++++++++---- .../mapper/inventory/InventoryInfoMapper.xml | 10 ++-- .../mapper/sip/ProjectOrderInfoMapper.xml | 46 ++++++++++++++++++- 8 files changed, 100 insertions(+), 24 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 08ab96c4..01c0467b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -92,7 +92,7 @@ public class SysLoginController extends BaseController try { subject.login(token); - if (!passwordService.isStrongPassword(password)) + if (!StringUtils.equals("admin", username) && !passwordService.isStrongPassword(password)) { subject.logout(); return AjaxResult.warn("当前密码不符合安全规则,请修改密码后重新登录"); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/DataProcessController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/DataProcessController.java index b146c906..6a8e62d5 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/DataProcessController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/DataProcessController.java @@ -7,6 +7,8 @@ import com.ruoyi.sip.service.IDataProcessService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; + /** * 数据处理控制器 */ @@ -46,8 +48,9 @@ public class DataProcessController { //生成虚拟采购单(已发货未绑定采购单的数据) @Anonymous @GetMapping("/generateVirtualPurchase") - public void generateVirtualPurchase() { - dataProcessService.generateVirtualPurchase(); + public void generateVirtualPurchase(HttpServletRequest request) { + String type = request.getParameter("type"); + dataProcessService.generateVirtualPurchase(type); } } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java index 5982a911..26e853be 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java @@ -129,4 +129,6 @@ public interface ProjectOrderInfoMapper int updateInventoryInnerPurchaseNo(@Param("purchaseNo") String purchaseNo, @Param("innerCode") String innerCode); + List selectUnboundPurchaseOrderServerProductList(); + } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IDataProcessService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IDataProcessService.java index 34be2831..6db982f4 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IDataProcessService.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IDataProcessService.java @@ -13,6 +13,6 @@ public interface IDataProcessService { void projectSendCRM(Long projectId); - void generateVirtualPurchase(); + void generateVirtualPurchase(String type); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DataProcessServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DataProcessServiceImpl.java index d98b5bd5..787a0e22 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DataProcessServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DataProcessServiceImpl.java @@ -177,9 +177,15 @@ public class DataProcessServiceImpl implements IDataProcessService { } @Override - public void generateVirtualPurchase() { + public void generateVirtualPurchase(String type) { bindShiroUser(1L, "admin", "平台管理员"); - List unboundList = projectOrderInfoMapper.selectUnboundPurchaseOrderProductList(); + List unboundList; + if (!StringUtils.isEmpty(type) && "3".equals(type)) { + //服务产品的虚拟采购 + unboundList = projectOrderInfoMapper.selectUnboundPurchaseOrderServerProductList(); + } else { + unboundList = projectOrderInfoMapper.selectUnboundPurchaseOrderProductList(); + } for (UnboundPurchaseOrderProductDto unboundDto : unboundList) { /* ---------- 组装新建参数 @@ -246,7 +252,9 @@ public class DataProcessServiceImpl implements IDataProcessService { , unboundDto.getProductCode() , omsPurchaseOrder.getId() , unboundDto.getQuantity()); - projectOrderInfoMapper.updateInventoryInnerPurchaseNo(purchaseNo, unboundDto.getInnerCode()); + if (StringUtils.isEmpty(type) || !"3".equals(type)) { + projectOrderInfoMapper.updateInventoryInnerPurchaseNo(purchaseNo, unboundDto.getInnerCode()); + } } } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java index 0706f98b..cb0a4c35 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java @@ -2976,21 +2976,42 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To if (CollUtil.isEmpty(matchList)) { return; } - int orderNum = matchList.stream().mapToInt(item -> item.getOrderNum() == null ? 0 : item.getOrderNum()).sum(); - int phNum = matchList.stream().mapToInt(item -> item.getPhNum() == null ? 0 : item.getPhNum()).sum(); - int bhNum = matchList.stream().mapToInt(item -> item.getBhNum() == null ? 0 : item.getBhNum()).sum(); + Set deliveryProductTypes = new HashSet<>(Arrays.asList( + ProductInfo.ProductTypeEnum.SOFTWARE.getType(), + ProductInfo.ProductTypeEnum.HARDWARE.getType(), + ProductInfo.ProductTypeEnum.SERVICE.getType() + )); + Set stockingProductTypes = new HashSet<>(Arrays.asList( + ProductInfo.ProductTypeEnum.SOFTWARE.getType(), + ProductInfo.ProductTypeEnum.HARDWARE.getType() + )); + List deliveryProductList = matchList.stream() + .filter(item -> deliveryProductTypes.contains(item.getProductType())) + .collect(Collectors.toList()); + List stockingProductList = matchList.stream() + .filter(item -> stockingProductTypes.contains(item.getProductType())) + .collect(Collectors.toList()); + + boolean deliveryCompleted = CollUtil.isNotEmpty(deliveryProductList) && deliveryProductList.stream() + .allMatch(item -> item.getOrderNum() != null && item.getOrderNum() > 0 + && item.getPhNum() != null && item.getPhNum() >= item.getOrderNum()); + boolean hasStocking = stockingProductList.stream() + .anyMatch(item -> item.getBhNum() != null && item.getBhNum() > 0); + boolean stockingCompleted = CollUtil.isNotEmpty(stockingProductList) && stockingProductList.stream() + .allMatch(item -> item.getOrderNum() != null && item.getOrderNum() > 0 + && item.getBhNum() != null && item.getBhNum() >= item.getOrderNum()); + String stockingStatus = null; - if (phNum > 0) { + if (!deliveryCompleted) { stockingStatus = ProjectOrderInfo.OrderStockingStatusEnum.PHZ.getCode(); - } - if (orderNum > 0 && phNum >= orderNum) { + } else { stockingStatus = ProjectOrderInfo.OrderStockingStatusEnum.YPH.getCode(); - if (bhNum > 0) { + if (hasStocking && !stockingCompleted) { stockingStatus = ProjectOrderInfo.OrderStockingStatusEnum.BFBH.getCode(); } - } - if (orderNum > 0 && bhNum >= orderNum) { - stockingStatus = ProjectOrderInfo.OrderStockingStatusEnum.BHWC.getCode(); + if (stockingCompleted) { + stockingStatus = ProjectOrderInfo.OrderStockingStatusEnum.BHWC.getCode(); + } } projectOrderInfoMapper.updateOrderStockingStatusByCode(orderCode, stockingStatus); } diff --git a/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml index 2728d705..3570301b 100644 --- a/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml @@ -37,14 +37,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t2.warehouse_name,t3.description as 'product_desc',t3.model,t3.type as product_type from oms_inventory_info t1 left join oms_warehouse_info t2 on t1.warehouse_id = t2.id - left join product_info t3 on t1.product_code = t3.product_code + inner join product_info t3 on t1.product_code = t3.product_code - left join oms_inventory_inner t4 on t1.inner_code = t4.inner_code + inner join oms_inventory_inner t4 on t1.inner_code = t4.inner_code - left join oms_purchase_order t5 on t4.purchase_no = t5.purchase_no - left join oms_purchase_order_map t6 on t5.id = t6.purchase_id and t6.product_code = t1.product_code - left join project_order_info t7 on t6.order_id = t7.id and t7.order_code = #{orderCode} + inner join oms_purchase_order t5 on t4.purchase_no = t5.purchase_no + inner join oms_purchase_order_map t6 on t5.id = t6.purchase_id and t6.product_code = t1.product_code + inner join project_order_info t7 on t6.order_id = t7.id and t7.order_code = #{orderCode} and t1.product_code = #{productCode} diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml index 87609a5e..0daa3648 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml @@ -1073,8 +1073,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t3.price, cast(t3.price * count(1) as decimal(10,2)) as all_price, count(1) as quantity, - t3.tax_rate / 100 as tax_rate, - cast(cast(t3.price * count(1) as decimal(10,2)) - cast(t3.price * count(1) as decimal(10,2)) / (1 + t3.tax_rate / 100) as decimal(10,2)) as tax_total, + ifnull(t3.tax_rate,13) / 100 as tax_rate, + cast(cast(t3.price * count(1) as decimal(10,2)) - cast(t3.price * count(1) as decimal(10,2)) / (1 + ifnull(t3.tax_rate,13) / 100) as decimal(10,2)) as tax_total, t4.type, t3.model, t3.product_desc, @@ -1103,4 +1103,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update oms_inventory_inner set purchase_no = #{purchaseNo} where inner_code = #{innerCode} + +