chenhaozhe
4 天以前 519315a21c6290455e4ea2b9a04d6bc51568a862
WebAPI/Controllers/²Ö´æ¹ÜÀí/ÌõÂëÉú³É/Sc_BarCodeController.cs
@@ -6,9 +6,11 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using WebAPI.Models;
@@ -525,6 +527,8 @@
            }
            return ordrlist;
        }
        public object HSourceOrderList1(DataTable dt, HSouceOrderList ordrlist, string HBarCodeType,string HSourceBillType)
        {
@@ -1243,7 +1247,7 @@
                            else
                            {
                                //条码规则:物料内码@MTO@批次号@数量
                                TM = HNumber + "@" + sHMTONo + "@" + HBatchNo + "@" + sHQty;
                                TM = HNumber + "@" + sHMTONo.Replace(" ","") + "@" + HBatchNo.Replace(" ","") + "@" + sHQty;
                            }
                        }
@@ -1647,9 +1651,11 @@
                        ",@HFactory = N'" + HFactory + "'" +
                        ",@HCoilNO = N'" + HCoilNO + "'" +
                        ",@HFurnaceNO = N'" + HFurnaceNO + "'" +
                        ",@HInnerBillNo = N'" + ordrlist[0].HSourceBillNo + "'"
                        ",@HInnerBillNo = N'" + ordrlist[0].HInnerBillNo + "'" +
                        ",@HSourceBillType = N'" + ordrlist[0].HBillType + "'" +
                        ",@HStockOrg = N'" + HOrgType + "'" +
                        ",@HInterID = N'" + ordrlist[0].HInterID + "'"
                        , "h_p_SC_BarCode_Transfer");
                    if((bool)ds1.Tables[0].Rows[0]["returntype"] == true)
                    {
                        objJsonResult.code = "1";
@@ -1671,6 +1677,221 @@
                return objJsonResult;
            }
            return objJsonResult;
        }
        #endregion
        #region æ¡ç è½¬å­˜æ¡ç ä¸»æ¡£(批量)
        /// <summary>
        /// æ¡ç è½¬å­˜æ¡ç ä¸»æ¡£(批量)
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        [Route("Sc_BarCode/SaveBarCode_NoGenerate_Batch")]
        [HttpPost]
        public object SaveBarCode_NoGenerate_Batch([FromBody] JObject msg)
        {
            try
            {
                var _value = msg["msg"].ToString();
                string msg1 = _value.ToString();
                string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.None);
                string msg2 = sArray[0].ToString();
                string HOrgType = sArray[1].ToString();
                string HSourceBillTypeName = sArray[2].ToString();
                string HSelectBarCodeType = sArray[3].ToString();
                string CampanyName = sArray[4].ToString() == "xxx" ? "" : sArray[4].ToString();
                string UserName = sArray[5].ToString();
                string barCodeNoStrs = sArray[6].ToString(); // è¿™é‡Œçš„æ¡ç æ˜¯ä¸Žæäº¤çš„单据序列对应的条码数组
                string HFactory = sArray[7].ToString();
                string HCoilNO = sArray[8].ToString();
                string HFurnaceNO = sArray[9].ToString();
                ClsPub.CurUserName = UserName;
                //获取内码
                HInterID = DBUtility.ClsPub.CreateBillID_Prod(ModName, ref DBUtility.ClsPub.sExeReturnInfo);
                DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
                HOrgNumber = "";
                if (oClsGy_ORGANIZATIONS_View.GetInfoByName(HOrgType))
                {
                    HOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
                    HOrgNumber = DBUtility.ClsPub.isStrNull(oClsGy_ORGANIZATIONS_View.omodel.HNumber);
                }
                if (HOrgID == -1)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "[0000-2-055]选择组织有错误!";
                    return objJsonResult;
                }
                if (!Sub_AllowSave(msg2, HSelectBarCodeType))//单据完整性判断
                {
                    return objJsonResult;
                }
                if (HSelectBarCodeType == "仪器成品条码规则")
                {
                    //客户定制
                }
                else
                {
                    string HBarCodeType = ClsPub.isStrNull(HSelectBarCodeType);
                    // æ¡ç è½¬å­˜
                    msg2 = msg2.Replace("\\", "");
                    msg2 = msg2.Replace("\n", "");  //\n
                    List<HSouceOrderList> ordrlist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HSouceOrderList>>(msg2);
                    List<string> barcodeList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(barCodeNoStrs);
                    // TODO é€šè¿‡InterID å’Œ EntryID ä»Žæ¡ç æ¡£æ¡ˆä¸­æŸ¥è¯¢æ˜¯å¦æœ‰å·²ç”Ÿæˆçš„单据 é‡æ–°å†™ä¸€ä¸ªå­˜å‚¨è¿‡ç¨‹ï¼Œå½“已存在对应的条码单据时,返回条码主档中的条码档案
                    DataSet dsCache = oCN.RunProcReturn($@"select * from h_v_IF_BarCodeBillList a
                                                    Inner Join Gy_BarCodeBill b on a.HItemID = b.HItemID
                                                    where b.HSourceINterID = { ordrlist[0].HMainID } and b.HSourceEntryID = {ordrlist[0].HSubID}"
                                                        , "h_v_IF_BarCodeBillList");
                    if(dsCache.Tables[0].Rows.Count > 0)
                    {
                        objJsonResult.code = "2";
                        objJsonResult.count = 1;
                        objJsonResult.data = dsCache.Tables[0];
                        objJsonResult.Message = "条码已存在!";
                        return objJsonResult;
                    }
                    DataSet ds1 = new DataSet();
                    for(int i=0; i<ordrlist.Count; i++)
                    {
                        long HSourceInterID = string.IsNullOrEmpty(ordrlist[i].HMainID) == true ? 0 : ClsPub.isLong(ordrlist[0].HMainID);
                        long HSourceEntryID = string.IsNullOrEmpty(ordrlist[i].HSubID) == true ? 0 : ClsPub.isLong(ordrlist[0].HSubID);
                        ds1 = oCN.RunProcReturn("exec h_p_SC_BarCode_Transfer " +
                        "@HBarCodeNo = N'" + barcodeList[i] + "'" +
                        ",@HSubID = " + ordrlist[i].HSubID +
                        ",@HMaterID = " + ordrlist[i].HMaterID +
                        ",@HGiveAwayFlag = " + ordrlist[i].HGiveAwayFlag +
                        ",@HQty = " + ordrlist[i].HQty +
                        ",@HUnitID = " + ordrlist[i].HUnitID +
                        ",@HMinQty = " + ordrlist[i].HMinQty +
                        ",@HSupID = " + ordrlist[i].HSupID +
                        ",@HBatchNo = N'" + ordrlist[i].HBatchNo + "'" +
                        ",@HMTONO = N'" + ordrlist[i].HMTONo + "'" +
                        ",@HBarCodeDate = N'" + ordrlist[i].HDate + "'" +
                        ",@HEmpID = " + ordrlist[i].HEmpID +
                        ",@HSourceInterID = " + HSourceInterID +
                        ",@HSourceEntryID = " + HSourceEntryID +
                        ",@HBarCodeType = N'" + HBarCodeType + "'" +
                        ",@HSourceBillNo = N'" + ordrlist[i].HSourceBillNo + "'" +
                        ",@HMaker = N'" + ordrlist[i].HMaker + "'" +
                        ",@HFactory = N'" + HFactory + "'" +
                        ",@HCoilNO = N'" + HCoilNO + "'" +
                        ",@HFurnaceNO = N'" + HFurnaceNO + "'" +
                        ",@HInnerBillNo = N'" + ordrlist[i].HInnerBillNo + "'" +
                        ",@HSourceBillType = N'" + ordrlist[i].HBillType + "'" +
                        ",@HStockOrg = N'" + HOrgType + "'" +
                        ",@HInterID = " + ordrlist[i].HInterID
                        , "h_p_SC_BarCode_Transfer");
                        if ((bool)ds1.Tables[0].Rows[0]["returntype"] == false)
                        {
                            throw new Exception(ds1.Tables[0].Rows[0]["mesg"].ToString());
                        }
                    }
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = ds1.Tables[0].Rows[0]["mesg"].ToString();
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "[3899-2-006]条码生成失败!" + e.Message;
                return objJsonResult;
            }
            return objJsonResult;
        }
        #endregion
        #region [获取标签打印指令 CPCL指令]
        [Route("Sc_BarCode/Get_BarCodePrintCode_CPCL")]
        [HttpGet]
        public object Get_BarCodePrintCode_CPCL(string HOrginationName, int HBillInterID, int HBillEntryID, string HViewName, string HBillSubType, int HInterID)
        {
            try
            {
                ds = oCN.RunProcReturn("exec h_p_getHBarCodePrintCode_CPCL N'" + HOrginationName + "'" +
                    "," + HBillInterID + "," + HBillEntryID + ",N'" + HViewName + "',N'" + HBillSubType + "'," + HInterID, "h_p_getHBarCodePrintCode_CPCL");
                if((int)ds.Tables[0].Rows[0]["resultType"] == 1)
                {
                    string resultMesg = ds.Tables[0].Rows[0]["payload"].ToString().Replace("\\r\\n", "\r\n");
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = resultMesg;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "打印指令获取失败!" + ds.Tables[0].Rows[0]["payload"];
                    return objJsonResult;
                }
            }
            catch(Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "打印指令获取失败!" + e.Message;
                return objJsonResult;
            }
        }
        #endregion
        #region [APP èŽ·å–æ‰“å°æ¨¡æ¿]
        public class PrintTemplate
        {
            public int Id { get; }
            public string OrgShort { get; }
            public string HBillSubtype { get; }
            public string Format { get; }
            public string Description { get; }
            public string[] Placeholder { get; }
        }
        [Route("Sc_BarCode/Get_BarCodeGenTemplate")]
        [HttpGet]
        public object Get_BarCodeGenTemplate(string HOrginationName, string HBillSubType)
        {
            try
            {
                string filePath = HttpContext.Current.Server.MapPath("~/Template");
                string fileFullPath = Path.Combine(filePath, "barCodeTemplateStorage.json");
                if (!File.Exists(fileFullPath))
                {
                    throw new Exception($"模板文件不存在:{fileFullPath}");
                }
                string jsonContent = File.ReadAllText(fileFullPath);
                var templates = JsonConvert.DeserializeObject<PrintTemplate[]>(jsonContent);
                var targetTemplate = templates.FirstOrDefault<PrintTemplate>(t => HOrginationName.Contains(t.OrgShort) && string.Equals(t.HBillSubtype, HBillSubType));
                if (targetTemplate != null)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.data = JsonConvert.SerializeObject(targetTemplate);
                    return objJsonResult;
                }
                else
                {
                    throw new Exception($"没有找到对应的模板");
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "打印模板获取失败!" + e.Message;
                return objJsonResult;
            }
        }
        #endregion
@@ -2176,6 +2397,9 @@
                //增加 æ¡ç è¶…过未生成功能控制
                //
                //自动装箱
                string sql_autoForBoxBill = "exec h_v_Gy_BarCode_AutoProductBarCodeBox " + HInterID.ToString();
                oCN.RunProc(sql_autoForBoxBill);
                oCN.Commit();
                List<Object> listobj = ListRows.ConvertAll(s => (object)s);//List实体类转换为object