From e4fd3bca10bc2b966f36b2ac1efab5a743148fb2 Mon Sep 17 00:00:00 2001 From: chenhao Date: Mon, 24 Nov 2025 15:05:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(inventory):=20=E5=AE=9E=E7=8E=B0=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=8D=95=E6=92=A4=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改前端请求参数传递方式,从data改为params - 后端增加数据备份与恢复逻辑 - 新增项目产品信息的备份和恢复接口 - 完善撤单时订单状态及金额的更新处理 - 调整控制器参数接收方式以适配新的调用逻辑 --- .../oms_vue/src/api/inventory/execution.js | 2 +- .../vue/VueInventoryExecutionController.java | 2 +- .../sip/mapper/ProjectProductInfoMapper.java | 7 ++++++ .../impl/ExecutionTrackServiceImpl.java | 6 ++++- .../impl/ProjectOrderInfoServiceImpl.java | 4 ++++ .../mapper/sip/ProjectProductInfoMapper.xml | 24 +++++++++++++++++++ 6 files changed, 42 insertions(+), 3 deletions(-) diff --git a/oms_web/oms_vue/src/api/inventory/execution.js b/oms_web/oms_vue/src/api/inventory/execution.js index 53811a38..eed1d478 100644 --- a/oms_web/oms_vue/src/api/inventory/execution.js +++ b/oms_web/oms_vue/src/api/inventory/execution.js @@ -67,7 +67,7 @@ export function recallExecution(id) { return request({ url: `/inventory/execution/vue/recall`, method: 'post', - data: { id } + params: { id } }) } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryExecutionController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryExecutionController.java index f7708e71..dab2f306 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryExecutionController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryExecutionController.java @@ -86,7 +86,7 @@ public class VueInventoryExecutionController extends BaseController @RequiresPermissions("inventory:execution:recall") @PostMapping("/recall") @Log(title = "执行单撤单", businessType = BusinessType.DELETE) - public AjaxResult recall(@RequestBody Long id) + public AjaxResult recall( Long id) { inventoryExecutionService.recall(id); return AjaxResult.success(); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java index 6f1cbb2e..4d655b4a 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.sip.mapper; import java.util.List; import com.ruoyi.sip.domain.ProjectProductInfo; +import org.apache.ibatis.annotations.Param; /** * 项目产品信息Mapper接口 @@ -65,4 +66,10 @@ public interface ProjectProductInfoMapper void saveBatch(List addList); void updateBatch(List updateList); + + void saveBakData(@Param("orderCode") String orderCode,@Param("versionCode") String versionCode); + + void restoreData(@Param("orderCode")String orderCode, @Param("versionCode")String versionCode,@Param("projectId") Long projectId); + + int countBakData(@Param("orderCode")String orderCode,@Param("versionCode") String versionCode); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java index f9021ee7..bac7986e 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java @@ -53,7 +53,8 @@ public class ExecutionTrackServiceImpl implements IExecutionTrackService { private InventoryDeliveryMapper deliveryMapper; @Autowired private TodoService todoService; - + @Autowired + private IProjectProductInfoBakService projectProductInfoBakService; @Override public ExecutionOrderVo selectInfo(Long id) { ExecutionOrderVo vo = new ExecutionOrderVo(); @@ -238,6 +239,8 @@ public class ExecutionTrackServiceImpl implements IExecutionTrackService { public void recall(Long id) { //查询订单 ProjectOrderInfo projectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoById(id); + //还原数据 + projectProductInfoBakService.restoreData(projectOrderInfo.getOrderCode(),projectOrderInfo.getVersionCode(),projectOrderInfo.getProjectId()); //修改订单状态 ProjectOrderInfo updateOrder = new ProjectOrderInfo(); updateOrder.setOuterStatus(ProjectOrderInfo.OuterStatusEnum.NOT_OUTER.getCode()); @@ -245,6 +248,7 @@ public class ExecutionTrackServiceImpl implements IExecutionTrackService { updateOrder.setSignStatus(ProjectOrderInfo.SignStatusEnum.NOT_SIGN.getCode()); updateOrder.setVersionCode(String.valueOf(Integer.parseInt(projectOrderInfo.getVersionCode())+1)); updateOrder.setOrderStatus(ProjectOrderInfo.OrderStatus.APPROVE_REJECT.getCode()); + updateOrder.setActualPurchaseAmount(projectOrderInfo.getShipmentAmount()); updateOrder.setId(id); projectOrderInfoMapper.updateProjectOrderInfo(updateOrder); //剔除流程 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 4422c330..57607a62 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 @@ -117,6 +117,8 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To @Autowired private TaskService taskService; + @Autowired + private IProjectProductInfoBakService projectProductInfoBakService; private static final List CSS_EMAIL_LIST = Arrays.asList("wangxiaojun@pcitech.com", "huiwang@pcitech.com", "zhaoqian1@pcitech.com", "pci-ict@pcitech.com"); private static final List REJECT_EMAIL_LIST = Arrays.asList("li.junjie@unisinsight.com", "chen.shenggang@unisinsight.com"); @@ -438,6 +440,8 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To projectOrderInfo.setOrderStatus(ProjectOrderInfo.OrderStatus.WAIT_APPROVE.getCode()); //根据提交类型判断折上折是 100% 98.8%或者98.5% projectOrderInfo.setDiscountFold(BigDecimal.ONE); + //备份数据 + projectProductInfoBakService.saveBakData(existProjectOrderInfo.getOrderCode(), existProjectOrderInfo.getVersionCode()); // if ("0".equals(projectOrderInfo.getProcessTemplate())) { // //直签 98.8 // projectOrderInfo.setDiscountFold(new BigDecimal("0.985")); diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml index af490b83..b54f3152 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml @@ -74,6 +74,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + insert into project_product_info @@ -123,6 +129,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" catalogue_all_price = values(catalogue_all_price), price = values(price), all_price = values(all_price), guidance_discount = values(guidance_discount), discount = values(discount), remark = values(remark),tax_rate=values(tax_rate) + + delete from project_product_info_bak where order_code=#{orderCode} and version_code=#{versionCode}; + insert into project_product_info_bak (order_code,version_code, product_bom_code, model, product_code, product_desc, quantity, + catalogue_price, catalogue_all_price, price, all_price, guidance_discount, discount, remark,tax_rate) + select t1.order_code,t1.version_code,t2.product_bom_code,t2.model,t2.product_code,t2.product_desc,t2.quantity, + t2.catalogue_price,t2.catalogue_all_price,t2.price,t2.all_price,t2.guidance_discount,t2.discount,t2.remark,t2.tax_rate + from project_order_info t1 left join project_product_info t2 on t1.project_id=t2.project_id + where t1.order_code=#{orderCode} and t1.version_code=#{versionCode} + + + delete from project_product_info where project_id= #{projectId} ; + insert into project_product_info (project_id, product_bom_code, model, product_code, product_desc, quantity, + catalogue_price, catalogue_all_price, price, all_price, guidance_discount, discount, remark,tax_rate) + select #{projectId},t1.product_bom_code,t1.model,t1.product_code,t1.product_desc,t1.quantity, + t1.catalogue_price,t1.catalogue_all_price,t1.price,t1.all_price,t1.guidance_discount,t1.discount,t1.remark,t1.tax_rate + from project_product_info_bak t1 where t1.order_code=#{orderCode} and t1.version_code=#{versionCode} + + update project_product_info