feat(inventory): 实现执行单撤单功能

- 修改前端请求参数传递方式,从data改为params
- 后端增加数据备份与恢复逻辑
- 新增项目产品信息的备份和恢复接口
- 完善撤单时订单状态及金额的更新处理
- 调整控制器参数接收方式以适配新的调用逻辑
dev_1.0.0
chenhao 2025-11-24 15:05:54 +08:00
parent 1ac5053c4f
commit e4fd3bca10
6 changed files with 42 additions and 3 deletions

View File

@ -67,7 +67,7 @@ export function recallExecution(id) {
return request({
url: `/inventory/execution/vue/recall`,
method: 'post',
data: { id }
params: { id }
})
}

View File

@ -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();

View File

@ -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<ProjectProductInfo> addList);
void updateBatch(List<ProjectProductInfo> 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);
}

View File

@ -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);
//剔除流程

View File

@ -117,6 +117,8 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
@Autowired
private TaskService taskService;
@Autowired
private IProjectProductInfoBakService projectProductInfoBakService;
private static final List<String> CSS_EMAIL_LIST = Arrays.asList("wangxiaojun@pcitech.com", "huiwang@pcitech.com", "zhaoqian1@pcitech.com", "pci-ict@pcitech.com");
private static final List<String> 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"));

View File

@ -74,6 +74,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>)
</select>
<select id="countBakData" resultType="java.lang.Integer">
select count(1)
from project_product_info_bak
where order_code = #{orderCode}
and version_code = #{versionCode}
</select>
<insert id="insertProjectProductInfo" parameterType="ProjectProductInfo" useGeneratedKeys="true" keyProperty="id">
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)
</insert>
<insert id="saveBakData">
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}
</insert>
<insert id="restoreData">
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}
</insert>
<update id="updateProjectProductInfo" parameterType="ProjectProductInfo">
update project_product_info