kazelee
2025-06-09 ae6a8a95861a75ee580c75451f57e0504d2c367a
针对ERP提供的字段,完善部分出库逻辑
2 文件已重命名
2个文件已添加
4个文件已修改
2个文件已删除
731 ■■■■ 已修改文件
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/139907d5-bf69-4957-bd54-53b4b25a0984.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/83dde277-5a65-4de9-9767-687a4e67f7ac.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/93b0aa90-1489-440e-8c8a-64eb24e3558a.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b390e7fe-a07b-4bb1-b189-3369e1fec281.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/bfedc8a7-5d30-4f46-ba09-dd908b77cc68.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.DSZSH.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiHelper.cs 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiModel.cs 292 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ErpController.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/TN_Outbound_Plan.cs 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/139907d5-bf69-4957-bd54-53b4b25a0984.vsidx
Binary files differ
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/83dde277-5a65-4de9-9767-687a4e67f7ac.vsidx
Binary files differ
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/93b0aa90-1489-440e-8c8a-64eb24e3558a.vsidx
Binary files differ
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b390e7fe-a07b-4bb1-b189-3369e1fec281.vsidx
Binary files differ
.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/bfedc8a7-5d30-4f46-ba09-dd908b77cc68.vsidx
Binary files differ
HH.WCS.Mobox3.DSZSH.csproj
@@ -236,6 +236,7 @@
    <Compile Include="core\WCSCore.cs" />
    <Compile Include="core\WMSCore.cs" />
    <Compile Include="device\TcpClientHelper.cs" />
    <Compile Include="models\TN_Outbound_Plan.cs" />
    <Compile Include="models\TN_Record_Table.cs" />
    <Compile Include="models\TN_RelocationList_Detail.cs" />
    <Compile Include="models\TN_Relocation_List.cs" />
