duhe
2025-04-28 b7f144bf5256d986762b27a07a7531f7679c52ce
三升:小诸葛接口
5个文件已修改
1386 ■■■■■ 已修改文件
LMES/Program.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LMES/XiaoZhuGe_autoGetData.Designer.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LMES/XiaoZhuGe_autoGetData.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LMES/XiaoZhuGe_autoGetData.resx 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/数据同步/小诸葛同步/XZG_DataSynchronizationController.cs 939 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LMES/Program.cs
@@ -15,8 +15,8 @@
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new DingDing_autoGetData());
            //Application.Run(new XiaoZhuGe_autoGetData());
            //Application.Run(new DingDing_autoGetData());                          //斯莫尔【钉钉-MES】同步插件
            //Application.Run(new XiaoZhuGe_autoGetData());                           //三升【小诸葛-金蝶云】同步插件
            DBUtility.ClsPub.AppPath = System.Environment.CurrentDirectory;
@@ -25,7 +25,7 @@
            DBUtility.ClsPub.SetIPAddress();
            DBUtility.ClsPub.VersionNum = "12.1";
            Pub_Class.ClsPub.VersionNum = "12.1";//
            //===================================================================
                                                 //===================================================================
            try
            {
                if (DBUtility.ClsPub.CheckUpdate())
LMES/XiaoZhuGe_autoGetData.Designer.cs
@@ -29,25 +29,35 @@
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(XiaoZhuGe_autoGetData));
            this.timer1 = new System.Windows.Forms.Timer(this.components);
            this.timer2 = new System.Windows.Forms.Timer(this.components);
            this.notifyIcon_Icon = new System.Windows.Forms.NotifyIcon(this.components);
            this.SuspendLayout();
            // 
            // button1
            // timer1
            // 
            this.button1.Location = new System.Drawing.Point(35, 22);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(105, 52);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
            //
            // timer2
            //
            this.timer2.Enabled = true;
            this.timer2.Interval = 3600;
            this.timer2.Tick += new System.EventHandler(this.timer2_Tick);
            //
            // notifyIcon_Icon
            //
            this.notifyIcon_Icon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon_Icon.Icon")));
            this.notifyIcon_Icon.Text = "LMES";
            this.notifyIcon_Icon.Visible = true;
            this.notifyIcon_Icon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_Icon_MouseDoubleClick);
            // 
            // XiaoZhuGe_autoGetData
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.button1);
            this.Name = "XiaoZhuGe_autoGetData";
            this.Text = "XiaoZhuGe_autoGetData";
            this.ResumeLayout(false);
