出门确认单、发出确认单上传方法取消事务回滚,销售出库、生产入库多源单上传、物料扫码方法增加写入日志;DAL引用更新
1个文件已添加
3个文件已修改
141 ■■■■■ 已修改文件
CLOUDWEB/CLOUDWEB.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/LogService.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/WebService1.asmx.cs 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/DAL.dll 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/CLOUDWEB.csproj
@@ -318,6 +318,7 @@
    <Compile Include="Global.asax.cs">
      <DependentUpon>Global.asax</DependentUpon>
    </Compile>
    <Compile Include="LogService.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Site.Master.cs">
      <DependentUpon>Site.Master</DependentUpon>
CLOUDWEB/LogService.cs
New file
@@ -0,0 +1,57 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CLOUDWEB
{
    public class LogService
    {
        private static readonly object lockObj = new object();
        #region 日志
        public static void Write(object obj, string filePath = "Vlog", bool isAppend = true)
        {
            try
            {
                lock (lockObj)
                {
                    filePath = $@"{filePath}\webapi{DateTime.Now.ToString("yyyyMMdd")}.txt";
                    filePath = AppDomain.CurrentDomain.BaseDirectory + filePath;
                    if (!System.IO.Directory.Exists(Path.GetDirectoryName(filePath)))
                    {
                        System.IO.Directory.CreateDirectory(Path.GetDirectoryName(filePath));
                    }
                    bool fileExists = System.IO.File.Exists(filePath);
                    //不存在 则创建该文件
                    if (!fileExists)
                    {
                        System.IO.File.Create(filePath).Close();
                    }
                    using (StreamWriter writer = new StreamWriter(filePath, isAppend))
                    {
                        //存在的时候才写一行
                        if (fileExists && isAppend)
                        {
                            writer.WriteLine();
                        }
                        var content = obj is string ? obj : JsonConvert.SerializeObject(obj);
                        writer.WriteLine($"{DateTime.Now} {content}");
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
        #endregion
    }
}
CLOUDWEB/WebService1.asmx.cs
@@ -4040,7 +4040,7 @@
                oMain.HPeriod = sPeriod;
                DataSet Ds;
                oCn.BeginTran();
                //oCn.BeginTran();
                //生成出门确认单
                //插入子表
                oCn.RunProc("EXEC h_p_Sc_DoorOutCheckBillSub_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + sHSourceType + "'");
@@ -4062,13 +4062,13 @@
                //}
                sErrMsg = "新增单据成功!";
                oCn.Commit();
                //oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sErrMsg = "生成出门确认单失败!" + e.Message;
                oCn.RollBack();
                //oCn.RollBack();
                return false;
            }
        }
@@ -11204,6 +11204,7 @@
        private bool SaveSellOutBill_CLD(Model.ClsKf_SellOutBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            string sRemark = "";
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            DataSet Ds;
            try
@@ -11214,6 +11215,8 @@
                //插入子表
                oCn.RunProc("EXEC h_p_Kf_SellOutBillSub_Insert " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'");
                sRemark = sRemark + " ;写入子表" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //插入主表
                oCn.RunProc("Insert Into Kf_ICStockBillMain   " +
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMainSourceBillType" +
@@ -11226,14 +11229,20 @@
                ", " + oMain.HSupID.ToString() + "," + oMain.HWHID.ToString() + "," + oMain.HSCWHID.ToString() + "," + oMain.HEmpID.ToString() + "," + oMain.HManagerID.ToString() + "," + oMain.HSecManagerID.ToString() +
                ", " + oMain.HKeeperID.ToString() + "," + oMain.HDeptID.ToString() + ",'" + oMain.HExplanation + "','" + oMain.HInnerBillNo + "'," + DBUtility.ClsPub.BoolToString(oMain.HRedBlueFlag) +
                ") ");
                sRemark = sRemark + " ;写入主表" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //更新关联数量
                oCn.RunProc("exec h_p_Xs_UpDateSeOutStockRelation_Add " + oMain.HInterID.ToString());
                sRemark = sRemark + " ;更新关联数量" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                if (oSystemParameterMain.Kf_SellOutBill_AutoCheck == "Y") //系统参数  自动审核 
                {
                    //审核单据
                    oCn.RunProc("Update Kf_ICStockBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=convert(varchar(10),getdate(),120),HBillStatus=2 where HInterID= " + oMain.HInterID.ToString());
                }
                sRemark = sRemark + " ;回填审核人" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                oCn.Commit();
            }
            catch (Exception e)
@@ -11248,6 +11257,8 @@
                string sJson_CheckFlag = "";    //生成单据是否审核标志
                //根据TMP表 返回 子表信息
                Ds = oCn.RunProcReturn("exec h_p_Kf_GetSellOutBill_CLD " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'", "h_p_Kf_GetSellOutBill_CLD");
                sRemark = sRemark + " ;返回API数据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                if (Ds == null || Ds.Tables[0].Rows.Count == 0 || Ds.Tables[1].Rows.Count == 0)
                {
                    sErrMsg = "获取子表信息失败!"; 
@@ -11449,6 +11460,8 @@
                        sCLOUDPsd = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserPsd"]);
                    }
                    sRemark = sRemark + " ;获取验证CLOUD账号密码" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    //生成 销售出库 
                    string HReturn;
                    ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
@@ -11462,6 +11475,7 @@
                        ////生成单据后更新自定义字段
                        oCn.RunProc("exec h_p_Sc_UpDateSelfFildSellOut '" + oMain.HBillNo + "'");
                        //
                        sRemark = sRemark + " 生成单据后更新自定义字段" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                        if (oSystemParameterMain.Kf_SellOutBill_AutoCheck == "Y") //系统参数  自动审核 
                        {
                            if (sJson_CheckFlag == "N")     //递加是否审核,N为不审核
@@ -11487,12 +11501,16 @@
                        }
                        if (HReturn.Contains("\"IsSuccess\":false") == true)
                        {
                            LogService.Write("生成销售出库单失败" + sRemark);
                            sErrMsg = "生成销售出库单失败!" + HReturn + sJson;
                            //oCn.RollBack();
                            return false;
                        }
                        else
                        {
                            sRemark = sRemark + " ;生成CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                            if (oSystemParameterMain.WMS_CampanyName == "韩电")
                            {
                                //销售出库时反写发货通知单、销售订单
@@ -11500,6 +11518,8 @@
                                {
                                    //外销反写发货通知单、销售订单数量
                                    oCn.RunProc("EXEC h_p_ToCLD_BackDataDELIVERYNOTICE '" + oMain.HBillNo + "'");
                                    sRemark = sRemark + " ;外销反写发货通知单、销售订单数量" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                                }
                                else if (Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_XSLX"]) == "内销"
                                        || Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_XSLX"]) == "OEM"
@@ -11507,15 +11527,18 @@
                                {
                                    //内销、OEM和电商 关闭发货通知单、销售订单
                                    oCn.RunProc("EXEC h_p_ToCLD_BackDataDELIVERYNOTICE_Close '" + oMain.HBillNo + "'");
                                    sRemark = sRemark + " ;内销、OEM和电商 关闭发货通知单、销售订单" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                                }
                            }
                            LogService.Write("生成销售出库单成功!" + sRemark);
                            return true;
                        }
                    }
                    else
                    {
                        LogService.Write("生成销售出库单失败!登录失败" + sRemark);
                        sErrMsg = "生成销售出库单失败!登录失败!";
                        //oCn.RollBack();
                        return false;
@@ -11524,6 +11547,7 @@
            }
            catch (Exception e1)
            {
                LogService.Write("生成销售出库单失败回滚" + sRemark);
                sErrMsg = "生成销售出库单失败!" + e1.Message;
                //oCn.RollBack();
                return false;
@@ -17588,6 +17612,7 @@
        /// <returns></returns>
        public bool SaveProductInBill_MulSource_CLD(Model.ClsKf_ProductInBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sHBillNo, ref string sErrMsg)
        {
            string sRemark = "";
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            try
            {
@@ -17605,6 +17630,8 @@
                //插入子表
                oCn.RunProc("EXEC h_p_Kf_ProductInBillSub_Insert " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'");
                sRemark = sRemark + " ;写入子表" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //插入主表
                oCn.RunProc("Insert Into Kf_ICStockBillMain   " +
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMainSourceBillType" +
@@ -17617,8 +17644,11 @@
                ", " + oMain.HSupID.ToString() + "," + oMain.HWHID.ToString() + "," + oMain.HSCWHID.ToString() + "," + oMain.HEmpID.ToString() + "," + oMain.HManagerID.ToString() + "," + oMain.HSecManagerID.ToString() +
                ", " + oMain.HKeeperID.ToString() + "," + oMain.HDeptID.ToString() + ",'" + oMain.HExplanation + "','" + oMain.HInnerBillNo + "'," + DBUtility.ClsPub.BoolToString(oMain.HRedBlueFlag) +
                ") ");
                sRemark = sRemark + " ;写入主表" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //更新关联数量
                oCn.RunProc("exec h_p_Sc_UpDateICMORelation_Add " + oMain.HInterID.ToString());
                sRemark = sRemark + " ;回填关联数量" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                if (oSystemParameterMain.Kf_ProductInBill_AutoCheck == "Y") //系统参数  自动审核 
                {
@@ -17628,6 +17658,8 @@
                //根据单据ID获取扫描的组织有哪几个
                string tt = "";
                Ds1 = oCn.RunProcReturn("exec h_p_Kf_GetOrgIDByTemp_CLD " + oMain.HInterID.ToString(), "h_p_Kf_GetOrgIDByTemp_CLD");
                sRemark = sRemark + " ;获取组织个数" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                if (Ds1 == null || Ds1.Tables[0].Rows.Count == 0)
                {
@@ -17645,6 +17677,9 @@
                        HOrgID = Pub_Class.ClsPub.isLong(Ds1.Tables[0].Rows[y][0]);
                        //根据TMP表 返回 子表信息
                        Ds = oCn.RunProcReturn("exec h_p_Kf_GetProductInBillByOrgID_CLD " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'," + HOrgID.ToString(), "h_p_Kf_GetProductInBillByOrgID_CLD");
                        sRemark = sRemark + " ;获取API数据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                        if (Ds == null || Ds.Tables[0].Rows.Count == 0 || Ds.Tables[1].Rows.Count == 0)
                        {
                            sErrMsg = "获取子表信息失败!";
@@ -17798,6 +17833,8 @@
                    ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
                    string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
                    bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
                    sRemark = sRemark + " ;获取验证CLOUD账号密码" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    if (bLogin)
                    {
                        var result = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave",
@@ -26189,6 +26226,7 @@
        [WebMethod]
        public bool set_SavePonderationBillMain_Temp_BarCode(string sBarCode, Int64 HBillID, string HBillType, string HBillNo, string HMaker, Int64 HWhID, Int64 HSPID, Double HQty, bool HRedBlueFlag, bool SourceFlag, string HSourceBillNo, string HSourceBillType, Int64 HOWNERID, string HExpressNumber, ref string sHSourceBillNo, ref string sHSourceBillType, ref long sHSupID, ref string sHSupName, ref long sHDeptID, ref string sHDeptName, ref string sErrMsg)
        {
            string sRemark = "";
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            DAL.ClsKF_PonderationBillMain_Temp_Ctl tem = new DAL.ClsKF_PonderationBillMain_Temp_Ctl();
            Model.ClsKF_PonderationBillMain_Temp model = new Model.ClsKF_PonderationBillMain_Temp();
@@ -26216,6 +26254,8 @@
                sErrMsg = "获取系统参数失败! " + sErrMsg;
                return false;
            }
            sRemark = sRemark + "单据号:" + HBillNo + ",单据ID:" + HBillID + ";获取系统参数" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
            //当单据参数是 多原单模式时, 则 SourceFlag 设置为 TRUE  Sc_ICMOReportBill_MulSourceBill(韩电是)
            if (HBillType == "3711" && oSystemParameter.omodel.Sc_ICMOReportBill_MulSourceBill=="Y")
            {
@@ -26238,6 +26278,9 @@
                    //根据物料条码得到对应源单信息并将源单信息新增到条码出入库临时表,带出表头部门、供应商
                    //h_p_WMS_BarCode_SourceBillType 带出原单信息
                    DataSet ds1 = oCn.RunProcReturn("exec h_p_WMS_BarCode_SourceBillType " + HBillID.ToString() + ",'" + HBillType + "','" + sBarCode + "'", "h_p_WMS_BarCode_SourceBillType");
                    sRemark = sRemark + " ;入库获取源单信息" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
                    {
                        sErrMsg = "扫描物料条码后判断条码源单信息,未知错误!";
@@ -26260,7 +26303,7 @@
                                // 将源单信息写入 临时缓存表
                                if (tem.AddNew_Source(HBillID, HBillNo, HBillType, sHSourceBillNo, sHSourceBillType, sRedBlue, ref sErrMsg))
                                {
                                    sRemark = sRemark + " ;入库写入源单信息" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                                }
                                else
                                {
@@ -26296,6 +26339,9 @@
            {
                DataSet dstt = oCn.RunProcReturn("exec h_p_WMS_GetOldBarCode_Insert " + HBillID.ToString() + ",'" + HBillType + "','" + sBarCode + "'," + HOWNERID, "h_p_WMS_GetOldBarCode_Insert");
                //DataSet dstt = oCn.RunProcReturn("exec h_p_WMS_GetOldBarCode " + HBillID.ToString() + ",'" + sBarCode + "' ", "h_p_WMS_GetOldBarCode");
                sRemark = sRemark + " ;销售出库和退库、领料出库时,如果条码档案找不到就从旧条码从获取并同步至本地" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                if (dstt == null || dstt.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "同步条码失败!";
@@ -26327,6 +26373,9 @@
                {
                    //获取TMP中的原单主内码和子内码 //判断该条码是否在原单列表中h_p_WMS_GetBarCodeSourceInterID
                    DataSet ds2 = oCn.RunProcReturn("exec h_p_WMS_GetBarCodeSourceInterID " + HBillID.ToString() + ",'" + sBarCode + "' ", "h_p_WMS_GetBarCodeSourceInterID");
                    sRemark = sRemark + " ;判断是否在源单中" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    if (ds2 == null || ds2.Tables[0].Rows.Count == 0)
                    {
                        sErrMsg = "扫描物料条码后有源单自动获取一行源单信息,未知错误!";
@@ -26422,6 +26471,9 @@
                        {
                            //根据仓库ID,判断是否启用仓位
                            DataSet ds3 = oCn.RunProcReturn(" select HSPFlag from Gy_Warehouse with(nolock) where HItemID= " + HWhID.ToString(), "Gy_Warehouse");
                            sRemark = sRemark + " ;出库判断仓库仓位是否已选择" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                            if (ds3 == null || ds3.Tables[0].Rows.Count == 0)
                            {
                                sErrMsg = "仓库内码错误!";
@@ -26440,7 +26492,6 @@
                        DAL.ClsKF_PonderationBillMain_Temp_View Tempdal = new DAL.ClsKF_PonderationBillMain_Temp_View();
                        if (Tempdal.CheckQtyByBarCode(HBillID, HBillType, sBarCode, ref HWhID, ref HSPID, sRelQty, ref sRelQty))
                        {
                        }
                        else
                        {
@@ -26454,12 +26505,16 @@
                                sErrMsg = "库存不足,已获取实际库存数量!";
                            }
                        }
                        sRemark = sRemark + " ;出库判断条码库存" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    }
                }
                else
                {
                    //判断并获取 仓库 仓位信息(降等品 找到 降等品库)
                    DataSet ds4 = oCn.RunProcReturn("exec h_p_WMS_GetBillWHID " + HBillID.ToString() + ",'" + HBillType + "','" + sBarCode + "'," + HWhID.ToString() + "," + HSPID.ToString(), "h_p_WMS_GetBillWHID");
                    sRemark = sRemark + " ;判断并获取 仓库 仓位信息(降等品 找到 降等品库)" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    if (ds4 == null || ds4.Tables[0].Rows.Count == 0)
                    {
                        sErrMsg = "判断并获取仓库仓位信息,未知错误!";
@@ -26488,6 +26543,8 @@
                        sErrMsg = sErrMsg;
                        return false;
                    }
                    sRemark = sRemark + " ;入库返回条码数量" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                }
            }
@@ -26548,6 +26605,9 @@
            //物料条码写入临时表时,判断仓库仓位是否正确
            DataSet ds5 = oCn.RunProcReturn("exec h_p_WMS_CheckWHandSP " + model.HWhID.ToString() + "," + model.HStockPlaceID.ToString(), "h_p_WMS_CheckWHandSP");
            sRemark = sRemark + " ;判断仓库仓位是否正确" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
            if (ds5 == null || ds5.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "扫描物料条码存入临时表时判断仓库仓位是否正确,未知错误!";
@@ -26572,6 +26632,9 @@
                sErrMsg = "扫描失败!" + sErrMsg;
                return false;
            }
            sRemark = sRemark + " ;写入缓存表" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
            LogService.Write("扫描物料条码" + sRemark);
            return true;
        }
@@ -27589,13 +27652,13 @@
            try
            {
                oCn.BeginTran();
                //oCn.BeginTran();
                //生成出门确认单
                DataSet Ds = oCn.RunProcReturn("exec h_p_Kf_SendConfirmationBill_Insert_New " + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "'", "h_p_Kf_SendConfirmationBill_Insert_New");
                if (Ds == null || Ds.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ",上传提交发出确认单,发生错误!";
                    oCn.RollBack();
                    //oCn.RollBack();
                    return false;
                }
                else
@@ -27603,13 +27666,13 @@
                    if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 1)
                    {
                        sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";" + DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
                        oCn.RollBack();
                        //oCn.RollBack();
                        return false;
                    }
                    else
                    {
                        sErrMsg = "新增单据成功!";
                        oCn.Commit();
                        //oCn.Commit();
                        return true;
                    }
                }
@@ -27617,7 +27680,7 @@
            catch (Exception e)
            {
                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ",生成发出确认单失败!" + e.Message;
                oCn.RollBack();
                //oCn.RollBack();
                return false;
            }
        }
DLL/DAL.dll
Binary files differ