hao
2025-06-13 90443c7af59e227a33b933a1225417272bd118a3
生产订单入库数
已添加5个文件
已修改6个文件
286 ■■■■■ 文件已修改
StandardInterface/MES.Service/Dto/webApi/ErpCAA.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/webApi/ErpKc.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/webApi/Inventory.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/ErpMesKc.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/Womcaa.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/Kingdee/ErpKcManager.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/SRM/MesDeliveryNoteBarcodeManager.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/WomcaaManager.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/Controllers/BasicData/ProductionOrderController.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/Controllers/Kingdee/ErpKcController.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/webApi/ErpCAA.cs
@@ -73,6 +73,7 @@
  public string? XS_CN { get; set; }  //小时产能
  public string? SJ_xs { get; set; }  //实际穴数
    public string? NEXT_Gx { get; set; }  //下道工序
    public string? RKS { get; set; }  //入库数
    ////委外字段
    //public string? F_ZJXF_DATETIME_YHRQ { get; set; }
    //public string? F_ZJXF_BASE_KH { get; set; }
StandardInterface/MES.Service/Dto/webApi/ErpKc.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
namespace MES.Service.Dto.webApi;
public class ErpKc
{
    public string? FMaterialId { get; set; }
    public string? FStockId { get; set; }
    public string? FMtoNo { get; set; }
    public string? FLot { get; set; }
    public string? FStockUnitId { get; set; }
    public string? FBaseUnitId { get; set; }
    public string? FStockStatusId { get; set; }
    public string? FBASEQTY { get; set; }
    public string? FSTOREURNOM { get; set; }
    public string? FSTOREURNUM { get; set; }
  //  public string? FOwnerId { get; set; } // æ–°å¢žè´§ä¸»ç¼–码字段
    public string? FStockOrgId { get; set; } //  æ–°å¢žåº“存组织字段
}
StandardInterface/MES.Service/Dto/webApi/Inventory.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
namespace MES.Service.Dto.webApi;
public class Inventory
{
    public string? ItemNo { get; set; } // æ–™å·
    public string? DepotCode { get; set; } // ä»“库
    public string? StockOrgNumber { get; set; } // ç”¨äºŽåº“存组织过滤
    //public string? OwnerNumber { get; set; } // æ–°å¢žè´§ä¸»ç¼–码
}
StandardInterface/MES.Service/Modes/ErpMesKc.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
using SqlSugar;
namespace MES.Service.Modes;
[SugarTable("ERP_MES_KC")]
public class ErpMesKc
{
    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_ERP_KC", IsPrimaryKey = true)]
    public decimal Id { get; set; }
    [SugarColumn(ColumnName = "FNUMBER")]
    public string? FNumber { get; set; }
    [SugarColumn(ColumnName = "FQTY")]
    public decimal? FQty { get; set; }
    [SugarColumn(ColumnName = "FBASEUNIT")]
    public string? FBaseUnit { get; set; }
    [SugarColumn(ColumnName = "FSTOCKUNIT")]
    public string? FStockUnit { get; set; }
    [SugarColumn(ColumnName = "FSTOCKNUMBER")]
    public string? FStockNumber { get; set; }
    [SugarColumn(ColumnName = "CREATE_DATE")]
    public DateTime? CreateDate { get; set; }
    [SugarColumn(ColumnName = "FBATCHNO")]
    public string? FBatchno { get; set; }
    [SugarColumn(ColumnName = "FMTONO")]
    public string? FMtono { get; set; }
    [SugarColumn(ColumnName = "FSTOCKSTATUS")]
    public string? FStockStatus { get; set; }
    [SugarColumn(ColumnName = "FSTOREURNOM")]
    public decimal? FStoreUrnom { get; set; }
    [SugarColumn(ColumnName = "FSTOREURNUM")]
    public decimal? FStoreUrnum { get; set; }
    [SugarColumn(ColumnName = "FOWNERID")]
    public string? FOwnerId { get; set; }
    [SugarColumn(ColumnName = "FSTOCKORGID")]
    public string? FStockOrgId { get; set; }
}
StandardInterface/MES.Service/Modes/Womcaa.cs
@@ -485,6 +485,11 @@
        /// ä¸‹é“工序 
        ///</summary>
        [SugarColumn(ColumnName = "NEXT_GX")]
        public string Nextgx { get; set; }
        public string Nextgx { get; set; }
        /// <summary>
        /// ä¸‹é“工序
        ///</summary>
        [SugarColumn(ColumnName = "RKS")]
        public string Rks { get; set; }
    }
}
StandardInterface/MES.Service/service/Kingdee/ErpKcManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@

