智云SRM-WEBAPI(目前客户通用API)
王 垚
2021-11-10 57075ea00cb37247163984ecbc08edc8f2e0c4fe
nothing
1个文件已修改
359 ■■■■■ 已修改文件
WebAPI/Controllers/BarCodeController.cs 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/BarCodeController.cs
@@ -575,6 +575,7 @@
                LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                foreach (Model.ClsGy_MaterialList_WMS_Model oItemSub in ls)
                {
                    LogService.Write("model初始化:" + oItemSub.HKFDate);
                    if (ClsPub.isLong(oItemSub.HMaterID) != 0)
                    {
                        HNumber = oItemSub.HMaterID.ToString();
@@ -772,7 +773,7 @@
                        HUnitID = ClsPub.isLong(oItemSub.HUnitID);
                        HQty2 = ClsPub.isDoule(oItemSub.HQty);
                        HBatchNo = ClsPub.isStrNull(oItemSub.HBatchNo);
                        HSupID =oItemSub.HSupID;
                        HSupID = oItemSub.HSupID;
                        LogService.Write("HSupID:" + oItemSub.HSupID);
                        HKFPeriod = ClsPub.isInt(oItemSub.HKFPeriod);
                        HKFDate = ClsPub.isStrNull(oItemSub.HKFDate);
@@ -1176,7 +1177,7 @@
        }
        #region 采购订单条码生成功能(安瑞)
        [Route("GetHBarCodeShowBillMainBycg")]
        /// <summary>
        /// 条码生成表头(采购订单)
@@ -1282,5 +1283,359 @@
            }
        }
        [Route("GetBarcodeSaveBillBoxBycg")]
        [HttpPost]
        /// <summary>
        /// 采购订单 生成条码 内外箱
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="msg2"></param>
        /// <returns></returns>
        public object GetBarcodeSaveBillBoxBycg([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string UserName = "";
            ListModels oListModels = new ListModels();
            try
            {
                List<Model.ClsCg_POInStockBillMain> lsmain = new List<Model.ClsCg_POInStockBillMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                lsmain = oListModels.getObjectByJson_POInStockMain(msg2);
                foreach (Model.ClsCg_POInStockBillMain oItem in lsmain)
                {
                    UserName = oItem.HMaker;
                }
                DAL.ClsWeb_BarCodeBill oBill = new DAL.ClsWeb_BarCodeBill();
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                List<Model.ClsGy_MaterialList_WMS_Model> ls = new List<Model.ClsGy_MaterialList_WMS_Model>();
                List<Model.ClsGy_BarCodeBill_WMS_Model> ls2 = new List<Model.ClsGy_BarCodeBill_WMS_Model>();
                List<Model.ClsGy_BarCodeBill_WMS_Model> ls3 = new List<Model.ClsGy_BarCodeBill_WMS_Model>();
                ls = oListModels.getObjectByJson_MaterialList(msg3);
                foreach (Model.ClsGy_MaterialList_WMS_Model oItemSub in ls)
                {
                    if (oBill.CheckBarCode(oItemSub.HSourceInterID, oItemSub.HSourceEntryID) == false)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "已存在条码,不允许重复生成!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (msg2 != string.Empty)
                    {
                        if (oItemSub.HBQty == 0 || oItemSub.HMinQty == 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "内箱包装数不能为0!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        if (oItemSub.HWBQty == 0 || oItemSub.HWXQty == 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "外箱包装数不能为0!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                long linterid = Pub_Class.ClsPub.CreateBillID_SRMProd("8888", ref DBUtility.ClsPub.sExeReturnInfo);
                int LSHlen = 6;             //流水号长度
                int SumLen = 10;            //总长度
                string TM = "";             //条码
                string HNumber = "";        //物料代码
                double HSumQty = 0;         //产品数量
                double HMinQty = 0;         //最小包装数
                int HBQty = 0;              //箱数
                double HQty = 0;            //数量
                int LSH = 0;                //流水号
                string LSH2 = "";           //流水号转换成字符
                string sDate = "";            //日期
                string sYear = "";          //年
                string sPeriod = "";        //月
                string sDay = "";            //日
                string WeiShu = ""; //尾数
                DataSet Ds;
                SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
                Ds = oCn.RunProcReturn("exec GetLSH '" + DateTime.Today + "'", "GetLSH");
                LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                foreach (Model.ClsGy_MaterialList_WMS_Model oItemSub in ls)
                {
                    if (ClsPub.isLong(oItemSub.HMaterID) != 0)
                    {
                        HNumber = oItemSub.HMaterID.ToString();
                        //HNumber = HNumber.Replace(".", "");
                        //
                        //HQty = Math.Ceiling(HBQty + ClsPub.isDoule(oItemSub.HWBQty));
                        HQty = ClsPub.isDoule(oItemSub.HWBQty);
                        HBQty = ClsPub.isInt(oItemSub.HWBQty);//内箱数量
                        HMinQty = ClsPub.isDoule(oItemSub.HWXQty);//外箱包装数
                        HSumQty = ClsPub.isDoule(oItemSub.HQty);  //HWXQtyCol
                        for (int i = 0; i < HBQty; i++)
                        {
                            LSH = LSH + 1;
                            LSH2 = LSH.ToString();
                            while (LSH2.Length < LSHlen)  //如果流水号小于6位数前面补0
                            {
                                LSH2 = "0" + LSH2;
                            }
                            sDate = ClsPub.GetServerDate(0);
                            sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                            sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                            sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                            sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                            sDay = sDay.Substring(sDay.Length - 2, 2);
                            //==================================
                            TM = HNumber + sYear + sPeriod + sDay + LSH2;
                            while (TM.Length < SumLen)  //如果条码小于12位数前面补0
                            {
                                TM = "0" + TM;
                            }
                            //TM = "B" + TM;
                            TM = "SRM" + "B" + TM;
                            if (HSumQty - HMinQty > 0)
                            {
                                WeiShu = "";
                                HSumQty = HSumQty - HMinQty;
                            }
                            else
                            {
                                if (HSumQty == HMinQty)
                                {
                                    WeiShu = "";
                                }
                                else
                                {
                                    WeiShu = "尾数";
                                }
                                HMinQty = HSumQty;
                            }
                            Model.ClsGy_BarCodeBill_WMS_Model bar = new Model.ClsGy_BarCodeBill_WMS_Model();
                            bar.HBarCode = TM;
                            bar.HMaterID = oItemSub.HMaterID;
                            //bar.HMaterNumber = oItemSub.HMaterNumber;
                            //bar.HMaterName = oItemSub.HMaterName;
                            //bar.HMaterModel = oItemSub.HMaterModel;
                            //  bar.HModel2 = oItemSub.HModel;
                            bar.HUnitID = oItemSub.HUnitID;
                            //bar.HUnitNumber2 = oItemSub.HUnitNumber;
                            //bar.HUnitName2 = oItemSub.HUnitName;
                            bar.HQty = HMinQty;
                            bar.HBatchNo = oItemSub.HBatchNo;
                            bar.HKFDate = oItemSub.HKFDate;
                            bar.HKFPeriod = oItemSub.HKFPeriod;
                            bar.HKFDQDate = oItemSub.HKFDQDate;
                            bar.HSourceInterID = oItemSub.HSourceInterID;
                            bar.HSourceEntryID = oItemSub.HSourceEntryID;
                            bar.HSourceBillNo = oItemSub.HSourceBillNo;
                            bar.HSourceBillType = oItemSub.HSourceBillType;
                            bar.HMinQty = oItemSub.HMinQty;
                            bar.HSupID = oItemSub.HSupID;
                            bar.HEndQty = WeiShu;
                            bar.HMTONO = oItemSub.HMTONO;
                            ls2.Add(bar);
                        }
                    }
                }
                foreach (Model.ClsGy_BarCodeBill_WMS_Model oItemSub2 in ls2)
                {
                    if (ClsPub.isLong(oItemSub2.HMaterID) != 0)
                    {
                        long sMaterID = ClsPub.isLong(oItemSub2.HMaterID);
                        Ds = oCn.RunProcReturn("exec GetLSH " + sMaterID.ToString(), "GetLSH");
                        string WeiShu1 = ""; //尾数
                        int SumLen2 = 4;
                        string TM2 = "";
                        double HWXQty = 0;
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]) + 1;
                        //
                        HNumber = oItemSub2.HMaterID.ToString();
                        //HMinQty = ClsPub.isDoule(oItemSub2.HMinQtyCol2].Value);
                        HWXQty = ClsPub.isDoule(oItemSub2.HMinQty);
                        HSumQty = ClsPub.isDoule(oItemSub2.HQty);
                        HBQty = ClsPub.isInt(Math.Ceiling(HSumQty / HWXQty));
                        double NXTMQTY = 0;
                        for (int i = 0; i < HBQty; i++)
                        {
                            if (HSumQty <= 0 || HWXQty <= 0)
                            {
                                break;
                            }
                            if (HSumQty - HWXQty > 0)
                            {
                                WeiShu1 = "";
                                NXTMQTY = HWXQty;
                                HSumQty = HSumQty - HWXQty;
                            }
                            else
                            {
                                if (HSumQty == HWXQty)
                                {
                                    WeiShu1 = "";
                                }
                                else
                                {
                                    WeiShu1 = "尾数";
                                }
                                NXTMQTY = HSumQty;  //HWXQty
                                HWXQty = HSumQty;
                                HSumQty = 0;
                            }
                            sDate = ClsPub.GetServerDate(0);
                            sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                            sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                            sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                            sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                            sDay = sDay.Substring(sDay.Length - 2, 2);
                            //
                            //   TM = HNumber + sYear + sPeriod + sDay; //条码
                            //
                            Model.ClsGy_BarCodeBill_WMS_Model bar2 = new Model.ClsGy_BarCodeBill_WMS_Model();
                            TM2 = (i + 1).ToString();
                            while (TM2.Length < SumLen2)  //如果条码小于12位数前面补0
                            {
                                TM2 = "0" + TM2;
                            }
                            bar2.HMaterID = oItemSub2.HMaterID;
                            bar2.HBarCode = oItemSub2.HBarCode + "-" + TM2;
                            bar2.HUnitID = oItemSub2.HUnitID;
                            bar2.HQty = HWXQty;
                            bar2.HBatchNo = DBUtility.ClsPub.isStrNull(oItemSub2.HBatchNo);
                            bar2.HKFDate = DBUtility.ClsPub.isStrNull(oItemSub2.HKFDate);
                            bar2.HKFDQDate = DBUtility.ClsPub.isStrNull(oItemSub2.HKFDQDate);
                            bar2.HKFPeriod = DBUtility.ClsPub.isInt(oItemSub2.HKFPeriod);
                            bar2.HSourceInterID = oItemSub2.HSourceInterID;
                            bar2.HSourceEntryID = oItemSub2.HSourceEntryID;
                            bar2.HSourceBillNo = oItemSub2.HSourceBillNo;
                            bar2.HSourceBillType = oItemSub2.HSourceBillType;
                            bar2.HSupID = oItemSub2.HSupID;
                            bar2.HEndQty = WeiShu1;
                            bar2.HMTONO = oItemSub2.HMTONO;
                            ls3.Add(bar2);
                        }
                    }
                }
                string HBarCode = "";
                string HBarCodeType = "";
                Int64 HMaterID = 0;
                Int64 HUnitID = 0;
                double HQty2 = 0;
                string HBatchNo = "";
                Int64 HSupID = 0;
                Int64 HGroupID = 0;
                int HPrintQty = 0;
                Int64 HSourceInterID = 0;
                Int64 HSourceEntryID = 0;
                string HSourceBillNo = "";
                string HSourceBillType = "";
                Int64 HKFPeriod = 0;
                string HKFDate = "";
                string HKFDQDate = "";
                string HWei = "";
                string HMTONO = "";
                oCn.BeginTran();
                foreach (Model.ClsGy_BarCodeBill_WMS_Model oItemSub in ls2)
                {
                    if (ClsPub.isLong(oItemSub.HMaterID) != 0)
                    {
                        HBarCode = oItemSub.HBarCode.ToString();
                        HMTONO = ClsPub.isStrNull(oItemSub.HMTONO);
                        HBarCodeType = "箱号条码";
                        HMaterID = ClsPub.isLong(oItemSub.HMaterID);
                        HUnitID = ClsPub.isLong(oItemSub.HUnitID);
                        HQty2 = ClsPub.isDoule(oItemSub.HQty);
                        HBatchNo = ClsPub.isStrNull(oItemSub.HBatchNo);
                        HSupID = oItemSub.HSupID;
                        HKFPeriod = ClsPub.isInt(oItemSub.HKFPeriod);
                        HKFDate = ClsPub.isStrNull(oItemSub.HKFDate);
                        HKFDQDate = ClsPub.isStrNull(oItemSub.HKFDQDate);
                        HSourceInterID = ClsPub.isLong(oItemSub.HSourceInterID);
                        HSourceEntryID = ClsPub.isLong(oItemSub.HSourceEntryID);
                        HSourceBillNo = ClsPub.isStrNull(oItemSub.HSourceBillNo);
                        HSourceBillType = ClsPub.isStrNull(oItemSub.HSourceBillType);
                        HWei = ClsPub.isStrNull(oItemSub.HEndQty);
                        oCn.RunProc("insert into Gy_BarCodeBill (HInterID,HBarCode,HBarCodeType,HMaterID,HUnitID,HQty,HKFDate,HKFPeriod,HKFDQDate" +
                                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HEndQty,HSupflag" +
                                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HMTONO " +
                                    ") values ("
                                    + linterid.ToString() + ",'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID + "," + HUnitID + "," + HQty2 + ",'" + HKFDate + "'," + HKFPeriod + ",'" + HKFDQDate
                                    + "','" + HBatchNo + "'," + HSupID + "," + HGroupID + ",'" + ClsPub.CurUserName + "','" + DateTime.Today + "'," + HPrintQty + ",'" + HWei + "',1"
                                    + "," + HSourceInterID + "," + HSourceEntryID + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HMTONO + "')");
                        oCn.RunProc("exec setLSH '" + DateTime.Today + "'");
                    }
                }
                foreach (Model.ClsGy_BarCodeBill_WMS_Model oItemSub in ls3)
                {
                    if (ClsPub.isLong(oItemSub.HMaterID) != 0)
                    {
                        HBarCode = oItemSub.HBarCode.ToString();
                        HMTONO = ClsPub.isStrNull(oItemSub.HMTONO);
                        HBarCodeType = "箱号内条码";
                        HMaterID = ClsPub.isLong(oItemSub.HMaterID);
                        HUnitID = ClsPub.isLong(oItemSub.HUnitID);
                        HQty2 = ClsPub.isDoule(oItemSub.HQty);
                        HBatchNo = ClsPub.isStrNull(oItemSub.HBatchNo);
                        HSupID = oItemSub.HSupID;
                        HKFPeriod = ClsPub.isInt(oItemSub.HKFPeriod);
                        HKFDate = ClsPub.isStrNull(oItemSub.HKFDate);
                        HKFDQDate = ClsPub.isStrNull(oItemSub.HKFDQDate);
                        HSourceInterID = ClsPub.isLong(oItemSub.HSourceInterID);
                        HSourceEntryID = ClsPub.isLong(oItemSub.HSourceEntryID);
                        HSourceBillNo = ClsPub.isStrNull(oItemSub.HSourceBillNo);
                        HSourceBillType = ClsPub.isStrNull(oItemSub.HSourceBillType);
                        HWei = ClsPub.isStrNull(oItemSub.HEndQty);
                        oCn.RunProc("insert into Gy_BarCodeBill (HInterID,HBarCode,HBarCodeType,HMaterID,HUnitID,HQty,HKFDate,HKFPeriod,HKFDQDate" +
                                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HEndQty,HSupflag" +
                                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HMTONO " +
                                    ") values ("
                                    + linterid.ToString() + ",'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID + "," + HUnitID + "," + HQty2 + ",'" + HKFDate + "'," + HKFPeriod + ",'" + HKFDQDate
                                    + "','" + HBatchNo + "'," + HSupID + "," + HGroupID + ",'" + ClsPub.CurUserName + "','" + DateTime.Today + "'," + HPrintQty + ",'" + HWei + "',1"
                                    + "," + HSourceInterID + "," + HSourceEntryID + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HMTONO + "')");
                    }
                }
                //暂时只回填关联数量
                oCn.RunProc("exec H_p_SRM_BarCodeBill_Update_UpdateBillRelateData " + linterid.ToString());
                oCn.Commit();
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "" + e.Message + DBUtility.ClsPub.sExeReturnInfo;
                objJsonResult.data = null;
                return objJsonResult;
            }
            objJsonResult.code = "0";
            objJsonResult.count = 1;
            objJsonResult.Message = "生成条码成功!";
            WebAPIController.Add_Log("条码下推", UserName, "生成条码");
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
    }
}