@@ -56,6 +66,8 @@
        #endregion
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Timer timer1;
        private System.Windows.Forms.NotifyIcon notifyIcon_Icon;
        private System.Windows.Forms.Timer timer2;
    }
}
LMES/XiaoZhuGe_autoGetData.cs
@@ -15,15 +15,75 @@
        public XiaoZhuGe_autoGetData()
        {
            InitializeComponent();
            //为系统托盘图标增加 å³å‡»èœå•项
            ContextMenu contextMenu = new ContextMenu();
            MenuItem exitMenuItem = new MenuItem("退出");
            exitMenuItem.Click += ExitMenuItem_Click;
            contextMenu.MenuItems.Add(exitMenuItem);
            notifyIcon_Icon.ContextMenu = contextMenu;
            //页面初始化
            set_initPage();
        }
        private void button1_Click(object sender, EventArgs e)
        #region é¡µé¢åˆå§‹åŒ–
        public void set_initPage()
        {
            XZG_DataSynchronizationController t = new XZG_DataSynchronizationController();
            //t.getAddMaterAsync_1();
            t.icmoInfoSyncFromERPToXZG();
            timer1.Enabled = true;
        }
        #endregion
        #region å®šæ—¶å™¨1:用于隐藏页面与任务栏图标
        private void timer1_Tick(object sender, EventArgs e)
        {
            //系统托盘显示软件图标
            this.notifyIcon_Icon.Visible = true;
            // éšè—ä¸»çª—体
            this.Hide();
            // éšè—ä»»åŠ¡æ è½¯ä»¶å›¾æ ‡
            this.ShowInTaskbar = false;
            timer1.Enabled = false;
        }
        #endregion
        #region å®šæ—¶å™¨2:用于定时同步数据
        private void timer2_Tick(object sender, EventArgs e)
        {
            try
            {
                XZG_DataSynchronizationController t = new XZG_DataSynchronizationController();
                t.dataAnsy();
            }catch(Exception e1)
            {
                string sErrMsg = "";
            }
        }
        #endregion
        #region ç³»ç»Ÿæ‰˜ç›˜ç‚¹å‡»å›¾æ ‡åŽå›¾æ ‡ä»å­˜åœ¨
        private void notifyIcon_Icon_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left && e.Clicks == 2) // åŒå‡»å·¦é”®äº‹ä»¶ç¤ºä¾‹
            {
                // å¤„理双击事件,例如显示或隐藏主窗体等。
                //this.Show(); // ç¤ºä¾‹ï¼šæ˜¾ç¤ºä¸»çª—体(如果之前是隐藏的)
                //this.WindowState = FormWindowState.Normal; // ç¡®ä¿çª—口处于正常状态(非最小化)
                //系统托盘显示软件图标
                this.notifyIcon_Icon.Visible = true;        //保证系统托盘图标仍旧存在
            }
        }
        #endregion
        #region ç³»ç»Ÿæ‰˜ç›˜å›¾æ ‡ å³å‡»åŠŸèƒ½èœå•é€€å‡ºæŒ‰é’®äº‹ä»¶
        private void ExitMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit(); // è¿™å°†å…³é—­æ•´ä¸ªåº”用程序
        }
        #endregion
    }
}
LMES/XiaoZhuGe_autoGetData.resx
@@ -117,4 +117,339 @@
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="timer2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>136, 17</value>
  </metadata>
  <metadata name="notifyIcon_Icon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>246, 21</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="notifyIcon_Icon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        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
        AAAAAAAAAAAAAAAAAAAAAAAAAgkMFAYcJTwCGCFFAAAAOwAAAEQEAgFYJxoRc0QvII1gRDGkcEcusYJN
        LbqIVDa+hmFQu3FTQ7NYNyOmOh8LkR8QBnoAAABmAAAAXAAAAFkAAABTAAAARwAAADcAAAAmAAAAFwAA
        AAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJOZokhj7v/Dj1PfwAA
        ADIAAAA7AAAAIAAAAAkAAAAAAAAAAAAAAAoAAAAWAAAAHQAAACUAAABBIxoTbmVHMqShcVPS0Zt07e27
        lPr7063//8+i///NoP//0qj//+bL///bu//4yqT/4qV5+cN8S+qSVi7QVTAXqRULA38AAABlAAAAXAAA
        AFEAAABBAAAALgAAABwAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVa
        dqghjLj8DjlKdAAAADgAAAA7AAAAHwAAAAkAAAAAAAAADAAAABkAAAAmAAAANyYcFWd/YFCu0qKH7Pe/
        lP//167//+/P///86P////X////x////9v////n/////////8////+r///7t///jyf//v5T/6Ztn/7Rw
        QOlhOhy1GA4FfgAAAF8AAABYAAAASwAAADYAAAAjAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAFVhzDBlpiboii7f8DjhJdAAAADwAAAA/AAAAIgAAAAwAAAALAAAAGgAAACIRDAhIak8yoMyb
        bOn9yaT//+PL///z3f///Or////3///////////////2////9/////b////9/////v////X////0////
        +///+/L//+TI//2+kv/nl2H/rnFG5lA3JqcGAwBtAAAAXAAAAFIAAAA7AAAAIgAAABEAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAG3edEBx5nsMhjLj/DjxPfQAAAEAAAABEAAAAJwAAABYAAAAYAAAAIywg
        FGCheE7K7LN+//3Imf/+4Lb///vh////+P////v////u///64v//8NL//+bA///kv///47v//+7T///0
        3P//7Mj///HP///21P//++H////v///13f/9zan/9K+D/9iZbfx/TCPLGQ4EfgAAAF4AAABTAAAAOwAA
        ACQAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG3uhERx6oMMhj7v/D0BUjwAAAEQAAABLAAAAMAAA
        ACAAAAAhQC4db76LW+Pvtn//98SX///bsf//68P///LV///w1v//6cz//+vP///jw//+yJ///riM//65
        jv/9tor//sWd///Qrv/+wJT//sWa///OpP//1q3//+C6///szf//79P//te6//O+nf/ajlf/nFwr3yUV
        CIcAAABdAAAAVAAAADsAAAAhAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAHX6lEBx6n78lk7//E09mqAAA
        AEkAAABRAAAAPAAAACpALiByxY5b7OWsd//tuY7//s+l///ctP//17L//9a1///Wtv/+x6D//sei///L
        qf//xKL//biR//2ufv/9q3r//rWL//7CoP/6roH/+Kt9//qvgv/7tIj//LyQ///Emf//zqj//9i2//3X
        vf/nsI7/2Y1V/6ViK+gpFgiKAAAAXQAAAFAAAAAzAAAAGwAAAAwAAAAAAAAAAAAAAAAAAAAAFmSCDRpr
        jLUsmsj/GmiJxQEFB1UAAABVAAAAQjEjGHG2gmDr259t/+GqfP/2wpX//82i//7Jo///wZz//sOe//7M
        q///w5z//8Oc//+5jf//u5L//8up///Hov//tor//7WJ///HpP/9s4f/+6x9//erff/0q3v/86p9//au
        gf/5tIj/+7iM//7Lqv/1xKb/3qiE/9WRXf+fYS7mHhAFggAAAFgAAABGAAAALAAAABUAAAAIAAAAAAAA
        AAAAAAAADkJXCBVad6Ywm8n/IoCm3gMRF2kAAABUEwwGbIteO9zKk27/0Jlx/+asgf/0u5L/+LyV//m7
        lP/9vJX//sGa///Qr///zqj//8Wd//+3iv//t4b//7uO///Hof//zqr//8mj///Orv//uIz//699//2w
        gf/4rn//9Kt8//Coef/uqHv/8Kl7//a7l//yt5H/4KJ4/9CZc//Sk2L/iFo11QsHBW0AAABSAAAAPgAA
        ACIAAAAMAAAAAAAAAAAAAAAAAAAAABNbeI8zmMP/MZvH+gQlNIYBAABeUzMew59nQP+1hGT/0Jl3/+Sm
        gf/vsov/9LWP//q6kv//wZn//8ef///XtP//1bD//76S//+6i///vY7//7uM//+5if//v5P//8ym///Z
        uv//yqT//7aI//+zgP/9sYH/+q+A//Wtff/wqXr/66R1/+6wiv/uso3/459v/9KPX//GhVL/xYZU/1s/
        KrIAAAFfAAAATwAAAC8AAAATAAAAAAAAAAAAAAAAAAAAABBVcXIvkbr/Ra/d/wtLZq4iEQiUeksr+41b
        OP+vgGD/1J9+/+WngP/xs4r/+rqS///Dmv//yqH//82j///buP//0qz//7yM//+/kP//wJP//7+S//+/
        j///vIz//7uH///PqP//1rT//82o///FnP//tof//a9///muf//1rX3/8Kd3/+2uhP/qrof/4p9u/9mW
        Zv/Ef0z/uXI3/6VnMPMoGQuLAAAAVwAAAD0AAAAdAAAACgAAAAAAAAAAAAAAAAo9UFUmiLD7Vrjl/yqC
        qOZXRjbifFE0/4RXOP+vfl7/1aKB/+irgv/3uI7//sKa///Lov//0Kf//9Or///ZtP//1K7//8CQ///E
        lP//xZb//8aW///Elf//w5T//7+O///Opf//zab//8CS///Np///zaj//8GY//yzhf/4rXv/9Kp5//Gy
        hv/tsYr/455t/9uYZ//Kh1X/tXI8/7hwMf9zRRzNBAIBYwAAAEYAAAAoAAAAEwAAAAAAAAAAAAAAAAw8
        TjMbeZ7jWbfg/0mt2f9WYmD/fVU8/4hlTP+uf2L/1aOE/+ywh//7v5T//8mg///RqP//1Kz//8yh///L
        n///2rb//8SV///Flf//yJn//8mZ///ImP//x5f//8WT///Sqf//1rL//72K//+8iv//wpX//8uj///J
        p//8v5n/97KD//azh//xtpH/6KFu/96aaf/Pi1v/vHlD/7VvNP+mZSr3LBoLiwAAAEkAAAA0AAAAGwAA
        AAkAAAAAAAAAAA01RhIUZ4jASKnS/2rI7v1AeIz/dk4x/45sU/+xjHP/2KqO/++2lP/7wpn//s6k///V
        q///zqL//8KR///Hmf//3rr//8qa///Glf//yZr//8qa///Jmf//yJj//8aV///Spf//3Lf//8WT///A
        j///vIr//7uK//++kP/+xZv//cWg//vDof/2vZj/7KVz/+Ocaf/UkF7/w39L/7BtNP+zbC3/YjoXvAIB
        AFMAAAA8AAAAJAAAAAwAAAAAAAAAAAAAAAATXnyTMZS+/33M5/1SpMD/Y1lL/5RiQf+wh2z/1qyS/+7H
        qf/507H//tSv///Knf//v4///8CQ///GmP//37r//9Kk///JmP//zJ3//8yc///Lm///y5r//8mX///Q
        of//3rn//8ma///Dkv//wZD//76M//+6h///toT//biK//zDm//7yKj/9LmS/+qqe//blmP/yYRP/7Jv
        Nf+waiz/jFMh4xIKA2gAAABAAAAAKwAAAA8AAAAAAAAAAAAAAAAMP1NWJoeu922zzv98w9f/VXmB/5do
        SP+xgWD/z6WI/+jEpP/30rL//du+///buf//1az//82h///ImP//3LX//9aq///Hlf//zZ3//8+f///Q
        oP//0Z7//86b///RoP//473//9Cg///Fkv//xZP//8OP///Ajf//u4z//7aD//y5if/6wpz/9riN//O5
        kf/mrIP/1JVn/7h1P/+qZSf/omAk9y4cDocAAABDAAAAMQAAABIAAAAAAAAAAAAAAAADFRwiInCP1Fic
        uP+Iv83/ZZ2s/4h2ZP+6hWL/zJ9//+OwjP/zsob//MSa///Xsv//48H//+jH///lxP//6sv//+K8///T
        pP//0qL//8+d///Om///0Zz//8+c///Rnf//5b7//9ap///Jlf//yJb//8aT///CkP//v4z//7qI//+8
        kP/7xZ7/8698//CqeP/pp3r/26R5/8OMYv+rcD//qmgt/1AyGqkAAABJAAAANAAAABQAAAAAAAAAAAAA
        AAAMCAUUNVZew02Npv9+rLr/grK6/3mDfv+7f1f/zZJt/+Ctiv/xroH/+reH///Aj///yZr//9Ko///d
        tv//7Mr///bW///x0P//8c3//+rF///gtv//2an//9Sg///Omf//4rj//9iq///Jlf//ypj//8eW///E
        k///wY3//7yI//+/kf/9yKL/97KE//Otev/qo2//25Zh/8WHVf+udkj/r3NE/2dDJsEBAQFQAAAANQAA
        ABQAAAAAAAAAAAAAAAAgDAAebFM40U19i/9vlaL/lLCw/4CWlf+vgWL/05Fo/96tjf/usYf/97iK//zA
        kf/+xZP//8iV///Jlf//2av//+rE///cr///5bn//+7H///yzf//8s7///HL///pw///7cr//+C1///M
        mP//yJX//8eU///Fk///wo///72L///Ck//+yaT/+bSG//Wxfv/uqnX/35pn/8iFT/+ubDL/rGkv/3hN
        KdEJBwVZAAAAMwAAABUAAAAAAAAAAAAAAAAjDwApi0wa3mBvbP9kiJT/maai/5mppP+hjXz/1pJn/96q
        if/osYn/87WH//nAkP/9xpb//82b///Nmf//1aX//+fA///ToP//0Zz//9ah///XpP//2qv//+G0///m
        vP//8c3///LT///owf//37T//9Ok///Ilv//wo7//76I///Ckf/+zKj/+reI//eyf//vrHj/4aBs/8+O
        WP+0dDz/rmkq/4FQKNoQCgdfAAAAMAAAABQAAAAAAAAAAAAAAAAjEgIskkkQ4n5iQ/9jgIj/lJ2c/66w
        o/+hnpD/zJNu/+Gqg//lsYr/8LGE//i+j//8x5b//82b///Pnf//1aL//+rC///aq///06D//9aj///U
        of//06D//9Og///RnP//4bP//+i////aqf//37T//+G6///dt///1Kr//8mZ///Elf/+zaf/+riG//ez
        fv/wrXr/4qNu/9CRW/+0dj//r2wv/4RSK90RCwhfAAAALgAAABQAAAAAAAAAAAAAAAAjEgMokUwV4Jha
        Jv9wdGv/i5eX/7ayp/+0r53/vJd7/+KlgP/lso//7LCB//W+jv/7xZX//sqY///OnP//0qD//+jA///e
        sf//1KH//9mn///Xpf//16X//9ak///ToP//3bH//+W8///Omv//y5b//8yZ///QoP//0qj//9Wt///V
        rv//1rL//MKV//i1gv/vrHf/4qBq/8yNV/+ydD3/rmwv/4NOJtsQCgVaAAAAKwAAABMAAAAAAAAAAAAA
        AAAkEwQgjE0Y16NbI/+Ma07/goZ9/7Crof/IwLD/vKya/9imgv/msov/6Kp9//G5iv/4w5H//cmX//7N
        m///0J3//+S7///gtf//05///9im///Xpf//2Kb//9im///Wof//3q///+rB///Sn///z5r//8yY///I
        lP//xZH//8SQ///Imf//17T//c+p//3In//1vZL/4qV2/8qKVv+xcjn/rWop/3xIHdMNBwZPAAAAJwAA
        ABEAAAAAAAAAAAAAAABSLA4Xf0cZyKJdJ/+la0H/jHtm/6GXiP/ItaH/zL6t/8q1n//mupj/57KI/+y1
        h//zu4v/+cOQ//7Kl///z5v//+K3///it///0p7//9ak///VpP//1qT//9aj///VoP//3az//+vD///W
        of//0Zv//86a//7Jlv/9x5T/+cCN//K6iv/nv5v/2KZ8/8yacf/Dl3T/to1t/6Z9W/+TZT7/lFYi/1sx
        EccBAQFKAAAAKwAAAA4AAAAAAAAAAAAAAABsPBYJhUscppxcJ/+pajv/p3lT/5qNfP+7ppD/1Leb/8iz
        nf/Yu6L/6MKc/+fFof/uyKH/9sme//vMm//9zJj//9yw///kuv//0Z3//9Wi///Vo///1aL//9Wj///T
        nv//26r//+rE///Wov//0Zr//8+b//3Klv/5xJH/8rqI/+Wvg//SrYz/tZNr/4SQM/97hyP/gHRI/4Ne
        Pf9yYFD/eGVa/0UuHroAAABGAAAALQAAAAoAAAAAAAAAAAAAAAAAAAAAZjsWeKBfKv+laTv/t3ZF/6iH
        av+tnIn/0LOX/9e5nP/ItJ7/5bCE/+i3i//ow5z/8M+p//fZtP/63rj//ubC///qxP//263//9mr///X
        pv//1aH//9Kf///Rmv//16T//+rE///Uof//zpf//syY//rGk//zvo3/5rCC/9Kfdv+zmnv/epxb/1W0
        Jv5bqQD/VIJG/1BrZ/9Ilbr/Tp7F/zhaZs0DDRBRAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAWDQTSJxd
        KfOlbD3/s3JB/8CFWP+slHr/wKeR/9y7n//Twq3/z62M/+qrev/osYP/6riI//HClP/2zaD//N20//7r
        xv//5r7//+rC///qxP//6L///+a6///hsv//3rH//+vD///Vof//zZb/+8iS//XAjP/ptYX/1qV4/7qN
        af+JnHX/Yr1x91zCV/9isST+P6Fy8yC/4Pgd0v7/Jc71/yvA6fEQVWeKAAAAOAAAAAAAAAAAAAAAAAAA
        AAAAAAAAPCMOFYVQJMurbz//qm47/8WBTP/Ekmr/tJuE/82xl//gybH/zLmi/9iqg//tsYD/6LKE/+y4
        if/xvYz/98ye//vetv/9z53//9Sh///bq///36///+e6///rwf//7cb///XP///pvP//4bL/99Kj/+zA
        jv/aq3z/wJJo/6SDYf9zq2D/XLQ6/2C3OP+KlVL/W6a0/xPN9v8I0Pj/Ds30/wvV9f8Ll6/IAxwhQwAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGtCHH6rcD3/p2w4/7d3Qv/Tj1v/xJhz/7mhi//YwKr/4Mir/8ew
        lf/crYT/7bOB/+i0hf/quYn/8MWY//XZsv/6zJr//c2X//7Qmv//zpj//9Ga///Rmv//16P//+zE///g
        sv//3q3/79Os/+DFof/Iro3/sJJ1/6ydb/9pnxj9S6QA/2mTAP+lbE7/dJTD/zO59/8sqPD/KJfr/xKs
        7v8ArMfhAFlgZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEksFCWeaTzgqGw2/61uOf/Gh1L/15hm/8Kb
        ev/DsJ7/3cSq/9m/of/HsJb/366E/+yygf/ns4T/6r6R/+/Sqv/0x5f/+ciV//vOm//9z5r//9Gc///Q
        mv//0Zz//+a9///UoP//ypH/5beF/9Gofv+4mHX/zaiL/9awcP93mg3/UKQA/4V5Ev+jZmn/cJjU/06o
        +P9KkO3/Q3Lm/zRs5v8Rh8LlAlhkegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzUDZ6s3pM/6pw
        O/+3eUP/0Y9c/92cav/JqY3/xbOf/9y+nv/XwKP/xrCV/92vhf/rsID/5rWJ/+fKpP/rwJP/8L+O//TF
        lf/4yZf//M2Z//7MmP/+zpr//+S6///Vov//ypT/2qx+/8SYb//Hnnf/5LeN/9imbv+cmR7/cpMC/51r
        L/+Tepr/W6ns/0iu+P9DnO3/Oobp/zZo5f8hUbfmBx46hwAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AABFMCEZnW5Iy7iFW/+2g1n/xY5g/9ubaP/mroL/y62P/8Opjf/bvZ//1b6j/8Ovlv/Zq4T/6rOD/+fC
        nf/kuIv/5raH/+q8jP/uwI7/88SR//fFkv/5x5T/+921//3Rn//+yJH/0KR5/8accv/aqnv12KJt/9iZ
        Yf/CkjL/qXwP/6VrU/9yksf/TrX5/0qw9P9Ene7/OYjp/y9t5f8mRb/wEBhQpAAAABEAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAYz8fTa51QfC4hlj/wJJq/9Kkfv/puZP/7byT/8urif/BrpX/17uf/9O8
        of+/rZT/zq2J/+bAmv/otIb/4a19/96wgv/gsoX/47aG/+i5h//uv4z/9Nau//jLmv/8wo3/ypht/9Kd
        bP/Um2H/zZFP/8iIO//Jfxv5wG0i/417iPNSo+3+RKv4/0Sa7f86hen/MWzl/yta4f8qUtv6FSpwvgAA
        ABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHhMI3u5djr9t31E/8CNWf/ar4f/8sSf//TF
        nP/avqP/w7em/83BsP/QxK//urem/7q2pf/Uroj/5Kp5/9+nd//Wpnj/1Kd6/9ipe//er4D/5MKe/+u0
        iP/wqHf/zI9e/8+UVf/Jij7/w38m/r57Ev+/fCn/p21D/4prXv9Kmt//OJPx/zR35v8sX+L/KVPh/ypU
        4f8qV+H/GDGBxQAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOUCKNuG4v/7l0
        OP/JkWT/4a+F//C2hf/7w5L/576X/8e4ov++vbD/xsi7/7bEvv+jsar/r6mV/82rif/eqX//2KB4/86V
        bf/Jj2n/y5x+/9GSa//XjmL/yItH/8SDK/m+ehDzw30a/8SDOv+/iWP/uHdK/6piLf9NaobXOI/u+zJ0
        5v8qXeP/KVTh/ypW4f8qV+H/GTWIvgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AABwOxcJjEscj71kJ/vBeEv/zY9p/+Kdb//5tor//8GT//a+kv/VsZH/t6uc/7O7t/+ut7X/lqqs/4ee
        of+am5T/wJ2I/9Kbff/JlXf/upeB/7iSeP+/lHb/voU+/8GELP/LjU3/zYtc/8B7Sv/HiWT/w3tL/0op
        D40VL0VGM4TZvzN14/srX+P/Klbh/ypX4f8qV+D+GDOFsQAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHtBGHS0bUDqxn1S/858TP/pn3b//7+Z///Rq///1a7/7s+u/8bN
        wv+itrX/mbG0/5Czu/9zprT/YZWj/3qQkP+mm4r/w7Of/8O2n/+7spz/tauX/76ljf/Cl4D/uYNk/7t3
        Sv+ocU/nPykcdwEAABkAAAAbDyhDPyZUpKwrXuD1KVbg/ipX4f8fVa37FS1zkQAAABkAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFUTFErGk9xMFqLv/Qfkj/5ptv//m9
        mP//2rf///LQ////8v/m8+T/stfU/4bC0v93vNX/arnX/0+nyf9Bk7D/Xpiq/5mrov/FrI3/w5Fw/7B4
        Vv+mbEr/pG1K/3FPOsseFhFgAAAAHwAAAB4AAAAeAAAAHwAAACsULWxwIki90CpX4PwbVJrtBxAmSAAA
        ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaEInF4pK
        G3yxYynZx3M5/92KVP/wpXj/+sSf///t2v//+uL///rl/+Dw5v+j0df/cbfP/1ex2P9Hrdn/MZfE/yyG
        rP9Ufo3/hm5b/5taL/uCQRfPRCILiwoFAkoAAAAvAAAALQAAACYAAAAdAAAAGgAAABwULGoSFjB/RxtY
        l9gYUom4AAICGAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAACKTR8mpVslc6JaJsDCbDPr0n5I/+6viP/1r4H/+7SC///Flv//ypn/67eO/6qa
        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
        IGQeHh41NDQ0GDQ0NBQeJSgpHh4eUiAiI4g2LimxVUQ5xXNfT8yEcF7Pim9Z0OS4lcbTtZzRemNTz2FJ
        OM1CMijKKyckwyUlJbYjIyOjIiIigyEhIV4gICA+NDQ0IjQ0NBA0NDQFNDQ0AgAAAAA0NDQGH05gfSJi
        fMAjJSaOHx8fbR8fHz00NDQjHBwcNx4eHmQ6MiundWFVyffKp9H/7crR///x0f///9H///3R////0f//
        /9H///fR//fm0f/Mp9HWkF7JTjstzSsoJ8QlJSWzIyMjliEhIWsgICBENDQ0IzQ0NA80NDQENDQ0ATQ0
        NAYjY3yII2J8wyMmJ5YfHx94Hx8fTh8fH0MmIyFzYk88vvK7iM//68XR///z0f//+9H//vDR//La0f/r
        z9H/7tPR//bm0f/02dH/+uPR///w0f/x2NH9vpHRu4Fc0TkvJ8slJSW8JCQknSEhIW0gICBDNDQ0HzQ0
        NAs0NDQENDQ0BiNphYgiaIPIIiYooCAgIIghISFlKygkgHtgRsf7wo7R/9qw0f/pxtH/68/R/+DB0f/f
        vtH+wprR/rKE0f21h9H/yKPR/LuP0f3CltH+0KbR/+K/0f/mydH/0bHR2Y9b0VY3H9EmJia+IyMjnSEh
        IWc0NDQ0NDQ0GTQ0NAk0NDQFIl51fyaNt8wiKy6qIyMjlygmJJF4XEfI6K150fjFmdH/0KjR/8ai0f7L
        qdH/wpzR/76W0f/AmtH+wZrR/rOF0f+/mdH7roLR+Kl70fWrfdH3sIPR+7uQ0f/OrtHvuprR2JFc0VI2
        INEmJia6IyMjkCEhIVg0NDQpNDQ0EjQ0NAUeSVptMJ7M0SE0PLUlJCStVUExx8+XcNHgpn3R9bqR0fm5
        ktH+vJXR/82q0f/Np9H/uozR/7iI0f/Bl9H/yqTR/9Cv0f+6jdH+rn3R+K1+0fKqetHupXfR87OL0e6y
        jNHZm3HRyotY0TgxLMomJiawIiIieyAgIEE0NDQeNDQ0Ax1FVVU5o8/RJEpZvzEoIsWOWjbRu4lp0eGm
        gNHzs4vR/L6V0f/IntH/2LPR/82k0f+7i9H/v5LR/7yM0f+8i9H/zqbR/9Ct0f/Bl9H+tITR+a5+0fKp
        eNHtrIHR6auB0dmVZNHGgUrRmWM00SknJsIkJCSbISEhWjQ0NCw0NDQCGjhDODaXv81BnsjHYk09x4RY
        OtG4iGjR5qyE0fu9ktH/y6LR/9Kp0f/VrtH/z6bR/8GR0f/Hl9H/xpfR/8KQ0f/Ln9H/y6LR/8WZ0f/K
        otH+vpXR+LCA0fOvgtHrrYLR35po0cSBT9G9dDXRRTUnzCYmJq8iIiJ0ICAgPwAAAAAeND0XKHGOuF3C
        7NFWaGrRiF5B0buSeNHrs5HR/cab0f/SqNH/y5/R/8eZ0f/Xr9H/xZTR/8ma0f/JmdH/xpXR/8+j0f/U
        qtH/vYnR/76N0f/DmNH9w5vR+sCb0fO1jNHknWnRzopX0bp0OtGTWibRKigmvSQkJIogICBQAAAAADQ0
        NAYcWHGUZL7g0V6YqdGDWz/RvI5y0efBpdH82LfR/9Os0f/ElNH/xJXR/9qy0f/KmdH/zJzR/82d0f/M
        mtH/0KDR/9qx0f/Ek9H/wI7R/7yI0f64h9H9v5TR+sOf0fCyh9HbmWjRu3Y+0a9nKNE3LibGJSUlmiEh
        IV8AAAAANDQ0BBk3Q2FPnr3RernL0Xt4bdG+iWXR3rGP0ffBmdH/1rLR/+G90f/futH/5cLR/9Wo0f/Q
        oNH/z53R/8+b0f/QndH/4LbR/8uY0f/Gk9H/w5HR/7yK0f66i9H5vpTR8q+A0eapftHGjWDRsW810Ug3
        KcwmJiakIiIiagAAAAA0NDQFKSYiTkl2g813pK/Rd4yK0a14VtLGlnfT2qF41OOrgdTkt4/U5MGb1ObU
        tdPm17nT6Ni30unVstLqz6jR68mf0f/iudH/zZrR/8aT0f/Fk9H/v4zR/8CR0fzBmdH1rXvR6KJt0cuL
        WNGydULRVkEwziYmJqsjIyNvAAAAADQ0NAU7Kx5eZmRX0W2LlNKImJXTnn1l1r+PcNnGmHfbzJ553dGn
        gNzVq4Hb1ruW2tq8ltnevZLX48ig1OfQqtLq1rLR//DN0f/kvNH/1qjR/8uZ0f/AjNH/wZDR/cWd0fiy
        gNHsqXXR0pBb0bRwM9FeRC7OJyYmrSMjI24AAAAAJiYmBTQiFmKBUirTY3R31oyQitqJe2vgnHRb55h3
        X+2del/vp4hq7K6PbumwmXvotqGE5sOjfeDSsIba4ryR1enBktL/5LjR/92v0f/ZrNH/2rHR/9Ko0f/M
        odH9yaHR+LN/0e2pdNHUlV/RtXU60WFFLs8oJiWqIyMjZwAAAAAmJiYGMCMYX45PHdZtYlPafoB64YWC
        c+uAfE/4iHtK/IVyVfqNc1r3koFs9pSLefeZjHfzqZBw7MGlgeHcu5LY58OU0//it9H/2ajR/8qV0f/K
        ltH/yZnR/82h0f7Ur9H9xZrR8LSF0dGSX9GzcjXRXkIpzSclJaAhISFZGRkZASUlJQs5KRxWgUsg1n1X
        OuBtaFzqfopr+VW0Jv5bqQD/MlI3+ytGTvg0Zn/7OmyF/DJRX/KUgGb2rZNz6tOzjNzkwJHU/+O10f/e
        rtH/0JnR/8uY0f/HktH/xJLR/c6j0fu8itHvtYnR0J1y0bZ5RtFWPSnLJCQkjR8fH0YZGRkGJSUlFDQo
        HkljPyLTe1Aw6HJvVfZivXH3XMJX/2KxJP4/oXLzIL/g+B3S/v8lzvX/K8Dp8YiJePudiG3xyquG4OG6
        jNX/3rDR/9ut0f/NldH/y5fR/8eU0f/Dk9H+z6bR+LiE0eWmcdHGhlDRt2ov0Uo2KcMjIyNxHR0dMBkZ
        GQ0ZGRkkIyMjSkszH8t3VTfyT3dJ91y0Ov9gtzj/ipVS/1umtP8Tzfb/CND4/w7N9P8L1fX/Iml1+pSK
        dfXCsZLj3smj1//pwNH/47XR/9Kd0f/LlNH/xY7R/8KO0f/NpNH3uIXR4KBr0cJ0PNG2YiHRNywjsSEh
        IVE0NDQaGBgYGBkZGTkhISFpQTUqyYZpRftpnxj9S6QA/2mTAP+lbE7/dJTD/zO59/8sqPD/KJfr/xKs
        7v8bdIL9jIVs+L2hfebcvJLY/+W50f/pvdH/4LHR/92x0f/Wp9H/y5vR/82j0e+rdtHWhlDRw28x0W9I
        Kc0oJSKINDQ0MDQ0NBIYGBgmGRkZUjQwLJR8aFrq1rBw/3eaDf9QpAD/hXkS/6Nmaf9wmNT/Tqj4/0qQ
        7f9Dcub/NGzm/xaIwv+Gf2r5uZp359qxhNn/2KfR/9ur0f/LktH/zZjR/9Ge0f3NoNH8xaPR66mC0cyF
        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
        6/7r4tn/38qx//Pv6v/u6OH/3b6S/+bYxf/p5uP+zczM+lVVVfkwMDC/VlZWa2FhYQg8Ozxls7Kz8+Hh
        4f7x8fD/8vHv/+PTwv/j2c3/4NC8/+DEmv/u6ub/7ezr/9vb2/2rq6vxNjY201FRUYVjY2MLTU1Ni7a2
        tvbd3N3/5+fn/+rp6P/k4Nz/1r6f/9i3hv/g1cb/6Ofl/+Xl5f/a2tr+srGy9T4+Pt5RUVGJZGRkC1FQ
        UY+ysbL21tXW/9/f3//g4OD/3dnU/9S9m//Ut4X/3NjS/+Df3v/e3t7/1NTU/6+vr/VAQEDaVlZWeGJi
        YgZCQkJpqKeo9NDQ0P7d3d3/3t3c/9TNxf/YtH3/0beW/9fSzv/e3t3/3d3d/8/Pz/6lpaXzOjo6xF1d
        XVRhYWEBLi4uKoaGhuzJycn84ODg/9/c2P/YwaH/2MCb/9nOwv/VxbL/4d/c/+Dg4P/Hx8f8ZmZm+DAw
        MINkZGQxAAAAACcnJw1NTU2Vtra29t/e3f3a0MT/3ryI/97Wzv/k4Nr/2MOo/9jPxP/d29r9srGx9kBA
        QMMrKytCNDQ0GAAAAAAkJCQDIiIiHWppasPIxcL328q2/OLRuP7k1sf/6eLc/9zGq/7Yxa78wLiz9lhX
        WNckJCRLJycnHTQ0NAkAAAAAAAAAABsbGwUkJCQgWFhXo6Wjo/LZ19T25uTj+ebk4fnY1dP2kY+N9U5N
        TbMlJSVAHR0dGjQ0NAk0NDQDAAAAAAAAAAAAAAAAJiYmBCoqKg45OTk7V1dXhmxrbK5qaWqwVFRUjzc3
        N00qKioiJiYmDjQ0NAY0NDQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBwBHJycgp0dHQOc3JzEHBw
        cA1ubm4INDQ0BDQ0NAIAAAAAAAAAAAAAAADAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAIAAAACAAAAAwAAAAOABAAD4BwAA
