feat(purchaseorder): 添加申请采购功能并优化订单版本控制
- 在前端页面增加"申请采购"按钮及权限控制 - 实现采购单状态更新接口与业务逻辑 - 添加采购单版本号字段以支持历史记录追踪 - 完善采购单修改时的历史数据保存机制 - 增加申请采购确认弹窗提示用户体验 - 控制仅在待提交或驳回状态下可进行申请操作dev_1.0.0
parent
4576eaf1df
commit
576475f46e
|
|
@ -35,6 +35,15 @@ export function updatePurchaseorder(data) {
|
|||
})
|
||||
}
|
||||
|
||||
// 申请采购单主表
|
||||
export function applyPurchaseorder(data) {
|
||||
return request({
|
||||
url: '/sip/purchaseorder/apply',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除采购单主表
|
||||
export function delPurchaseorder(id) {
|
||||
return request({
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@
|
|||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.approveStatus === 0 || scope.row.approveStatus === 3"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
|
|
@ -129,6 +130,16 @@
|
|||
>修改
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.approveStatus === 0 || scope.row.approveStatus === 3"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-s-promotion"
|
||||
@click="handleApply(scope.row)"
|
||||
v-hasPermi="['sip:purchaseorder:edit']"
|
||||
>申请采购
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.approveStatus === 0 || scope.row.approveStatus === 3"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
|
|
@ -168,7 +179,8 @@ import {
|
|||
getPurchaseorder,
|
||||
delPurchaseorder,
|
||||
addPurchaseorder,
|
||||
updatePurchaseorder
|
||||
updatePurchaseorder,
|
||||
applyPurchaseorder
|
||||
} from "@/api/sip/purchaseorder";
|
||||
import PurchaseOrderDetail from './components/PurchaseOrderDetail';
|
||||
|
||||
|
|
@ -293,6 +305,18 @@ export default {
|
|||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {
|
||||
});
|
||||
},
|
||||
/** 申请采购按钮操作 */
|
||||
handleApply(row) {
|
||||
this.$modal.confirm('是否确认申请采购编号为"' + row.purchaseNo + '"的数据项?').then(() => {
|
||||
let form = {...row};
|
||||
form.approveStatus = 1; // 设置审批状态为 1 (审批中)
|
||||
return applyPurchaseorder(form);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("申请采购成功");
|
||||
}).catch(() => {
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -85,6 +85,17 @@ public class OmsPurchaseOrderController extends BaseController
|
|||
return toAjax(omsPurchaseOrderService.updateOmsPurchaseOrder(omsPurchaseOrder));
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请采购单主表
|
||||
*/
|
||||
@RequiresPermissions("sip:purchaseorder:edit")
|
||||
@Log(title = "采购单主表", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/apply")
|
||||
public AjaxResult apply(@RequestBody OmsPurchaseOrder omsPurchaseOrder)
|
||||
{
|
||||
return toAjax(omsPurchaseOrderService.applyForPurchaseOrder(omsPurchaseOrder));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除采购单主表
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -84,6 +84,9 @@ public class OmsPurchaseOrder extends BaseEntity
|
|||
/** 删除标志(0正常 1删除) */
|
||||
private Integer delFlag;
|
||||
|
||||
/** 版本号 */
|
||||
private Integer version;
|
||||
|
||||
/** 采购单明细表信息 */
|
||||
private List<OmsPurchaseOrderItem> omsPurchaseOrderItemList;
|
||||
|
||||
|
|
|
|||
|
|
@ -88,4 +88,6 @@ public interface OmsPurchaseOrderMapper
|
|||
int selectMaxOrderCode(String string);
|
||||
|
||||
List<OmsPurchaseOrderItem> listItemByPurchaseId(Long id);
|
||||
|
||||
int updateOmsPurchaseOrderStatus(OmsPurchaseOrder omsPurchaseOrder);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,14 @@ public interface IOmsPurchaseOrderService
|
|||
*/
|
||||
public int updateOmsPurchaseOrder(OmsPurchaseOrder omsPurchaseOrder);
|
||||
|
||||
/**
|
||||
* 申请采购单
|
||||
*
|
||||
* @param omsPurchaseOrder 采购单主表
|
||||
* @return 结果
|
||||
*/
|
||||
public int applyForPurchaseOrder(OmsPurchaseOrder omsPurchaseOrder);
|
||||
|
||||
/**
|
||||
* 批量删除采购单主表
|
||||
*
|
||||
|
|
|
|||
|
|
@ -5,40 +5,47 @@ import java.util.List;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.sip.domain.Cnarea;
|
||||
import com.ruoyi.sip.domain.VendorInfo;
|
||||
import com.ruoyi.sip.domain.*;
|
||||
import com.ruoyi.sip.mapper.OmsPurchaseOrderItemHistoryMapper;
|
||||
import com.ruoyi.sip.mapper.OmsPurchaseOrderHistoryMapper;
|
||||
import com.ruoyi.sip.service.ICnareaService;
|
||||
import com.ruoyi.sip.service.IVendorInfoService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.ArrayList;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.ruoyi.sip.domain.OmsPurchaseOrderItem;
|
||||
import com.ruoyi.sip.mapper.OmsPurchaseOrderMapper;
|
||||
import com.ruoyi.sip.domain.OmsPurchaseOrder;
|
||||
import com.ruoyi.sip.service.IOmsPurchaseOrderService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 采购单主表Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-11-24
|
||||
*/
|
||||
@Service
|
||||
public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
||||
public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
||||
{
|
||||
@Resource
|
||||
private OmsPurchaseOrderMapper omsPurchaseOrderMapper;
|
||||
|
||||
@Resource
|
||||
private OmsPurchaseOrderHistoryMapper omsPurchaseOrderHistoryMapper;
|
||||
|
||||
@Resource
|
||||
private OmsPurchaseOrderItemHistoryMapper omsPurchaseOrderItemHistoryMapper;
|
||||
|
||||
@Autowired
|
||||
private ICnareaService cnareaService;
|
||||
@Autowired
|
||||
private IVendorInfoService vendorInfoService;
|
||||
/**
|
||||
* 查询采购单主表
|
||||
*
|
||||
*
|
||||
* @param id 采购单主表主键
|
||||
* @return 采购单主表
|
||||
*/
|
||||
|
|
@ -54,7 +61,7 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
|
||||
/**
|
||||
* 查询采购单主表列表
|
||||
*
|
||||
*
|
||||
* @param omsPurchaseOrder 采购单主表
|
||||
* @return 采购单主表
|
||||
*/
|
||||
|
|
@ -66,7 +73,7 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
|
||||
/**
|
||||
* 新增采购单主表
|
||||
*
|
||||
*
|
||||
* @param omsPurchaseOrder 采购单主表
|
||||
* @return 结果
|
||||
*/
|
||||
|
|
@ -76,6 +83,8 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
{
|
||||
omsPurchaseOrder.setCreateTime(DateUtils.getNowDate());
|
||||
omsPurchaseOrder.setPurchaseNo(generatePurchaseNo(omsPurchaseOrder.getVendorId()));
|
||||
// 设置初始版本号为 1
|
||||
omsPurchaseOrder.setVersion(1);
|
||||
int rows = omsPurchaseOrderMapper.insertOmsPurchaseOrder(omsPurchaseOrder);
|
||||
insertOmsPurchaseOrderItem(omsPurchaseOrder);
|
||||
return rows;
|
||||
|
|
@ -84,7 +93,7 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
/**
|
||||
* 生成订单编号
|
||||
*
|
||||
* @param province 省份代码
|
||||
* @param vendorId 制造商ID
|
||||
* @return 订单编号
|
||||
*/
|
||||
|
||||
|
|
@ -115,7 +124,7 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
}
|
||||
/**
|
||||
* 修改采购单主表
|
||||
*
|
||||
*
|
||||
* @param omsPurchaseOrder 采购单主表
|
||||
* @return 结果
|
||||
*/
|
||||
|
|
@ -123,15 +132,55 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
@Override
|
||||
public int updateOmsPurchaseOrder(OmsPurchaseOrder omsPurchaseOrder)
|
||||
{
|
||||
// 1. 查询旧的订单信息
|
||||
OmsPurchaseOrder oldOrder = omsPurchaseOrderMapper.selectOmsPurchaseOrderById(omsPurchaseOrder.getId());
|
||||
if (oldOrder == null) {
|
||||
throw new ServiceException("订单不存在");
|
||||
}
|
||||
// 2. 保存历史记录
|
||||
saveOrderHistory(oldOrder);
|
||||
|
||||
// 3. 更新订单信息
|
||||
omsPurchaseOrder.setUpdateTime(DateUtils.getNowDate());
|
||||
// 版本号 +1
|
||||
omsPurchaseOrder.setVersion(oldOrder.getVersion() + 1);
|
||||
omsPurchaseOrderMapper.deleteOmsPurchaseOrderItemByPurchaseId(omsPurchaseOrder.getId());
|
||||
insertOmsPurchaseOrderItem(omsPurchaseOrder);
|
||||
return omsPurchaseOrderMapper.updateOmsPurchaseOrder(omsPurchaseOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int applyForPurchaseOrder(OmsPurchaseOrder omsPurchaseOrder) {
|
||||
omsPurchaseOrder.setUpdateTime(DateUtils.getNowDate());
|
||||
return omsPurchaseOrderMapper.updateOmsPurchaseOrderStatus(omsPurchaseOrder);
|
||||
}
|
||||
|
||||
|
||||
private void saveOrderHistory(OmsPurchaseOrder oldOrder) {
|
||||
// 复制主表信息到历史表
|
||||
OmsPurchaseOrderHistory historyOrder = new OmsPurchaseOrderHistory();
|
||||
BeanUtils.copyProperties(oldOrder, historyOrder);
|
||||
historyOrder.setPurchaseId(oldOrder.getId()); // 设置原始订单ID
|
||||
omsPurchaseOrderHistoryMapper.insertOmsPurchaseOrderHistory(historyOrder);
|
||||
|
||||
// 复制子表信息到历史表
|
||||
List<OmsPurchaseOrderItem> oldItems = omsPurchaseOrderMapper.listItemByPurchaseId(oldOrder.getId());
|
||||
if (CollUtil.isNotEmpty(oldItems)) {
|
||||
List<OmsPurchaseOrderItemHistory> historyItems = new ArrayList<>();
|
||||
for (OmsPurchaseOrderItem oldItem : oldItems) {
|
||||
OmsPurchaseOrderItemHistory historyItem = new OmsPurchaseOrderItemHistory();
|
||||
BeanUtils.copyProperties(oldItem, historyItem);
|
||||
historyItem.setPurchaseHistoryId(historyOrder.getId()); // 设置历史主表ID
|
||||
historyItem.setOriginalPurchaseId(oldOrder.getId()); // 设置原始订单ID
|
||||
historyItems.add(historyItem);
|
||||
}
|
||||
omsPurchaseOrderItemHistoryMapper.batchOmsPurchaseOrderItemHistory(historyItems);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除采购单主表
|
||||
*
|
||||
*
|
||||
* @param ids 需要删除的采购单主表主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
|
@ -145,7 +194,7 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
|
||||
/**
|
||||
* 删除采购单主表信息
|
||||
*
|
||||
*
|
||||
* @param id 采购单主表主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
|
@ -159,7 +208,7 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
|
||||
/**
|
||||
* 新增采购单明细表信息
|
||||
*
|
||||
*
|
||||
* @param omsPurchaseOrder 采购单主表对象
|
||||
*/
|
||||
public void insertOmsPurchaseOrderItem(OmsPurchaseOrder omsPurchaseOrder)
|
||||
|
|
@ -181,3 +230,4 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue