1.json示例:

{
    "mom_order": {
        "ctradenum": "CD7DAD1D-AEF4-4E2F-B110-B30A0CEDFFA3",
        "caccid": "999",
        "imoid": "",
        "cmocode": "",
        "cverifier": "demo",
        "cmaker": "demo",
        "mom_orderdetail": [
            {
                "imodid": "",
                "cinvcode": "2.3291-M1010-0101",
                "iquantity": "100",
                "dstartdate": "2021-07-07",
                "dduedate": "2021-07-15",
                "imotypeid": "1000000001",
                "whcode": "01",
                "mdeptcode": "0201",
                "cmemo": "2021-07-15",
            }
        ]
    }
}

2.构造对应实体

实体内容大致如下

 

 接口实现3种方式

U8自带的api(调用麻烦还容易出问题但是可以确保数据一致性),

U8bo(生产模块使用的是BO,调用麻烦传递复杂生成效果可以),

直接插库(风险大回报高)

本案例使用直接插库示例如下:

生产订单涉及4个表

mom_order

mom_orderdetail

mom_morder(注意这张表)

mom_moallocate

接下来就是填字游戏 填好字段插入就行

示例

INSERT INTO dbo.mom_order
( MoId ,MoCode ,CreateDate ,CreateUser ,ModifyDate ,ModifyUser ,UpdCount ,
Define1 ,Define2 ,Define3 ,Define4 ,Define5 ,Define6 ,Define7 ,Define8
,Define9 ,Define10 ,Define11 ,Define12 ,Define13 ,Define14 ,Define15 ,Define16 ,
VTid ,CreateTime ,ModifyTime ,iPrintCount ,RelsVTid ,cSysBarCode ) VALUES
 ( @MoId ,@MoCode ,convert(nvarchar(12),GETDATE(),23)  ,@CreateUser ,NULL
,NULL ,0 ,
@Define1 ,@Define2 ,@Define3 ,@Define4 ,@Define5 ,@Define6 ,@Define7
,@Define8 ,@Define9 ,@Define10 ,@Define11 ,@Define12 ,@Define13 ,@Define14
,@Define15 ,@Define16 ,
30413 ,GETDATE() ,NULL ,0 ,30422 ,@cSysBarCode )

INSERT INTO dbo.mom_orderdetail
( MoDId ,MoId ,SortSeq ,MoClass ,MoTypeId ,Qty ,MrpQty ,AuxUnitCode ,AuxQty
,ChangeRate ,MoLotCode ,WhCode ,MDeptCode ,SoType ,SoDId ,SoCode ,SoSeq
,DeclaredQty ,QualifiedInQty ,Status ,OrgStatus ,BomId ,RoutingId ,CustBomId
,DemandId ,PlanCode ,PartId ,
InvCode ,Free1 ,Free2 ,Free3 ,Free4 ,Free5 ,Free6 ,Free7 ,Free8 ,Free9
,Free10 ,SfcFlag ,CrpFlag ,QcFlag ,RelsDate ,RelsUser ,CloseDate ,OrgClsDate ,
Define22 ,Define23 ,Define24 ,Define25 ,Define26 ,Define27 ,Define28
,Define29 ,Define30 ,Define31 ,Define32 ,Define33 ,Define34 ,Define35 ,Define36
,Define37 ,
LeadTime ,OpScheduleType ,OrdFlag ,WIPType ,SupplyWhCode ,ReasonCode
,IsWFControlled ,iVerifyState ,iReturnCount ,
Remark ,SourceMoCode ,SourceMoSeq ,SourceMoId ,SourceMoDId ,SourceQCCode
,SourceQCId ,SourceQCDId ,CostItemCode ,CostItemName ,
RelsTime ,CloseUser ,CloseTime ,OrgClsTime ,AuditStatus ,PAllocateId
,DemandCode ,
CollectiveFlag ,OrderType ,OrderDId ,OrderCode ,OrderSeq ,ManualCode
,ReformFlag ,SourceQCVouchType ,OrgQty ,FmFlag ,MinSN ,MaxSN ,
SourceSvcCode ,SourceSvcId ,SourceSvcDId ,BomType ,RoutingType ,BusFlowId
,RunCardFlag ,RequisitionFlag ,AlloVTid ,RelsAlloVTid ,iPrintCount
,cbSysBarCode ,cCurrentAuditor
)VALUES
( @MoDId ,@MoId ,@SortSeq ,@MoClass ,@MoTypeId ,@Qty ,@MrpQty ,@AuxUnitCode
,@AuxQty ,@ChangeRate ,@MoLotCode ,@WhCode ,@MDeptCode ,@SoType ,NULL ,NULL
,NULL ,0 ,0 ,2 ,2 ,@BomId ,@RoutingId ,0 ,0 ,NULL ,@PartId ,
@InvCode ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,0 ,0 ,0
,0 ,NULL ,NULL ,NULL ,
@Define22 ,@Define23 ,@Define24 ,@Define25 ,@Define26 ,@Define27 ,@Define28
,@Define29 ,@Define30 ,@Define31 ,@Define32 ,@Define33 ,@Define34 ,@Define35
,@Define36 ,@Define37 ,
0 ,3 ,0 ,5 ,NULL ,NULL ,0 ,0 ,0 ,
@Remark ,NULL ,NULL ,0 ,0 ,NULL ,0 ,0 ,NULL ,NULL ,
NULL ,NULL ,NULL ,NULL ,1 ,0 ,NULL ,0 ,0 ,0 ,NULL ,NULL ,NULL ,0 ,0 ,0 ,0
,NULL ,NULL ,
NULL ,NULL ,NULL ,1 ,0 ,NULL ,0 ,0 ,30417 ,0 ,0 ,@cbSysBarCode ,NULL ) 

