Esempio n. 1
0
        /// <summary>
        /// 重置顺序
        /// </summary>
        public int CZSORT(string pro)
        {
            DataTable dt = GetListByStatus(1, pro, "").Tables[0];

            TransactionHelper.BeginTransaction();
            if (dt.Rows.Count > 0)
            {
                int sort = 1;
                foreach (DataRow item in dt.Rows)
                {
                    string sql = "";
                    sql = "UPDATE TB_STA SET N_SORT='" + sort + "' WHERE C_ID='" + item["C_ID"] + "' AND C_PRO_ID='" + pro + "' ";
                    if (TransactionHelper.ExecuteSql(sql) == 1)
                    {
                        sort++;
                    }
                    else
                    {
                        TransactionHelper.RollBack();
                        return(0);
                    }
                }
            }
            TransactionHelper.Commit();
            return(1);
        }
        /// <summary>
        /// 撤销组批计划,删除成品线材,还原组批计划状态到完工
        /// </summary>
        /// <param name="cId">组批计划ID</param>
        /// <param name="oldXCLst"></param>
        /// <param name="xcLst"></param>
        public void ResetZP(string cId, List <TRC_ROLL_WW_MAIN_ITEM> oldXCLst, List <Mod_TRC_ROLL_PRODCUT> xcLst)
        {
            try
            {
                TransactionHelper.BeginTransaction();

                foreach (var item in xcLst)
                {
                    string updateSql = $"UPDATE TRC_ROLL_PRODCUT SET C_MOVE_TYPE='QD' WHERE C_ID='{item.C_ID}'";
                    TransactionHelper.ExecuteSql(updateSql);
                }

                // 设置组批计划状态为完工
                TransactionHelper.ExecuteSql($"UPDATE TRC_ROLL_WW_MAIN SET N_STATUS=1 WHERE C_ID='{cId}'");

                TransactionHelper.Commit();
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }
            //foreach (var item in oldXCLst)
            //{
            //    string updateSql = $"UPDATE TRC_ROLL_PRODCUT SET C_MOVE_TYPE='QE' WHERE C_ID='{item.C_SLAB_MAIN_ID}'";
            //    TransactionHelper.ExecuteSql(updateSql);
            //}
        }