</value>
  </data>
</root>
WebAPI/Controllers/Êý¾Ýͬ²½/СÖî¸ðͬ²½/XZG_DataSynchronizationController.cs
@@ -28,6 +28,7 @@
using System.Security.Cryptography;
using System.Net.Http.Headers;
using System.Web;
using Kingdee.BOS.WebApi.Client;
namespace WebAPI.Controllers
{
@@ -427,6 +428,118 @@
    #endregion
    #endregion
    #region ç”Ÿäº§æ±‡æŠ¥
    #region å·²å®¡æ ¸çš„æŠ¥å·¥è®°å½•信息列表
    public class ICMOReportListResponse
    {
        public string code;
        public string msg;
        public List<ICMOReportListResponse_Data> data;
    }
    public class ICMOReportListResponse_Data
    {
        public List<ICMOReportListResponse_Data_Data> data;
        public string pageIndex;
        public string pageCount;
    }
    public class ICMOReportListResponse_Data_Data
    {
        public string produceReportId;                  //报工记录id
        public string machineName;                      //设备名称
        public string macId;                            //设备id
        public string productName;                      //产品名称
        public string partId;                           //产品id
        public string workTime;                         //工作时间
        public string tour;                             //班次
        public string productNum;                       //生产数据
        public string standardNum;                      //报合格数量
        public string defectiveNum;                     //次品数量
        public string remark;                           //备注
        public string materialId;                       //
        public string materialName;                     //材料名称
        public string materialNo;                       //材料编号
        public string producePerson;                    //生产人员
        public string producePersonId;                  //生产人员id
        public string producePersonCode;                //生产人员code
        public string planNo;                           //计划单号
        public string taskNo;                           //任务单号
        public string partNum;                          //产品编号
        public string produceRecordId;                  //生产记录的id
        public string moldNo;                           //模具编号
        public string reportDate;                       //报工日期
        public string reportUser;                       //报工人员
        public string reportUserCode;                   //报工人员编码
        public string auditUser;                        //审核人
        public string auditUserCode;                    //审核人员编号
        public string auditDate;                        //审核日期
        public string moldName;                         //模具名称
        public string defectiveReasonName;              //次品明细信息
        public string boxCodes;                         //箱码
        public string tourGroupName;                    //班组
    }
    #endregion
    #region ç”Ÿäº§æ±‡æŠ¥è¯¦ç»†ä¿¡æ¯
    public class ICMOReportDetailResponse
    {
        public string code;
        public string msg;
        public List<ICMOReportDetailResponse_Data> data;
    }
    public class ICMOReportDetailResponse_Data
    {
        public string produceReportId;                  //报工记录id
        public string machineName;                      //设备名称
        public string macId;                            //设备id
        public string productName;                      //产品名称
        public string partId;                           //产品id
        public string workTime;                         //工作时间
        public string tour;                             //班次
        public string productNum;                       //生产数据
        public string standardNum;                      //报合格数量
        public string defectiveNum;                     //次品数量
        public string stockInputNum;
        public string remark;                           //备注
/*        public string materialId;     */             //
        public string materialName;                      //材料名称
        public string materialNo;                       //材料编号
        public string producePerson;                    //生产人员
        public string producePersonId;                  //生产人员id
        public string producePersonCode;                //生产人员code
        public string planNo;                           //计划单号
        public string taskNo;                           //任务单号
        public string partNum;                          //产品编号
        public string produceRecordId;                  //生产记录的id
        public string moldNo;                           //模具编号
        public string reportDate;                       //报工日期
        public string reportUser;                       //报工人员
        public string reportUserCode;                   //报工人员编码
        public string auditUser;                        //审核人
        public string auditUserCode;                    //审核人员编号
        public string auditDate;                        //审核日期
        public string piceWage;                         //单价
        public string moldName;                         //模具名称
        public List<string> defectiveReasonNameList;
        public List<string> defectiveNumList;
        public string tourGroupName;            //班组
        public List<ICMOReportDetailResponse_Data_Box> boxs;
    }
    public class ICMOReportDetailResponse_Data_Box
    {
        public string boxCode;                  //箱码
        public string boxActQty;                //数量
    }
    #endregion
    #endregion
    #endregion
    #region å°è¯¸è‘›æ•°æ®åŒæ­¥
@@ -442,6 +555,10 @@
        #region å°è¯¸è‘›æ•°æ®åŒæ­¥å¯†é’¥
        string APPID = "1f2e019a-ff51-f115-ce59-205606c72853";
        string APPPWD = "YYLM01A";
        #endregion
        #region erp数据库名称
        string erpDatabaseName = "AIS20210811135644..";
        #endregion
        #region èŽ·å–æœåŠ¡åœ°å€
@@ -522,6 +639,37 @@
            return res;
        }
        #endregion
        #region æ•°æ®åŒæ­¥
        #region æ•°æ®åŒæ­¥-汇总全部同步
        public async Task<json> dataAnsy()
        {
            try
            {
                //产品档案同步(erp->小诸葛)
                await productInfoSyncFromERPToXZG();
                //生产订单同步(erp->小诸葛)
                await icmoInfoSyncFromERPToXZG();
                //生产汇报单同步(小诸葛->erp)
                await icmoReportInfoSyncFromXZGToERP();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "同步成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch(Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "同步失败!" + e.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #endregion
        #region äº§å“æ¡£æ¡ˆ
@@ -832,29 +980,22 @@
        #region èŽ·å–ç”Ÿäº§è®¢å•è¯¦ç»†ä¿¡æ¯
        public async Task<ICMODetailResponse> getICMODetailAsync(string url, string key, string planNum)
        {
            try
            {
                //请求地址
                url = url + "/v2/GET/getPlanOrderDetail";
                //请求参数
                Dictionary<string, string> queryParams = new Dictionary<string, string>
            //请求地址
            url = url + "/v2/GET/getPlanOrderDetail";
            //请求参数
            Dictionary<string, string> queryParams = new Dictionary<string, string>
            {
                {"key", key},
                {"planNum",planNum }
            };
                //返回结果
                string responseBody = await DefinedRequestSendMethod.GetDataAsyncByGetRequest(url, queryParams);
            //返回结果
            string responseBody = await DefinedRequestSendMethod.GetDataAsyncByGetRequest(url, queryParams);
                //将字符串转换为对象
                ICMODetailResponse icmoDetailResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ICMODetailResponse>(responseBody);
            //将字符串转换为对象
            ICMODetailResponse icmoDetailResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ICMODetailResponse>(responseBody);
                return icmoDetailResponse;
            }catch(Exception e)
            {
                return new ICMODetailResponse();
            }
            return icmoDetailResponse;
        }
        #endregion
@@ -955,7 +1096,7 @@
                //获取金蝶云生产订单数据
                List<ICMO> icmos = new List<ICMO>();
                string sql = @"select 
                                cast(a.FBILLNO as varchar(100)) + '_' + cast(b.FSEQ as varchar(10)) è®¡åˆ’单号
                                cast(a.FBILLNO as varchar(100)) + '_' + cast(b.FSEQ as varchar(10)) + '_' +  cast(b.FENTRYID as varchar(10)) è®¡åˆ’单号
                                ,cast(b.FQTY as int) è®¡åˆ’数量
                                ,m.FNUMBER äº§å“ç¼–号
                                ,convert(varchar(100),b.FPLANSTARTDATE,20) è®¡åˆ’开工日期
@@ -985,7 +1126,7 @@
                                or
                                convert(varchar(100),c.fstartdate ,23) >= convert(varchar(100),dateadd(day,-7,getdate()),23)
                                )
                            and cast(a.FBILLNO as varchar(100)) + '_' + cast(b.FSEQ as varchar(10)) = 'MO000269_1'";
                            --and cast(a.FBILLNO as varchar(100)) + '_' + cast(b.FSEQ as varchar(10)) = 'MO000269_1'";
                DataSet ds = oCN.RunProcReturn(sql, "AIS20210811135644..T_PRD_MO");
                if (ds != null && ds.Tables.Count > 0)
                {
@@ -1090,6 +1231,768 @@
        }
        #endregion
        #endregion
        #region ç”Ÿäº§æ±‡æŠ¥
        #region èŽ·å–å·²å®¡æ ¸çš„æŠ¥å·¥è®°å½•ä¿¡æ¯åˆ—è¡¨ä¿¡æ¯
        public async Task<ICMOReportListResponse> getICMOReportListAsync()
        {
            //请求地址
            string url = await getServerAddressAsync() + "/v2/GET/getAuditedProduceReportList";
            string token = await getTokenAsync();
            //请求参数
            Dictionary<string, string> queryParams = new Dictionary<string, string>
            {
                {"key", token},
                {"indexPage", "1"},
                //{"startDate", DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd")},
                //{"endDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
                {"sidx", "reportDate"},
                {"sord", "desc"},
                //{"tour", "白班"},
                {"type", "1"},
                {"reportStartDate", DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss")},
                {"reportEndDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
            };
            //返回结果
            string responseBody = await DefinedRequestSendMethod.GetDataAsyncByGetRequest(url, queryParams);
            //将字符串转换为对象
            ICMOReportListResponse icmoReportListResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ICMOReportListResponse>(responseBody);
            return icmoReportListResponse;
        }
        #endregion
        #region èŽ·å–ç”Ÿäº§æ±‡æŠ¥è¯¦ç»†ä¿¡æ¯
        public async Task<ICMOReportDetailResponse> getICMOReportDetailAsync(string url, string key, string reportId)
        {
            //请求地址
            url = url + "/v2/GET/getProduceRecordReport";
            //请求参数
            Dictionary<string, string> queryParams = new Dictionary<string, string>
            {
                {"key", key},
                {"reportId",reportId }
            };
            //返回结果
            string responseBody = await DefinedRequestSendMethod.GetDataAsyncByGetRequest(url, queryParams);
            //将字符串转换为对象
            ICMOReportDetailResponse icmoReportDetailResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ICMOReportDetailResponse>(responseBody);
            return icmoReportDetailResponse;
        }
        #endregion
        #region ç”Ÿäº§æ±‡æŠ¥å®šæ—¶åŒæ­¥_从小诸葛到ERP
        public async Task<json> icmoReportInfoSyncFromXZGToERP()
        {
            string sErrMsg = "";
            try
            {
                //请求地址
                string url = await getServerAddressAsync();
                string token = await getTokenAsync();
                ICMOReportListResponse iCMOReportListResponse = await getICMOReportListAsync();
                List<ICMOReportListResponse_Data_Data> iCMOReportList = new List<ICMOReportListResponse_Data_Data>();
                for(int i = 0; i < iCMOReportListResponse.data.Count; i++)
                {
                    for(int j=0;j< iCMOReportListResponse.data[i].data.Count; j++)
                    {
                        string sql = "select * from AIS20210811135644..T_PRD_MORPT where FBillNo = '" + iCMOReportListResponse.data[i].data[j].produceReportId + "'";
                        DataSet ds_erp = oCN.RunProcReturn(sql, "AIS20210811135644..T_PRD_MORPT");
                        if(ds_erp!=null&ds_erp.Tables[0].Rows.Count == 0)
                        {
                            iCMOReportList.Add(iCMOReportListResponse.data[i].data[j]);
                        }
                    }
                }
                ////金蝶云生产汇报单:批量同步
                //ICMOReportListResponse_Data_Data data = new ICMOReportListResponse_Data_Data();
                //data.planNo = "MO000269_1_100483";
                //data.reportDate = "2025-04-27 00:00:00";
                //data.standardNum = "1";
                //data.produceReportId = "1234321";
                //iCMOReportList.Add(data);
                objJsonResult = set_SaveICMOReportBillList(iCMOReportList);
                //objJsonResult.code = "1";
                //objJsonResult.count = 1;
                //objJsonResult.Message = "同步成功!";
                //objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "同步失败!" + e.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region ç”Ÿäº§æ±‡æŠ¥ æ‰¹é‡æ–°å¢ž
        public json set_SaveICMOReportBillList(List<ICMOReportListResponse_Data_Data> iCMOReportList)
        {
            string sErrMsg = "";
            string sRemark = "";
            string sRemark_errAudit = "";
            try
            {
                for (int i = 0; i < iCMOReportList.Count; i++)
                {
                    objJsonResult = set_SaveICMOReportBill(iCMOReportList[i]);
                    if (objJsonResult.code == "1" && objJsonResult.count == 1)
                    {
                        sRemark += objJsonResult.Message;
                    }else if(objJsonResult.code == "1" && objJsonResult.count == 0)
                    {
                        sRemark_errAudit += objJsonResult.Message;
                    }
                    else
                    {
                        sErrMsg += objJsonResult.Message;
                    }
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "【同步并审核成功信息】:" + sRemark + ";【同步成功但审核失败信息】:" + sRemark_errAudit + ";【同步失败信息:】:" + sErrMsg  ;  //成功!
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "生产汇报单上传失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region ç”Ÿäº§æ±‡æŠ¥ æ–°å¢ž
        public json set_SaveICMOReportBill(ICMOReportListResponse_Data_Data data)
        {
            string sErrMsg = "";
            //用于记录过程数据,作为日记数据
            string sRemark = "";
            try
            {
                try
                {
                    #region ä»Žé…ç½®æ–‡ä»¶èŽ·å– CLOUD网址、账套信息、登录用户、登录密码
                    //登录
                    string HReturn;
                    bool bLogin = false;
                    var loginRet = InvokeHelper.LoginUser(data.reportUser);
                    string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
                    var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                    if (isSuccess <= 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = loginRet;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        bLogin = true;
                        sRemark = sRemark + " ï¼›èŽ·å–éªŒè¯CLOUD账号密码" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    }
                    #endregion
                    #region åˆ¤æ–­ç”Ÿäº§è®¢å•状态 æ˜¯å¦ä¸º å®Œå·¥ æˆ–结案
                    string[] planNoSplit = data.planNo.Split('_');
                    string HICMOBillNo = planNoSplit[0];
                    string HICMOSEQ = planNoSplit[1];
                    string HICMOEntryID = planNoSplit[2];
                    string sql_judgeICMOStatus = @"select distinct
                                                    mo.FBILLNO
                                                from AIS20210811135644..T_PRD_MO mo
                                                inner join AIS20210811135644..T_PRD_MOENTRY_A a on mo.FID=a.FID
                                                where a.FSTATUS in (5,6)
                                                and mo.FBILLNO = '" + HICMOBillNo + "' " +
                                                "and a.FENTRYID = " + HICMOEntryID;
                    DataSet Ds2;
                    Ds2 = oCN.RunProcReturn(sql_judgeICMOStatus, "AIS20210811135644..T_PRD_MO");
                    if (Ds2 != null && Ds2.Tables[0].Rows.Count > 0)
                    {
                        sErrMsg = "生产订单【 " + HICMOBillNo + "】业务状态已完工不允许汇报!";
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = sErrMsg;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                    #region èŽ·å–é‡‘è¶äº‘ç”Ÿæˆå•æ®json
                    string json = getErpJSON(data);
                    sRemark = sRemark + " ï¼›èŽ·å–CLOUD单据API递入值" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    #endregion
                    #region ç”Ÿæˆé‡‘蝶云单据
                    if (bLogin)
                    {
                        var result = InvokeHelper.Save("PRD_MORPT", json);
                        sRemark = sRemark + " ï¼›ç”ŸæˆCLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                        //获取金蝶云单据生成返回信息
                        HReturn = result.ToString();
                        if (HReturn.Contains("\"IsSuccess\":false") == true)
                        {
                            sErrMsg = "生成生产汇报单失败!" + HReturn;
                            LogService.Write("生成生产汇报单(源单:生产订单)失败!" + HReturn + json);   //写入txt文本
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = sErrMsg;  //成功!
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            sRemark = sRemark + json;
                        }
                    }
                    else
                    {
                        sErrMsg = "生成生产汇报单失败!金蝶云登录失败!";
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = sErrMsg;  //成功!
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                }
                catch (Exception e)
                {
                    sErrMsg = "生成生产汇报单失败!" + e.Message;
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = sErrMsg;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                #region å®¡æ ¸å•据
                try
                {
                    //提交、审核金蝶云单据
                    #region ä»Žé…ç½®æ–‡ä»¶èŽ·å– CLOUD网址、账套信息、登录用户、登录密码
                    //登录
                    string HReturn = "";
                    bool bLogin = false;
                    var loginRet = InvokeHelper.LoginUser(data.auditUser);
                    string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
                    var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                    if (isSuccess <= 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = loginRet;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        bLogin = true;
                        sRemark = sRemark + " ï¼›èŽ·å–éªŒè¯CLOUD账号密码" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    }
                    #endregion
                    if (bLogin)
                    {
                        ////提交单据
                        string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + data.produceReportId + "\"]}";
                        var result2 = InvokeHelper.Submit("PRD_MORPT", sJson2);
                        //审核单据
                        string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + data.produceReportId + "\"]}";
                        var result3 = InvokeHelper.Audit("PRD_MORPT", sJson3);
                        HReturn = result2.ToString() + "," + result3.ToString();
                        if (HReturn.Contains("\"IsSuccess\":false") == true)
                        {
                            LogService.Write("审核单据失败" + sRemark);
                            sErrMsg = "生成生产汇报单成功,审核单据失败!" + HReturn;
                            objJsonResult.code = "1";
                            objJsonResult.count = 0;
                            objJsonResult.Message = sErrMsg;
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            LogService.Write("生成并审核生产汇报单(源单:生产订单)成功!" + sRemark);
                            sErrMsg = "生成并审核生产汇报单成功!单据号为:" + data.produceReportId;
                            objJsonResult.code = "1";
                            objJsonResult.count = 1;
                            objJsonResult.Message = sErrMsg;
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    else
                    {
                        sErrMsg = "审核生产汇报单失败!金蝶云登录失败!";
                        objJsonResult.code = "1";
                        objJsonResult.count = 0;
                        objJsonResult.Message = sErrMsg;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                catch (Exception e)
                {
                    sErrMsg = "审核生产汇报单失败!" + e.Message;
                    objJsonResult.code = "1";
                    objJsonResult.count = 0;
                    objJsonResult.Message = sErrMsg;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                #endregion
            }catch(Exception e0)
            {
                sErrMsg = "生成生产汇报单失败!" + e0.Message;
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = sErrMsg;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region æ ¹æ®èŽ·å–çš„æŠ¥å·¥ä¿¡æ¯ï¼Œæ‹¼æŽ¥json语句
        public string getErpJSON(ICMOReportListResponse_Data_Data data)
        {
            //try
            //{
                //data.planNo = "MO000269_1_100483";
                //data.reportDate = "2025-04-27 00:00:00";
                //data.standardNum = "1";
                //data.produceReportId = "1234321";
                // èŽ·å–ç”Ÿäº§æ±‡æŠ¥çš„æºå•ä¿¡æ¯
                string[] planNoSplit = data.planNo.Split('_');
                string HICMOBillNo = planNoSplit[0];
                string HICMOSEQ = planNoSplit[1];
                string HICMOEntryID = planNoSplit[2];
                //根据报工信息,获取相关信息
                string sql1 = @"select
                                isnull(org1.hnumber,'') FPRDORGIDNumber
                                ,ISNULL(org1.HItemID,0) FPRDORGID
                                ,isnull(moSub.FPRODUCTTYPE,'1') FPRODUCTTYPE
                                ,ISNULL(pr.HNumber,'') FAUXPROPNumber
                                ,ISNULL(unit.HNumber,'') FUNITNumber
                                ,ISNULL(dept.HNumber,'') FWORKSHOPNumber
                                ,isnull(moSub.FMTONO,'') FMTONO
                                ,isnull(moSubA.FCHECKPRODUCT,'false') FCHECKPRODUCT
                                ,isnull(mo.FISENTRUST,'false') FISENTRUST
                                ,isnull(moSub.FPROJECTNO,'') FPROJECTNO
                                ,isnull(mp.FPERUNITSTANDHOUR,0) FSTDMANHOUR
                                ,isnull(mp.FSTDLABORPREPARETIME,0) FHRPREPARETIME
                                ,isnull(mp.FSTDMACHINEPREPARETIME,0) FMACPREPARETIME
                                ,isnull(mo.FID,0) FSRCINTERID
                                ,isnull(moSub.FSEQ,0) FSRCENTRYSEQ
                                ,isnull(mo.FID,0) FMOID
                                ,isnull(moSub.FENTRYID,0) FMOENTRYID
                                ,isnull(unit1.HNumber,'') FBASEUNITID
                                ,isnull(org1.HNumber,'') FSTOCKINORGID
                                ,isnull(moSubA.FINSTOCKOWNERTYPEID,'') FOWNERTYPEID
                                ,isnull(org2.HNumber,'') FOWNERID
                                ,isnull(moSub.FCOSTRATE,0) FCOSTRATE
                                ,isnull('','') FSTOCKID
                                ,isnull(moSubA.FISBACKFLUSH,'false') FISBACKFLUSH
                                ,isnull(moSub.FENTRYID,0) FMOMAINENTRYID
                                ,isnull(moSubA.FQAIP,'') FQAIP
                                ,isnull(moSubA.FREQSRC,'') FREQSRC
                                ,isnull(moSub.FSALEORDERNO,'') FREQBILLNO
                                ,isnull(moSub.FSALEORDERID,0) FREQBILLID
                                ,isnull(moSub.FSALEORDERENTRYSEQ,0) FREQENTRYSEQ
                                ,isnull(moSub.FSALEORDERENTRYID,0) FREQENTRYID
                                ,isnull(moSubA.FINSTOCKTYPE,'1') FINSTOCKTYPE
                            from AIS20210811135644..T_PRD_MO mo with(nolock)
                            left join AIS20210811135644..T_PRD_MOENTRY moSub with(nolock) on mo.FID=moSub.FID
                            left join AIS20210811135644..T_PRD_MOENTRY_A moSubA with(nolock) on moSubA.FID=moSub.FID and moSubA.FENTRYID=moSub.FENTRYID
                            left join Xt_ORGANIZATIONS org1 with(nolock) on mo.FPRDORGID=org1.HItemID            --生产组织
                            left join xt_ORGANIZATIONS org2 with(nolock) on moSubA.FINSTOCKOWNERID=org2.HItemID        --入库货主
                            left join AIS20210811135644..t_BD_MaterialProduce mp with(nolock) on moSub.FMATERIALID=mp.FMATERIALID    --物料生产信息
                            left join Gy_Unit as unit with(nolock) on moSub.FUNITID = unit.HItemID
                            left join Gy_Unit as unit1 with(nolock) on moSub.FBASEUNITID = unit1.HItemID
                            left join Gy_Property pr on moSub.FAUXPROPID = pr.HItemID
                            left join Gy_Department dept on moSub.FWORKSHOPID = dept.HItemID
                            where
                            mo.FBillNo = '" + HICMOBillNo + "' " +
                                " and moSub.FENTRYID = " + HICMOEntryID;
                DataSet jsonData = oCN.RunProcReturn(sql1, "AIS20210811135644..T_PRD_MO");
                if (jsonData == null || jsonData.Tables[0].Rows.Count == 0)
                {
                    return "";
                }
                string FBillType = "SCHBD01_SYS";                                                                               //单据类型
                string FPRDORGIDNumber = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FPRDORGIDNumber"]);             //生产组织编码
                string FPRDORGID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FPRDORGID"]);                         //生产组织编码
                string FAUXPROPNumber = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FAUXPROPNumber"]);               //辅助属性
                string FIsNew = "false";                                                                                        //是否新增行
                string FPRODUCTTYPE = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FPRODUCTTYPE"]);                   //产品类型
                string FREPORTTYPE = "";                                                                                        //生产汇报类型
                string FUNITNumber = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FUNITNumber"]);                     //单位编码
                string FWORKSHOPNumber = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FWORKSHOPNumber"]);             //部门
                string FMTONO = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FMTONO"]);                               //计划跟踪号
                string FCHECKPRODUCT = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FCHECKPRODUCT"]);                 //产品检验
                string FISENTRUST = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FISENTRUST"]);                       //组织委托加工
                string FSRCBILLTYPE = "PRD_MO";                                                                                 //源单类型
                string FPROJECTNO = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FPROJECTNO"]);                       //项目编号
                string FSTDMANHOUR = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FSTDMANHOUR"]);                     //单位标准工时
                string FHRPREPARETIME = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FHRPREPARETIME"]);               //人员准备工时
                string FMACPREPARETIME = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FMACPREPARETIME"]);             //机器准备工时
                string FSRCINTERID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FSRCINTERID"]);                     //源单内码
                string FSRCENTRYSEQ = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FSRCENTRYSEQ"]);                   //源单行号
                string FMOID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FMOID"]);                                 //生产订单内码
                string FMOENTRYID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FMOENTRYID"]);                       //生产订单分录号
                string FBASEUNITID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FBASEUNITID"]);                     //基本单位
                string FSTOCKINORGID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FSTOCKINORGID"]);                 //入库组织
                string FBOMID = "";                               //BOM版本
                string FOWNERTYPEID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FOWNERTYPEID"]);                   //货主类型
                string FOWNERID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FOWNERID"]);                           //货主
                string FSTOCKID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FSTOCKID"]);                           //仓库
                string FCOSTRATE = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FCOSTRATE"]);                         //成本权重
                string FSNUNITID = "";                         //序列号单位
                string FISBACKFLUSH = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FISBACKFLUSH"]);                   //倒冲领料
                string FMOMAINENTRYID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FMOMAINENTRYID"]);               //生产订单主产品分录
                string FQAIP = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FQAIP"]);                                 //紧急放行
                string FREQSRC = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FREQSRC"]);                             //需求来源
                string FREQBILLNO = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FREQBILLNO"]);                       //需求单据
                string FREQBILLID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FREQBILLID"]);                       //需求单据内码
                string FREQENTRYSEQ = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FREQENTRYSEQ"]);                   //需求单据行号
                string FREQENTRYID = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FREQENTRYID"]);                     //需求单据分录内码
                string FINSTOCKTYPE = Pub_Class.ClsPub.isStrNull(jsonData.Tables[0].Rows[0]["FINSTOCKTYPE"]);                   //供下推入库单使用-入库类型
                string FEntity_Link_FFlowId = "f6e6eec3-5267-4f02-8593-b633da508a72";   //业务流程图
                string FEntity_Link_FFlowLineId = "3";                                  //推进路线
                string FEntity_Link_FRuleId = "PRD_MO2MORPT";                           //转换规则
                string FEntity_Link_FSTableName = "T_PRD_MOENTRY";                      //源单表
                string FBFLOWID = "f6e6eec3-5267-4f02-8593-b633da508a72";             //业务流程
                //获取生产汇报类型
                string sql2 = @"select top(1)
                                FNUMBER FREPORTTYPE
                            from AIS20210811135644..T_PRD_REPORTTYPE with(nolock)
                            Where FUSEORGID = " + FPRDORGID +
                                " and FISDEFREPTYPE=1";
                DataSet jsonData2 = oCN.RunProcReturn(sql2, "T_PRD_REPORTTYPE");
                if (jsonData2 != null && jsonData2.Tables[0].Rows.Count > 0)
                {
                    FREPORTTYPE = Pub_Class.ClsPub.isStrNull(jsonData2.Tables[0].Rows[0]["FREPORTTYPE"]);
                }
                //最终语句
                string json = "";
                string sJson_ZYMESFLAG = "";    //生产汇报单同步MES标记
                string sJson_MainCustom = "";   //主表自定义字段
                string sJson_Date = "";         //单据日期
                //sJson_MainCustom = Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["MainCustom"]);
                //单据日期
                sJson_Date = ",\"FDATE\":\"" + data.reportDate + "\"";
                sJson_ZYMESFLAG = "";
                string sJson_Main =
                    "{" +
                        "\"Creator\":\"\"" +
                        ",\"NeedUpDateFields\":[]" +
                        ",\"NeedReturnFields\":[]" +
                        ",\"IsDeleteEntry\":\"True\"" +
                        ",\"SubSystemId\":\"\"" +
                        ",\"IsVerifyBaseDataField\":\"false\"" +
                        ",\"IsEntryBatchFill\":\"false\"" +
                        ",\"ValidateFlag\":\"True\"" +
                        ",\"NumberSearch\":\"True\"" +
                        ",\"InterationFlags\":\"\"" +
                        ",\"Model\": " +
                            "{ " +
                                "\"FBILLNO\":\"" + data.produceReportId + "\"" +
                                //",\"FID\":\"" + oMain.HInterID.ToString() + "\"" +
                                ",\"FBillType\":" +
                                    "{" +
                                        "\"FNumber\":\"" + FBillType + "\"" +
                                    "}" +
                                ",\"FDocumentStatus\":\"\"" +
                                sJson_Date +
                                ",\"FPRDORGID\":" +
                                    "{" +
                                        "\"FNumber\":\"" + FPRDORGIDNumber + "\"" +
                                    "}" +
                                //",\"FWorkshipIdH\":" +
                                //    "{" +
                                //        "\"FNumber\":\"\"" +
                                //    "}" +
                                //",\"FDescription\":\"\"" +
                                sJson_ZYMESFLAG +
                                sJson_MainCustom +
                                ",\"FEntity\": [   ";
                string sJson_Entry = "";
                string sJson_BatchNo = "";
                string sJson_StockPlace = "";
                string sJson_FProduceDate = "";     //生产日期
                string sJson_FExpiryDate = "";      //有效期至
                string sJson_EntryCustom = "";
                string sJson_FAUXPROPID = "";
                string sJson_SubCustom = "";    //子表自定义字段
                //子表自定义字段
                //sJson_SubCustom = Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["SubCustom"]);
                ////是否启用批次管理
                //if (Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HISBATCHMANAGE"]) == "1")
                //{
                //    sJson_BatchNo = "  \"FLOT\": {\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FLOT"]) + "\"},    \"FLOT_TEXT\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FLOT"]) + "\"  , ";
                //}
                //else
                //{
                //    sJson_BatchNo = "";
                //}
                ////是否启用保质期控制
                //if (Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FISKFPERIOD"]) == "1")
                //{
                //    sJson_FProduceDate = " \"FProduceDate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FProduceDate"]) + "\",";
                //    sJson_FExpiryDate = " \"FExpiryDate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FExpiryDate"]) + "\",";
                //}
                //else
                //{
                //    sJson_FProduceDate = "";
                //    sJson_FExpiryDate = "";
                //}
                //辅助属性
                sJson_FAUXPROPID = ", \"FAUXPROPID\":" +
                                        "{" +
                                            "\"FAUXPROPID__FF100002\":" +
                                                "{" +
                                                    "\"FNumber\":\"" + FAUXPROPNumber + "\"" +
                                                "}" +
                                        "}";
                ////仓位
                //if (Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSTOCKLOCID"]) == "")
                //{
                //    sJson_StockPlace = "";
                //}
                //else
                //{
                //    sJson_StockPlace = Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSTOCKLOCID"]) + "\"}},";
                //}
                //自定义字段处理
                sJson_EntryCustom = "";
                sJson_Entry = sJson_Entry +
                    " {" +
                        //"\"FEntryID\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HEntryID"]) + "," +
                        " \"FSRCENTRYID\":" + HICMOEntryID + "" +
                        ", \"FIsNew\":" + FIsNew + "" +
                        ", \"FMATERIALID\":" +
                            "{" +
                                "\"FNumber\":\"" + data.partNum + "\"" +
                            "}" +
                        ", \"FPRODUCTTYPE\":\"" + FPRODUCTTYPE + "\"" +
                        ", \"FREPORTTYPE\":" +
                            "{" +
                                "\"FNumber\":\"" + FREPORTTYPE + "\"" +
                            "}" +
                        ", \"FUNITID\":" +
                            "{" +
                                "\"FNumber\":\"" + FUNITNumber + "\"" +
                            "}" +
                        ", \"FWORKSHIPID\":" +
                            "{" +
                                "\"FNumber\":\"" + FWORKSHOPNumber + "\"" +
                            "}" +
                        //", \"FShiftGroupId\":{\"FNumber\":\"\"}" +
                        sJson_BatchNo +
                        //\"FDeptId\":{\"FNumber\":\"\"},
                        //sJson_StockPlace +          //仓位移到下方
                        ",  \"FMTONO\":\"" + FMTONO + "\"" +
                        ", \"FCHECKPRODUCT\":" + FCHECKPRODUCT + "" +
                        ", \"FISENTRUST\":" + FISENTRUST + "" +
                        ", \"FSRCBILLTYPE\":\"" + FSRCBILLTYPE + "\"" +
                        ", \"FMOBILLNO\":\"" + HICMOBillNo + "\"" +
                        //", \"FAUXPROPID\":" +
                        //    "{" +
                        //        "\"FAUXPROPID__FF100002\":" +
                        //            "{" +
                        //                "\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FAUXPROPID"]) + "\"" +
                        //            "}" +
                        //    "}" +
                        sJson_FAUXPROPID +
                        //", \"FHumanQty\":\"0\"" +
                        ", \"FSRCBILLNO\":\"" + HICMOBillNo + "\"" +
                        //", \"FMachineQty\":\"0\"" +
                        //", \"FMaterialUnitID\":" +
                        //    "{" +
                        //        "\"FNumber\":\"\"" +
                        //    "}" +
                        //", \"FStartTime\":\"1900-01-01\"" +
                        //", \"FEndTime\":\"1900-01-01\"" +
                        //", \"FTimeUnitId\":\"\"" +
                        ", \"FMOENTRYSEQ\":" + HICMOSEQ + "" +
                        //", \"FSTANDHOURUNITID\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSTANDHOURUNITID"]) + "\"" +
                        ", \"FPROJECTNO\":\"" + FPROJECTNO + "\"" +
                        ", \"FSTDMANHOUR\":" + FSTDMANHOUR + "" +
                        ", \"FHRPREPARETIME\":" + FHRPREPARETIME + "" +
                        //", \"FHrWorkTime\":\"0\"" +
                        ", \"FMACPREPARETIME\":" + FMACPREPARETIME + "" +
                        //",\"FMacWorkTime\":\"0\"" +
                        //",\"FDescriptionE\":\"\"" +
                        ", \"FSRCINTERID\":" + FSRCINTERID + "" +
                        ", \"FSRCENTRYSEQ\":" + FSRCENTRYSEQ + "" +
                        ", \"FMOID\":" + FMOID + "" +
                        ", \"FMOENTRYID\":" + FMOENTRYID + "" +
                        ", \"FBASEUNITID\":" +
                            "{" +
                                "\"FNumber\":\"" + FBASEUNITID + "\"" +
                            "}" +
                        ", \"FSTOCKINORGID\":" +
                            "{" +
                                "\"FNumber\":\"" + FSTOCKINORGID + "\"" +
                            "}" +
                        ", \"FBOMID\":" +
                            "{" +
                                "\"FNumber\":\"" + FBOMID + "\"" +
                            "}" +
                        ", \"FOWNERTYPEID\":\"" + FOWNERTYPEID + "\"" +
                        ", \"FOWNERID\":" +
                            "{" +
                                "\"FNumber\":\"" + FOWNERID + "\"" +
                            "}" +
                        ", \"FSTOCKID\":" +
                            "{" +
                                "\"FNumber\":\"" + FSTOCKID + "\"" +
                            "}" +
                        ", \"FCOSTRATE\":" + FCOSTRATE + "" +
                        ", \"FSNUNITID\":" +
                            "{" +
                                "\"FNumber\":\"" + FSNUNITID + "\"" +
                            "}" +
                        //", \"FSNQty\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSNQty"]) + "" +
                        sJson_FProduceDate +
                        sJson_FExpiryDate +
                        ", \"FISBACKFLUSH\":" + FISBACKFLUSH + "" +
                        ", \"FMOMAINENTRYID\":" + FMOMAINENTRYID + "" +
                        ", \"FQAIP\":\"" + FQAIP + "\"" +
                        ", \"FREQSRC\":\"" + FREQSRC + "\"" +
                        ", \"FREQBILLNO\":\"" + FREQBILLNO + "\"" +
                        ", \"FREQBILLID\":" + FREQBILLID + "" +
                        ", \"FREQENTRYSEQ\":" + FREQENTRYSEQ + "" +
                        ", \"FREQENTRYID\":" + FREQENTRYID + "" +
                        ", \"FBASEQUAQTY\":" + data.standardNum + "" +
                        ", \"FQUAQTY\":" + data.standardNum + "" +
                        ", \"FBASEFINISHQTY\":" + data.standardNum + "" +
                        ", \"FFINISHQTY\":" + data.standardNum + "" +
                        ", \"FInStockType\":\"" + FINSTOCKTYPE + "\"" +
                        sJson_StockPlace +
                        sJson_EntryCustom +
                        sJson_SubCustom +
                        //",\"FSerialSubEntity\":" +
                        //    "[" +
                        //        "{" +
                        //            "\"FDetailID\":\"0\"" +
                        //            ",\"FQCMaterialId\":" +
                        //                "{" +
                        //                    "\"FNUMBER\":\"\"" +
                        //                "}" +
                        //            ",\"FInspectResult\":\"\"" +
                        //            ",\"FQcAuxPropId\":" +
                        //                "{" +
                        //                    "\"FQCAUXPROPID__FF100002\":" +
                        //                        "{" +
                        //                            "\"FNumber\":\"\"" +
                        //                        "}" +
                        //                "}" +
                        //            ",\"FQCQty\":\"0\"" +
                        //            ",\"FSerialNo\":\"\"" +
                        //            ",\"FSerialId\":" +
                        //                "{" +
                        //                    "\"FNUMBER\":\"\"" +
                        //                "}" +
                        //            ",\"FQCStockInSelQty\":\"0\"" +
                        //            ",\"FSerialNote\":\"\"" +
                        //            ",\"FBaseQCQty\":\"0\"" +
                        //            ",\"FBaseQCStockInSelQty\":\"0\"" +
                        //        "}" +
                        //    "]"
                        ", \"FEntity_Link\": " +
                            "[" +
                                "{" +
                                    " \"FEntity_Link_FFlowId\":\"" + FEntity_Link_FFlowId + "\"" +
                                    ", \"FEntity_Link_FFlowLineId\":\"" + FEntity_Link_FFlowLineId + "\"" +
                                    ", \"FEntity_Link_FRuleId\":\"" + FEntity_Link_FRuleId + "\"" +
                                    ", \"FEntity_Link_FSTableName\":\"" + FEntity_Link_FSTableName + "\"" +
                                    ", \"FEntity_Link_FSBillId\":\"" + FMOID + "\"" +
                                    ", \"FEntity_Link_FSId\":\"" + FMOENTRYID + "\"" +
                                " }" +
                            " ]" +
                        ", \"FBFLOWID\":" +
                            "{" +
                                "\"FID\":\"" + FBFLOWID + "\"" +
                            "}" +
                    "}";
                string sJson_End = "  ]  }}";
                json = sJson_Main + sJson_Entry + sJson_End;
                return json;
            //}catch(Exception e)
            //{
            //    return e.Message;
            //}
        }
        #endregion
        #endregion
    }
    #endregion