南骏 池
2025-06-06 a4ae3bf5f1826e8e29a95da3dc2c947d713d4ebb
MES.Service/service/WomcaaManager.cs
@@ -1,6 +1,7 @@
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using MES.Service.util;
using SqlSugar;
namespace MES.Service.service;
@@ -22,7 +23,8 @@
    public bool Save(ErpWOM wom)
    {
        var womErpCaa = wom.ErpCaa;
        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa, wom.ErpCabs[0].FBillNo);
        var mesWomcabs =
            MapErpCABtoWomcab(wom.ErpCabs);
@@ -49,14 +51,23 @@
    private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,
        List<Womcab> mesWomcabs)
    {
        if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id);
        if (StringUtil.CheckGuid(mesWomcaa.Guid))
            base.DeleteById(mesWomcaa.Guid);
        if (mesWomcabs.Count > 0)
            db.Deleteable<Womcab>()
                .Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
                .Where(s => s.Pid == mesWomcaa.Erpid).ExecuteCommand();
        var orUpdate = base.Insert(mesWomcaa);
        var baOrUpdate = _womcabManager.InsertRange(mesWomcabs);
        //单条插入忽略空字段
        var orUpdate = db.Insertable(mesWomcaa)
            .IgnoreColumns(true).ExecuteCommand() > 0;
        //批量插入忽略空字段
        var baOrUpdate = db.Insertable(mesWomcabs).PageSize(1)
            .IgnoreColumnsNull()
            .ExecuteCommand() > 0;
        if (orUpdate && baOrUpdate) return true;
        throw new NotImplementedException("插入或更新失败");
    }
