예제 #1
0
        public static void Test()
        {
            var         s   = FrameDLRObject.IsJsonArrayThen(@"[{
  ""Name"":""3"",
  ""Value"":""3""
}]");
            var         xml = @"<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName>
<FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName>
<CreateTime>1408090651</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[pic_sysphoto]]></Event>
<EventKey><![CDATA[6]]></EventKey>
<SendPicsInfo><Count>1</Count>
<PicList><item><PicMd5Sum><![CDATA[1b5f7c23b5bf75682a53e7b6d163e185]]></PicMd5Sum>
</item>
</PicList>
</SendPicsInfo>
</xml>";
            XmlDocument doc = new XmlDocument();

            doc.XmlResolver = null;
            doc.LoadXml(xml);
            var root = doc.FirstChild;
            var f    = FrameDLRObject.CreateInstance(xml, EFFC.Frame.Net.Base.Constants.FrameDLRFlags.SensitiveCase);
            //var services = new ServiceCollection();
            //services.AddNodeServices(options => {
            //    options.LaunchWithDebugging = false;
            //    options.ProjectPath = Path.Combine(ComFunc.GetProjectRoot(), "js");
            //});
            //var serviceProvider = services.BuildServiceProvider();
            //var nodeServices = serviceProvider.GetRequiredService<INodeServices>();
            //for (int i = 0; i < 1; i++)
            //{
            //    var dobj = FrameDLRObject.CreateInstance();
            //    dobj.id = "1100";
            //    var cc = new ConsoleL();
            //    var result = nodeServices.InvokeAsync<string>("addNumbers.js", cc).Result;
            //    Console.WriteLine(result);
            //}
        }
예제 #2
0
        object Use()
        {
            var items   = ComFunc.UrlDecode(ComFunc.nvl(PostDataD.items));
            var jsonstr = ComFunc.IsBase64Then(items);

            object[] parray = FrameDLRObject.IsJsonArrayThen(jsonstr);
            if (!IsValidBy("参数格式不正确", () =>
            {
                var rtn = jsonstr != "" && parray != null;
                if (rtn)
                {
                    foreach (dynamic item in parray)
                    {
                        if (ComFunc.nvl(item.hw_contract_no) != "" && ComFunc.nvl(item.prod_code_sale) != "" && IntStd.IsInt(item.quantity))
                        {
                            rtn = rtn && true;
                        }
                        else
                        {
                            rtn = rtn && false;
                        }
                    }
                }

                return(rtn);
            }))
            {
                return(null);
            }
            var merge_parray = new Dictionary <string, int>();

            foreach (dynamic pitem in parray)
            {
                var key = $"{pitem.hw_contract_no}|{pitem.prod_code_sale}";
                if (merge_parray.ContainsKey(key))
                {
                    merge_parray[key] += IntStd.ParseStd(pitem.quantity).Value;
                }
                else
                {
                    merge_parray[key] = IntStd.ParseStd(pitem.quantity).Value;
                }
            }

            lock (lockobj)
            {
                var up = DB.NewDBUnitParameter();
                BeginTrans();
                var rtnlist = new List <object>();
                foreach (var pitem in merge_parray)
                {
                    var splitstr       = pitem.Key.Split("|");
                    var hw_contract_no = splitstr[0];
                    var prod_code_sale = splitstr[1];
                    var s = from t in DB.LamdaTable("hw_po", "a")
                            join t2 in DB.LamdaTable("hw_po_line", "b") on t.hw_contract_no equals t2.hw_contract_no
                            where t2.prod_code_sale == prod_code_sale && t2.hw_contract_no == hw_contract_no
                            select t2;

                    var result = DB.ExcuteLamda(up, s);


                    if (!IsValidBy("资料无效或参数无效", () => result.QueryTable.RowLength > 0))
                    {
                        return(null);
                    }
                    dynamic item = result.QueryData <FrameDLRObject>()[0];
                    if (!IsValidBy("核销数量不正确", () => IntStd.IsNotIntThen(item.freeze_quantity) >= pitem.Value))
                    {
                        //RollBack();
                        return(null);
                    }
                    DB.QuickUpdate(up, "hw_po_line", new
                    {
                        freeze_quantity = IntStd.IsNotIntThen(item.freeze_quantity) - pitem.Value,
                        used_quantity   = IntStd.IsNotIntThen(item.used_quantity) + pitem.Value
                    }, new
                    {
                        hw_contract_no = item.hw_contract_no,
                        po_line_no     = item.po_line_no
                    });
                }
                CommitTrans();

                return("success");
            }
        }