20260409修改内容
This commit is contained in:
+60
-3
@@ -83,15 +83,72 @@ public class ReviewOrderApplicationService {
|
|||||||
private OutMaterialDetailMapper outMaterialDetailMapper;
|
private OutMaterialDetailMapper outMaterialDetailMapper;
|
||||||
|
|
||||||
public List<ReviewOrderPO> queryList(ReviewOrderDO query) {
|
public List<ReviewOrderPO> queryList(ReviewOrderDO query) {
|
||||||
|
if (query == null) {
|
||||||
|
query = new ReviewOrderDO();
|
||||||
|
}
|
||||||
|
applyReviewOrderDataPermission(query);
|
||||||
|
return reviewOrderMapper.queryList(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PDA 复核任务列表:数据来自 REVIEW_ORDER,仅展示已下发任务;与出库单 PDA 列表的 tab 语义对齐。
|
||||||
|
*/
|
||||||
|
public List<ReviewOrderPO> queryListForPda(ReviewOrderDO query) {
|
||||||
|
if (query == null) {
|
||||||
|
query = new ReviewOrderDO();
|
||||||
|
}
|
||||||
|
applyReviewOrderDataPermission(query);
|
||||||
|
query.setLtReviewStatus(null);
|
||||||
|
query.setReviewStatus(null);
|
||||||
|
if (Integer.valueOf(2).equals(query.getTabType())) {
|
||||||
|
query.setReviewStatus(3);
|
||||||
|
} else {
|
||||||
|
query.setLtReviewStatus(3);
|
||||||
|
}
|
||||||
|
query.setIssuedFlag("1");
|
||||||
|
if (query.getDelFlag() == null) {
|
||||||
|
query.setDelFlag(1);
|
||||||
|
}
|
||||||
|
return reviewOrderMapper.queryList(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 复核单数据权限(对齐出库单列表):
|
||||||
|
* 1) organizationId=2827 可跨组织查询(前端传 organizationId 则按其过滤,不传则全组织)
|
||||||
|
* 2) 其他组织仅可查询本组织数据,防止越权。
|
||||||
|
*/
|
||||||
|
private void applyReviewOrderDataPermission(ReviewOrderDO query) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
if (loginUser != null && loginUser.getUserPo() != null) {
|
if (loginUser == null || loginUser.getUserPo() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
|
||||||
|
Long frontendOrganizationId = query.getOrganizationId();
|
||||||
|
if (userOrganizationId != null && userOrganizationId == 2827L) {
|
||||||
|
if (frontendOrganizationId != null) {
|
||||||
|
query.setOrganizationId(frontendOrganizationId);
|
||||||
|
query.setTopOrganizationId(null);
|
||||||
|
} else {
|
||||||
|
query.setOrganizationId(null);
|
||||||
|
query.setTopOrganizationId(null);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (userOrganizationId != null) {
|
||||||
|
if (frontendOrganizationId == null || !userOrganizationId.equals(frontendOrganizationId)) {
|
||||||
|
query.setOrganizationId(userOrganizationId);
|
||||||
|
} else {
|
||||||
|
query.setOrganizationId(frontendOrganizationId);
|
||||||
|
}
|
||||||
|
// 非 2827 组织下,限定在同一顶级组织,避免跨集团越权
|
||||||
|
query.setTopOrganizationId(2827L);
|
||||||
|
return;
|
||||||
|
}
|
||||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||||
if (topOrganizationId != null && topOrganizationId != 1L) {
|
if (topOrganizationId != null && topOrganizationId != 1L) {
|
||||||
query.setTopOrganizationId(topOrganizationId);
|
query.setTopOrganizationId(topOrganizationId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return reviewOrderMapper.queryList(query);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ReviewOrderPO getDetailByReviewOrderId(Long reviewOrderId) {
|
public ReviewOrderPO getDetailByReviewOrderId(Long reviewOrderId) {
|
||||||
if (reviewOrderId == null) {
|
if (reviewOrderId == null) {
|
||||||
|
|||||||
+19
@@ -299,6 +299,7 @@ public class StockReceiptOrderApplicationService {
|
|||||||
// 计算待收货数量 = 计划数量 - 已收货数量
|
// 计算待收货数量 = 计划数量 - 已收货数量
|
||||||
fillPendingReceiptQuantityRecursively(receiptMaterialDetailPOList);
|
fillPendingReceiptQuantityRecursively(receiptMaterialDetailPOList);
|
||||||
fillPlanAndPendingMetricsRecursively(receiptMaterialDetailPOList);
|
fillPlanAndPendingMetricsRecursively(receiptMaterialDetailPOList);
|
||||||
|
fillBatchNumberFromSheetRefNoRecursively(receiptMaterialDetailPOList);
|
||||||
stockReceiptOrderPO.setMaterialDetailList(receiptMaterialDetailPOList);
|
stockReceiptOrderPO.setMaterialDetailList(receiptMaterialDetailPOList);
|
||||||
log.info("返回收货单信息,receiptOrderId={}, materialDetailList大小={}, totalNetWeight={}, totalGrossWeight={}, totalVolume={}, totalArea={}",
|
log.info("返回收货单信息,receiptOrderId={}, materialDetailList大小={}, totalNetWeight={}, totalGrossWeight={}, totalVolume={}, totalArea={}",
|
||||||
stockReceiptOrderPO.getReceiptOrderId(),
|
stockReceiptOrderPO.getReceiptOrderId(),
|
||||||
@@ -467,6 +468,24 @@ public class StockReceiptOrderApplicationService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 详情接口展示:批次号为空时默认用料单号(sheetRefNo)展示
|
||||||
|
*/
|
||||||
|
private void fillBatchNumberFromSheetRefNoRecursively(List<ReceiptMaterialDetailPO> receiptMaterialDetailPOList) {
|
||||||
|
if (CollectionUtils.isEmpty(receiptMaterialDetailPOList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (ReceiptMaterialDetailPO detail : receiptMaterialDetailPOList) {
|
||||||
|
if (StringUtils.isBlank(detail.getBatchNumber()) && StringUtils.isNotBlank(detail.getSheetRefNo())) {
|
||||||
|
detail.setBatchNumber(detail.getSheetRefNo());
|
||||||
|
}
|
||||||
|
List<ReceiptMaterialDetailPO> children = detail.getChildren();
|
||||||
|
if (!CollectionUtils.isEmpty(children)) {
|
||||||
|
fillBatchNumberFromSheetRefNoRecursively(children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 递归计算并填充待收货数量:待收货数量 = 计划数量 - 已收货数量
|
* 递归计算并填充待收货数量:待收货数量 = 计划数量 - 已收货数量
|
||||||
*/
|
*/
|
||||||
|
|||||||
+6
@@ -63,4 +63,10 @@ public class ReviewOrderDO extends BaseVOEntity {
|
|||||||
|
|
||||||
@ApiModelProperty("复核明细列表(用于批量复核/取消复核)")
|
@ApiModelProperty("复核明细列表(用于批量复核/取消复核)")
|
||||||
private List<ReviewMaterialDetailPO> details;
|
private List<ReviewMaterialDetailPO> details;
|
||||||
|
|
||||||
|
@ApiModelProperty("PDA 列表 Tab:2=历史(已复核),其它=待办(待复核/复核中)")
|
||||||
|
private Integer tabType;
|
||||||
|
|
||||||
|
@ApiModelProperty("复核状态小于该值(查询用,如待办 review_status < 3)")
|
||||||
|
private Integer ltReviewStatus;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -158,6 +158,10 @@ public class ShelfMaterialDetailDO extends BaseVOEntity {
|
|||||||
@Excel(name = "批次号")
|
@Excel(name = "批次号")
|
||||||
private String batchNumber;
|
private String batchNumber;
|
||||||
|
|
||||||
|
@ApiModelProperty("LOT编号")
|
||||||
|
@Excel(name = "LOT编号")
|
||||||
|
private String lotNumber;
|
||||||
|
|
||||||
@ApiModelProperty("物料状态编码")
|
@ApiModelProperty("物料状态编码")
|
||||||
@Excel(name = "物料状态编码")
|
@Excel(name = "物料状态编码")
|
||||||
private String materialStatusCode;
|
private String materialStatusCode;
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public class ReviewOrderDTO extends BaseVOEntity {
|
|||||||
private String receiveTimeEnd;
|
private String receiveTimeEnd;
|
||||||
|
|
||||||
@ApiModelProperty("复核单ID集合")
|
@ApiModelProperty("复核单ID集合")
|
||||||
|
@JsonAlias({"outOrderIds"})
|
||||||
private List<Long> reviewOrderIds;
|
private List<Long> reviewOrderIds;
|
||||||
|
|
||||||
@ApiModelProperty("复核作业人用户ID(复核下发可选,未传则默认当前登录人)")
|
@ApiModelProperty("复核作业人用户ID(复核下发可选,未传则默认当前登录人)")
|
||||||
@@ -65,4 +66,7 @@ public class ReviewOrderDTO extends BaseVOEntity {
|
|||||||
@ApiModelProperty("复核明细列表(用于批量复核/取消复核)")
|
@ApiModelProperty("复核明细列表(用于批量复核/取消复核)")
|
||||||
@JsonAlias({"materialDetailList"})
|
@JsonAlias({"materialDetailList"})
|
||||||
private List<ReviewMaterialDetailPO> details;
|
private List<ReviewMaterialDetailPO> details;
|
||||||
|
|
||||||
|
@ApiModelProperty("PDA 列表 Tab:2=历史(已复核),其它=待办(待复核/复核中)")
|
||||||
|
private Integer tabType;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -158,6 +158,10 @@ public class ShelfMaterialDetailDTO extends BaseVOEntity {
|
|||||||
@Excel(name = "批次号")
|
@Excel(name = "批次号")
|
||||||
private String batchNumber;
|
private String batchNumber;
|
||||||
|
|
||||||
|
@ApiModelProperty("LOT编号")
|
||||||
|
@Excel(name = "LOT编号")
|
||||||
|
private String lotNumber;
|
||||||
|
|
||||||
@ApiModelProperty("物料状态编码")
|
@ApiModelProperty("物料状态编码")
|
||||||
@Excel(name = "物料状态编码")
|
@Excel(name = "物料状态编码")
|
||||||
private String materialStatusCode;
|
private String materialStatusCode;
|
||||||
|
|||||||
+116
@@ -0,0 +1,116 @@
|
|||||||
|
package com.mhd.wms.interfaces.facadeApp.reviewOrder;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.mhd.common.core.domain.po.UserPo;
|
||||||
|
import com.mhd.common.core.web.controller.BaseController;
|
||||||
|
import com.mhd.common.core.web.domain.AjaxResult;
|
||||||
|
import com.mhd.common.core.web.page.TableDataInfoApi;
|
||||||
|
import com.mhd.common.security.utils.SecurityUtils;
|
||||||
|
import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
|
||||||
|
import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
|
||||||
|
import com.mhd.system.api.model.LoginUser;
|
||||||
|
import com.mhd.wms.application.service.reviewOrder.ReviewOrderApplicationService;
|
||||||
|
import com.mhd.wms.domain.reviewOrder.repository.po.ReviewOrderPO;
|
||||||
|
import com.mhd.wms.domain.reviewOrder.repository.todo.ReviewOrderDO;
|
||||||
|
import com.mhd.wms.interfaces.assember.reviewOrder.ReviewOrderAssembler;
|
||||||
|
import com.mhd.wms.interfaces.dto.reviewOrder.ReviewOrderDTO;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PDA 复核单接口:列表、详情、提交复核、取消复核、完成复核。
|
||||||
|
* 数据口径以 {@code REVIEW_ORDER}、{@code REVIEW_MATERIAL_DETAIL} 为准(与 PC {@code ReviewOrderApi} 同源服务)。
|
||||||
|
*
|
||||||
|
* @see com.mhd.wms.interfaces.facadeApi.reviewOrder.ReviewOrderApi
|
||||||
|
* @see com.mhd.wms.interfaces.facadeApp.stockOutOrder.StockOutOrderAppApi
|
||||||
|
*/
|
||||||
|
@Api(tags = "PDA复核单")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/reviewOrderAppApi")
|
||||||
|
public class ReviewOrderAppApi extends BaseController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReviewOrderApplicationService reviewOrderApplicationService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ReviewOrderAssembler reviewOrderAssembler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询复核单列表(仅已下发任务,按当前用户仓库过滤)
|
||||||
|
* <ul>
|
||||||
|
* <li>{@code tabType=2}:历史({@code review_status=3} 已复核)</li>
|
||||||
|
* <li>其它:待办({@code review_status < 3},待复核/复核中)</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
@ApiOperation("PDA 复核单列表(REVIEW_ORDER)")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfoApi list(ReviewOrderDTO reviewOrderDTO) {
|
||||||
|
ReviewOrderDO query = reviewOrderAssembler.toDO(reviewOrderDTO);
|
||||||
|
startPage();
|
||||||
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
|
UserPo userPo = loginUser.getUserPo();
|
||||||
|
query.setOrganizationId(userPo.getOrganizationId());
|
||||||
|
query.setTopOrganizationId(userPo.getTopOrganizationId());
|
||||||
|
AssociationWarehouseCacheDO wh = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
|
||||||
|
if (wh != null) {
|
||||||
|
query.setWarehouseId(wh.getWarehouseId());
|
||||||
|
}
|
||||||
|
List<ReviewOrderPO> list = reviewOrderApplicationService.queryListForPda(query);
|
||||||
|
return getDataTableApi(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 复核单详情(头 + REVIEW_MATERIAL_DETAIL 明细,含批次展示字段)
|
||||||
|
*/
|
||||||
|
@ApiOperation("PDA 复核单详情")
|
||||||
|
@GetMapping("/getInfo")
|
||||||
|
public AjaxResult getInfo(@RequestParam("reviewOrderId") Long reviewOrderId) {
|
||||||
|
return AjaxResult.success(reviewOrderApplicationService.getDetailByReviewOrderId(reviewOrderId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("PDA 按复核单号查详情")
|
||||||
|
@GetMapping("/getInfoByNumber")
|
||||||
|
public AjaxResult getInfoByNumber(@RequestParam("reviewOrderNumber") String reviewOrderNumber) {
|
||||||
|
return AjaxResult.success(reviewOrderApplicationService.getDetailByReviewOrderNumber(reviewOrderNumber));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提交复核(更新 REVIEW_MATERIAL_DETAIL 已复核/待复核数量等,与 PC batchCheck 一致)
|
||||||
|
*/
|
||||||
|
@ApiOperation("PDA 提交复核")
|
||||||
|
@PostMapping("/check")
|
||||||
|
public AjaxResult check(@RequestBody ReviewOrderDTO reviewOrderDTO) {
|
||||||
|
ReviewOrderDO cmd = JSONUtil.toBean(JSONUtil.toJsonStr(reviewOrderDTO), ReviewOrderDO.class);
|
||||||
|
return toAjax(reviewOrderApplicationService.batchCheck(cmd));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消复核(与 PC batchCancelCheck 一致)
|
||||||
|
*/
|
||||||
|
@ApiOperation("PDA 取消复核")
|
||||||
|
@PostMapping("/cancelCheck")
|
||||||
|
public AjaxResult cancelCheck(@RequestBody ReviewOrderDTO reviewOrderDTO) {
|
||||||
|
ReviewOrderDO cmd = reviewOrderAssembler.toDO(reviewOrderDTO);
|
||||||
|
return toAjax(reviewOrderApplicationService.batchCancelCheck(cmd));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 完成复核确认(无待复核数量时可确认,同步出库明细并生成交接等,与 PC checkConfirm 一致)
|
||||||
|
*/
|
||||||
|
@ApiOperation("PDA 完成复核")
|
||||||
|
@PostMapping("/completeCheck")
|
||||||
|
public AjaxResult completeCheck(@RequestBody ReviewOrderDTO reviewOrderDTO) {
|
||||||
|
ReviewOrderDO cmd = JSONUtil.toBean(JSONUtil.toJsonStr(reviewOrderDTO), ReviewOrderDO.class);
|
||||||
|
return toAjax(reviewOrderApplicationService.checkConfirm(cmd));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -116,6 +116,9 @@
|
|||||||
<if test="reviewStatus != null">
|
<if test="reviewStatus != null">
|
||||||
and a.review_status = #{reviewStatus}
|
and a.review_status = #{reviewStatus}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="ltReviewStatus != null">
|
||||||
|
and a.review_status < #{ltReviewStatus}
|
||||||
|
</if>
|
||||||
<if test="issuedFlag != null and issuedFlag != ''">
|
<if test="issuedFlag != null and issuedFlag != ''">
|
||||||
and a.issued_flag = #{issuedFlag}
|
and a.issued_flag = #{issuedFlag}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -178,6 +178,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="batchNumber != null and batchNumber != ''">
|
<if test="batchNumber != null and batchNumber != ''">
|
||||||
and batch_number = #{batchNumber}
|
and batch_number = #{batchNumber}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="lotNumber != null and lotNumber != ''">
|
||||||
|
and lot_number = #{lotNumber}
|
||||||
|
</if>
|
||||||
<if test="materialStatusCode != null and materialStatusCode != ''">
|
<if test="materialStatusCode != null and materialStatusCode != ''">
|
||||||
and material_status_code = #{materialStatusCode}
|
and material_status_code = #{materialStatusCode}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -82,19 +82,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="orderDate" column="ORDER_DATE" />
|
<result property="orderDate" column="ORDER_DATE" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 计划入库数量:入库明细主行 quantity 汇总(列表 quantity / plan_in_quantity 均以此为准展示) -->
|
||||||
|
<sql id="sumPlanInMaterialQuantity">
|
||||||
|
(select ifnull(sum(imd.quantity), 0)
|
||||||
|
from in_material_detail imd
|
||||||
|
where imd.in_order_number = a.in_order_number
|
||||||
|
and imd.del_flag = 1
|
||||||
|
and (imd.level is null or imd.level = 1))
|
||||||
|
</sql>
|
||||||
|
|
||||||
<sql id="selectStockInOrderPo">
|
<sql id="selectStockInOrderPo">
|
||||||
a.in_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.notice_number, a.in_order_number, a.status,
|
a.in_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.notice_number, a.in_order_number, a.status,
|
||||||
a.audit_status, a.audit_remark, a.audit_by, a.audit_by_name, a.audit_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_code,
|
a.audit_status, a.audit_remark, a.audit_by, a.audit_by_name, a.audit_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_code,
|
||||||
a.shipper_name, a.order_type_code, a.order_type_name, a.supplier_id, a.supplier_code, a.supplier_name, a.expect_time, a.supply_chain_number,
|
a.shipper_name, a.order_type_code, a.order_type_name, a.supplier_id, a.supplier_code, a.supplier_name, a.expect_time, a.supply_chain_number,
|
||||||
a.priority_level_code, a.priority_level_name, a.direct_warehouse, a.annex_url, a.material_quantity, a.quantity,
|
a.priority_level_code, a.priority_level_name, a.direct_warehouse, a.annex_url, a.material_quantity,
|
||||||
-- 计划入库数量:入库明细表 in_material_detail 的 quantity 汇总
|
<include refid="sumPlanInMaterialQuantity"/> as quantity,
|
||||||
(select ifnull(sum(imd.quantity), 0)
|
<include refid="sumPlanInMaterialQuantity"/> as plan_in_quantity,
|
||||||
from in_material_detail imd
|
|
||||||
where imd.in_order_number = a.in_order_number
|
|
||||||
and imd.del_flag = 1
|
|
||||||
and (imd.level is null or imd.level = 1)
|
|
||||||
) as plan_in_quantity,
|
|
||||||
-- 收货数量:收货单表 stock_receipt_order 的 receipt_quantity 汇总
|
-- 收货数量:收货单表 stock_receipt_order 的 receipt_quantity 汇总
|
||||||
(select ifnull(sum(sro.receipt_quantity), 0)
|
(select ifnull(sum(sro.receipt_quantity), 0)
|
||||||
from stock_receipt_order sro
|
from stock_receipt_order sro
|
||||||
|
|||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
-- 收货单明细新增 lot 编号(达梦)
|
||||||
|
DECLARE
|
||||||
|
v_count INT;
|
||||||
|
BEGIN
|
||||||
|
SELECT COUNT(1)
|
||||||
|
INTO v_count
|
||||||
|
FROM USER_TAB_COLUMNS
|
||||||
|
WHERE TABLE_NAME = 'RECEIPT_MATERIAL_DETAIL'
|
||||||
|
AND COLUMN_NAME = 'LOT_NO';
|
||||||
|
|
||||||
|
IF v_count = 0 THEN
|
||||||
|
EXECUTE IMMEDIATE 'ALTER TABLE RECEIPT_MATERIAL_DETAIL ADD (LOT_NO VARCHAR2(255))';
|
||||||
|
EXECUTE IMMEDIATE 'COMMENT ON COLUMN RECEIPT_MATERIAL_DETAIL.LOT_NO IS ''lot编号''';
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
/
|
||||||
Reference in New Issue
Block a user