@@ -64,8 +75,8 @@
    private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,
        List<Womcab> mesWomcabs)
    {
        var decimals = mesWomcabs.Select(s => s.Id).ToArray();
        var update = base.DeleteById(mesWomcaa.Id);
        var decimals = mesWomcabs.Select(s => s.Guid).ToArray();
        var update = base.DeleteById(mesWomcaa.Guid);
        var insertOrUpdate = db
            .Deleteable<Womcab>().In(decimals)
            .ExecuteCommand() > 0;
@@ -74,67 +85,75 @@
        throw new NotImplementedException("更新失败");
    }
    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto)
    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto,string PPBOMNO)
    {
        var entity = new Womcaa
        {
            Erpid = Convert.ToDecimal(dto.Id),
            Caa001 = dto.FBillNo,
            Caa021 = dto.FWorkShopID,
            RoutingId = dto.FRoutingId,
            WorkShopId = dto.FREMWorkShopId,
            DepotCode = dto.FStockId,
            CreateDate = dto.FDate,
            Caa004 = dto.FBILLTYPE,
            Caa023 = dto.FStatus,
            Caa006 = dto.FMaterialId,
            Caa009 = dto.FUnitId,
            Erpid = Convert.ToInt32(dto.Id), ///     ERPID
            Caa001 = PPBOMNO, ///     单号
            Caa021 = dto.FWorkShopID, ///     工作车间
            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,
                : null, ///     数量
            WorkGroupId = dto.FWorkGroupId, ///     计划组
            PlanId = dto.FPlannerID, ///     计划员
            Caa010 = dto.FPlanStartDate, ///     预计开工时间
            Caa011 = dto.FPlanFinishDate, ///     预计完工时间
            Caa005 = DateTime.TryParse(dto.FConveyDate, out var conveyDate)
            ? (conveyDate <= new DateTime(1900, 1, 1) ? null : conveyDate.ToString())
                : null, ///     开单日期
            StockInlimith = dto.FStockInLimitH, ///     入库上限
            StockInlimitl = dto.FStockInLimitL, ///     入库下限
            Mtono = dto.FMTONO, ///     计划跟踪号
            Lot = dto.FLot, ///     批号
            Caa013 = dto.FBomId, ///     BOM版次
            CreateType = dto.FCreateType,
            SrcBillType = dto.FSrcBillType,
            SrcBillNo = dto.FSrcBillNo,
            SrcBillentryseq = dto.FSrcBillEntrySeq,
            SaleOrderNo = dto.FSaleOrderNo,
            SaleOrderEntryseq = dto.FSaleOrderEntrySeq,
            ForceCloserid = dto.FForceCloserId,
            CloseType = dto.FCloseType,
            SrcSplitBillno = dto.FSrcSplitBillNo,
            Caa016 = dto.FDESCRIPTION,
            CreateType = dto.FCreateType, ///     生成方式
            SrcBillType = dto.FSrcBillType, ///     源单类型
            SrcBillNo = dto.FSrcBillNo, ///     源单编号
            SrcBillentryseq = dto.FSrcBillEntrySeq, ///     源单分录行号
            SaleOrderNo = dto.FSaleOrderNo, ///     需求单据号
            SaleOrderEntryseq = dto.FSaleOrderEntrySeq, ///     需求单据行号
            ForceCloserid = dto.FForceCloserId, ///     结案人
            CloseType = dto.FCloseType, ///     结案类型
            SrcSplitBillno = dto.FSrcSplitBillNo, ///     源拆分订单编号
            Caa016 = dto.FDESCRIPTION, ///     备注
            Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID)
                ? Convert.ToDecimal(dto.PLAN_ID)
                : null,
                ? Convert.ToInt32(dto.PLAN_ID)
                : null, ///     ERP源单ID
            Caa019 = !string.IsNullOrEmpty(dto.PLAN_SEQ)
                ? Convert.ToDecimal(dto.PLAN_SEQ)
                : null,
            Caa020 = dto.PLAN_NUM,
            Caa015 = dto.F_UNW_Text_xsddh,
            EerSczz = dto.erP_SCZZ,
            EerWtzz = dto.erP_WTZZ,
            Caa015Head = dto.F_XIFG_Integer_tzk,
            MainProductNo = dto.F_XIFG_Base_w5c,
            MainProductQty = dto.F_XIFG_Qty_yrr,
            CustomerItemNumber = dto.F_XIFG_Text_fg2,
            PackingListNumber = dto.F_XIFG_Text_yrr,
            CustomerName = dto.F_XIFG_Text_qtr1,
            Customer = dto.F_XIFG_Base_83g1
                ? Convert.ToInt32(dto.PLAN_SEQ)
                : null, ///     ERP源单行号
            Caa020 = dto.PLAN_NUM, ///     ERP源单单号(任务单号)
            //Caa015 = dto.F_UNW_Text_xsddh, ///     销售订单号
            ErpSczz = Convert.ToInt32(dto.FPrdOrgId), ///     生产组织ID
            ErpWtzz = Convert.ToInt32(dto.FEnTrustOrgId), ///     委托组织ID
            Btbz = dto.Btbz, ///     委托组织ID
            //Caa015Head = dto.F_XIFG_Integer_tzk, ///     销售订单行号
            //MainProductNo = dto.F_XIFG_Base_w5c, ///     主产品编码
            // MainProductQty =
            //     Convert.ToInt32(dto.F_XIFG_Qty_yrr), ///     主产品生产数量
            // CustomerItemNumber = dto.F_XIFG_Text_fg2, ///     客户货号
            // PackingListNumber = dto.F_XIFG_Text_yrr, ///     包装单号
            // CustomerName = dto.F_XIFG_Text_qtr1, ///     客户名称
            // Customer = dto.F_XIFG_Base_83g1, ///     客户
            Caa0111 = dto.FPlanFinishDate, ///     预计完工时间备份
            Typea = dto.TypeA, ///     预计完工时间备份
            //Typeb = dto.TypeB ///     预计完工时间备份
            SynchronousDate = DateTime.Now
        };
        var single = base.GetSingle(it => it.Erpid == entity.Erpid);
        if (single != null) entity.Id = single.Id;
        if (single != null) entity.Guid = single.Guid;
        return entity;
    }