using Kingdee.CDP.WebApi.SDK;
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
using System.Text;
namespace MES.Service.service.Kingdee;
public class ErpKcManager : Repository<ErpMesKc>
{
    public bool QueryStocks(Inventory inventory)
    {
        List<ErpKc> erpKc = GetErpInventory(inventory);
        // æ£€æŸ¥è¿”回结果是否为空
        if (erpKc == null || erpKc.Count == 0)
        {
            throw new NotImplementedException("返回结果为空");
        }
        else
        {
            var baseObjects = MapErpCABtoWomcab(erpKc);
            return UseTransaction(db =>
            {
                return SaveData(db, baseObjects) ? 1 : 0;
            }) > 0;
        }
    }
    #region 1.获取即时库存
    public List<ErpKc> GetErpInventory(Inventory inventory)
    {
        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
        //读取配置,初始化SDK
        K3CloudApi client = new K3CloudApi();
        //用于记录结果
        StringBuilder Info = new StringBuilder();
        //业务对象标识
        string formId = "STK_Inventory";
        DateTime dt = DateTime.Now;
        //查询字段集合,即返回哪些数据,不能为空,根据不同业务单据填写不同的字段名,以下仅为示例
        //string fieldKeys = "FCode,FFileId,FRelevantObject";
        //string FilterString = "FID='-2146304'";
        string fieldKeys = "FMaterialId.FNumber,FMtoNo,FStockId.FNumber,FLot.FNumber,FStockUnitId.FNumber,FBaseUnitId.FNumber,FStockStatusId.FName,FBASEQTY,FMaterialid.FSTOREURNOM,FMaterialid.FSTOREURNUM,FStockOrgId.FNumber";
        string FilterString = string.Format(@"FMaterialId.FNumber like '%{0}%' and FStockId.FNumber like '%{1}%' and FBaseQty>0 and FStockOrgId.FNumber like'%{2}%'", inventory.ItemNo,inventory.DepotCode, inventory.StockOrgNumber);
        string OrderString = "";
        int TopRowCount = 0;
        int StartRow = 0;
        int Limit = 0;
        var param = new QueryParam()
        {
            FormId = formId,
            FieldKeys = fieldKeys,
            FilterString = FilterString,
            OrderString = OrderString,
            TopRowCount = TopRowCount,
            StartRow = StartRow,
            Limit = Limit
        };
        //调用接口
        var result = client.ExecuteBillQuery(param.ToJson());
        return result.Select(s =>
        {
            var entity = new ErpKc
            {
                FMaterialId = s[0]?.ToString(),
                FMtoNo = s[1]?.ToString(),
                FStockId = s[2]?.ToString(),
                FLot = s[3]?.ToString(),
                FStockUnitId = s[4]?.ToString(),
                FBaseUnitId = s[5]?.ToString(),
                FStockStatusId = s[6]?.ToString(),
                FBASEQTY = s[7]?.ToString() ,
                FSTOREURNOM = s[8]?.ToString(),
                FSTOREURNUM = s[9]?.ToString(),
                //  FOwnerId = s[10]?.ToString()
                FStockOrgId = s[10]?.ToString()
            };
            return entity;
        }).ToList();
    }
    #endregion
    private List<ErpMesKc> MapErpCABtoWomcab(List<ErpKc> dtoList)
    {
        var ErpMesKcList = new List<ErpMesKc>();
        foreach (var dto in dtoList)
        {
            var kc = new ErpMesKc
            {
                FNumber = dto.FMaterialId,
               // FQty = Convert.ToDecimal(dto.FBASEQTY),
                FQty = SafeParseDecimal(dto.FBASEQTY),
                FBaseUnit=dto.FBaseUnitId,
                FStockUnit=dto.FStockUnitId,
                FStockNumber=dto.FStockId,
                CreateDate=DateTime.Now,
                FBatchno=dto.FLot,
                FMtono=dto.FMtoNo,
                FStockStatus=dto.FStockStatusId,
                FStoreUrnom= Convert.ToDecimal(dto.FSTOREURNOM),
                FStoreUrnum= Convert.ToDecimal(dto.FSTOREURNUM),
                //FOwnerId=dto.FOwnerId,
                FStockOrgId = dto.FStockOrgId,
            };
            ErpMesKcList.Add(kc);
        }
        return ErpMesKcList;
    }
    private decimal SafeParseDecimal(string? input)
    {
        if (string.IsNullOrWhiteSpace(input)) return 0;
        if (decimal.TryParse(
            input,
            System.Globalization.NumberStyles.Float,
            System.Globalization.CultureInfo.InvariantCulture,
            out var result))
            return result;
        return 0; //    è·³è¿‡é”™è¯¯å­—段,给默认值
    }
    // æ’入或更新数据的方法
    private bool SaveData(SqlSugarScope db, List<ErpMesKc> kcc)
    {
        var save = base.InsertRange(kcc);
        if (save) return true;
        throw new NotImplementedException("插入失败");
    }
}
StandardInterface/MES.Service/service/SRM/MesDeliveryNoteBarcodeManager.cs
@@ -64,7 +64,9 @@
    // åˆ é™¤æ•°æ®çš„æ–¹æ³•
    private bool DeleteDataByShd(SqlSugarScope db, ErpDelivery delivery)
    {
        var del = db.Deleteable<MesDeliveryNoteBarcode>().Where(s => s.DeliveryNo == delivery.DeliveryNo).ExecuteCommand() > 0;
        var del = db.Deleteable<MesDeliveryNoteBarcode>().
            Where(s => s.DeliveryNo == delivery.DeliveryNo)
            .ExecuteCommand() > 0;
        if (del)
        {
StandardInterface/MES.Service/service/WomcaaManager.cs
@@ -210,7 +210,8 @@
            Jt=dto.JT,
            Xscn=dto.XS_CN,
            Sjxs=dto.SJ_xs,
            Nextgx=dto.NEXT_Gx
            Nextgx=dto.NEXT_Gx,
            Rks=dto.RKS,
            //沃尔新增
            // WR_F_SCDD_SCTZD = dto.F_SCDD_SCTZD
            //WR_F_SCDD_XH = dto.F_SCDD_XH
StandardInterface/MESApplication/Controllers/BasicData/ProductionOrderController.cs
@@ -36,6 +36,7 @@
        entity.Data = JsonConvert.SerializeObject(rohIn);
        entity.Status = 1;
        entity.CreateBy = "PL017";
        entity.Route= rohIn.OrderDto.FBillNo;
        try
        {
            dynamic resultInfos = new ExpandoObject();
StandardInterface/MESApplication/Controllers/Kingdee/ErpKcController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
using MES.Service.Dto.service;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using MES.Service.service;
using MES.Service.service.Kingdee;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System.Dynamic;
namespace MESApplication.Controllers.Kingdee;
[ApiController]
[Route("api/[controller]")]
public class ErpKcController : ControllerBase
{
    private readonly MessageCenterManager _manager = new();
    private readonly ErpKcManager kc = new();
    private readonly string METHOD = "POST";
    private readonly string TableName = "ERPKC";
    private readonly string URL = "http://localhost:10054/api/ErpKc/";
    //
    [HttpPost("Save")]
    public ResponseResult Save(Inventory inventory)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos = kc.QueryStocks(inventory);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
StandardInterface/MESApplication/appsettings.json
@@ -10,6 +10,6 @@
  "AppSettings": {
    "TestErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfo",
    "ProductionErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfoFormal",
    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = hm_prd; Password=hmprd"
    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = test_dev; Password=hmprd"
  }
}