admin
2 天以前 69ccec8360ba960e8e3198356ea7a23c625393fd
开发AddExportXmls批量生成xml接口
1个文件已修改
117 ■■■■■ 已修改文件
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -2181,6 +2181,123 @@
            }
        }
        /// <summary>
        /// 批量生成xml
        /// </summary>
        /// <param name="date">日期</param>
        /// <param name="userId">用户id</param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public List<ExportXmlDto> AddExportXmls(string date, int userId)
        {
            List<ExportXmlDto> xmlList = new List<ExportXmlDto>();
            try
            {
                string exportSql = $@"select SONo,Status,Type,case isnull(CustomerNo,'') when '' then 'null' else CustomerNo end CustomerNo
    from BllExportNotice
    where IsDel='0' and Type='0'and SONo like 'SO{date.Replace("-", "")}%'
    order by SONo";
                DataTable exportDt = Db.Ado.GetDataTable(exportSql);
                if (exportDt == null || exportDt.Rows.Count < 1)
                {
                    return xmlList;
                }
                foreach (DataRow dr in exportDt.Rows)
                {
                    string soNo = dr["SONo"] + "";
                    string status = dr["Status"] + "";
                    string type = dr["Type"] + "";
                    var noticeDetial = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.SONo == soNo).First();
                    if (noticeDetial == null)
                    {
                        throw new Exception("未查询到出库单据明细信息");
                    }
                    List<string> statusList = new List<string>() { "4", "5", "6" };
                    if (!statusList.Contains(status))
                    {
                        throw new Exception("参数异常,请检查状态是否为执行完成或订单关闭/已上传");
                    }
                    string xmlName = string.Empty;
                    string fileName = "";
                    switch (type)
                    {
                        //成品出库/销售出库
                        case "0": { xmlName = "SalesWareHouseOut"; fileName = $@"SalesWareHouseOut_{dr["CustomerNo"] + ""}_linklink"; } break;
                        //抽检出库
                        case "2": { xmlName = "CheckWareHouseOut"; fileName = $@"CheckWareHouseOut_{dr["CustomerNo"] + ""}_linklink"; } break;
                        default: throw new Exception("单据类型异常");
                    }
                    var materiDetial = Db.Queryable<SysMaterials>().First(w => w.IsDel == "0" && w.SkuNo == noticeDetial.SkuNo);
                    var packType = Db.Queryable<SysPackag>().First(w => w.IsDel == "0" && w.PackagNo == materiDetial.PackagNo);
                    int level = 0;
                    if (!string.IsNullOrEmpty(packType.L2Name))
                    {
                        level = 1;
                    }
                    if (!string.IsNullOrEmpty(packType.L3Name))
                    {
                        level = 2;
                    }
                    if (!string.IsNullOrEmpty(packType.L4Name))
                    {
                        level = 3;
                    }
                    //出库单明细
                    var comDetail = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList();
                    var userinfo = Db.Queryable<SysUserInfor>().Where(m => m.Id == comDetail.First().CreateUser).First().RealName;
                    //开启事务
                    Db.BeginTran();
                    try
                    {
                        var pars = new List<string>();
                        string[] strr = new string[comDetail.Count];
                        for (int i = 0; i < comDetail.Count(); i++)
                        {
                            switch (level)
                            {
                                case 1: strr[i] = comDetail[i].BoxNo + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime); break;
                                case 2: strr[i] = comDetail[i].BoxNo3 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime); break;
                                case 3: strr[i] = comDetail[i].BoxNo2 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime); break;
                                default: break;
                            }
                            pars.Add(strr[i]);
                        }
                        XmlDocument dom = HttpHelper.EncodeParsToFuMa(pars, "", xmlName, "ExInfoXml");
                        ExportXmlDto xmlDto = new ExportXmlDto()
                        {
                            fileName = fileName,
                            fileContent = dom.InnerXml
                        };
                        xmlList.Add(xmlDto);
                        //添加操作日志记录
                        var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", soNo, "上传", $"上传了单据号为{soNo}的单据信息", userId);
                        Db.CommitTran();
                    }
                    catch (Exception e)
                    {
                        Db.RollbackTran();
                        throw new Exception(e.Message);
                    }
                }
                return xmlList;
            }
            catch (Exception ex)
            {
                throw new Exception("生成XML文件错误:" + ex.Message);
            }
        }
        #endregion
        #region 托盘出库