@@ -147,49 +166,56 @@
        {
            var womcab = new Womcab
            {
                Erpid = Convert.ToDecimal(dto.FENTRYID),
                Cab001 = dto.FBillNo,
                Cab002 = dto.FSeq,
                Cab003 = dto.FMaterialID,
                Erpid = Convert.ToInt32(dto.Id), /// ERPID
                Cab001 = dto.FBillNo, /// 工单单号
                Cab002 = Convert.ToInt32(dto.FSeq), /// 序号
                Cab003 = dto.FMaterialID, /// 材料编码
                Cab006 = !string.IsNullOrEmpty(dto.FNeedQty)
                    ? Convert.ToDecimal(dto.FNeedQty)
                    : null,
                    : null, /// 需领用量
                Cab007 = !string.IsNullOrEmpty(dto.FPickedQty)
                    ? Convert.ToDecimal(dto.FPickedQty)
                    : null,
                PositionNo = dto.FPositionNO,
                SupplyOrganization = dto.FChildSupplyOrgId,
                IssuingOrganization = dto.FSUPPLYORG,
                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,
                    : null, /// 已领用量
                PositionNo = dto.FPositionNO, /// 位置号
                SupplyOrganization = dto.FChildSupplyOrgId, /// 供应组织
                IssuingOrganization = dto.FSUPPLYORG, /// 发料组织
                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, /// 供应类型(C采购 Z自制 W委外)
                Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
                    ? Convert.ToDecimal(dto.FStdQty)
                    : null,
                Cab014 = dto.FIsKeyItem,
                Numerator = dto.FNumerator,
                Denominator = dto.FDenominator,
                Eid = Convert.ToDecimal(dto.FID),
                Scrapqty = dto.FFixScrapQty,
                Scraprate = dto.FScrapRate,
                Fsaleorderno = dto.FSALEORDERNO,
                CustomerItemNumber = dto.F_XIFG_Text_re5,
                PackingListNumber = dto.F_XIFG_Text_apv,
                MainProduct = dto.F_XIFG_Base_re5,
                MainProductQty = Convert.ToDecimal(dto.F_XIFG_Qty_apv),
                ParentItemName = dto.F_XIFG_Base_apv
                    : null, /// 组成用量
                Cab014 = dto.FIsKeyItem, /// 是否替料
                Numerator = dto.FNumerator, /// 分子
                Denominator = dto.FDenominator, /// 分母
                Pid = Convert.ToInt32(dto.PID), /// ERP头ID
                Eid = Convert.ToInt32(dto.Id), /// ERP ID
                Scrapqty = dto.FFixScrapQty, /// 固定损耗
                Scraprate = dto.FScrapRate, /// 变动损耗率
                Freplacegroup = Convert.ToInt32(dto.FReplaceGroup),
                UseRate = Convert.ToDecimal(dto.FUseRate),
                MaterialType = dto.FMaterialType,
                MustQty = Convert.ToDecimal(dto.FMustQty),
                Typeb = dto.TypeB
                // Fsaleorderno = dto.FSALEORDERNO, /// 销售订单
                //
                // CustomerItemNumber = dto.F_XIFG_Text_re5, /// 客户货号
                // PackingListNumber = dto.F_XIFG_Text_apv, /// 包装单号
                // MainProduct = dto.F_XIFG_Base_re5, /// 主产品
                // MainProductQty =
                //     Convert.ToInt32(dto.F_XIFG_Qty_apv), /// 主产品数量
                // ParentItemName = dto.F_XIFG_Base_apv /// 父项物料名称
            };
            var entity = Db.Queryable<Womcab>()
                .Where(s => s.Erpid == womcab.Erpid).Single();
            if (entity != null) womcab.Id = entity.Id;
                .Where(s => s.Eid == womcab.Eid).Single();
            if (entity != null) womcab.Guid = entity.Guid;
            womcabList.Add(womcab);
        }