1
zrg
2025-10-21 0910a653b936af52e97633c70f6d6dee3f3f5a2b
WebAPI/Controllers/²Ö´æ¹ÜÀí/ίÍâÓÃÁÏ/WW_PPBomBillController.cs
@@ -1,4 +1,6 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
@@ -26,6 +28,7 @@
        {
            try
            {
                List<object> columnNameList = new List<object>();  //定义声明变量 ï¼ŒæŠŠé€šè¿‡ new List<object>()创建的 å®žä¾‹ï¼Œèµ‹å€¼ç»™å˜é‡
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("WW_PPBomBill_Query", 1, false, user))
                {
@@ -37,20 +40,29 @@
                }
                ds = WW_PPBomBillList(sWhere);
                if (ds == null)
                if (ds.Tables[0].Rows.Count != 0 || ds != null)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "查询数据异常,请与管理员联系!";
                    objJsonResult.data = null;
                    foreach (DataColumn col in ds.Tables[0].Columns)//遍历ds中第一个表(Tables[0])的所有列(Columns)每次循环中,col变量会持有当前列的引用
                    {
                        Type dataType = col.DataType; //获取当前数据类型传入 è‡ªå®šä¹‰å˜é‡datadataType
                        string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}"; //字符串拼接         // å°†åˆ—名和数据类型信息拼接成一个JSON格式的字符串
                        columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                    }
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = ds.Tables[0];//代码将第一个DataTable(索引为0)赋值给objJsonResult的data属性
                    objJsonResult.list = columnNameList;//将columnNameList赋值给objJsonResult的list属性
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "返回记录成功!";
                    objJsonResult.data = ds.Tables[0];
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无数据";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
@@ -76,8 +88,127 @@
                string sql = sql1 + sWhere + " order by hmainid desc";
                return new SQLHelper.ClsCN().RunProcReturn(sql, "h_v_WW_PPBomBillList");
            }
        }
        #region å§”外用料清单订单 é‡‘蝶同步
        [Route("WW_PPBomBillController/SaveWW_PPBomBillApi")]
        [HttpPost]
        public object SaveWW_PPBomBillApi([FromBody] JObject sMainSub)
        {
            LogService.Write("开始同步");
            try
            {
                LogService.Write($"接收到的完整数据: {sMainSub.ToString()}");
                var model = sMainSub["model"].ToString();
                var entry = sMainSub["model"]["HENTRY"].ToString();
                model = "[" + model.ToString() + "]";
                LogService.Write($"主表模型JSON: {model}");
                LogService.Write($"子表模型JSON: {entry}");
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ListModels oListModels = new ListModels();
                List<ClsWW_PPBomBill> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsWW_PPBomBill>>(model);
                List<ClsWW_PPBomBillSubERP> subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsWW_PPBomBillSubERP>>(entry);
                // æ·»åŠ ç±»åž‹æ£€æŸ¥æ—¥å¿—
                LogService.Write($"主表HInterID类型: {mainList[0].HInterID.GetType()}");
                LogService.Write($"主表HInterID值: {mainList[0].HInterID}");
                string sql = string.Empty;
                LogService.Write($"主模型数据{mainList}");
                LogService.Write($"子模型数据{subList}");
                //保存
                oCN.BeginTran();
                int hInterID = mainList[0].HInterID;
                LogService.Write($"开始处理 HInterID: {hInterID}");
                string checkSql = $"SELECT COUNT(1) FROM WW_PPBomBillSub WHERE HInterID = {hInterID}";
                LogService.Write($"检查子表数据是否存在: {checkSql}");
                // 2. åˆ é™¤å­è¡¨æ•°æ®
                string deleteSubSql = $"DELETE FROM WW_PPBomBillSub WHERE HInterID = {hInterID}";
                LogService.Write($"删除子表SQL: {deleteSubSql}");
                oCN.RunProc(deleteSubSql, ref DBUtility.ClsPub.sExeReturnInfo);
                LogService.Write("子表数据删除完成");
                // 3. åˆ é™¤ä¸»è¡¨æ•°æ®
                string deleteMainSql = $"DELETE FROM WW_PPBomBillMain WHERE HInterID = {hInterID}";
                LogService.Write($"删除主表SQL: {deleteMainSql}");
                oCN.RunProc(deleteMainSql, ref DBUtility.ClsPub.sExeReturnInfo);
                LogService.Write("主表数据删除完成");
                oCN.RunProc($@"insert into WW_PPBomBillMain
               (HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate
               ,HBillNo,HBillStatus,HICMOInterID,HICMOEntryID,HSUBBILLNO,HSUBREQENTRYSEQ
               ,HMaterID,HUnitID,HQty,HSupID,HDEPTID,HPOOrderBillNo,HPOOrderSeq
               ,HMaker,HMakeDate,HChecker,HCheckDate,HUpDater,HUpDateDate
               ,HSeOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HSeOrderSEQ
               ,HPRDORGID,HENTRUSTORGID,HPARENTOWNERID,HPARENTOWNERTYPEID
               ,HERPInterID,HERPBillType,HSETTLEORGID,HREQSRC)
                  values({mainList[0].HInterID},'{mainList[0].HYear}','{mainList[0].HPeriod}','{mainList[0].HBillType}','{mainList[0].HBillSubType}','{mainList[0].HDate}','{mainList[0].HBillNo}'
           ,'{mainList[0].HBillStatus}','{mainList[0].HICMOInterID}','{mainList[0].HICMOEntryID}','{mainList[0].HSUBBILLNO}','{mainList[0].HSUBREQENTRYSEQ}','{mainList[0].HMaterID}',{mainList[0].HUnitID},'{mainList[0].HQty}','{mainList[0].HSupID}','{mainList[0].HDeptID}',
            '{mainList[0].HPOOrderBillNo}','{mainList[0].HPOOrderSeq}','{mainList[0].HMaker}','{mainList[0].HMakeDate}','{mainList[0].HChecker}','{mainList[0].HCheckDate}','{mainList[0].HUpDater}','{mainList[0].HUpDateDate}','{mainList[0].HSeOrderBillNo}','{mainList[0].HSeOrderInterID}','{mainList[0].HSeOrderEntryID}','{mainList[0].HSeOrderSEQ}'
            ,'{mainList[0].HPRDORGID}','{mainList[0].HENTRUSTORGID}','{mainList[0].HPARENTOWNERID}'
            ,'{mainList[0].HPARENTOWNERTYPEID}','{mainList[0].HERPInterID}','{mainList[0].HERPBillType}','{mainList[0].HSETTLEORGID}','{mainList[0].HREQSRC}'
)", ref DBUtility.ClsPub.sExeReturnInfo);
                LogService.Write("主表插入成功");
                foreach (var oSub in subList)
                {
                    var count = subList.Count();
                    LogService.Write($"子表数据条数为{count}");
                    //新增子表:
                    oCN.RunProc($@"   insert into WW_PPBomBillSub
                   (HInterID,HEntryID,HMaterID,HUnitID,HQty,HQtyMust,HWHID,HRemark
                   ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType
                   ,HICMOInterID,HICMOEntryID,HICMOBillNo
                   ,HCHILDSUPPLYORGID,HSUPPLYORGID,HENTRUSTPICKORGID,HSRCTRANSORGID,HGROUPBYOWNERID,HOWNERID,HOWNERTYPEID
                   ,HRelationQty,HMoveStockQty,HAuxPropID,HBatchNO,HMTONo,HQtyScrap,HERPInterID,HERPEntryID
                   ,HBackRelationQty
                   ,HPROCESSID,HBASEUNITID,HPROJECTNO,HOPERID,HSEQ
                   ,HSTOCKSTATUSID,HRESERVETYPE
                   )
                      values({oSub.HInterID},'{oSub.HEntryID}','{oSub.HMaterID}','{oSub.HUnitID}','{oSub.HQty}',{oSub.HQtyMust},'{oSub.HWHID}',
                        '{oSub.HRemark}','{oSub.HSourceInterID}','{oSub.HSourceEntryID}','{oSub.HSourceBillNo}','{oSub.HSourceBillType}',{oSub.HICMOInterID },'{oSub.HICMOEntryID}','{oSub.HICMOBillNo}','{oSub.HCHILDSUPPLYORGID}','{oSub.HSUPPLYORGID}'
                        ,'{oSub.HENTRUSTPICKORGID}','{oSub.HSRCTRANSORGID}','{oSub.HGROUPBYOWNERID}','{oSub.HOWNERID}','{oSub.HOWNERTYPEID}','{oSub.HRelationQty}','{oSub.HMoveStockQty}','{oSub.HAuxPropID}','{oSub.HBatChNo}','{oSub.HMTONo}','{oSub.HQtyScrap}',
                        {oSub.HERPInterID},'{oSub.HERPEntryID}','{oSub.HBackRelationQty}','{oSub.HPROCESSID}',{oSub.HBASEUNITID },'{oSub.HPROJECTNO}','{oSub.HOPERID}','{oSub.HSEQ}','{oSub.HSTOCKSTATUSID}','{oSub.HRESERVETYPE}'
                        )", ref DBUtility.ClsPub.sExeReturnInfo);
                }
                LogService.Write("子表插入成功");
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                LogService.Write("异常信息:" + e.ToString());
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        #endregion
    }
    #endregion
}