chenhaozhe
2026-04-16 82b57de13d9449c48944db91d7f17b477169c324
WebAPI/Controllers/CJGL/Sc_ProcessExchangeBillController.cs
@@ -1,6 +1,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Pub_Class;
using SyntacticSugar.constant;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -9,6 +10,7 @@
using System.Web.Http;
using System.Windows.Forms;
using WebAPI.Models;
using System.Linq;
namespace WebAPI.Controllers
{
@@ -50,6 +52,7 @@
            string msg4 = sArray[2].ToString();
            string msg5 = sArray[3].ToString();
            string HBillSubType = sArray[4].ToString();
            string msg6 = sArray.Length > 5 ? sArray[5] : ""; // 这里安全了
            string HComputerName = SystemInformation.ComputerName; //设备名称    
            string UserName = "";
@@ -63,7 +66,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "指引卡无保存权限!";
                        objJsonResult.Message = "[3772-2-029]指引卡无保存权限!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -73,7 +76,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "流转卡无保存权限!";
                        objJsonResult.Message = "[3772-2-029]流转卡无保存权限!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -89,7 +92,7 @@
                {
                    UserName = oItem.HMaker;  //制单人
                    oItem.HBillType = "3772";
                    oItem.HBillSubType = HBillSubType == "SUB" ? HBillSubType : "3772";
                    oItem.HBillSubType = HBillSubType == "SUB" ? HBillSubType : oItem.HBillSubType;
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HPeriod = DBUtility.ClsPub.isLong(DateTime.Now.Month);
                    oItem.HDate = HBillSubType == "SUB" ? DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")) : oItem.HDate;
@@ -97,7 +100,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有单据日期,无法保存!";
                        objJsonResult.Message = "[3772-2-030]保存失败!没有单据日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
@@ -122,30 +125,96 @@
                    oBill.DetailColl.Add(oItemSub);
                }
                //返工表体数据
                //按 },{来拆分数组 //去掉【和】
                List<Model.Sc_ProcessExchangeBillSub_HRelationBack> ls2 = new List<Model.Sc_ProcessExchangeBillSub_HRelationBack>();
                if (!string.IsNullOrEmpty(msg6))
                {
                    // 只有 msg6 不为空才走这里
                    msg6 = msg6.Substring(1, msg6.Length - 2);
                    msg6 = msg6.Replace("\\", "");
                    msg6 = msg6.Replace("\n", "");
                    // 这里必须传 msg6,不是 msg3!!!
                    ls2 = oListModels.getObjectByJson_Sc_ProcessExchangeBillSub_HRelationBack(msg6);
                }
                int i2 = 0;
                foreach (Model.Sc_ProcessExchangeBillSub_HRelationBack oItemSub2 in ls2)
                {
                    i2++;
                    oItemSub2.HEntryID = i2;
                    oItemSub2.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    // 在这里直接给默认值!
                    // ======================
                    oItemSub2.HProcExchInterID = oItemSub2.HProcExchInterID > 0 ? oItemSub2.HProcExchInterID : 0;
                    oItemSub2.HProcExchEntryID = oItemSub2.HProcExchEntryID > 0 ? oItemSub2.HProcExchEntryID : 0;
                    oItemSub2.HProcExchBillNo = string.IsNullOrEmpty(oItemSub2.HProcExchBillNo) ? "" : oItemSub2.HProcExchBillNo;
                    oItemSub2.HICMOInterID = oItemSub2.HICMOInterID > 0 ? oItemSub2.HICMOInterID : 0;
                    oItemSub2.HICMOEntryID = oItemSub2.HICMOEntryID > 0 ? oItemSub2.HICMOEntryID : 0;
                    oItemSub2.HICMOBillNo = string.IsNullOrEmpty(oItemSub2.HICMOBillNo) ? "" : oItemSub2.HICMOBillNo;
                    oItemSub2.HStationOutInterID = oItemSub2.HStationOutInterID > 0 ? oItemSub2.HStationOutInterID : 0;
                    oItemSub2.HStationOutBillNo = string.IsNullOrEmpty(oItemSub2.HStationOutBillNo) ? "" : oItemSub2.HStationOutBillNo;
                    oBill.DetailColl2.Add(oItemSub2);
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (msg5 == "xz")
                {
                    LogService.Write("用户:" + msg4 + ",日期:" + DateTime.Now + ",新增工序流转卡单据:" + oBill.omodel.HBillNo);
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + msg4 + "','" + HComputerName + "','" + "新增工序流转卡单据:" + oBill.omodel.HBillNo + "','LMES-工序流转卡模块','" + DBUtility.ClsPub.IPAddress + "','新增单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + msg4 + "','" + HComputerName + "','" + "新增工序流转卡单据:" + oBill.omodel.HBillNo  + "','LMES-工序流转卡模块','" + DBUtility.ClsPub.IPAddress + "','新增单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    LogService.Write("用户:" + msg4 + ",日期:" + DateTime.Now + ",修改工序流转卡单据:" + oBill.omodel.HBillNo);
                    bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                    oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + msg4 + "','" + HComputerName + "','" + "修改工序流转卡单据:" + oBill.omodel.HBillNo + "','LMES-工序流转卡模块','" + DBUtility.ClsPub.IPAddress + "','修改单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                }
                if (bResult)
                {
                    //自动审核设置
                    if (msg5 == "xz")
                    {
                        objJsonResult.HInterID = oBill.omodel.HInterID.ToString(); //返回主ID
                        //系统参数  自动审核
                        string sReturn = "";
                        if (oSystemParameter.ShowBill(ref sReturn) == true)
                        {
                            if (oSystemParameter.omodel.Sc_ProcessExchangeBill_AutoCheck == "Y") //系统参数  自动审核
                            {
                                objJsonResult.Verify = "Y";
                            }
                            else
                            {
                                objJsonResult.Verify = "N";
                            }
                        }
                    }
                    else
                    {
                        objJsonResult.HInterID = oBill.omodel.HInterID.ToString(); //返回主ID
                        objJsonResult.Verify = "N";
                    }
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "保存成功!";
                    //WebAPIController.Add_Log("送货单下推", UserName, "生成送货单");
                    objJsonResult.Message = "[0000-1-050]保存成功!";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
@@ -153,7 +222,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.Message = "[0000-1-051]保存失败!" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
@@ -162,7 +231,7 @@
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.Message = "[0000-1-051]保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
@@ -681,7 +750,7 @@
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.Message = "[0000-1-037]Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = listCol;
                return objJsonResult;
@@ -690,7 +759,7 @@
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.Message = "[0000-1-038]Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -827,20 +896,51 @@
                string sql = string.Format(@"select 流水号 HProcNo,HProcID,工序代码 HProcNumber,工序名称 HProcName,加工说明 HWorkRemark,HCenterID,工作中心代码 HCenterNumber,
                                                工作中心 HCenterName,HSupID,供应商代码 HSupNumber,供应商 HSupName,isEntrust HSupFlag,计划数量 HQty,加工单价 HOutPrice, 表体备注 HRemark,
                                            进站关联数量 HRelationQty_In,出站关联数量 HRelationQty_Out,委外工单数量 HRelationQty_WWOrder,不合格数量 HRelationQty_Bad,超额比例 HOverRate,
                                            良率 HPassRate,累计良率 HSumPassRate,图纸编号 HPicNum,本工序确认记录 HProcCheckNote,工艺参数 HTechnologyParameter,HDeptID,
                                            加工车间代码 HDeptNumber,加工车间 HDeptName,出站报废关联数量 HRelationQty_OutBad,SN过站控制 HSNCtrl
                                            良率 HPassRate,累计良率 HSumPassRate,图纸编号 HPicNum,本工序确认记录 HProcCheckNote,工艺参数 HTechnologyParameter,HDeptID,HSourceID,
                                            加工车间代码 HDeptNumber,加工车间 HDeptName,出站报废关联数量 HRelationQty_OutBad,SN过站控制 HSNCtrl,HRoutingInterID HRoutingBillMainID,HRoutingEntryID HRoutingBillEntryID
                                            from h_v_Sc_ProcessExchangeBillQuerySub");
                ds = oCN.RunProcReturn(sql+ " where hmainid="+ HInterID + "  order by cast(流水号 as int) ", "h_v_Sc_ProcessExchangeBillQuerySub");
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "获取信息成功!";
                objJsonResult.Message = "[0000-1-037]获取信息成功!";
                objJsonResult.data = ds.Tables[0];
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.Message = "[0000-1-045]没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
            }
            return objJsonResult;
        }
        // 工序流转卡返工信息
        [Route("Sc_ProcessExchangeBill/GetProcessExchangeBillSub_Back")]
        [HttpGet]
        public object GetProcessExchangeBillSub_Back(string HInterID)
        {
            DataSet ds;
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                string sql = string.Format(@"SELECT ISNULL(HSourceInterID, 0) AS HSourceInterID,ISNULL(HSourceEntryID, 0) AS HSourceEntryID,ISNULL(HSourceBillNo, '') AS HSourceBillNo,
                ISNULL(HSourceBillType, '') AS HSourceBillType,ISNULL(HProcExchInterID, 0) AS HProcExchInterID,ISNULL(HProcExchEntryID, 0) AS HProcExchEntryID,
                ISNULL(HProcExchBillNo, '') AS HProcExchBillNo,ISNULL(HICMOInterID, 0) AS HICMOInterID,ISNULL(HICMOEntryID, 0) AS HICMOEntryID,
                ISNULL(HICMOBillNo, '') AS HICMOBillNo,ISNULL(HStationOutInterID, 0) AS HStationOutInterID,ISNULL(HStationOutBillNo, '') AS HStationOutBillNo
                FROM Sc_ProcessExchangeBillSub_HRelationBack where HInterID=" + HInterID + "  order by HEntryID ");
                ds = oCN.RunProcReturn(sql, "Sc_ProcessExchangeBillSub_HRelationBack");
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "[0000-1-037]获取信息成功!";
                objJsonResult.data = ds.Tables[0];
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "[0000-1-045]没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
            }
            return objJsonResult;
@@ -864,7 +964,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "指引卡无删除权限!";
                    objJsonResult.Message = "[0000-1-004]指引卡无删除权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -875,7 +975,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "流转卡无删除权限!";
                    objJsonResult.Message = "[0000-1-004]流转卡无删除权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -903,7 +1003,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据号:" + oBill.omodel.HBillNo + "单据ID为空!";
                        objJsonResult.Message = "[0000-1-009]单据号:" + oBill.omodel.HBillNo + "单据ID为空!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -919,7 +1019,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据号:" + oBill.omodel.HBillNo + "流转卡已经有下游进出站单后,不允许删除!";
                        objJsonResult.Message = "[3772-1-010]单据号:" + oBill.omodel.HBillNo + "流转卡已经有下游进出站单后,不允许删除!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -933,7 +1033,7 @@
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "单据号:" + oBill.omodel.HBillNo + "只能删除本人的单据!";
                                objJsonResult.Message = "[0000-1-011]单据号:" + oBill.omodel.HBillNo + "只能删除本人的单据!";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
@@ -945,7 +1045,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据号:" + oBill.omodel.HBillNo + "单据当前处于不能删除状态,不能删除!";
                        objJsonResult.Message = "[0000-1-012]单据号:" + oBill.omodel.HBillNo + "单据当前处于不能删除状态,不能删除!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -954,7 +1054,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据号:" + oBill.omodel.HBillNo + "单据已经审核,不能删除!";
                        objJsonResult.Message = "[0000-1-013]单据号:" + oBill.omodel.HBillNo + "单据已经审核,不能删除!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -965,7 +1065,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据未找到";
                    objJsonResult.Message = "[0000-1-005]单据未找到";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -987,7 +1087,7 @@
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "无流转卡数据!";
                        objJsonResult.Message = "[0000-1-005]无流转卡数据!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1002,7 +1102,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!原因:删除前判断失败,请与网络管理人员联系";
                    objJsonResult.Message = "[0000-1-006]删除失败!原因:删除前判断失败,请与网络管理人员联系";
                    objJsonResult.data = null;
                    oCN.RollBack();
                    return objJsonResult;
@@ -1012,7 +1112,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                    objJsonResult.Message = "[3772-1-007]删除失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString();
                    objJsonResult.data = null;
                    oCN.RollBack();
                    return objJsonResult;
@@ -1026,7 +1126,7 @@
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.Message = "[3772-1-007]" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -1047,7 +1147,7 @@
            objJsonResult.code = "0";
            objJsonResult.count = 1;
            objJsonResult.Message = DBUtility.ClsPub.sExeReturnInfo;
            objJsonResult.Message = "[0000-1-008]" + DBUtility.ClsPub.sExeReturnInfo;
            objJsonResult.data = null;
            return objJsonResult;
        }
@@ -1078,7 +1178,7 @@
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.list = columnNameList;
                objJsonResult.Message = "获取信息成功!";
                objJsonResult.Message = "[0000-1-037]获取信息成功!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
@@ -1086,7 +1186,7 @@
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.Message = "[0000-1-038]没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -1138,14 +1238,14 @@
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "获取信息成功!";
                objJsonResult.Message = "[0000-1-037]获取信息成功!";
                objJsonResult.data = ds.Tables[0];
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.Message = "[0000-1-045]没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
            }
            return objJsonResult;
@@ -1375,7 +1475,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "指引卡无权限审核!";
                        objJsonResult.Message = "[3772-1-022]指引卡无权限审核!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1386,7 +1486,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "流转卡无权限审核!";
                        objJsonResult.Message = "[3772-1-022]流转卡无权限审核!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1397,7 +1497,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID为空!";
                    objJsonResult.Message = "[0000-1-009]HInterID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -1419,7 +1519,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已审核!不需要再审核!";
                            objJsonResult.Message = "[0000-1-023]单据已审核!不需要再审核!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -1433,7 +1533,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:审核前判断失败,请与网络管理人员联系";
                        objJsonResult.Message = "[0000-1-024]审核失败!原因:审核前判断失败,请与网络管理人员联系";
                        objJsonResult.data = null;
                        return objJsonResult;
@@ -1442,7 +1542,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.Message = "[0000-1-025]审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1453,7 +1553,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.Message = "[0000-1-025]审核失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1470,7 +1570,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已反审核!不需要再反审核!";
                            objJsonResult.Message = "[0000-1-026]单据已反审核!不需要再反审核!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -1484,7 +1584,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反审核失败!原因:反审核前判断失败,请与网络管理人员联系";
                        objJsonResult.Message = "[0000-1-027]反审核失败!原因:反审核前判断失败,请与网络管理人员联系";
                        objJsonResult.data = null;
                        return objJsonResult;
@@ -1493,7 +1593,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.Message = "[0000-1-028]反审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1516,7 +1616,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.Message = "[0000-1-028]审核失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1526,7 +1626,7 @@
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "执行成功!";
                objJsonResult.Message = "[0000-1-029]执行成功!";
                objJsonResult.data = null;
                return objJsonResult; ;
@@ -1535,7 +1635,7 @@
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "执行失败!" + e.ToString();
                objJsonResult.Message = "[0000-1-025]执行失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -1556,7 +1656,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "指引卡无权限关闭!";
                        objJsonResult.Message = "[3772-1-032]指引卡无权限关闭!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1568,7 +1668,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "流转卡无权限关闭!";
                        objJsonResult.Message = "[3772-1-032]流转卡无权限关闭!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1579,7 +1679,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID为空!";
                    objJsonResult.Message = "[0000-1-009]HInterID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -1601,7 +1701,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已关闭!不需要再关闭!";
                            objJsonResult.Message = "[0000-1-033]单据已关闭!不需要再关闭!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -1611,7 +1711,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.Message = "[0000-1-034]关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1628,7 +1728,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已反关闭!不需要再反关闭!";
                            objJsonResult.Message = "[0000-1-035]单据已反关闭!不需要再反关闭!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -1638,7 +1738,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.Message = "[0000-1-036]反关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1648,7 +1748,7 @@
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "执行成功!";
                objJsonResult.Message = "[0000-1-037]执行成功!";
                objJsonResult.data = null;
                return objJsonResult; ;
@@ -1657,7 +1757,7 @@
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "执行失败!" + e.ToString();
                objJsonResult.Message = "[0000-1-038]执行失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -1684,7 +1784,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "作废失败!无权限!";
                    objJsonResult.Message = "[0000-1-039]作废失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -1693,7 +1793,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID小于0!";
                    objJsonResult.Message = "[0000-1-009]HInterID小于0!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -1755,7 +1855,7 @@
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "作废成功";
                        objJsonResult.Message = "[0000-1-040]作废成功";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1763,7 +1863,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "作废失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.Message = "[0000-1-041]作废失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1781,7 +1881,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "反作废失败!原因:" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                            objJsonResult.Message = "[0000-1-042]反作废失败!原因:" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                            objJsonResult.data = null;
                            oBill.oCn.RollBack();
@@ -1791,7 +1891,7 @@
                        oBill.oCn.Commit();
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反作废成功";
                        objJsonResult.Message = "[0000-1-043]反作废成功";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1799,7 +1899,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "反作废失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.Message = "[0000-1-042]反作废失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
@@ -1810,7 +1910,7 @@
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "作废失败或者反作废失败!" + e.ToString();
                objJsonResult.Message = "[0000-1-044]作废失败或者反作废失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -1907,6 +2007,59 @@
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工序流转卡分页列表
        [Route("Sc_ProcessExchangeBillList/page")]
        [HttpGet]
        public json page(string sWhere, string user, int page, int size)
        {
            json res = new json();
            try
            {
                List<object> columnNameList = new List<object>();
                //编辑权限
                if (!DBUtility.ClsPub.Security_Log_second("Sc_ProcessExchangeBill_SubQuery", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBillList_Query " + page + "," + size + ",''", "h_p_Sc_ProcessExchangeBillList_Query");
                }
                else
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBillList_Query " + page + "," + size + ",'" + sWhere + "'", "h_p_Sc_ProcessExchangeBillList_Query");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                res.code = CodeConstant.SUCCEED;
                res.count = int.Parse(ds.Tables[1].Rows[0]["count"].ToString());
                res.Message = "Sucess!";
                res.list = columnNameList;
                res.data = ds.Tables[0];
                return res;
            }
            catch (Exception e)
            {
                res.code = CodeConstant.FAIL;
                res.count = CountConstant.FAIL;
                res.Message = "Exception!" + e.ToString();
                res.data = null;
                return res;
            }
        }
        #endregion
@@ -2040,12 +2193,7 @@
        }
        #endregion
        #region[批量拆分下推-保存按钮]
        /// <summary>
        /// 新增单据-保存按钮
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        #region[批量拆分下推-保存按钮]
        [Route("Sc_ProcessExchangeBill/AddBill_BatchSplit")]
        [HttpPost]
        public object AddBill_BatchSplit([FromBody] JObject sMainSub)
@@ -2103,7 +2251,7 @@
                    HProQty = oItemSub.HProQty;
                    sql = "select * from h_v_Sc_ProcessExchangeBill_BatchSplit where hmainid = " + oItemSub.HICMOInterID + " and hentryid = " 
                         + oItemSub.HICMOEntryID;
                         + oItemSub.HICMOEntryID + " and HRoutingID = " + oItemSub.HRoutingInterID.ToString();
                    ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcessExchangeBill_BatchSplit");
                    //主表赋值
                    if (ds.Tables[0].Rows.Count > 0 && ds != null)
@@ -2120,6 +2268,9 @@
                        oBill.omodel.HPeriod = DBUtility.ClsPub.isLong(oItemSub.HDate.Month);
                        oBill.omodel.HRemark = "";
                        oBill.omodel.HBatchNo = oItemSub.HBatchNo;
                        oBill.omodel.HProjectNum = oItemSub.HProjectNum;
                        oBill.omodel.HMateOutBatchNo = oItemSub.HMateOutBatchNo;
                        oBill.omodel.HMouldNum = oItemSub.HMouldNum;
                        oBill.omodel.HMainMaterID = 0;
                        oBill.omodel.HKeyMaterID = 0;
                        oBill.omodel.HNo = 0;
@@ -2132,10 +2283,415 @@
                        oBill.omodel.HMaterID = oItemSub.HMaterID;
                        oBill.omodel.HMaterNumber = ds.Tables[0].Rows[0]["HMaterNumber"].ToString();
                        oBill.omodel.HUnitID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[0]["HUnitID"]);
                        oBill.omodel.HMateOutBatchNo = "";
                        oBill.omodel.HUnitNumber = ds.Tables[0].Rows[0]["HUnitNumber"].ToString();
                        oBill.omodel.HMaterID2 = oItemSub.HMaterID;
                        oBill.omodel.HProjectNum = "";
                        oBill.omodel.HPlanQty = oItemSub.HQty;
                        oBill.omodel.HQty = oItemSub.HProQty;
                        oBill.omodel.HPlanBeginDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
                        oBill.omodel.HPlanEndDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
                        oBill.omodel.HExplanation = "";
                        oBill.omodel.HInnerBillNo = "";
                        oBill.omodel.HSupID = 0;
                        oBill.omodel.HWorkShopID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[0]["HDeptID"]);
                        oBill.omodel.HWorkTypeNum = "";
                        oBill.omodel.HProdMaterCode = "";
                        oBill.omodel.HSeOrderBillNo = ds.Tables[0].Rows[0]["HSeOrderBillNo"].ToString();
                        oBill.omodel.HCusShortName = "";
                        oBill.omodel.HCusNeedMaterial = "";
                        oBill.omodel.HPlanSendGoodsDate = dt.ToShortDateString().ToString();
                        oBill.omodel.HProdMaterName = "";
                        oBill.omodel.HCusName = "";
                        oBill.omodel.HWorkRemark = "";
                        oBill.omodel.HImportNote = "";
                        oBill.omodel.HMaterNumber_A = "";
                        oBill.omodel.HMaterNumber_B = "";
                        oBill.omodel.HMaterNumber_C = "";
                        oBill.omodel.HMaterNumber_D = "";
                        oBill.omodel.HProdType = "";
                        oBill.omodel.HMaterShortName = "";
                        oBill.omodel.HMaterIDA = "";
                        oBill.omodel.HMaterIDB = "";
                        oBill.omodel.HMaterIDC = "";
                        oBill.omodel.HMaterIDD = "";
                        oBill.omodel.HICMOInterID = oItemSub.HICMOInterID;
                        oBill.omodel.HICMOEntryID = oItemSub.HICMOEntryID;
                        oBill.omodel.HPicNumVer = "";
                        oBill.omodel.HPicNumAssemble = "";
                        oBill.omodel.HMaterTexture = "";
                        oBill.omodel.HProductNum = "";
                        oBill.omodel.HVerNum = "";
                        oBill.omodel.HPRDORGID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[0]["HPRDORGID"]);
                        oBill.omodel.HBLFlag = false;
                        oBill.omodel.HCusNumber = "";
                        oBill.omodel.HPickLabel = "";
                        oBill.omodel.HPickLabelNumber = "";
                        oBill.omodel.HXTNumber = "";
                        oBill.omodel.HXTModel = "";
                        oBill.omodel.HWorkBillSortNo = "";//!
                        oBill.omodel.HRoutingBillID = oItemSub.HRoutingInterID.ToString();
                        oBill.omodel.HMaterModel = ds.Tables[0].Rows[0]["HMaterModel"].ToString();
                        oBill.omodel.HWidth = 0;
                        oBill.omodel.HWeight = 0;
                        oBill.omodel.HAuxQty = 0;
                        oBill.omodel.HAuxUnit = 0;
                        oBill.omodel.HAuxQty2 = 0;
                        oBill.omodel.HAuxUnit2 = 0;
                        oBill.omodel.HSplitNo = 0;
                        oBill.omodel.HHeight = "";
                        oBill.omodel.HInches = "";
                        oBill.omodel.HAl1Long = "";
                        oBill.omodel.HDensity = "";
                        oBill.omodel.HTela = "";
                        oBill.omodel.HUnderTela = "";
                        oBill.omodel.HSizing = "";
                        oBill.omodel.HSellDate = dt.ToShortDateString().ToString();
                        oBill.omodel.HRemark2 = "批量拆分下推";
                        oBill.omodel.HRemark3 = "";
                        oBill.omodel.HEmpID = 0;
                        oBill.omodel.HCusID = 0;
                        oBill.omodel.HColorRemark = "";
                        oBill.omodel.HSplitSumQty = 0;
                        oBill.omodel.HSplitColorQty = 0;
                        oBill.omodel.HMachineLine = "";
                        oBill.omodel.HMainSourceInterID = 0;
                        oBill.omodel.HMainSourceEntryID = 0;
                        oBill.omodel.HMainSourceBillNo = "";
                        oBill.omodel.HOrderLevID = 0;
                        oBill.omodel.HWidth_New = 0;
                        oBill.omodel.HRemark_New = "";
                        oBill.omodel.HWeight_New = 0;
                        oBill.omodel.HPlanOrderProcNo = ds.Tables[0].Rows[0]["HPlanOrderProcNo"].ToString();
                    }
                    //子表赋值
                    for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        Model.ClsSc_ProcessExchangeBillSub oItemSubs = new Model.ClsSc_ProcessExchangeBillSub();
                        oItemSubs.HEntryID = i + 1;
                        oItemSubs.HBillNo_bak = HBillNo;
                        oItemSubs.HCloseMan = "";
                        oItemSubs.HEntryCloseDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
                        oItemSubs.HCloseType = false;
                        oItemSubs.HRemark = "";
                        oItemSubs.HSourceInterID = HICMOInterID;
                        oItemSubs.HSourceEntryID = HICMOEntryID;
                        oItemSubs.HSourceBillNo = HICMOBillNo;
                        oItemSubs.HSourceBillType = "3710";
                        oItemSubs.HRelationQty = 0;
                        oItemSubs.HRelationMoney = 0;
                        oItemSubs.HRelationQty_In = 0;
                        oItemSubs.HRelationQty_Out = 0;
                        oItemSubs.HRelationQty_WWOrder = 0;
                        oItemSubs.HRelationQty_Bad = 0;
                        oItemSubs.HProcNo = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HProcNo"]);
                        oItemSubs.HProcID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HProcID"]);
                        oItemSubs.HProcNumber = ds.Tables[0].Rows[i]["HProcNumber"].ToString();
                        oItemSubs.HWorkRemark = "";
                        oItemSubs.HCenterID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HCenterID"]);
                        oItemSubs.HDeptID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HDeptID"]);
                        oItemSubs.HDeptNumber = ds.Tables[0].Rows[i]["HDeptNumber"].ToString();
                        oItemSubs.HGroupID = 0;
                        oItemSubs.HGroupNumber = oItemSub.HGroupNumber;
                        oItemSubs.HWorkerID = 0;
                        oItemSubs.HWorkerNumber = "";
                        oItemSubs.HSourceID = 0;
                        oItemSubs.HQty = HProQty;
                        oItemSubs.HTimeUnit = "";
                        oItemSubs.HPlanWorkTimes = 0;
                        oItemSubs.HPlanBeginDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
                        oItemSubs.HPlanEndDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
                        oItemSubs.HRelBeginDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
                        oItemSubs.HRelEndDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
                        oItemSubs.HReadyTime = 0;
                        oItemSubs.HQueueTime = 0;
                        oItemSubs.HMoveTime = 0;
                        oItemSubs.HBeginDayQty = 0;
                        oItemSubs.HBeginFixQty = 0;
                        oItemSubs.HFixWorkDays = 0;
                        oItemSubs.HTrunWorkDays = 0;
                        oItemSubs.HReadyTimes = 0;
                        oItemSubs.HMyWorkDays = 0;
                        oItemSubs.HOutPrice = 0;
                        oItemSubs.HOutMoney = 0;
                        oItemSubs.HPassRate = 0;
                        oItemSubs.HLastProc = "";
                        oItemSubs.HKeyProc = "";
                        oItemSubs.HFstProc = "";
                        oItemSubs.HICMOInterID = HICMOInterID;
                        oItemSubs.HICMOBillNo = HICMOBillNo;
                        oItemSubs.HWWOrderInterID = 0;
                        oItemSubs.HWWOrderEntryID = 0;
                        oItemSubs.HWWOrderBillNo = "";
                        oItemSubs.HReportQty = 0;
                        oItemSubs.HBackProc = false;
                        oItemSubs.HSupID = 0;
                        oItemSubs.HSupFlag = false;
                        oItemSubs.HOverRate = 0;
                        oItemSubs.HMaxQty = 0;
                        oItemSubs.HTechnologyParameter = "";
                        oItemSubs.HProcCheckNote = "";
                        oItemSubs.HPicNum = "";
                        oItemSubs.HMouldNo = "";
                        oItemSubs.HProcWorkNum = "";
                        oItemSubs.HSeOrderInterID = 0;
                        oItemSubs.HSeOrderEntryID = 0;
                        oItemSubs.HSNCtrl = false;
                        oItemSubs.HRoutingBillMainID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HRoutingID"]);
                        oItemSubs.HRoutingBillEntryID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HRoutingEntryID"]);
                        oBill.DetailColl.Add(oItemSubs);//添加明细行值
                    }
                    //调用保存方法
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    oBill.DetailColl.Clear();//清空明细行值
                    if (!bResult)
                    {
                        break;
                    }
                }
                if (bResult)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "保存成功!";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        #endregion
        #region 可打印备料单报表(添康)
        [Route("Sc_ProcessExchangeBill/AllowedPrint")]
        [HttpGet]
        public object AllowedPrint(string sWhere, string user, string Organization, int page, int size)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                sWhere = sWhere.Replace("'", "''");
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBillList_AllowedPrint " + page + "," + size + ",'" + Organization + "'," + "''", "h_p_Sc_ProcessExchangeBillList_AllowedPrint");
                }
                else
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBillList_AllowedPrint " + page + "," + size + ",'" + Organization + "','" + sWhere + "'", "h_p_Sc_ProcessExchangeBillList_AllowedPrint");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = int.Parse(ds.Tables[1].Rows[0]["count"].ToString());
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = columnNameList;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region[生产订单多行下推生成流转卡]
        /// <summary>
        /// 返回拆分后的生产订单信息
        /// </summary>
        /// <param name="hmainid">生产任务单主子ID</param>
        /// <returns>object</returns>
        [Route("Sc_ProcessExchangeBill/Sc_ICMO_DH")]
        [HttpGet]
        public object Sc_ICMO_DH(string HInterID, string user)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(HInterID))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "源单主子id为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                string[] HInterEntryIDArr = HInterID.Split(',');
                DataTable dt = new DataTable();
                for (int i = 0; i < HInterEntryIDArr.Length; i++)
                {
                    string[] HIDs = HInterEntryIDArr[i].Split('@');
                    string sql = "exec h_p_Sc_ProcessExchange_DH '" + HIDs[0] + "','" + HIDs[1] + "'";
                    ds = oCN.RunProcReturn(sql, "h_p_Sc_ProcessExchange_DH");
                    if (i == 0)
                    {
                        dt = ds.Tables[0];
                    }
                    else
                    {
                        foreach (DataRow item in ds.Tables[0].Rows)
                        {
                            DataRow dataRow = dt.NewRow();
                            dataRow.ItemArray = item.ItemArray;
                            dt.Rows.Add(dataRow);
                        }
                    }
                }
                if (dt == null || dt.Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "拆分生产订单无数据!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = dt;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region[生产订单多行下推-保存按钮]
        [Route("Sc_ProcessExchangeBill/Add_Sc_ICMO_DH")]
        [HttpPost]
        public object Add_Sc_ICMO_DH([FromBody] JObject sMainSub)
        {
            var _value = sMainSub["sMainSub"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();//明细行信息
            string HUser = sArray[1].ToString();//用户
            string HComputerName = SystemInformation.ComputerName; //设备名称
            string UserName = "";
            ListModels oListModels = new ListModels();
            bool bResult = true;
            try
            {
                if (!DBUtility.ClsPub.Security_Log("Sc_ProcessExchangeBill_Edit", 1, false, HUser))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "流转卡无保存权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DAL.ClsSc_ProcessExchangeBill oBill = new DAL.ClsSc_ProcessExchangeBill();
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg2 = msg2.Substring(1, msg2.Length - 2);
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                //msg2 = msg2.Replace("'", "’");
                List<Model.ClsSc_ProcessExchangeBillSub_BatchSplit> ls = new List<Model.ClsSc_ProcessExchangeBillSub_BatchSplit>();
                ls = oListModels.getObjectByJson_Sc_ProcessExchangeBillSub_BatchSplit(msg2);
                DateTime dt = DateTime.Now;
                string sql = "";
                Int64 HInterID = 0;
                string HBillNo = "";
                Int64 HICMOInterID = 0;
                Int64 HICMOEntryID = 0;
                string HICMOBillNo = "";
                double HQty = 0;
                double HProQty = 0;
                foreach (Model.ClsSc_ProcessExchangeBillSub_BatchSplit oItemSub in ls)
                {
                    //HBillNo = DBUtility.ClsPub.CreateBillCode_Prod("3772", ref DBUtility.ClsPub.sExeReturnInfo, true);
                    HInterID = oItemSub.HInterID;
                    HBillNo = oItemSub.HBillNo;
                    HICMOInterID = oItemSub.HICMOInterID;
                    HICMOEntryID = oItemSub.HICMOEntryID;
                    HICMOBillNo = oItemSub.HICMOBillNo;
                    HQty = oItemSub.HQty;
                    HProQty = oItemSub.HProQty;
                    sql = "select * from h_v_Sc_ProcessExchangeBill_BatchSplit where hmainid = " + oItemSub.HICMOInterID + " and hentryid = "
                         + oItemSub.HICMOEntryID + " and HRoutingID = " + oItemSub.HRoutingInterID.ToString();
                    ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcessExchangeBill_BatchSplit");
                    //主表赋值
                    if (ds.Tables[0].Rows.Count > 0 && ds != null)
                    {
                        oBill.omodel.HInterID = HInterID;
                        oBill.omodel.HBillNo = HBillNo;
                        oBill.omodel.HBillSubType = "3772";
                        oBill.omodel.HMainSourceBillSubType = "3710";
                        oBill.omodel.HDate = oItemSub.HDate;
                        oBill.omodel.HMaker = HUser;
                        oBill.omodel.HMakeDate = System.DateTime.Now.ToString("G");
                        oBill.omodel.HPrevMainSourceInterID = 0;
                        oBill.omodel.HYear = DBUtility.ClsPub.isLong(oItemSub.HDate.Year);
                        oBill.omodel.HPeriod = DBUtility.ClsPub.isLong(oItemSub.HDate.Month);
                        oBill.omodel.HRemark = "";
                        oBill.omodel.HBatchNo = oItemSub.HBatchNo;
                        oBill.omodel.HProjectNum = oItemSub.HProjectNum;
                        oBill.omodel.HMateOutBatchNo = oItemSub.HMateOutBatchNo;
                        oBill.omodel.HMouldNum = oItemSub.HMouldNum;
                        oBill.omodel.HMainMaterID = 0;
                        oBill.omodel.HKeyMaterID = 0;
                        oBill.omodel.HNo = 0;
                        oBill.omodel.HOrderProcNO = ds.Tables[0].Rows[0]["HPlanOrderProcNo"].ToString();
                        oBill.omodel.HWWOrderInterID = 0;
                        oBill.omodel.HWWOrderEntryID = 0;
                        oBill.omodel.HWWOrderBillNo = "";
                        oBill.omodel.HEquipMentID = 0; //!
                        oBill.omodel.HICMOBillNo = oItemSub.HICMOBillNo;
                        oBill.omodel.HMaterID = oItemSub.HMaterID;
                        oBill.omodel.HMaterNumber = ds.Tables[0].Rows[0]["HMaterNumber"].ToString();
                        oBill.omodel.HUnitID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[0]["HUnitID"]);
                        oBill.omodel.HUnitNumber = ds.Tables[0].Rows[0]["HUnitNumber"].ToString();
                        oBill.omodel.HMaterID2 = oItemSub.HMaterID;
                        oBill.omodel.HPlanQty = oItemSub.HQty;
                        oBill.omodel.HQty = oItemSub.HProQty;
                        oBill.omodel.HPlanBeginDate = Convert.ToDateTime(dt.ToShortDateString().ToString());
@@ -2212,10 +2768,9 @@
                        oBill.omodel.HRemark_New = "";
                        oBill.omodel.HWeight_New = 0;
                        oBill.omodel.HPlanOrderProcNo = ds.Tables[0].Rows[0]["HPlanOrderProcNo"].ToString();
                        oBill.omodel.HMouldNum = "0";
                    }
                    }
                    //子表赋值
                    for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        Model.ClsSc_ProcessExchangeBillSub oItemSubs = new Model.ClsSc_ProcessExchangeBillSub();
                        oItemSubs.HEntryID = i + 1;
@@ -2287,6 +2842,8 @@
                        oItemSubs.HSeOrderInterID = 0;
                        oItemSubs.HSeOrderEntryID = 0;
                        oItemSubs.HSNCtrl = false;
                        oItemSubs.HRoutingBillMainID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HRoutingID"]);
                        oItemSubs.HRoutingBillEntryID = Pub_Class.ClsPub.isLong(ds.Tables[0].Rows[i]["HRoutingEntryID"]);
                        oBill.DetailColl.Add(oItemSubs);//添加明细行值                
                    }
@@ -2298,7 +2855,7 @@
                        break;
                    }
                }
                if (bResult)
                {
                    objJsonResult.code = "0";
@@ -2326,5 +2883,55 @@
            }
        }
        #endregion
        #region[新增时获取表体数据(返工申请单)]
        [Route("Sc_ProcessExchangeBill/GetProcExchangeWorkBackList")]
        [HttpGet]
        public object GetProcExchangeWorkBackList(string HInterID)
        {
            DataSet ds;
            try
            {
                //拆分并过滤出有效数字ID
                var idList = HInterID.Split(',')  // 1. 按逗号分割字符串
                      .Select(s => s.Trim())  // 2. 去除每个元素的空格
                      .Where(s => int.TryParse(s, out _))  // 3. 只保留能转成数字的字符串
                      .ToList();  // 4. 转成List集合
                // 构建安全的 IN 子句
                string inClause = string.Join(",", idList);
                List<object> columnNameList = new List<object>();
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ds = oCN.RunProcReturn("select * from h_v_Sc_ProcExchWorkBackBillList_Query where 1=1 and hmainid in (" + inClause + ")", "h_v_Sc_ProcExchWorkBackBillList_Query");
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.list = columnNameList;
                objJsonResult.Message = "[0000-1-037]获取信息成功!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "[0000-1-038]没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}