sjz
2025-02-10 cbf7fc81ec9a32896a20487817c884a5b46a8dd0
MES.Service/service/WomcaaManager.cs
@@ -1,7 +1,9 @@
using MES.Service.DB;
using Dm;
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
using System.Net.NetworkInformation;
namespace MES.Service.service;
@@ -22,21 +24,21 @@
    public bool Save(ErpWOM wom)
    {
        var womErpCaa = wom.ErpCaa;
        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
        var mesWomcabs =
            MapErpCABtoWomcab(wom.ErpCabs);
        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa, wom.ErpCabs[0].FBillNo);
        var mesWomcabs =MapErpCABtoWomcab(wom.ErpCabs);
        return UseTransaction(db =>
        {
            switch (womErpCaa.Type)
            {
                case "3":
                    return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
                    return DeleteData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
                case "1":
                case "2":
                case "4":
                    return SaveOrUpdateData(db, mesWomcaa, mesWomcabs)
                        ? 1
                        : 0;
                    return SaveOrUpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
                case "5":
                    return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
                default:
                    throw new NotImplementedException(
                        $"type没有{womErpCaa.Type}这个类型");
@@ -44,63 +46,102 @@
        }) > 0;
    }
    private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,
        List<Womcab> mesWomcabs)
    private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa, List<Womcab> mesWomcabs)
    {
        if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id);
        if (mesWomcaa.Id != null)
        {
            base.DeleteById(mesWomcaa.Id);
        }
        if (mesWomcabs.Count > 0)
            db.Deleteable<Womcab>()
                .Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
        {
            db.Deleteable<Womcab>().Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
        }
        var orUpdate = base.Insert(mesWomcaa);
        var baOrUpdate = _womcabManager.InsertRange(mesWomcabs);
        if (orUpdate && baOrUpdate) {
            //定义输入参数
            var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
            // 定义输出参数
            var outParam1 = new SugarParameter("c_Result", null, true);
            var outParam2 = new SugarParameter("C_MSG", null, true);
            // 使用 SqlSugar 执行存储过程
            Db.Ado.ExecuteCommand("BEGIN PRC_UPDATE_DAA(:P_WORK_NO,:c_Result,:C_MSG); END;", inputParam1, outParam1, outParam2);
            // 获取输出参数的值
            int result = int.Parse((string)outParam1.Value);
            string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value;
            if (result == 1)
            {
                //存储过程失败则事务进行回滚
                db.Ado.RollbackTran();
                throw new Exception(message);
            }
            // 提交事务
            db.Ado.CommitTran();
            return true;
        }
        throw new NotImplementedException("插入或更新失败");
    }
    private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,List<Womcab> mesWomcabs)
    {
        if (mesWomcaa.Id != null) {
            base.DeleteById(mesWomcaa.Id);
        }
        if (mesWomcabs.Count > 0) {
            db.Deleteable<Womcab>().Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
        }
        var orUpdate = base.Insert(mesWomcaa);
        var baOrUpdate = _womcabManager.InsertRange(mesWomcabs);
        if (orUpdate && baOrUpdate) return true;
        throw new NotImplementedException("插入或更新失败");
    }
    private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,
        List<Womcab> mesWomcabs)
    private bool DeleteData(SqlSugarScope db, Womcaa mesWomcaa,List<Womcab> mesWomcabs)
    {
        var decimals = mesWomcabs.Select(s => s.Id).ToArray();
        var update = base.DeleteById(mesWomcaa.Id);
        var insertOrUpdate = db
            .Deleteable<Womcab>().In(decimals)
            .ExecuteCommand() > 0;
        var insertOrUpdate = db.Deleteable<Womcab>().In(decimals).ExecuteCommand() > 0;
        if (update && insertOrUpdate) return true;
        throw new NotImplementedException("更新失败");
    }
    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto)
    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto,string FBillNo)
    {
        var entity = new Womcaa
        {
            Erpid = Convert.ToDecimal(dto.Id),
            Caa001 = dto.FBillNo,
            Caa021 = dto.FWorkShopID0,
            Caa001 = FBillNo,
            Caa004 = dto.FBillType,
            Caa005 = dto.FConveyDate,
            Caa006 = dto.FMaterialId,
            Caa009 = dto.FUnitId,
            Caa010 = dto.FPlanStartDate,
            Caa011 = dto.FPlanFinishDate,
            Caa012 = Convert.ToDecimal(dto.FQty),
            Caa013 = dto.FBomId,
            Caa015 = dto.FSaleOrderNo,
            Caa016 = dto.FDescription,
            Caa017 = 0,
            Caa018 = Convert.ToDecimal(dto.PLAN_ID),
            Caa019 = dto.PLAN_SEQ,
            Caa020 = dto.PLAN_NUM,
            Caa021 = dto.FWorkShopID,
            Fstatus = 0,
            Caa022 = Convert.ToDecimal(dto.FQty),
            Caa023 = dto.FStatus,
            Caa024 = 0,
            RoutingId = dto.FRoutingId,
            WorkShopId = dto.FREMWorkShopId,
            DepotCode = dto.FStockId,
            CreateDate = dto.FDate,
            Caa004 = dto.FBillType,
            Caa023 = dto.FStatus,
            Caa006 = dto.FMaterialId,
            Caa009 = dto.FUnitId,
            Caa012 = !string.IsNullOrEmpty(dto.FQty)
                ? Convert.ToDecimal(dto.FQty)
                : null,
            WorkGroupId = dto.FWorkGroupId,
            PlanId = dto.FPlannerID,
            Caa010 = dto.FPlanStartDate,
            Caa011 = dto.FPlanFinishDate,
            Caa005 = dto.FConveyDate,
            StockInlimith = dto.FStockInLimitH,
            StockInlimitl = dto.FStockInLimitL,
            Mtono = dto.FMTONO,
            Lot = dto.FLot,
            Caa013 = dto.FBomId,
            Caa015 = dto.F_UNW_Text_xsddh,
            CreateType = dto.FCreateType,
            SrcBillType = dto.FSrcBillType,
            SrcBillNo = dto.FSrcBillNo,
@@ -110,11 +151,24 @@
            ForceCloserid = dto.FForceCloserId,
            CloseType = dto.FCloseType,
            SrcSplitBillno = dto.FSrcSplitBillNo,
            Caa016 = dto.FMemoItem,
            Caa018 = Convert.ToDecimal(dto.planId),
            Caa019 = Convert.ToDecimal(dto.planSeq),
            Caa020 = dto.planNum
            PrdOrg=dto.FPrdOrgId,
            TrustOrg=dto.FEnTrustOrgId,
            TbTime=DateTime.Now,
            JaBs = "0",
            F_WWC_BASEPROPERTY = dto.F_wwc_BaseProperty,
            F_WWC_DATETIME = dto.F_WWC_DATETIME != null ? DateTime.ParseExact(dto.F_WWC_DATETIME, "yyyy-MM-dd HH:mm:ss", null) : null,
            FGS = Convert.ToDecimal(dto.FGS),
            F_WWC_DECIMAL = Convert.ToDecimal(dto.F_WWC_DECIMAL),
            F_WWC_XB = dto.F_WWC_XB,
            F_WWC_BASE = dto.F_WWC_BASE,
            IsXg = 0
        };
        if (dto.FStatus == "6" || dto.FStatus == "7")
        {
            entity.JaBs = "1";
            entity.JaTime = DateTime.Now;
        }
        var single = base.GetSingle(it => it.Erpid == entity.Erpid);
        if (single != null) entity.Id = single.Id;
@@ -130,34 +184,36 @@
        {
            var womcab = new Womcab
            {
                Erpid = Convert.ToDecimal(dto.ID),
                Erpid = Convert.ToDecimal(dto.Id),
                Cab001 = dto.FBillNo,
                Cab002 = dto.FSeq,
                Cab003 = dto.FMaterialID2,
                Cab006 = !string.IsNullOrEmpty(dto.FNeedQty2)
                    ? Convert.ToDecimal(dto.FNeedQty2)
                    : null,
                Cab007 = !string.IsNullOrEmpty(dto.FPickedQty)
                    ? Convert.ToDecimal(dto.FPickedQty)
                    : null,
                Cab003 = dto.FMaterialID,
                Cab006 = Convert.ToDecimal(dto.FMustQty),
                Cab007 = Convert.ToDecimal(dto.FPickedQty),
                Cab009 = dto.FUnitID,
                Cab012 = Convert.ToDecimal(dto.FStdQty),
                Cab014 = dto.FIsKeyItem,
                Pid = Convert.ToDecimal(dto.Pid),
                Eid = Convert.ToDecimal(dto.Pid),
                PositionNo = dto.FPositionNO,
                IssuingOrganization=dto.FSupplyOrg,
                SupplyOrganization=dto.FChildSupplyOrgId,
                OwnerId = dto.FOwnerID,
                Mtono = dto.FMTONO,
                Lot = dto.FLot,
                DepotCode = dto.FStockID,
                IssueType = dto.FIssueType,
                Cab008 = dto.F_UNW_Text_tpgy,
                Cab009 = dto.FUnitID,
                SupplyType = dto.FSupplyType,
                Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
                    ? Convert.ToDecimal(dto.FStdQty)
                    : null,
                Cab014 = dto.FIsKeyItem,
                Numerator = dto.FNumerator,
                Denominator = dto.FDenominator,
                Eid = Convert.ToDecimal(dto.PID),
                Numerator = Convert.ToDecimal(dto.FNumerator),
                Denominator = Convert.ToDecimal(dto.FDenominator),
                SCRAPQTY = Convert.ToDecimal(dto.FFixScrapQty),
                SCRAPRATE = Convert.ToDecimal(dto.FScrapRate)
                SCRAPRATE = Convert.ToDecimal(dto.FScrapRate),
                SalesOrder = dto.F_WWC_TEXT,
                F_WWC_TEXT1 = dto.F_WWC_TEXT1,
                F_WWC_DATE = dto.F_WWC_DATE != null ? DateTime.ParseExact(dto.F_WWC_DATE, "yyyy-MM-dd HH:mm:ss", null) : null,
                F_WWC_BASEPROPERTY = dto.F_wwc_BaseProperty,
                FUSERATE = dto.FUseRate,
                FMATERIALTYPE = dto.FMaterialType
            };
            var entity = Db.Queryable<Womcab>()