Esempio n. 3
0
        /// <summary>
        /// 向NC发送发运单
        /// </summary>
        /// <param name="fydid">发运单id</param>
        /// <returns>返回int类型 0发运单数据为空1成功,-1写入中间表出错,-2发送NC错误-3代码错误</returns>
        public string SENDFYD(string fydid, string path)
        {
            string LogSql = "";
            string name   = "Dal_Interface_WL.SENDFYD";

            try
            {
                TransactionHelper.BeginTransaction();
                if (UPSLABSTATUS_Tran(fydid, "S") == 0)
                {
                    TransactionHelper.RollBack();
                    return("变更钢坯状态错误!");
                }
                //if (UPFYDSTATUS_Tran(fydid, "9") == 0)
                //{
                //    TransactionHelper.RollBack();
                //    return "变更发运单状态错误!";
                //}
                string message = dal_Interface_NC_DM.SendXml_DM(path, fydid);
                if (message != "1")
                {
                    TransactionHelper.RollBack();
                    return(message);
                }
                TransactionHelper.Commit();
                return("1");
            }
            catch (Exception ex)
            {
                LogSql = "INSERT INTO TI_RF_LOG(C_TYPE, C_LOG, C_NAME) VALUES('向物流发送发运单','" + ex.ToString() + "','" + name + "')";
                DbHelperOra.ExecuteSql(LogSql);
                return(ex.ToString());
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 修改钢坯状态
        /// </summary>
        /// <param name="list">List<CommonKC>通用库存处理类</param>
        /// <param name="status">状态</param>
        /// <returns>0失败1成功</returns>
        public int UPSLABSTATUS(List <CommonKC> list, string fydh, string status)
        {
            TransactionHelper.BeginTransaction();
            foreach (CommonKC item in list)
            {
                StringBuilder strSql = new StringBuilder();
                strSql.Append("UPDATE TSC_SLAB_MAIN   SET C_MOVE_TYPE='" + status + "',C_FYDH='" + fydh + "' ,C_FYID='" + item.id + "' WHERE C_MOVE_TYPE='E'");
                if (item.mat.Trim() != "")
                {
                    strSql.Append(" and C_MAT_CODE='" + item.mat + "'");
                }
                if (item.ck.Trim() != "")
                {
                    strSql.Append(" and C_SLABWH_CODE='" + item.ck + "'");
                }

                if (item.batch.Trim() != "")
                {
                    strSql.Append(" and C_BATCH_NO='" + item.batch + "'");
                }
                if (item.stove.Trim() != "")
                {
                    strSql.Append(" and C_STOVE='" + item.stove + "'");
                }
                strSql.Append(" and ROWNUM<='" + item.num + "'");
                if (TransactionHelper.ExecuteSql(strSql.ToString()) != item.num)
                {
                    TransactionHelper.RollBack();
                    return(0);
                }
            }
            TransactionHelper.Commit();
            return(1);
        }
        public void SetFinish(Mod_TRC_ROLL_WW_MAIN model)
        {
            try
            {
                TransactionHelper.BeginTransaction();

                string sql = $"UPDATE TRC_ROLL_WW_MAIN SET N_WGT_REMOVE={model.N_WGT_REMOVE}" +
                             $",N_QUA_REMOVE={model.N_QUA_REMOVE}" +
                             $",N_STATUS={model.N_STATUS}" +
                             $",C_PRODUCE_GROUP='{model.C_PRODUCE_GROUP}'" +
                             $",C_CHECKSTATE_NAME='{model.C_CHECKSTATE_NAME}'" +
                             $",C_LINEWH_CODE='{model.C_LINEWH_CODE}'" +
                             $",C_LINEWH_NAME='{model.C_LINEWH_NAME}'" +
                             $",C_PRODUCE_EMP_ID='{model.C_PRODUCE_EMP_ID}'" +
                             $",C_PRODUCE_SHIFT='{model.C_PRODUCE_SHIFT}' WHERE C_ID='{model.C_ID}'";

                //                // 完工量不等于组批量,回写库存重量
                //                var amt = model.N_WGT_TOTAL - model.N_WGT_REMOVE;
                //                if (amt > 0)
                //                {
                //                    string whereSql = $@"
                //SELECT MAX(C_ID) FROM TRC_ROLL_PRODCUT
                //WHERE C_BATCH_NO='{model.C_XC_BATCH_NO}' AND C_LINEWH_CODE='{model.C_XC_LINEWH_CODE}'
                //AND C_MAT_CODE='{model.C_MAT_XC_CODE}' AND C_BZYQ='{model.C_XC_BZYQ}'
                //AND C_MOVE_TYPE='QE'
                //";
                //                    var cId = TransactionHelper.GetSingle(whereSql)?.ToString();

                //                    if (string.IsNullOrEmpty(cId))
                //                    {
                //                        throw new Exception("找不到记录库存");
                //                    }

                //                    var updateSql = $"UPDATE TRC_ROLL_PRODCUT SET N_WGT={amt} WHERE C_ID='{cId}'";

                //                    var updateRlt = TransactionHelper.ExecuteSql(updateSql);

                //                    if (updateRlt != 1)
                //                    {
                //                        throw new Exception("更新库存失败");
                //                    }
                //                }

                var rlt = TransactionHelper.ExecuteSql(sql) > 0;

                if (!rlt)
                {
                    throw new Exception("完工失败");
                }

                TransactionHelper.Commit();
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }
        }
Esempio n. 6
0
 /// <summary>
 /// 根据idstr更新钢坯库存状态
 /// </summary>
 /// <param name="idstr">库存钢坯id字符串</param>
 /// <returns></returns>
 public string GPFY(string dh)
 {
     TransactionHelper.BeginTransaction();
     if (UPSLABSTATUS_Tran(dh, "S") == 0)
     {
         return("变更钢坯状态错误!");
     }
     if (UPFYDSTATUS_Tran(dh, "8") == 0)
     {
         return("变更发运单状态错误!");
     }
     TransactionHelper.Commit();
     return("1");
 }
        /// <summary>
        /// 修改批次号,如果录入了成分,需要把成分的批次号更新
        /// </summary>
        /// <param name="model"></param>
        /// <param name="newBatchNo"></param>
        public void UpdateBatchNo(Mod_TRC_ROLL_WW_MAIN model, string newBatchNo)
        {
            try
            {
                // 采取事物控制
                TransactionHelper.BeginTransaction();
                // 更新成分信息
                string updateSql1 = $"UPDATE TQC_COMPRE_ITEM_RESULT SET C_BATCH_NO='{newBatchNo}' WHERE C_BATCH_NO='{model.C_BATCH_NO}'";
                // 组批计划更新批号
                string updateSql2 = $"UPDATE TRC_ROLL_WW_MAIN SET C_BATCH_NO='{newBatchNo}' WHERE C_BATCH_NO='{model.C_BATCH_NO}'";

                TransactionHelper.ExecuteSql(updateSql1);
                TransactionHelper.ExecuteSql(updateSql2);
                TransactionHelper.Commit();
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();

                throw new Exception("修改批次号失败");
            }
        }
Esempio n. 8
0
        /// <summary>
        /// 同步NC线材库存数据
        /// </summary>
        /// <param name="item"></param>
        /// <param name="userId"></param>
        public void SyncInventory(List <Mod_TRC_ROLL_PRODCUT> list)
        {
            TransactionHelper.BeginTransaction();
            try
            {
                for (int i = 1; i <= list.Count; i++)
                {
                    var mod = list[i - 1];
                    #region sql
                    string sql = $@"
insert into TRC_ROLL_PRODCUT(C_ID,C_TRC_ROLL_MAIN_ID,C_STOVE,C_BATCH_NO,C_TICK_NO,C_STL_GRD,C_STL_GRD_BEFORE,N_WGT,C_STD_CODE,C_STD_CODE_BEFORE,C_MOVE_TYPE,C_SPEC,C_SHIFT,C_GROUP,C_EMP_ID,D_MOD_DT,C_STA_ID,C_JUDGE_LEV_BP,C_JUDGE_LEV_CF,C_JUDGE_LEV_XN,C_JUDGE_LEV_ZH,C_DP_SHIFT,C_DP_GROUP,C_DP_EMP_ID,D_DP_DT,C_PLANT_ID,C_PLANT_DESC,C_MAT_CODE,C_MAT_CODE_BEFORE,C_MAT_DESC,C_MAT_DESC_BEFORE,C_IS_DEPOT,C_PLAN_ID,C_ORDER_NO,C_CON_NO,C_CUST_NO,C_CUST_NAME,C_ISFREE,C_LINEWH_CODE,C_LINEWH_AREA_CODE,C_LINEWH_LOC_CODE,C_FLOOR,C_CUST_AREA,C_SALE_AREA,C_BZYQ,C_WWBATCH_NO,C_ZYX1,C_ZYX2,C_IS_QR,N_SFOB) 
values
  (
   '{mod.C_ID}',
   '{mod.C_TRC_ROLL_MAIN_ID }',
   '{mod.C_STOVE           }',
   '{mod.C_BATCH_NO          }',
   '{mod.C_TICK_NO          }',
   '{mod.C_STL_GRD           }',
   '{mod.C_STL_GRD_BEFORE   }',
   '{mod.N_WGT            }',
   '{mod.C_STD_CODE          }',
   '{mod.C_STD_CODE_BEFORE   }',
   '{mod.C_MOVE_TYPE         }',
   '{mod.C_SPEC            }',
   '{mod.C_SHIFT             }',
   '{mod.C_GROUP             }',
   '{mod.C_EMP_ID           }',
   to_date('{mod.D_MOD_DT}','yyyy/MM/dd hh24:mi:ss'),
   '{mod.C_STA_ID            }',
   '{mod.C_JUDGE_LEV_BP      }',
   '{mod.C_JUDGE_LEV_CF      }',
   '{mod.C_JUDGE_LEV_XN      }',
   '{mod.C_JUDGE_LEV_ZH      }',
   '{mod.C_DP_SHIFT       }',
   '{mod.C_DP_GROUP          }',
   '{mod.C_DP_EMP_ID         }',
   to_date('{mod.D_DP_DT}','yyyy/MM/dd hh24:mi:ss'),
   '{mod.C_PLANT_ID          }',
   '{mod.C_PLANT_DESC        }',
   '{mod.C_MAT_CODE          }',
   '{mod.C_MAT_CODE_BEFORE   }',
   '{mod.C_MAT_DESC      }',
   '{mod.C_MAT_DESC_BEFORE   }',
   '{mod.C_IS_DEPOT    }',
   '{mod.C_PLAN_ID           }',
   '{mod.C_ORDER_NO}',
   '{mod.C_CON_NO           }',
   '{mod.C_CUST_NO}',
   '{mod.C_CUST_NAME}',
   '{mod.C_ISFREE            }',
   '{mod.C_LINEWH_CODE}',
   '{mod.C_LINEWH_AREA_CODE}',
   '{mod.C_LINEWH_LOC_CODE   }',
   '{mod.C_FLOOR    }',
   '{mod.C_CUST_AREA         }',
   '{mod.C_SALE_AREA         }',
   '{mod.C_BZYQ          }',
   '{mod.C_WWBATCH_NO        }',
   '{mod.C_ZYX1         }',
   '{mod.C_ZYX2}',
   '{"Y"}',
   '{1}')
";

                    #endregion

                    TransactionHelper.ExecuteSql(sql);
                }
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }
            TransactionHelper.Commit();
        }
Esempio n. 9
0
        /// <summary>
        /// 入库
        /// </summary>
        /// <param name="cId"></param>
        /// <param name="batchNo"></param>
        /// <param name="addItems"></param>
        public void AddCompreItem(string cId, string batchNo, List <Mod_TQC_COMPRE_ITEM_RESULT> addItems)
        {
            // 删除之前的成分
            TransactionHelper.BeginTransaction();
            try
            {
                TransactionHelper.ExecuteSql($"DELETE TQC_COMPRE_ITEM_RESULT WHERE C_BATCH_NO='{batchNo}'");
                foreach (var item in addItems)
                {
                    #region sql

                    string sql = $@"
INSERT INTO TQC_COMPRE_ITEM_RESULT(
C_ID
,C_STOVE
,C_BATCH_NO
,C_STL_GRD
,C_SPEC
,C_STD_CODE
,C_CHARACTER_ID
,C_ITEM_NAME
,C_TARGET_MIN
,C_TARGET_INTERVAL
,C_TARGET_MAX
,C_TYPE
,C_UNIT
,C_QUANTITATIVE
,C_VALUE
,C_RESULT
,C_CHECK_STATE
,N_STATUS
,C_REMARK
,C_EMP_ID
,D_MOD_DT
,C_DESIGN_NO
,N_PRINT_ORDER
,C_TICK_NO
,C_IS_SHOW
,C_IS_DECIDE
,C_GROUP
,C_TB)  
VALUES (
'{item.C_ID}'
,'{item.C_STOVE}'
,'{item.C_BATCH_NO}'
,'{item.C_STL_GRD}'
,'{item.C_SPEC}'
,'{item.C_STD_CODE}'
,'{item.C_CHARACTER_ID}'
,'{item.C_ITEM_NAME}'
,'{item.C_TARGET_MIN}'
,'{item.C_TARGET_INTERVAL}'
,'{item.C_TARGET_MAX}'
,'{item.C_TYPE}'
,'{item.C_UNIT}'
,'{item.C_QUANTITATIVE}'
,'{item.C_VALUE}'
,'{item.C_RESULT}'
,'{item.C_CHECK_STATE}'
,'{item.N_STATUS}'
,'{item.C_REMARK}'
,'{item.C_EMP_ID}'
,to_date('{item.D_MOD_DT}','yyyy-mm-dd hh24:mi:ss')
,'{item.C_DESIGN_NO}'
,'{item.N_PRINT_ORDER}'
,'{item.C_TICK_NO}'
,'{item.C_IS_SHOW}'
,'{item.C_IS_DECIDE}'
,'{item.C_GROUP}'
,'{item.C_TB}')
";

                    #endregion

                    var a = TransactionHelper.ExecuteSql(sql);

                    if (a <= 0)
                    {
                        throw new Exception("操作失败");
                    }
                }

                TransactionHelper.Commit();
            }
            catch
            {
                TransactionHelper.RollBack();
                throw new Exception("操作失败,请联系管理员");
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 转库操作,同步实绩到NC,
        /// 支持分批转库及回滚
        /// </summary>
        public void SyncWWZKD(string[] arrZkdId)
        {
            foreach (var item in arrZkdId)
            {
                var zkdItem = dalZkd.GetListBydh(item).Tables[0].DataTableToList2 <Mod_TRC_ROLL_ZKD>().FirstOrDefault();

                if (zkdItem == null)
                {
                    throw new Exception("转库单不存在");
                }

                try
                {
                    string directory = $"{AppDomain.CurrentDomain.BaseDirectory}\\NCXML";
                    if (Directory.Exists(directory) == false)
                    {
                        Directory.CreateDirectory(directory);
                    }
                    var result4a = dal_zk4a.SendXml_GP(directory, item);
                    if (result4a != "1")
                    {
                        throw new Exception(GetNCError(result4a));
                    }
                }
                catch (Exception ex)
                {
                    // 上传NC异常删除转库单
                    //dalZkd.Delete(zkdItem.C_ID);
                    throw new Exception(ex.Message);
                }

                var listData = GetBySql(
                    $"SELECT T.* FROM TRC_ROLL_PRODCUT T WHERE T.C_ZKD_NO='{item}' AND T.C_MOVE_TYPE LIKE 'QM_%'"
                    ).DataTableToList2 <Mod_TRC_ROLL_PRODCUT>();

                if (listData.Any(w => w.C_LINEWH_CODE != zkdItem.C_MBLINEWH_CODE))
                {
                    throw new Exception("转库单线材仓库与库存线材仓库不一致");
                }

                TransactionHelper.BeginTransaction();
                try
                {
                    foreach (var pItem in listData)
                    {
                        string oldStatu = pItem.C_MOVE_TYPE.Replace("QM_", "");
                        // 设置转库及未上传NC状态
                        TransactionHelper.ExecuteSql($@"UPDATE TRC_ROLL_PRODCUT SET " +
                                                     // 标记转库单号,用于撤销
                                                     //$"C_ZKD_NO='{item}', " +
                                                     // 标记委外出库状态
                                                     $"C_MOVE_TYPE='{oldStatu}'," +
                                                     $"C_LINEWH_CODE='{zkdItem.C_MBLINEWH_CODE}',C_IS_TB='Y' WHERE C_ID='{pItem.C_ID}'");
                    }

                    // 更新转库单状态
                    TransactionHelper.ExecuteSql($"UPDATE TRC_ROLL_ZKD SET N_STATUS=2 WHERE C_ID='{zkdItem.C_ID}'");

                    TransactionHelper.Commit();
                }
                catch (Exception ex)
                {
                    TransactionHelper.RollBack();
                    throw ex;
                }
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 转库操作,分摊重量到每一支,创建转库单并入库NC
        /// </summary>
        /// <param name="lineCode"></param>
        /// <param name="inventoryItems"></param>
        /// <param name="userId"></param>
        public void SaveInventory(string lineCode, List <WWInventoryItem> inventoryItems, string userId)
        {
            List <string> zkIds = new List <string>();
            // 转库单ID对应的转库数据
            Dictionary <string, List <Mod_TRC_ROLL_PRODCUT> > dic = new Dictionary <string, List <Mod_TRC_ROLL_PRODCUT> >();

            TransactionHelper.BeginTransaction();
            try
            {
                var arrZkId = GetZKId(inventoryItems.Count);

                // 验证
                foreach (var item in inventoryItems)
                {
                    List <Mod_TRC_ROLL_PRODCUT> list = new List <Mod_TRC_ROLL_PRODCUT>();

                    string sql = $@"
select t.*  from  TRC_ROLL_PRODCUT T
WHERE T.C_BATCH_NO='{item.BatchNo}' AND T.C_STL_GRD='{item.Gz}' AND T.C_STD_CODE='{item.Zxbz}'
AND T.C_SPEC='{item.Spec}'
AND T.c_judge_lev_zh = '{item.ZLDJ}' 
AND T.C_LINEWH_CODE = '{item.InventoryCode}'
AND T.c_move_type IN ('QE','E')
";
                    list.AddRange(DbHelperOra.Query(sql).Tables[0].DataTableToList2 <Mod_TRC_ROLL_PRODCUT>());

                    // 验证库存是否足够
                    if (list.Count < item.Number)
                    {
                        throw new Exception("库存不够,不能转库");
                    }

                    if (list.Count > item.Number && list.Sum(w => w.N_WGT) <= item.Amt)
                    {
                        throw new Exception("库存量不够,请确认支数与重量");
                    }

                    if (list.Count == item.Number)
                    {
                        // 如果全部转库,则转库总重量等于库存重量
                        item.Amt = list.Sum(w => w.N_WGT);
                    }
                    else
                    {
                        // 更新库存量(将支数与转库的重量分摊到每支上重新计算结余的重量)
                        UpdateInventory(list, item.Amt, item.Number);
                    }

                    // 订单物料信息
                    var mtrlItem  = dal_TB_MATRL_MAIN.GetModel(item.MtrlCode);
                    var batchItem = list.FirstOrDefault();


                    var zkId = arrZkId[inventoryItems.IndexOf(item)];
                    zkIds.Add(zkId);

                    // 转换仓库code为ID
                    string getLinewhId    = "select t.C_ID from TPB_LINEWH T WHERE T.C_LINEWH_CODE='{0}'";
                    var    targetLinewhId = TransactionHelper.GetSingle(string.Format(getLinewhId, lineCode)) as string;
                    var    lineWhId       = TransactionHelper.GetSingle(string.Format(getLinewhId, item.InventoryCode)) as string;

                    if (string.IsNullOrEmpty(userId))
                    {
                        userId = "1001NC100000002SS9XB";
                    }

                    // 添加转库单
                    dalZkd.Add(new Mod_TRC_ROLL_ZKD
                    {
                        C_BATCH_NO      = item.BatchNo,
                        C_BZYQ          = item.BZYQ,
                        C_EMP_ID        = userId,
                        C_F_DW          = mtrlItem.C_PK_MEASDOC,
                        C_JUDGE_LEV_ZH  = batchItem.C_JUDGE_LEV_ZH,
                        C_LINEWH_CODE   = item.InventoryCode,
                        C_MAT_CODE      = item.MtrlCode,
                        C_MAT_DESC      = batchItem.C_MAT_DESC,
                        C_MBLINEWH_CODE = lineCode,
                        C_SPEC          = batchItem.C_SPEC,
                        C_STL_GRD       = batchItem.C_STL_GRD,
                        C_STOVE         = batchItem.C_STOVE,
                        C_ZKD_NO        = zkId,//转库单号
                        C_ZYX1          = batchItem.C_ZYX1,
                        C_ZYX2          = batchItem.C_ZYX2,
                        C_ZYX4          = batchItem.C_STD_CODE,
                        C_Z_DW          = mtrlItem.C_PK_MEASDOC,
                        D_MOD_DT        = DateTime.Now,
                        D_PRODUCE_DATE  = batchItem.D_MOD_DT,
                        N_NUM           = item.Number,
                        N_SJNUM         = item.Number,
                        N_SJWGT         = item.Amt,
                        N_STATUS        = 3,
                        N_WGT           = item.Amt,//list.Take(item.Number).Sum(w => w.N_WGT),
                        C_LINEWH_ID     = lineWhId,
                        C_MBLINEWH_ID   = targetLinewhId,
                    }, true);
                    dic.Add(zkId, list);
                }

                TransactionHelper.Commit();
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }

            // 发送NC
            foreach (var item in zkIds)
            {
                var zkdItem = dalZkd.GetListBydh(item).Tables[0].DataTableToList2 <Mod_TRC_ROLL_ZKD>().FirstOrDefault();
                try
                {
                    string directory = $"{AppDomain.CurrentDomain.BaseDirectory}\\NCXML";
                    if (Directory.Exists(directory) == false)
                    {
                        Directory.CreateDirectory(directory);
                    }
                    var result4i = dal_zk4i.SendXml_GP(directory, item);
                    //var result4a = dal_zk4a.SendXml_GP(directory, item);

                    if (result4i != "1")
                    {
                        throw new Exception(GetNCError(result4i));
                    }
                    //if (result4a != "1")
                    //{
                    //    throw new Exception(GetNCError(result4a));
                    //}
                }
                catch (Exception ex)
                {
                    // 上传NC异常删除转库单
                    dalZkd.Delete(zkdItem.C_ID);
                    throw new Exception(ex.Message);
                }

                foreach (var pItem in dic[zkdItem.C_ZKD_NO].Take((int)(zkdItem.N_NUM ?? 0)))
                {
                    // 设置转库及未上传NC状态
                    DbHelperOra.ExecuteSql($@"UPDATE TRC_ROLL_PRODCUT SET " +
                                           // 标记转库单号,用于撤销
                                           $"C_ZKD_NO='{item}', " +
                                           // 标记委外出库状态
                                           $"C_MOVE_TYPE='QM_{pItem.C_MOVE_TYPE}'," +
                                           $"C_LINEWH_CODE='{lineCode}',C_IS_TB='N' WHERE C_ID='{pItem.C_ID}'");
                }
            }
        }
Esempio n. 12
0
        //NF.DAL.I.Dal_Interface_FR bll_Interface_FR = new NF.DAL.I.Dal_Interface_FR();

        /// <summary>
        /// 转矩操作
        /// </summary>
        /// <param name="lineCode">目标仓库</param>
        /// <param name="inventoryItems">转库数据</param>
        public void SaveInventory2(string lineCode, List <WWInventoryItem> inventoryItems)
        {
            List <string> zkIds = new List <string>();

            TransactionHelper.BeginTransaction();
            try
            {
                foreach (var item in inventoryItems)
                {
                    string sql = $@"
select t.*  from  TRC_ROLL_PRODCUT T
WHERE T.C_BATCH_NO='{item.BatchNo}' AND T.C_STL_GRD='{item.Gz}' AND T.C_STD_CODE='{item.Zxbz}'
AND T.C_SPEC='{item.Spec}'
AND T.C_LINEWH_CODE = '{item.InventoryCode}'
";
                    // 验证库存是否足够
                    var list = TransactionHelper.Query(sql).Tables[0].DataTableToList2 <Mod_TRC_ROLL_PRODCUT>();

                    if (list.Count < item.Number)
                    {
                        throw new Exception("库存不够,不能转库");
                    }

                    foreach (var pItem in list.Take(item.Number))
                    {
                        // 设置转库及未上传NC状态
                        TransactionHelper.ExecuteSql($"UPDATE TRC_ROLL_PRODCUT SET " +
                                                     $"C_LINEWH_CODE='{lineCode}',C_IS_TB='N' WHERE C_ID='{pItem.C_ID}'");
                    }

                    // 订单物料信息
                    var mtrlItem  = dal_TB_MATRL_MAIN.GetModel(item.MtrlCode);
                    var batchItem = list.FirstOrDefault();


                    string zkd    = (DateTime.Now.Year.ToString().Substring(2, 2)) + (Convert.ToInt32(DateTime.Now.Month) > 9 ? DateTime.Now.Month.ToString() : ("0" + DateTime.Now.Month.ToString())) + (Convert.ToInt32(DateTime.Now.Day) > 9 ? DateTime.Now.Day.ToString() : ("0" + DateTime.Now.Day.ToString())); //转库单号
                    string maxzkd = GetZKDNO(zkd);                                                                                                                                                                                                                                                                    //查询当天最大转库单号
                    long   no     = 0;
                    if (maxzkd == "0")
                    {
                        no = Convert.ToInt64(zkd + "0001");
                    }
                    else
                    {
                        no = Convert.ToInt64(maxzkd.Substring(2, maxzkd.Length - 2)) + 1;
                    }
                    zkd = "ZK" + no;

                    var zkId = zkd;
                    zkIds.Add(zkId);

                    // 转换仓库code为ID
                    string getLinewhId    = "select t.C_ID from TPB_LINEWH T WHERE T.C_LINEWH_CODE='{0}'";
                    var    targetLinewhId = TransactionHelper.GetSingle(string.Format(getLinewhId, lineCode)) as string;
                    var    lineWhId       = TransactionHelper.GetSingle(string.Format(getLinewhId, item.InventoryCode)) as string;

                    dalZkd.Add(new Mod_TRC_ROLL_ZKD
                    {
                        C_BATCH_NO      = item.BatchNo,
                        C_BZYQ          = item.BZYQ,
                        C_EMP_ID        = "1001NC100000002SS9XB",
                        C_F_DW          = mtrlItem.C_PK_MEASDOC,
                        C_JUDGE_LEV_ZH  = batchItem.C_JUDGE_LEV_ZH,
                        C_LINEWH_CODE   = item.InventoryCode,
                        C_MAT_CODE      = item.MtrlCode,
                        C_MAT_DESC      = batchItem.C_MAT_DESC,
                        C_MBLINEWH_CODE = lineCode,
                        C_SPEC          = batchItem.C_SPEC,
                        C_STL_GRD       = batchItem.C_STL_GRD,
                        C_STOVE         = batchItem.C_STOVE,
                        C_ZKD_NO        = zkId,//转库单号
                        C_ZYX1          = batchItem.C_ZYX1,
                        C_ZYX2          = batchItem.C_ZYX2,
                        C_ZYX4          = batchItem.C_STD_CODE,
                        C_Z_DW          = mtrlItem.C_PK_MEASDOC,
                        D_MOD_DT        = DateTime.Now,
                        D_PRODUCE_DATE  = batchItem.D_MOD_DT,
                        N_NUM           = item.Number,
                        N_STATUS        = 1,
                        N_WGT           = list.Take(item.Number).Sum(w => w.N_WGT),
                        C_LINEWH_ID     = lineWhId,
                        C_MBLINEWH_ID   = targetLinewhId,
                    }, true);
                }

                TransactionHelper.Commit();
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }

            // 发送NC
            foreach (var item in zkIds)
            {
                string directory = $"{AppDomain.CurrentDomain.BaseDirectory}";
                if (Directory.Exists(directory) == false)
                {
                    Directory.CreateDirectory(directory);
                }
                var result4i = dal_zk4i.SendXml_GP(directory, item);
                var result4a = dal_zk4a.SendXml_GP(directory, item);

                if (result4i != "1")
                {
                    throw new Exception(GetNCError(result4i));
                }
                if (result4a != "1")
                {
                    throw new Exception(GetNCError(result4a));
                }
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 更新线材详情
        /// </summary>
        /// <param name="arrAllId"></param>
        /// <param name="arrUpdateId"></param>
        /// <param name="txtamt"></param>
        /// <param name="moveType"></param>
        public void UpdateDetail(
            List <string> arrAllId,
            List <string> arrUpdateId,
            decimal txtamt,
            string moveType)
        {
            var states = new string[] { "QE", "E" };

            if (arrUpdateId.Count > arrAllId.Count)
            {
                throw new Exception("数据错误,请刷新页面重试");
            }

            if (states.Concat(new string[] { "S" }).Any(x => x == moveType) == false)
            {
                throw new Exception("数据错误,请刷新页面重试");
            }

            var listUpdateMoveType = new List <Mod_TRC_ROLL_PRODCUT>();

            var allIds    = string.Join("','", arrAllId);
            var updateIds = string.Join("','", arrUpdateId);

            var selectSql = @"SELECT * FROM trc_roll_prodcut where c_id in ('{0}') order by c_id";

            string allSql    = string.Format(selectSql, allIds);
            string updateSql = string.Format(selectSql, updateIds);

            TransactionHelper.BeginTransaction();
            try
            {
                var allData = DbHelperOra.Query(allSql).Tables[0].DataTableToList2 <Mod_TRC_ROLL_PRODCUT>();

                if (allData.Any(l => states.Any(x => x == l.C_MOVE_TYPE) == false))
                {
                    throw new Exception("系统检测到数据状态已发生变化,请重试");
                }

                if (arrAllId.Count == arrUpdateId.Count)
                {
                    var s2 = arrAllId.OrderBy(w => w).Zip(arrUpdateId.OrderBy(w => w), (x, y) =>
                    {
                        return(new { x, y });
                    }).Any(l => l.x != l.y);

                    if (s2)
                    {
                        throw new Exception("数据错误,请刷新页面重试");
                    }

                    // 修改所有线材的重量
                    var totalAmt = allData.Sum(w => w.N_WGT);

                    // 如果重量一致不修改
                    if (totalAmt != txtamt)
                    {
                        UpdateInventory(allData, txtamt, arrAllId.Count);
                    }

                    listUpdateMoveType.AddRange(allData);
                }
                else
                {
                    var uptData = DbHelperOra.Query(updateSql).Tables[0].DataTableToList2 <Mod_TRC_ROLL_PRODCUT>();

                    if (uptData.Any(l => states.Any(x => x == l.C_MOVE_TYPE) == false))
                    {
                        throw new Exception("系统检测到数据状态已发生变化,请重试");
                    }

                    // 如果重量一致不修改
                    if (uptData.Sum(w => w.N_WGT) != txtamt)
                    {
                        // 修改了重量
                        allData = allData.OrderBy(w => uptData.Any(l => w.C_ID == l.C_ID) == false).ToList();

                        if (allData.Count != arrAllId.Count || uptData.Count != arrUpdateId.Count)
                        {
                            throw new Exception("数据错误,请刷新页面重试");
                        }

                        var s = arrAllId.OrderBy(w => w).Zip(allData.OrderBy(w => w.C_ID), (x, y) =>
                        {
                            return(new
                            {
                                x,
                                y.C_ID
                            });
                        }).Any(p => p.x != p.C_ID);
                        var s1 = arrUpdateId.OrderBy(w => w).Zip(uptData.OrderBy(w => w.C_ID), (x, y) =>
                        {
                            return(new
                            {
                                x,
                                y.C_ID
                            });
                        }).Any(p => p.x != p.C_ID);

                        if (s | s1)
                        {
                            throw new Exception("数据错误,请刷新页面重试");
                        }

                        var totalamt = allData.Sum(x => x.N_WGT);
                        if (txtamt >= totalamt)
                        {
                            throw new Exception($"不得超过总重量:{totalamt}");
                        }

                        UpdateInventory(allData, txtamt, uptData.Count);
                    }

                    listUpdateMoveType.AddRange(uptData);
                }

                // 修改批次状态
                foreach (var item in listUpdateMoveType)
                {
                    string uptMoveTypeSql = $"UPDATE TRC_ROLL_PRODCUT SET C_MOVE_TYPE='{moveType}' WHERE C_ID='{item.C_ID}'";
                    TransactionHelper.ExecuteSql(uptMoveTypeSql);
                }

                TransactionHelper.Commit();
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }
        }
Esempio n. 14
0
        /// <summary>
        /// 撤销外委组批
        /// </summary>
        /// <param name="itemId"></param>
        /// <param name="num"></param>
        public void CancelZpInfo(string itemId, decimal num)
        {
            var zpInfo = GetModel(itemId);

            if (zpInfo == null)
            {
                throw new Exception("未找到组批数据,请重试");
            }

            if (zpInfo.N_STATUS != 0)
            {
                throw new Exception("不能撤销,数据已经被操作");
            }

            if (zpInfo.N_QUA_TOTAL < num)
            {
                throw new Exception($"退库数量不能大于{zpInfo.N_QUA_TOTAL}");
            }

            TransactionHelper.BeginTransaction();
            try
            {
                var lstItems = GetWWItemByZpId(zpInfo.C_ID);

                // 部分撤销
                if (lstItems.Count < num)
                {
                    throw new Exception($"数据错误,退库数量不能大于{zpInfo.N_QUA_TOTAL}");
                }

                var delItems = lstItems.Take((int)num);

                if (zpInfo.N_QUA_TOTAL == num)
                {
                    // 全部撤销,删除子表及主表记录
                    string delItemSql = $"DELETE TRC_ROLL_WW_MAIN_ITEM WHERE C_ROLL_WW_MAIN_ID='{zpInfo.C_ID}'";
                    TransactionHelper.ExecuteSql(delItemSql);
                    string delSql = $"DELETE TRC_ROLL_WW_MAIN WHERE C_ID='{zpInfo.C_ID}'";
                    TransactionHelper.ExecuteSql(delSql);

                    // 退库
                }
                else
                {
                    // 剩余的重量,用于更新
                    var wgt = lstItems.Skip((int)num).Sum(w => w.N_WGT);

                    // 删除的ID
                    var delIds = "('" + string.Join("','", delItems.Select(w => w.C_ID)) + "')";
                    var delSql = $"DELETE TRC_ROLL_WW_MAIN_ITEM WHERE C_ID IN{delIds}";
                    TransactionHelper.ExecuteSql(delSql);

                    // 更新主表支数,重量
                    string updateSql = $"UPDATE TRC_ROLL_WW_MAIN " +
                                       $"SET N_QUA_TOTAL={lstItems.Count - num},N_WGT_TOTAL={wgt} WHERE C_ID='{zpInfo.C_ID}'";
                    TransactionHelper.ExecuteSql(updateSql);
                }

                // 退库
                var    updateIds        = "('" + string.Join("','", delItems.Select(w => w.C_SLAB_MAIN_ID)) + "')";
                string updateProductSql = $"UPDATE TRC_ROLL_PRODCUT SET C_MOVE_TYPE = 'QE' WHERE C_ID IN{updateIds}";
                TransactionHelper.ExecuteSql(updateProductSql);
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }

            TransactionHelper.Commit();
        }
Esempio n. 15
0
        /*
         *      /// <summary>
         *      /// 分页获取数据列表
         *      /// </summary>
         *      public DataSet GetList(int PageSize,int PageIndex,string strWhere)
         *      {
         *              OracleParameter[] parameters = {
         *                              new OracleParameter(":tblName", OracleDbType.Varchar2, 255),
         *                              new OracleParameter(":fldName", OracleDbType.Varchar2, 255),
         *                              new OracleParameter(":PageSize", OracleDbType.Decimal),
         *                              new OracleParameter(":PageIndex", OracleDbType.Decimal),
         *                              new OracleParameter(":IsReCount", OracleDbType.Clob),
         *                              new OracleParameter(":OrderType", OracleDbType.Clob),
         *                              new OracleParameter(":strWhere", OracleDbType.Varchar2,1000),
         *                              };
         *              parameters[0].Value = "TRC_ROLL_WW_MAIN";
         *              parameters[1].Value = "C_ID";
         *              parameters[2].Value = PageSize;
         *              parameters[3].Value = PageIndex;
         *              parameters[4].Value = 0;
         *              parameters[5].Value = 0;
         *              parameters[6].Value = strWhere;
         *              return DbHelperOra.RunProcedure("UP_GetRecordByPage",parameters,"ds");
         *      }*/

        #endregion  BasicMethod
        #region  ExtensionMethod

        #endregion  ExtensionMethod

        #region 自定义
        /// <summary>
        /// 外委加工组批
        /// </summary>
        /// <param name="zpInfo"></param>
        public void SetZpInfo(
            Mod_TMO_ORDER order,
            WWZPPlanItemInfo zpInfo,
            List <Mod_TRC_ROLL_PRODCUT> batchInfo,
            string userId)
        {
            UpdateBatchSameToNc(
                zpInfo.InventoryCode,
                order.C_STL_GRD,
                order.C_STD_CODE,
                order.C_SPEC,
                zpInfo.CBatchNo,
                zpInfo.MtrlCode,
                zpInfo.ZLDJ,
                zpInfo.BZYQ,
                batchInfo);

            TransactionHelper.BeginTransaction();

            if (zpInfo.Num < batchInfo.Count)
            {
                // 如果组批支数等于库存支数,相当于耗用所有库存,则实际重量等于库存重量
                new Dal_TMO_ORDER().UpdateInventory(batchInfo, zpInfo.ZpAmt, zpInfo.Num);
            }

            var zpAmt = batchInfo.Take(zpInfo.Num).Sum(w => w.N_WGT);

            // 生成批次号
            var batchInfoItem = batchInfo.FirstOrDefault();
            // 构造外委加工组批主表记录
            var mainItem = new Mod_TRC_ROLL_WW_MAIN
            {
                C_ID              = Guid.NewGuid().ToString("N"),
                C_ORD_ID          = zpInfo.Id,
                N_WGT_TOTAL       = zpAmt,
                N_STATUS          = 0,
                C_EMP_ID          = userId,
                C_GROUP           = zpInfo.BZ,
                C_REMARK          = zpInfo.Remark,
                C_SHIFT           = zpInfo.BC,
                C_SPEC_SLAB       = batchInfoItem.C_SPEC,
                C_CHECKSTATE_NAME = zpInfo.ZLDJ,
                C_STD_CODE        = batchInfoItem.C_STD_CODE,
                C_STL_GRD_SLAB    = batchInfoItem.C_STL_GRD,
                D_MOD_DT          = DateTime.Now,
                N_QUA_TOTAL       = zpInfo.Num,
                C_MAT_SLAB_CODE   = order.C_MAT_CODE,
                C_MAT_SLAB_NAME   = order.C_MAT_NAME,
                C_MAT_XC_CODE     = batchInfoItem.C_MAT_CODE,
                C_MAT_XC_NAME     = batchInfoItem.C_MAT_DESC,
                C_XC_BATCH_NO     = batchInfoItem.C_BATCH_NO,
                C_XC_LINEWH_CODE  = batchInfoItem.C_LINEWH_CODE,// zpInfo.InventoryCode,
                C_XC_BZYQ         = batchInfoItem.C_BZYQ
            };

            if (string.IsNullOrEmpty(zpInfo.BachNo) == false)
            {
                var a = ExistBatchNo(zpInfo.BachNo);
                // 验证批号
                //string existsSql = $"SELECT COUNT(C_ID) FROM TRC_ROLL_WW_MAIN WHERE C_BATCH_NO='{zpInfo.BachNo}'";
                //var count = int.Parse(TransactionHelper.Query(existsSql).Tables[0].Rows[0][0]?.ToString() ?? "0");
                if (a)//count > 0)
                {
                    TransactionHelper.RollBack();
                    throw new Exception("批次号重复,请重新输入");
                }

                mainItem.C_BATCH_NO = zpInfo.BachNo;
            }
            else
            {
                mainItem.C_BATCH_NO = GetMAXWWBatchNo();
            }

            bool success = this.Add(mainItem);

            if (success == false)
            {
                TransactionHelper.RollBack();
                throw new Exception("组批失败");
            }
            try
            {
                for (int i = 0; i < zpInfo.Num; i++)
                {
                    // 更新线材库存状态
                    string updateSql = $"UPDATE TRC_ROLL_PRODCUT SET C_MOVE_TYPE = 'QS' WHERE C_ID='{batchInfo[i].C_ID}'";

                    TransactionHelper.ExecuteSql(updateSql);

                    // 插入外委加工组批子表记录
                    string insertSql = $"insert into TRC_ROLL_WW_MAIN_ITEM(C_ID,C_ROLL_WW_MAIN_ID,C_SLAB_MAIN_ID,N_WGT) " +
                                       $"VALUES('{Guid.NewGuid().ToString("N")}','{mainItem.C_ID}','{batchInfo[i].C_ID}',{batchInfo[i].N_WGT})";

                    TransactionHelper.ExecuteSql(insertSql);
                }
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                throw ex;
            }

            TransactionHelper.Commit();
        }
Esempio n. 16
0
        /// <summary>
        /// 发送发运单到中间表
        /// </summary>
        /// <param name="fydid">要发送的发运单号</param>
        /// <returns>返回int类型 1转入成功-1发送失败</returns>
        public string ADDFYDToZJB(string fydid, DateTime dateTime)
        {
            try
            {
                TransactionHelper.BeginTransaction();
                #region MyRegion
                string    rjhsql = "SELECT C_PLAN_ID,C_ID,C_MAT_CODE,C_STD_CODE,C_SEND_STOCK_CODE,c_Judge_Lev_Zh,C_PACK,N_FYZS,N_FYWGT,N_MWGT,N_PWGT,N_JWGT,C_MZDATE, C_PZDATE,N_MZTIME,N_PZTIME FROM TMD_DISPATCHDETAILS WHERE C_DISPATCH_ID='" + fydid + "'";
                DataTable plandt = TransactionHelper.Query(rjhsql).Tables[0];
                if (plandt.Rows.Count < 0)
                {
                    TransactionHelper.RollBack();
                    return("未查询到发运单子表数据!");
                }
                foreach (DataRow planrow in plandt.Rows)
                {
                    int    plannum = Convert.ToInt32(planrow["N_FYZS"]);//发运数量
                    string mzstr   = planrow["N_MWGT"].ToString();
                    string pzstr   = planrow["N_PWGT"].ToString();
                    string jzstr   = planrow["N_JWGT"].ToString();
                    #region 获取出库单
                    string no     = DateTime.Now.Year.ToString() + (Convert.ToInt32(DateTime.Now.Month) > 9 ? DateTime.Now.Month.ToString() : ("0" + DateTime.Now.Month.ToString())) + (Convert.ToInt32(DateTime.Now.Day) > 9 ? DateTime.Now.Day.ToString() : ("0" + DateTime.Now.Day.ToString())); //转库单号
                    string maxckd = GetCKDNO(no);                                                                                                                                                                                                                                                   //查询当天最大转库单
                    if (maxckd == "0")
                    {
                        no = no + "0001";
                    }
                    else
                    {
                        no = (Convert.ToInt64(maxckd.Substring(2, maxckd.Length - 2)) + 1).ToString();
                    }
                    no = "GP" + no;
                    #endregion
                    #region 获取钢坯实绩
                    DataTable dt1 = GetListByidstr(fydid, planrow["C_MAT_CODE"].ToString(), planrow["C_STD_CODE"].ToString(), planrow["C_SEND_STOCK_CODE"].ToString(), planrow["c_Judge_Lev_Zh"].ToString(), "1").Tables[0];//要传输的发运单数据
                    if (dt1.Rows.Count < 1)
                    {
                        TransactionHelper.RollBack();
                        return("根据发运单子表查询钢坯实绩错误!");
                    }
                    int fpnum = 0;
                    //string idstr = "";
                    foreach (DataRow xqitem in dt1.Rows)
                    {
                        fpnum += Convert.ToInt32(xqitem["N_NUM"]);
                        ////if (plannum == fpnum)
                        ////{
                        ////    break;
                        ////}
                        //idstr += "'" + xqitem["C_ID"] + "',";
                        //fpnum++;
                    }
                    //idstr = idstr.Substring(0, idstr.Length - 1);

                    //#region 变更钢坯实绩
                    //if (BJBynum(idstr) == 0)
                    //{
                    //    TransactionHelper.RollBack();
                    //    return "根据发运单子表变更钢坯实绩错误!";
                    //}
                    //#endregion
                    //DataTable sjdt = GetListByidstr(idstr).Tables[0];//要传输的发运单数据
                    if (mzstr == "")
                    {
                        foreach (DataRow item1 in dt1.Rows)
                        {
                            int num = Convert.ToInt32(item1["N_NUM"]);
                            #region 添加中间表
                            string sql = "";
                            sql += "insert into TMD_DISPATCH_SJZJB(C_DISPATCH_ID,N_NUM,N_STATUS,C_CKDH,C_SEND_STOCK,C_STOVE,C_BATCH_NO,C_PLAN_ID,C_STL_GRD,C_STD_CODE,C_SPEC,C_PK_NCID,C_ZLDJ,C_BZYQ,D_CKSJ,C_MAT_CODE,C_MAT_NAME,C_TICK_STR,N_WGT,N_JZ,N_MWGT,N_PWGT,C_MZDATE,C_PZDATE,N_MZTIME,N_PZTIME) values('" + fydid + "','" + num + "','6','" + no + "','" + item1["C_SLABWH_CODE"] + "','" + item1["C_STOVE"] + "','" + item1["C_BATCH_NO"] + "','" + planrow["C_PLAN_ID"].ToString() + "','" + item1["C_STL_GRD"] + "','" + item1["C_STD_CODE"] + "','" + item1["C_SPEC"] + "','" + planrow["C_ID"].ToString() + "','" + item1["C_JUDGE_LEV_ZH"].ToString() + "','',to_date('" + dateTime + "', 'yyyy-mm-dd hh24:mi:ss'),'" + item1["C_MAT_CODE"].ToString() + "','" + item1["C_MAT_NAME"].ToString() + "','','" + item1["N_WGT"].ToString() + "','','','','','','','')";
                            if (TransactionHelper.ExecuteSql(sql) == 0)
                            {
                                TransactionHelper.RollBack();
                                return("条件发运单中间表错误!");
                            }
                            #endregion
                        }
                    }
                    else
                    {
                        decimal smz      = Convert.ToDecimal(planrow["N_MWGT"]); //总毛重
                        decimal spz      = Convert.ToDecimal(planrow["N_PWGT"]); //总皮重
                        decimal sjz      = Convert.ToDecimal(planrow["N_JWGT"]); //总净重
                        string  C_MZDATE = planrow["C_MZDATE"].ToString();       //获取毛重日期
                        string  C_PZDATE = planrow["C_PZDATE"].ToString();       //获取皮重日期
                        string  N_MZTIME = planrow["N_MZTIME"].ToString();       //获取毛重时间
                        string  N_PZTIME = planrow["N_PZTIME"].ToString();       //获取皮重时间
                        decimal mz       = smz / fpnum;                          //获取毛重
                        decimal pz       = spz / fpnum;                          //获取皮重
                        decimal jz       = sjz / fpnum;                          //获取净重
                        decimal bjmz     = 0;
                        decimal bjpz     = 0;
                        decimal bjjz     = 0;
                        int     bjnum    = 0;
                        foreach (DataRow item1 in dt1.Rows)
                        {
                            int     num  = Convert.ToInt32(item1["N_NUM"]);
                            decimal sjmz = decimal.Round(mz * num, 2);
                            decimal sjpz = decimal.Round(pz * num, 2);
                            decimal sjjz = decimal.Round(jz * num, 2);
                            bjnum++;
                            bjmz += sjmz;
                            bjpz += sjpz;
                            bjjz += sjjz;
                            if (bjnum == dt1.Rows.Count)
                            {
                                sjmz = smz - bjmz;
                                sjpz = spz - bjpz;
                                sjjz = sjz - bjjz;
                            }
                            #region 添加中间表
                            string sql = "";
                            sql += "insert into TMD_DISPATCH_SJZJB(C_DISPATCH_ID,N_NUM,N_STATUS,C_CKDH,C_SEND_STOCK,C_STOVE,C_BATCH_NO,C_PLAN_ID,C_STL_GRD,C_STD_CODE,C_SPEC,C_PK_NCID,C_ZLDJ,C_BZYQ,D_CKSJ,C_MAT_CODE,C_MAT_NAME,C_TICK_STR,N_WGT,N_JZ,N_MWGT,N_PWGT,C_MZDATE,C_PZDATE,N_MZTIME,N_PZTIME) values('" + fydid + "','" + num + "','6','" + no + "','" + item1["C_SLABWH_CODE"] + "','" + item1["C_STOVE"] + "','" + item1["C_BATCH_NO"] + "','" + planrow["C_PLAN_ID"].ToString() + "','" + item1["C_STL_GRD"] + "','" + item1["C_STD_CODE"] + "','" + item1["C_SPEC"] + "','" + planrow["C_ID"].ToString() + "','" + item1["C_JUDGE_LEV_ZH"].ToString() + "','',to_date('" + dateTime + "', 'yyyy-mm-dd hh24:mi:ss'),'" + item1["C_MAT_CODE"].ToString() + "','" + item1["C_MAT_NAME"].ToString() + "','','" + item1["N_WGT"].ToString() + "','" + sjjz + "','" + sjmz + "','" + sjpz + "','" + C_MZDATE + "','" + C_PZDATE + "','" + N_MZTIME + "','" + N_MZTIME + "')";
                            if (TransactionHelper.ExecuteSql(sql) == 0)
                            {
                                TransactionHelper.RollBack();
                                return("条件发运单中间表错误!");
                            }
                        }

                        #endregion
                    }
                    #endregion
                }
                #endregion

                TransactionHelper.Commit();
                return("1");
            }
            catch (Exception ex)
            {
                TransactionHelper.RollBack();
                return(ex.ToString());
            }
        }