INSERT INTO dbo.mom_morder
( MoDId, StartDate, DueDate, MoId )VALUES  (@MoDId, @StartDate, @DueDate,
@MoId)

子件会麻烦一点 参考文章获取bom的方法在插入子件

INSERT INTO dbo.mom_moallocate
( AllocateId ,MoDId ,SortSeq ,OpSeq ,ComponentId ,FVFlag ,BaseQtyN ,BaseQtyD
,ParentScrap ,CompScrap ,Qty ,IssQty ,DeclaredQty ,StartDemDate ,EndDemDate
,WhCode ,LotNo ,WIPType ,ByproductFlag ,QcFlag ,Offset ,
InvCode ,Free1 ,Free2 ,Free3 ,Free4 ,Free5 ,Free6 ,Free7 ,Free8 ,Free9
,Free10 ,
OpComponentId ,Define22 ,Define23 ,Define24 ,Define25 ,Define26 ,Define27
,Define28 ,Define29 ,Define30 ,Define31 ,Define32 ,Define33 ,Define34 ,Define35
,Define36 ,Define37 ,
AuxUnitCode ,ChangeRate ,AuxBaseQtyN ,AuxQty ,ReplenishQty ,Remark ,TransQty
,ProductType ,SoType ,SoDId ,SoCode ,SoSeq ,DemandCode ,QmFlag ,OrgQty
,OrgAuxQty ,CostItemCode ,CostItemName ,
RequisitionFlag ,RequisitionQty ,RequisitionIssQty ,CostWIPRel
,MoallocateSubId ,cSubSysBarCode ,PickingQty ,PickingAuxQty ,UpperMoQty
,InvAlloeFlag )

SELECT ROW_NUMBER() over(order by b.OpComponentId )+{1} AS AllocateId,{2} AS
MoDId, (ROW_NUMBER() over(order by b.OpComponentId) )*10 AS SortSeq,b.OpSeq,
d.PartId AS ComponentId,1 AS FVFlag,b.BaseQtyN ,b.BaseQtyD
 ,c.ParentScrap,b.CompScrap,
{3}* (1 + b.CompScrap / 100) * b.BaseQtyN / b.BaseQtyD AS qty, 0 AS IssQty ,0
AS DeclaredQty ,GETDATE() AS StartDemDate ,GETDATE() AS EndDemDate
,opt.Whcode,NULL AS LotNo,opt.WIPType,b.ByproductFlag,0 AS QcFlag,opt.Offset,
f.cinvcode  AS InvCode,b.Free1 ,b.Free2 ,b.Free3 ,b.Free4 ,b.Free5 ,b.Free6
,b.Free7 ,b.Free8 ,b.Free9 ,b.Free10 ,
b.OpComponentId,b.Define22 ,b.Define23 ,b.Define24 ,b.Define25 ,b.Define26
,b.Define27 ,b.Define28 ,b.Define29 ,b.Define30 ,b.Define31 ,b.Define32
,b.Define33 ,b.Define34 ,b.Define35 ,b.Define36 ,b.Define37 ,
c1.cComunitCode AS AuxUnitCode,c1.iChangRate AS ChangeRate,b.BaseQtyN
/IIF(c1.iChangRate=0,NULL,c1.iChangRate) AS AuxBaseQtyN,
 {3} * (1 + b.CompScrap/ 100) * b.BaseQtyN / b.BaseQtyD / c1.iChangRate AS
AuxQty,
 0 AS ReplenishQty,NULL AS Remark,0 AS TransQty,b.ProductType,0 AS SoType,0
AS SoDId,NULL AS SoCode ,NULL AS SoSeq ,NULL AS DemandCode ,0 AS QmFlag ,0 AS
OrgQty ,0 AS OrgAuxQty ,NULL AS CostItemCode ,NULL AS CostItemName ,
 CASE WHEN isub.iDrawType=1 THEN 1 ELSE 0 END AS RequisitionFlag,0 AS
RequisitionQty ,0 ASRequisitionIssQty ,0 AS CostWIPRel ,NULL AS MoallocateSubId
,
 '||MO21|{4}|1|'+ cast((ROW_NUMBER() over(order by b.OpComponentId) )*10 AS
nvarchar(5))  AS cSubSysBarCode ,0 AS PickingQty ,0 AS PickingAuxQty ,
 {3} AS UpperMoQty ,0 AS InvAlloeFlag 
FROM bom_bom a                                        
LEFT JOIN bom_opcomponent b ON b.BomId = a.BomId 
LEFT JOIN bom_parent c ON a.bomid=c.bomid       
LEFT JOIN bas_part d ON b.componentid=d.partid  
LEFT JOIN bas_part  e ON c.parentid=e.partid    
LEFT JOIN inventory f ON d.invcode=f.cinvcode   
LEFT JOIN inventory g ON e.invcode=g.cinvcode   
LEFT JOIN Department dep ON dep.cDepCode=g.cInvDepCode 
LEFT JOIN bom_opcomponentopt opt ON  opt.OptionsId=b.OptionsId 
LEFT JOIN Warehouse w on w.cWhCode=opt.Whcode
LEFT JOIN ComputationUnit c1 ON c1.cComunitCode = f.cProductUnit
LEFT JOIN Inventory_Sub isub ON isub.cInvSubCode=f.cInvCode
WHERE  1=1 AND a.BomType=1 AND  a.BomId={0} 

最后在更新状态

 UPDATE mom_orderdetail SET OrgStatus = Status,Status = 3
,RelsDate=convert(nvarchar(12),GETDATE(),101),RelsTime =
getdate(),RelsUser='{1}',iverifystate=0 WHERE MoDId='{0}'

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信