api/ApiHelper.cs
@@ -1479,7 +1479,7 @@
            }
        }
        public static ErpResult ErpSendOutboundOrder(ErpSendOutboundOrderInfo model) {
        public static ErpResult ErpSendOutboundPlan(ErpSendOutboundPlanInfo model) {
            var db = new SqlHelper<object>().GetInstance();
            var orderNo = GenerateOrderNo("出库单号", "ON");
            var info = "";
@@ -1490,59 +1490,120 @@
                    return NewErpResult(2, info);
                }
                var cgDetailList = SelectCgByTotalQty(new FinishedOutboundInfo {
                    BatchNo = model.BatchNo,
                    CntrType= model.CntrType,
                    ItemCode= model.ItemCode,
                    EndArea= model.EndArea,
                    ForcedOut= model.ForcedOut,
                    Qty= model.Qty,
                    Spe = model.Spe
                });
                if (cgDetailList.Count == 0) {
                    info = "没有合适的物料可以出库";
                    LogHelper.Info(info);
                    return NewErpResult(3, info);
                }
                var order = new TN_Outbound_Order {
                    S_NO = orderNo,
                    S_ITEM_CODE = model.ItemCode,
                    S_BATCH = model.BatchNo,
                    N_END_NUM = model.Qty,
                    //F_OUT_QTY = cgDetailList.Sum(a => a.N_QTY),
                    S_END_AREA = model.EndArea,
                    S_BS_NO = model.ErpNo,
                    S_BS_TYPE = "ERP",
                var outboundPlan = new TN_Outbound_Plan {
                    jhdh = model.jhdh,
                    ckzt = model.ckzt,
                    jhlb = model.jhlb,
                    ckdh = model.ckdh,
                    cph = model.cph,
                    ysfs = model.ysfs,
                    cpzt = model.cpzt,
                    mddw = model.mddw,
                    cpdm = model.cpdm,
                    cplb = model.cplb,
                    cplbmx = model.cplbmx,
                    pp = model.pp,
                    dj = model.dj,
                    gh = model.gh,
                    ph = model.ph,
                    bzlx = model.bzlx,
                    pzdh = model.pzdh,
                    pzd_dw = model.pzd_dw,
                    pzd_dybh = model.pzd_dybh,
                    pzjs = model.pzjs,
                    pzsl = model.pzsl,
                    pz_rq = model.pz_rq,
                    pz_czrq = model.pz_czrq,
                    pz_zfbj = model.pz_zfbj,
                    pz_zfrq = model.pz_zfrq,
                    pz_bz = model.pz_bz,
                    ckdbh = model.ckdbh,
                    sfjs = model.sfjs,
                    sfsl = model.sfsl,
                    sfcs = model.sfcs,
                    zcsj = model.zcsj,
                    jldw = model.jldw,
                    fhrq = model.fhrq,
                    ckdm = model.ckdm,
                    fhr = model.fhr,
                    czydm = model.czydm,
                    shr_username = model.shr_username,
                    shrq = model.shrq,
                    zfbj = model.zfbj,
                    zfrq = model.zfrq,
                    jsdw = model.jsdw,
                    shdw = model.shdw,
                    ysdw = model.ysdw,
                    lxr = model.lxr,
                    ry_zxg = model.ry_zxg,
                    ry_ccsj = model.ry_ccsj,
                    erphx_jhdh = model.erphx_jhdh,
                    erphx_wlbm = model.erphx_wlbm,
                    erphx_wlmc = model.erphx_wlmc,
                    erphx_cjrq = model.erphx_cjrq,
                    hw = model.hw,
                    hwzt = model.hwzt
                };
                var detailList = new List<TN_Outbound_Detail>();
                foreach (var cgDetail in cgDetailList) {
                    var detail = new TN_Outbound_Detail {
                        S_OO_NO = orderNo,
                        S_ITEM_CODE = cgDetail.S_ITEM_CODE,
                        S_BATCH_NO = cgDetail.S_BATCH_NO,
                        S_CNTR_CODE = cgDetail.S_CNTR_CODE,
                        N_COUNT = cgDetail.N_ITEM_NUM,
                        S_END_AREA = model.EndArea
                    };
                    detailList.Add(detail);
                }
                //var cgDetailList = SelectCgByTotalQty(new FinishedOutboundInfo {
                //    BatchNo = model.BatchNo,
                //    CntrType= model.CntrType,
                //    ItemCode= model.ItemCode,
                //    EndArea= model.EndArea,
                //    ForcedOut= model.ForcedOut,
                //    Qty= model.Qty,
                //    Spe = model.Spe
                //});
                //if (cgDetailList.Count == 0) {
                //    info = "没有合适的物料可以出库";
                //    LogHelper.Info(info);
                //    return NewErpResult(3, info);
                //}
                //var order = new TN_Outbound_Order {
                //    S_NO = orderNo,
                //    S_ITEM_CODE = model.ItemCode,
                //    S_BATCH = model.BatchNo,
                //    N_END_NUM = model.Qty,
                //    //F_OUT_QTY = cgDetailList.Sum(a => a.N_QTY),
                //    S_END_AREA = model.EndArea,
                //    S_BS_NO = model.ErpNo,
                //    S_BS_TYPE = "ERP",
                //};
                //var detailList = new List<TN_Outbound_Detail>();
                //foreach (var cgDetail in cgDetailList) {
                //    var detail = new TN_Outbound_Detail {
                //        S_OO_NO = orderNo,
                //        S_ITEM_CODE = cgDetail.S_ITEM_CODE,
                //        S_BATCH_NO = cgDetail.S_BATCH_NO,
                //        S_CNTR_CODE = cgDetail.S_CNTR_CODE,
                //        N_COUNT = cgDetail.N_ITEM_NUM,
                //        S_END_AREA = model.EndArea
                //    };
                //    detailList.Add(detail);
                //}
                using (var tran = db.Ado.UseTran()) {
                    if (db.Insertable<TN_Outbound_Order>(order).ExecuteCommand() <= 0) {
                        tran.RollbackTran();
                        info = "生成出库单失败:" + JsonConvert.SerializeObject(order);
                        LogHelper.Info(info);
                        return NewErpResult(2, info);
                    }
                    //if (db.Insertable<TN_Outbound_Order>(order).ExecuteCommand() <= 0) {
                    //    tran.RollbackTran();
                    //    info = "生成出库单失败:" + JsonConvert.SerializeObject(order);
                    //    LogHelper.Info(info);
                    //    return NewErpResult(2, info);
                    //}
                    if (db.Insertable<TN_Outbound_Detail>(detailList).ExecuteCommand() <= 0) {
                    //if (db.Insertable<TN_Outbound_Detail>(detailList).ExecuteCommand() <= 0) {
                    //    tran.RollbackTran();
                    //    info = "生成出库单明细失败";
                    //    LogHelper.Info(info);
                    //    return NewErpResult(4, info);
                    //}
                    if (db.Insertable<TN_Outbound_Plan>(outboundPlan).ExecuteCommand() <= 0) {
                        tran.RollbackTran();
                        info = "生成出库单明细失败";
                        info = "生成出库单计划记录表失败";
                        LogHelper.Info(info);
                        return NewErpResult(4, info);
                        return NewErpResult(500, info);
                    }
                    tran.CommitTran();
api/ApiModel.cs
@@ -419,44 +419,266 @@
        /// <summary>
        /// ERP 下发出库任务的数据类型
        /// </summary>
        public class ErpSendOutboundOrderInfo {
            public string ErpNo { get; set; } // ERP 单号
        public class ErpSendOutboundPlanInfo {
            /// <summary>
            /// 物料编码
            /// 计划单号(唯一标识)
            /// </summary>
            [JsonProperty("item_code")]
            public string ItemCode { get; set; }
            /// <summary>
            /// 物料规格
            /// </summary>
            [JsonProperty("spe")]
            public string Spe { get; set; }
            /// <summary>
            /// 批次号
            /// </summary>
            [JsonProperty("batch_no")]
            public string BatchNo { get; set; }
            /// <summary>
            /// 需出库数量
            /// </summary>
            [JsonProperty("qty")]
            public int Qty { get; set; }
            /// <summary>
            /// 容器类型
            /// </summary>
            [JsonProperty("cntr_type")]
            public string CntrType { get; set; }
            /// <summary>
            /// 出库终点货区
            /// </summary>
            [JsonProperty("end_area")]
            public string EndArea { get; set; }
            /// <summary>
            /// 是否强制出库
            /// </summary>
            [JsonProperty("force_out")]
            public bool ForcedOut { get; set; }
            public string jhdh { get; set; }
            /// <summary>
            /// 出库状态
            /// </summary>
            public string ckzt { get; set; }
            /// <summary>
            /// 计划类别
            /// </summary>
            public string jhlb { get; set; }
            /// <summary>
            /// 参考单号
            /// </summary>
            public string ckdh { get; set; }
            /// <summary>
            /// 车牌号
            /// </summary>
            public string cph { get; set; }
            /// <summary>
            /// 运输方式
            /// </summary>
            public string ysfs { get; set; }
            /// <summary>
            /// 产品状态
            /// </summary>
            public string cpzt { get; set; }
            /// <summary>
            /// 买断单位
            /// </summary>
            public string mddw { get; set; }
            /// <summary>
            /// 产品代码
            /// </summary>
            public string cpdm { get; set; }
            /// <summary>
            /// 产品类别
            /// </summary>
            public string cplb { get; set; }
            /// <summary>
            /// 产品类别明细
            /// </summary>
            public string cplbmx { get; set; }
            /// <summary>
            /// 品牌
            /// </summary>
            public string pp { get; set; }
            /// <summary>
            /// 等级
            /// </summary>
            public string dj { get; set; }
            /// <summary>
            /// 罐号
            /// </summary>
            public string gh { get; set; }
            /// <summary>
            /// 批号
            /// </summary>
            public string ph { get; set; }
            /// <summary>
            /// 包装类型
            /// </summary>
            public string bzlx { get; set; }
            /// <summary>
            /// 派装单号
            /// </summary>
            public string pzdh { get; set; }
            /// <summary>
            /// 派装单单位
            /// </summary>
            public string pzd_dw { get; set; }
            /// <summary>
            /// 派装单调运编号
            /// </summary>
            public string pzd_dybh { get; set; }
            /// <summary>
            /// 派装件数
            /// </summary>
            public double pzjs { get; set; }
            /// <summary>
            /// 派装数量
            /// </summary>
            public decimal pzsl { get; set; }
            /// <summary>
            /// 派装日期(yyyy-mm-dd)
            /// </summary>
            public string pz_rq { get; set; }
            /// <summary>
            /// 派装操作日期
            /// </summary>
            public long pz_czrq { get; set; }
            /// <summary>
            /// 派装作废标记
            /// </summary>
            public int pz_zfbj { get; set; }
            /// <summary>
            /// 派装作废日期
            /// </summary>
            public long pz_zfrq { get; set; }
            /// <summary>
            /// 派装备注
            /// </summary>
            public string pz_bz { get; set; }
            /// <summary>
            /// 出库单编号
            /// </summary>
            public string ckdbh { get; set; }
            /// <summary>
            /// 实发件数
            /// </summary>
            public double sfjs { get; set; }
            /// <summary>
            /// 实发数量
            /// </summary>
            public decimal sfsl { get; set; }
            /// <summary>
            /// 实发车数
            /// </summary>
            public int sfcs { get; set; }
            /// <summary>
            /// 装车时间
            /// </summary>
            public string zcsj { get; set; }
            /// <summary>
            /// 计量单位
            /// </summary>
            public string jldw { get; set; }
            /// <summary>
            /// 发货日期
            /// </summary>
            public long fhrq { get; set; }
            /// <summary>
            /// 仓库代码
            /// </summary>
            public string ckdm { get; set; }
            /// <summary>
            /// 发货人
            /// </summary>
            public string fhr { get; set; }
            /// <summary>
            /// 操作员
            /// </summary>
            public string czydm { get; set; }
            /// <summary>
            /// 审核人
            /// </summary>
            public string shr_username { get; set; }
            /// <summary>
            /// 审核日期
            /// </summary>
            public long shrq { get; set; }
            /// <summary>
            /// 作废标记
            /// </summary>
            public long zfbj { get; set; }
            /// <summary>
            /// 作废日期
            /// </summary>
            public long zfrq { get; set; }
            /// <summary>
            /// 结算单位
            /// </summary>
            public string jsdw { get; set; }
            /// <summary>
            /// 收货单位
            /// </summary>
            public string shdw { get; set; }
            /// <summary>
            /// 运输单位
            /// </summary>
            public string ysdw { get; set; }
            /// <summary>
            /// 联系人
            /// </summary>
            public string lxr { get; set; }
            /// <summary>
            /// 装卸工
            /// </summary>
            public string ry_zxg { get; set; }
            /// <summary>
            /// 叉车司机
            /// </summary>
            public string ry_ccsj { get; set; }
            /// <summary>
            /// erp交货单号
            /// </summary>
            public string erphx_jhdh { get; set; }
            /// <summary>
            /// erp物料编码
            /// </summary>
            public string erphx_wlbm { get; set; }
            /// <summary>
            /// erp物料名称
            /// </summary>
            public string erphx_wlmc { get; set; }
            /// <summary>
            /// erp创建日期
            /// </summary>
            public string erphx_cjrq { get; set; }
            /// <summary>
            /// 货位
            /// </summary>
            public string hw { get; set; }
            /// <summary>
            /// 货位状态
            /// </summary>
            public string hwzt { get; set; }
        }
        public class PickUpReturnErpInfo {
api/ErpController.cs
@@ -17,12 +17,12 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("ErpSendOutboundOrder")]
        public ErpResult ErpSendOutboundOrder(ErpSendOutboundOrderInfo model) {
            var apiName = "ERP下发出库任务";
        [Route("ErpSendOutboundPlan")]
        public ErpResult ErpSendOutboundPlan(ErpSendOutboundPlanInfo model) {
            var apiName = "ERP下发出库计划单";
            LogHelper.InfoApi(apiName, model);
            return ApiHelper.ErpSendOutboundOrder(model);
            return ApiHelper.ErpSendOutboundPlan(model);
        }
    }
models/TN_Outbound_Plan.cs
New file
@@ -0,0 +1,275 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
namespace HH.WCS.Mobox3.DSZSH.models {
    /// <summary>
    /// 出库计划实体类
    /// </summary>
    [SugarTable("TN_Outbound_Plan")]
    public class TN_Outbound_Plan {
        /// <summary>
        /// 计划单号(唯一标识)
        /// </summary>
        public string jhdh { get; set; }
        /// <summary>
        /// 出库状态
        /// </summary>
        public string ckzt { get; set; }
        /// <summary>
        /// 计划类别
        /// </summary>
        public string jhlb { get; set; }
        /// <summary>
        /// 参考单号
        /// </summary>
        public string ckdh { get; set; }
        /// <summary>
        /// 车牌号
        /// </summary>
        public string cph { get; set; }
        /// <summary>
        /// 运输方式
        /// </summary>
        public string ysfs { get; set; }
        /// <summary>
        /// 产品状态
        /// </summary>
        public string cpzt { get; set; }
        /// <summary>
        /// 买断单位
        /// </summary>
        public string mddw { get; set; }
        /// <summary>
        /// 产品代码
        /// </summary>
        public string cpdm { get; set; }
        /// <summary>
        /// 产品类别
        /// </summary>
        public string cplb { get; set; }
        /// <summary>
        /// 产品类别明细
        /// </summary>
        public string cplbmx { get; set; }
        /// <summary>
        /// 品牌
        /// </summary>
        public string pp { get; set; }
        /// <summary>
        /// 等级
        /// </summary>
        public string dj { get; set; }
        /// <summary>
        /// 罐号
        /// </summary>
        public string gh { get; set; }
        /// <summary>
        /// 批号
        /// </summary>
        public string ph { get; set; }
        /// <summary>
        /// 包装类型
        /// </summary>
        public string bzlx { get; set; }
        /// <summary>
        /// 派装单号
        /// </summary>
        public string pzdh { get; set; }
        /// <summary>
        /// 派装单单位
        /// </summary>
        public string pzd_dw { get; set; }
        /// <summary>
        /// 派装单调运编号
        /// </summary>
        public string pzd_dybh { get; set; }
        /// <summary>
        /// 派装件数
        /// </summary>
        public double pzjs { get; set; }
        /// <summary>
        /// 派装数量
        /// </summary>
        public decimal pzsl { get; set; }
        /// <summary>
        /// 派装日期(yyyy-mm-dd)
        /// </summary>
        public string pz_rq { get; set; }
        /// <summary>
        /// 派装操作日期
        /// </summary>
        public long pz_czrq { get; set; }
        /// <summary>
        /// 派装作废标记
        /// </summary>
        public int pz_zfbj { get; set; }
        /// <summary>
        /// 派装作废日期
        /// </summary>
        public long pz_zfrq { get; set; }
        /// <summary>
        /// 派装备注
        /// </summary>
        public string pz_bz { get; set; }
        /// <summary>
        /// 出库单编号
        /// </summary>
        public string ckdbh { get; set; }
        /// <summary>
        /// 实发件数
        /// </summary>
        public double sfjs { get; set; }
        /// <summary>
        /// 实发数量
        /// </summary>
        public decimal sfsl { get; set; }
        /// <summary>
        /// 实发车数
        /// </summary>
        public int sfcs { get; set; }
        /// <summary>
        /// 装车时间
        /// </summary>
        public string zcsj { get; set; }
        /// <summary>
        /// 计量单位
        /// </summary>
        public string jldw { get; set; }
        /// <summary>
        /// 发货日期
        /// </summary>
        public long fhrq { get; set; }
        /// <summary>
        /// 仓库代码
        /// </summary>
        public string ckdm { get; set; }
        /// <summary>
        /// 发货人
        /// </summary>
        public string fhr { get; set; }
        /// <summary>
        /// 操作员
        /// </summary>
        public string czydm { get; set; }
        /// <summary>
        /// 审核人
        /// </summary>
        public string shr_username { get; set; }
        /// <summary>
        /// 审核日期
        /// </summary>
        public long shrq { get; set; }
        /// <summary>
        /// 作废标记
        /// </summary>
        public long zfbj { get; set; }
        /// <summary>
        /// 作废日期
        /// </summary>
        public long zfrq { get; set; }
        /// <summary>
        /// 结算单位
        /// </summary>
        public string jsdw { get; set; }
        /// <summary>
        /// 收货单位
        /// </summary>
        public string shdw { get; set; }
        /// <summary>
        /// 运输单位
        /// </summary>
        public string ysdw { get; set; }
        /// <summary>
        /// 联系人
        /// </summary>
        public string lxr { get; set; }
        /// <summary>
        /// 装卸工
        /// </summary>
        public string ry_zxg { get; set; }
        /// <summary>
        /// 叉车司机
        /// </summary>
        public string ry_ccsj { get; set; }
        /// <summary>
        /// erp交货单号
        /// </summary>
        public string erphx_jhdh { get; set; }
        /// <summary>
        /// erp物料编码
        /// </summary>
        public string erphx_wlbm { get; set; }
        /// <summary>
        /// erp物料名称
        /// </summary>
        public string erphx_wlmc { get; set; }
        /// <summary>
        /// erp创建日期
        /// </summary>
        public string erphx_cjrq { get; set; }
        /// <summary>
        /// 货位
        /// </summary>
        public string hw { get; set; }
        /// <summary>
        /// 货位状态
        /// </summary>
        public string hwzt { get; set; }
    }
}