南骏 池
2025-10-13 146545654c8128b52f1ba396cb84b82456115062
MES.Service/service/BasicData/ProductionOrderManager.cs
@@ -14,12 +14,14 @@
    private readonly ProductionOrderSubManager _productionOrderSubManager =
        new();
    private string ORDERNO = "";
    //ErpWYOrder
    public bool Save(ErpWYOrder wyOrder)
    {
        var erpProductionOrderDto = wyOrder.OrderDto;
        var mesRohIn = ConvertErpToProductionOrder(erpProductionOrderDto);
        var mesRohIn = ConvertErpToProductionOrder(erpProductionOrderDto, wyOrder.Items[0].FBILLNO);
        var mesRohInDatas =
            ConvertErpToProductionOrderSub(wyOrder.Items);
@@ -33,7 +35,11 @@
                //         ? 1
                //         : 0;
                case "3":
                    return UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;
                    //return UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;//改为不删除
                    return SaveOrUpdateData(db, mesRohIn, mesRohInDatas,
                        erpProductionOrderDto.Type)
                        ? 1
                        : 0;
                case "2":
                case "4":
                    return SaveOrUpdateData(db, mesRohIn, mesRohInDatas,
@@ -68,6 +74,12 @@
    private bool SaveOrUpdateData(SqlSugarScope db, ProductionOrder mesRohIn,
        List<ProductionOrderSub> mesRohInDatas, string type)
    {
        if(type == "3" || (mesRohIn.DocumentStatus != null && mesRohIn.DocumentStatus != "C"))
        {
            mesRohIn.Typea = "3";  // 新增字段赋值
            mesRohIn.OrderNo = mesRohIn.OrderNo + "F" + mesRohIn.ErpProductionEntryCode;
        }
        if (StringUtil.CheckGuid(mesRohIn.Guid))
            db.Deleteable<ProductionOrder>()
                .Where(s => s.Guid == mesRohIn.Guid)
@@ -75,10 +87,16 @@
        if (mesRohInDatas.Count > 0)
            db.Deleteable<ProductionOrderSub>()
                .Where(s => s.ErpHeaderId == mesRohIn.ErpId).ExecuteCommand();
                .Where(s => s.ErpProductionEntryCode == mesRohIn.ErpProductionEntryCode).ExecuteCommand();
        var orUpdate = base.Insert(mesRohIn);
        var baOrUpdate = _productionOrderSubManager.InsertRange(mesRohInDatas);
        var orUpdate = db.Insertable(mesRohIn)
            .IgnoreColumns(true).ExecuteCommand() > 0;
        var baOrUpdate = db.Insertable(mesRohInDatas).PageSize(1)
            .IgnoreColumnsNull()
            .ExecuteCommand() > 0;
        if (orUpdate && baOrUpdate) return true;
        throw new NotImplementedException("插入或更新失败");
@@ -92,7 +110,7 @@
    }
    private ProductionOrder ConvertErpToProductionOrder(
        ErpProductionOrderDto erpDto)
        ErpProductionOrderDto erpDto,string SUBBOM)
    {
        DateTime parsedDate;
@@ -110,7 +128,7 @@
        var productionOrder = new ProductionOrder
        {
            OrderNo = erpDto.FBillNo,
            OrderNo = SUBBOM,
            Warehouse = erpDto.FStockID,
            OrderDate = ParseDateTime(erpDto.FDate) ?? null,
            OrderType = erpDto.FBillType,
@@ -142,17 +160,32 @@
            ClosingPerson = erpDto.FFORCECLOSERID,
            ClosingType = erpDto.FCloseType,
            Remarks = erpDto.FDescription,
            ErpId = erpDto.FPPOMID,
            ErpId = erpDto.FID,
            ErpProductionEntryCode = erpDto.FSUBENTRYID,
            Purchaseorderno = erpDto.FPurOrderNo,
            Purchaseorderentryseq = Convert.ToInt32(erpDto.FPurOrderEntrySeq),
            Stockinqty = Convert.ToDecimal(erpDto.FBaseStockInQty),
            Nostockinqty = Convert.ToDecimal(erpDto.FBaseNoStockInQty),
            Stockowner = erpDto.FInStockOwnerId
            Stockowner = erpDto.FInStockOwnerId,
            PlanConfirmation = erpDto.PlanConfirmation != null
                ? DateTime.ParseExact(erpDto.PlanConfirmation,
                    "yyyy-MM-dd HH:mm:ss", null)
                : null,
            ReqSrc = erpDto.FReqSrc,
            SrcSplitSeq = erpDto.SrcSplitSeq,
            Typea = erpDto.TypeA,
            DocumentStatus = erpDto.FDocumentStatus
        };
        var single = base.GetSingle(it => it.ErpId == erpDto.FPPOMID);
        if (single != null) productionOrder.Guid = single.Guid;
        var single = base.GetSingle(it => it.ErpProductionEntryCode == erpDto.FSUBENTRYID);
        if (single != null)
        {
            productionOrder.Guid = single.Guid;
            productionOrder.AuditDate = single.AuditDate;
            productionOrder.AuditStatus = single.AuditStatus;
            productionOrder.Auditor = single.Auditor;
        }
        return productionOrder;
    }
@@ -190,6 +223,18 @@
                ItemNo = erpDto.FReplaceGroup,
                OwnerType = erpDto.FOwnerTypeId,
                Owner = erpDto.FOwnerID2,
                Fisgetscrap = erpDto.FISGETSCRAP,
                Fiskeycomponent = erpDto.FISKEYCOMPONENT,
                Fsrctransorgid = erpDto.FSRCTRANSORGID,
                Fsrctransstockid = erpDto.FSRCTRANSSTOCKID,
                Fstockstatusid = erpDto.FSTOCKSTATUSID,
                Fneeddate = erpDto.FNEEDDATE != null
                    ? DateTime.ParseExact(erpDto.FNEEDDATE,
                        "yyyy-MM-dd HH:mm:ss", null)
                    : null,
                Freservetype = erpDto.FRESERVETYPE,
                Fmemo = erpDto.FMEMO,
                Typeb = erpDto.TypeB,
                ErpProductionEntryCode = erpDto.FSUBENTRYID
            };