【备品备件】入库流程--采购入库--0180363009

本地测试环境:admin admin123
在这里插入图片描述
备品备件的入库流程有五种流程,每种流程对应的查询条件都不一样。
在这里插入图片描述

类型对应页面查询条件字段
采购入库ProcurementWarehousing.vue内向交货单reNumberSap
跨公司调拨入库CrossCompanyWarehousing.vue交货单号reNumberSap
赠品入库GiftsWarehousing.vue采购订单reNumberSap
商贸入库CommercialWarehousing.vue采购订单reNumberSap
退库入库ReturnWarehousing.vue物料凭证reNumberSap

入库流程:

当输入交货单查询的时候,货物送到了,但是没有入备品备件库没有入备品备件库

交货单号里能看到单子里包含的货物明细。

查看明细按钮会根据 SRM送货单号 + 物料编码 去查询这批货物是哪个部门预留的,然后进行分配。
(物料一般都不知道,所以就是根据 SRM送货单号去查询明细。)

分配完,点击暂存,二次确认无误,点击提交,这批货物就会进入库存。

接下来,根据交易凭证(如果是采购入库单,那就是reNumberSap,其实就是入库中输入的查询条件,5个流程,查询条件不同,都是一一对应的。)可以在入库记录里看到(此步骤可以省略。)

进入库存后,可以在库存管理看到,这批货物生成的批次码,把这个批次码打印出来,贴在对应的货物上,然后去仓库的货架边,扫面对应的货架码,再扫描批次码,就可以上架了。
在这里插入图片描述

采购入库

以内向交货单号:0180363009 为例。

入库流程的表单数据是由两个info拼接而成。
在这里插入图片描述
查询数据的方法如下:
在这里插入图片描述
可以看到,采购入库流程先查询InInfo,然后根据其中的asnNumber去查询hdInfo。

hdInfo:
在这里插入图片描述
InInfo:
在这里插入图片描述

数据加载的时候,先查询lnInfo

再根据 hdInfo 里的SRM送货单号-ASN_NUMBER,去查询hdInfo

stockinInfo.lnInfo:(一条或多条数据)

-- 查询stockinInfo.lnInfo
SELECT	ASN_NUMBER,	ASN_LINE_NUM,RE_NUMBER_SAP,REQUIRE_ITEM_CODE,
		REQUIRE_ITEM_NAME,SHIP_QUANTITY,UOM_DESC,LINE_RECEIVE_STATUS,
		PO_NUM,LINE_NUM,REQ_COMMENTS,COST_CENTER_TEXT_DESCRIPTION,
		NEED_BY_DATE,INV_WAREHOUSE,LINE_DESC,COMMENTS  
	FROM
		spare_asnln  where RE_NUMBER_SAP = '0180353672';

stockinInfo.hdInfo:(仅有一条数据)

-- 查询stockinInfo.hdInfo
select asn_number, vendor_name, ship_date_fmt, company_name, 
	ship_to_organization_name, asn_type_name, expected_date_fmt, 
	actual_receiver_name, comments, create_by, create_time, update_by, 
	update_time, remark, display_vendor_code, display_code from spare_asnhd 
where asn_number = 'ASN210328000084';

点击查看明细的方法(根据**送货单号 asn_number**查询):

SELECT   asn_number,
         ASN_LINE_NUM,
         require_item_code,
         require_item_name,
            uom_desc,
            re_number_sap,
            a.rsnum,
            a.rspos,
            PUR_REQ_NUM,
            PUR_REQ_LINE_NUM,
            ZJHD,
            need_by_date,
            UNIT_DESC,
            MENGE,
            sum(b.amount) qamount
        FROM
            spare_asnln_resb a
                left join spare_batch_detail_history b on b.rsnum=a.rsnum and b.rspos=a.rspos and b.detail_change_direction='I' 
                where asn_number = 'ASN210119000177' 
	    group by
	        asn_number,
	        ASN_LINE_NUM,
	        require_item_code,
	        require_item_name,
	        uom_desc,
	        re_number_sap,
	        a.rsnum,
	        a.rspos,
	        PUR_REQ_NUM,
	        PUR_REQ_LINE_NUM,
	        ZJHD,
	        need_by_date,
	        UNIT_DESC,
	        MENGE							

数据暂存后,点击 提交 按钮的方法,额,没招到

但是我知道点击提交后,可以在批次管理中出现记录,那我就去找批次管理页面加载的方法,然后反向Alt+F7,查找方法的引用。

找到了!

我真是个天才啊!

前台在:warehousing.js 后台处理类:SpareWarehousingController。

批次号生成逻辑

批次号是货物入库之后,系统根据规则自动生成的。

批次号会被打印出来,然后贴到货物上,进行一对一绑定。

而货物,最终放到货架上,用PDA设备扫描货架二维码,再扫描批次号二维码,进行绑定,就完成了上架。

此时批次号就从批次库中删除,进入库存记录表。

以采购入库为例:
在这里插入图片描述
批次码生成逻辑:
在这里插入图片描述
getByWDM有三个参数,第一个是redis,第二个是仓库码,第三个是物料编码。

目前系统中有2个仓库码:
在这里插入图片描述

物料编码是SAP或者SRM系统自带的,如下:
在这里插入图片描述
假定 warehourseCode = D101,requireItemCode = 60037679,则生成批次码如下:

// warehourseCode = 
 public static String getByWDM (RedisCache redisCache,String warehourseCode,String matnr){
        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyMMdd");
		//今天是2022年4月25日,则formatter.format(date) = 220425
		// wd(仓库+日期)=D101220425
        String wd =   warehourseCode + formatter.format(date);
        // wdm(仓库+日期+物料) =D10122042560037679,如果仓库,日期,物料相同,则批次号相同
        String wdm = warehourseCode+formatter.format(date)+matnr;

        String batch = redisCache.getCacheObject(wdm);
        if (batch==null){
            //从内存中获取存的当天的序号
            String batchcodeCache =  redisCache.getCacheObject(wd);
            if (batchcodeCache==null){
                batchcodeCache="0001";
            }else {
                batchcodeCache = String.format("%04d", (Integer.valueOf(batchcodeCache) + 1));
            }
            //假定该仓库第一次入库,则batch = D1012204250001
            batch = wd+batchcodeCache;
            // key = D101220425,value = 0001
            redisCache.setCacheObject(wd,batchcodeCache);
            // key = D10122042560037679,value = D1012204250001
            redisCache.setCacheObject(wdm,batch);

        }
        return batch;
    }

这里说一下String.format(“%04d”, Object args)方法,这个方法是数字前面补0(加密常用)

比如:String.format (“%04d”, 99) ,则输出 0099
在这里插入图片描述

详细的方法介绍----->String.format()的用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值