111
cjs
4 天以前 c184121b9038aee1d8c9e3e49e45764521e58007
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs
@@ -681,49 +681,73 @@
                    if (sendERPTaskInfoList.Count == 5 || timeInfo.dateTime.AddHours(1) < DateTime.Now)
                    {
                        // 先根据任务批次号字段获取时间戳中间表-TimeCuoInfoCom 数据,并进行后续调用,处理成功删除时间戳中间表-TimeCuoInfoCom 数据
                        int count = sendERPTaskInfoList.Where(a => string.IsNullOrEmpty(a.orderCode) || a.orderCode.Length < 2 || a.orderCode.Substring(0, 2) != "MO").ToList().Count();
                        #region 计算单据编号
                        string FBillNO = "";
                        int num = 0;
                        string S_NUM = "";
                        string time = DateTime.Now.ToString("yyMMdd");
                        CMMLog.Info($"SendERPTaskCompleteFunc time:{time}");
                        var midInfo = db.Queryable<ADDMid>().Where(b => b.time == time).First();
                        if (midInfo != null)
                        {
                            midInfo.num = midInfo.num + 1;
                            num = midInfo.num;
                            db.Updateable(midInfo).UpdateColumns(b => new { b.num }).ExecuteCommand();
                        }
                        else
                        {
                            num = 1;
                            midInfo = new ADDMid
                            {
                                time = DateTime.Now.ToString("yyMMdd"),
                                num = 1
                            };
                            db.Insertable(midInfo).ExecuteCommand();
                        }
                        CMMLog.Info($"SendERPTaskCompleteFunc num: {num}");
                        for (int i = num.ToString().Length + 1; i <= 4; i++)
                        {
                            S_NUM = S_NUM + "0";
                        }
                        FBillNO = "ARKD" + DateTime.Now.ToString("yyMMdd") + S_NUM + num.ToString();
                        CMMLog.Info($"SendERPTaskCompleteFunc: {FBillNO}");
                        #endregion
                        int n = 0; //行号
                        int m = 0;
                        sendERPTaskInfoList.ForEach(a =>
                        {
                            n = n + 1;
                            #region 计算单据编号
                            string FBillNO = "";
                            int num = 0;
                            string S_NUM = "";
                            string time = DateTime.Now.ToString("yyMMdd");
                            CMMLog.Info($"SendERPTaskCompleteFunc time:{time}");
                            var midInfo = db.Queryable<ADDMid>().Where(b => b.time == time).First();
                            if (midInfo != null)
                            {
                                midInfo.num = midInfo.num + 1;
                                num = midInfo.num;
                                db.Updateable(midInfo).UpdateColumns(b => new { b.num }).ExecuteCommand();
                            }
                            else
                            {
                                num = 1;
                                midInfo = new ADDMid
                                {
                                    time = DateTime.Now.ToString("yyMMdd"),
                                    num = 1
                                };
                                db.Insertable(midInfo).ExecuteCommand();
                            }
                            CMMLog.Info($"SendERPTaskCompleteFunc num: {num}");
                            for (int i = num.ToString().Length + 1; i <= 4; i++)
                            {
                                S_NUM = S_NUM + "0";
                            }
                            FBillNO = "ARKD" + DateTime.Now.ToString("yyMMdd") + S_NUM + num.ToString();
                            CMMLog.Info($"SendERPTaskCompleteFunc: {FBillNO}");
                            #endregion
                            if(!string.IsNullOrEmpty(a.orderCode) && a.orderCode.Length >= 2 && a.orderCode.Substring(0,2) == "MO")
                            {
                                CMMLog.Info($"SendERPTaskCompleteFunc:INSERT INTO T_JY_PRDINSTOCKOP (FBillNO,FSourceBillNo,FEntryID,FSEQ,FQTY,FStockNumber,FLot,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','{a.orderCode}','{a.FEntryID}','1','{a.totalNeedWeight}','CK020','{a.lotCode}','{a.productTime}','{a.invalidationTime}','{a.taskNo}','1','0')");
                                string sql = $"INSERT INTO T_JY_PRDINSTOCKOP (FBillNO,FSourceBillNo,FEntryID,FSEQ,FQTY,FStockNumber,FLot,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','{a.orderCode}','{a.FEntryID}','1','{a.totalNeedWeight}','CK020','{a.lotCode}','{a.productTime}','{a.invalidationTime}','{a.taskNo}','1','0')";
                                m = m + 1;
                                if(m > 1)
                                {
                                    //2025-07-14 插入新表的单据编号,一条一个单据编号
                                    #region 计算单据编号
                                    S_NUM = "";
                                    midInfo = db.Queryable<ADDMid>().Where(b => b.time == time).First();
                                    if (midInfo != null)
                                    {
                                        midInfo.num = midInfo.num + 1;
                                        num = midInfo.num;
                                        db.Updateable(midInfo).UpdateColumns(b => new { b.num }).ExecuteCommand();
                                    }
                                    CMMLog.Info($"SendERPTaskCompleteFunc num: {num}");
                                    for (int i = num.ToString().Length + 1; i <= 4; i++)
                                    {
                                        S_NUM = S_NUM + "0";
                                    }
                                    FBillNO = "ARKD" + DateTime.Now.ToString("yyMMdd") + S_NUM + num.ToString();
                                    CMMLog.Info($"SendERPTaskCompleteFunc: {FBillNO}");
                                    #endregion
                                }
                                CMMLog.Info($"SendERPTaskCompleteFunc:INSERT INTO T_JY_PRDINSTOCKOP (FBillNO,FSourceBillNo,FEntryID,FSEQ,FQTY,FStockNumber,FLot,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','{a.orderCode}','{a.FEntryID}','{1}','{a.totalNeedWeight}','CK020','{a.lotCode}','{a.productTime}','{a.invalidationTime}','{a.taskNo}','{1}','0')");
                                string sql = $"INSERT INTO T_JY_PRDINSTOCKOP (FBillNO,FSourceBillNo,FEntryID,FSEQ,FQTY,FStockNumber,FLot,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','{a.orderCode}','{a.FEntryID}','{1}','{a.totalNeedWeight}','CK020','{a.lotCode}','{a.productTime}','{a.invalidationTime}','{a.taskNo}','{1}','0')";
                                if (new SqlHelper<object>().ExecuteSql(sql, false))
                                {
                                    #region 反馈信息给mes 对接文档 https://365.kdocs.cn/l/cltzoEaznLco
@@ -758,7 +782,7 @@
                                else
                                {
                                    //插入失败,将数据插入新表,人工手动处理,重新插入
                                    MongoDBSingleton.Instance.Insert<SendErpTaskInfoTableBak>(new SendErpTaskInfoTableBak
                                    MongoDBSingleton.Instance.Insert<SendErpTaskInfoTableBak>(new SendErpTaskInfoTableBak
                                    {
                                        orderCode = a.orderCode,
                                        FEntryID = a.FEntryID,
@@ -772,8 +796,9 @@
                            }
                            else
                            {
                                CMMLog.Info($"SendERPTaskCompleteFunc:INSERT INTO T_JY_SPInStockADD (FBillNO,FStockOrgNumber,FPrdOrgNumber,FSeq,FMaterialNumber,Flot,FInStockType,FMustQty,FStockNumber,FWorkShopNumber,FStockStatus,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','02','02','{n}','{a.materiCode}','{a.lotCode}','1','{a.totalWeight}','CK020','BM000161','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}',{sendERPTaskInfoList.Count},'0')");
                                string sql = $"INSERT INTO T_JY_SPInStockADD (FBillNO,FStockOrgNumber,FPrdOrgNumber,FSeq,FMaterialNumber,Flot,FInStockType,FMustQty,FStockNumber,FWorkShopNumber,FStockStatus,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','02','02','{n}','{a.materiCode}','{a.lotCode}','1','{a.totalWeight}','CK020','BM000161','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}',{sendERPTaskInfoList.Count},'0')";
                                n = n + 1;
                                CMMLog.Info($"SendERPTaskCompleteFunc:INSERT INTO T_JY_SPInStockADD (FBillNO,FStockOrgNumber,FPrdOrgNumber,FSeq,FMaterialNumber,Flot,FInStockType,FMustQty,FStockNumber,FWorkShopNumber,FStockStatus,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','02','02','{n}','{a.materiCode}','{a.lotCode}','1','{a.totalWeight}','CK020','BM000161','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}','{count}','0')");
                                string sql = $"INSERT INTO T_JY_SPInStockADD (FBillNO,FStockOrgNumber,FPrdOrgNumber,FSeq,FMaterialNumber,Flot,FInStockType,FMustQty,FStockNumber,FWorkShopNumber,FStockStatus,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','02','02','{n}','{a.materiCode}','{a.lotCode}','1','{a.totalWeight}','CK020','BM000161','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}','{count}','0')";
                                if(new SqlHelper<object>().ExecuteSql(sql, false))
                                {
                                }