|  |  | 
 |  |  | using System.Collections.Generic; | 
 |  |  | using System.Data; | 
 |  |  | using System.Linq; | 
 |  |  | using System.Text; | 
 |  |  | using System.Web; | 
 |  |  | using WebAPI.Dapper; | 
 |  |  | using WebAPI.Models; | 
 |  |  | 
 |  |  |         /// </summary> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static ApiResult<DocumentsView> GetInterBillNo(string billType) | 
 |  |  |         {  | 
 |  |  |             var hInterId= DBUtility.ClsPub.CreateBillID(billType, ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |             var hBillNo= DBUtility.ClsPub.CreateBillCode(billType, ref DBUtility.ClsPub.sExeReturnInfo, true); | 
 |  |  |         { | 
 |  |  |             var hInterId = DBUtility.ClsPub.CreateBillID(billType, ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |             var hBillNo = DBUtility.ClsPub.CreateBillCode(billType, ref DBUtility.ClsPub.sExeReturnInfo, true); | 
 |  |  |             if (hInterId == 0 || string.IsNullOrEmpty(hBillNo)) | 
 |  |  |                 return new ApiResult<DocumentsView> { code = -1, msg = "获取失败" }; | 
 |  |  |             DocumentsView documentsView = new DocumentsView() | 
 |  |  | 
 |  |  |             var dataSet = GetBarCodeDb(sBillBarCode); | 
 |  |  |             if (dataSet == null || dataSet.Tables[0].Rows.Count == 0) | 
 |  |  |                 return new ApiResult<DataSet> { code = -1, msg = "不存在流转卡号" }; | 
 |  |  |             return new ApiResult<DataSet> { code = 1, msg = "查询成功",data=dataSet }; | 
 |  |  |             return new ApiResult<DataSet> { code = 1, msg = "查询成功", data = dataSet }; | 
 |  |  |         } | 
 |  |  |         /// <summary> | 
 |  |  |         /// 流转卡回车方法  | 
 |  |  |         /// </summary> | 
 |  |  |         public static ApiResult<DataSet> GetProcDetail(string sBillNo, string sProcNo) | 
 |  |  |         { | 
 |  |  |             if (string.IsNullOrEmpty(sBillNo)||string.IsNullOrEmpty(sProcNo)) | 
 |  |  |             if (string.IsNullOrEmpty(sBillNo) || string.IsNullOrEmpty(sProcNo)) | 
 |  |  |                 return new ApiResult<DataSet> { code = -1, msg = "条码和流转卡不能为空" }; | 
 |  |  |             var dataSet = GetProcDb(sBillNo, sProcNo); | 
 |  |  |             if (dataSet == null || dataSet.Tables[0].Rows.Count == 0) | 
 |  |  | 
 |  |  |                 return new ApiResult { code = -1, msg = "服务器繁忙" }; | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 if (oMain.HProcID == 0 || oMain.HQty == 0 ||string.IsNullOrEmpty(oMain.HProcExchBillNo)||oMain.HQty==0||string.IsNullOrEmpty(oMain.HBillNo)) | 
 |  |  |                 if (oMain.HProcID == 0 || oMain.HQty == 0 || string.IsNullOrEmpty(oMain.HProcExchBillNo) || oMain.HQty == 0 || string.IsNullOrEmpty(oMain.HBillNo)) | 
 |  |  |                     return new ApiResult { code = 1, msg = "参数不全" }; | 
 |  |  |                 var stationInList = YqnDal.GetStationInBillMailList(oMain.HICMOBillNo);//获得该流转卡所有进站单 | 
 |  |  |                 var stationInList = YqnDal.GetStationInBillMailList(oMain.HProcExchBillNo);//获得该流转卡所有进站单 | 
 |  |  |                 if (stationInList.Count > 0) | 
 |  |  |                 { | 
 |  |  |                     var stationOutList = YqnDal.GetStationOutBillMailList(oMain.HICMOBillNo);//获得该流转卡所有出站单 | 
 |  |  |                     var stationOutList = YqnDal.GetStationOutBillMailList(oMain.HProcExchBillNo);//获得该流转卡所有出站单 | 
 |  |  |                     var stationInModel = stationInList.OrderByDescending(a => a.HDate).First();//获取进站单最新进站工序 | 
 |  |  |                     if (stationOutList.Count == 0 && oMain.HEmpID == stationInModel.HEmpID) | 
 |  |  |                     if (stationOutList.Count == 0 && oMain.HProcID == stationInModel.HProcID) | 
 |  |  |                         return new ApiResult { code = -1, msg = "重复扫描" }; | 
 |  |  |                     if (stationOutList.Count == 0 && oMain.HEmpID != stationInModel.HEmpID) | 
 |  |  |                     if (stationOutList.Count == 0 && oMain.HProcID != stationInModel.HProcID) | 
 |  |  |                         return new ApiResult { code = -1, msg = "此单已关联" }; | 
 |  |  |                     var stationOutModel = stationOutList.OrderByDescending(a => a.HDate).First();//获取出站单最新出站工序 | 
 |  |  |                     if (stationInModel.HProcID != stationOutModel.HProcID && stationInModel.HEmpID == oMain.HEmpID) | 
 |  |  |                     if (stationInModel.HProcID != stationOutModel.HProcID && stationInModel.HProcID == oMain.HProcID) | 
 |  |  |                         return new ApiResult { code = -1, msg = "重复扫描" }; | 
 |  |  |                     if (stationInModel.HProcID != stationOutModel.HProcID && stationInModel.HEmpID == oMain.HEmpID) | 
 |  |  |                     if (stationInModel.HProcID != stationOutModel.HProcID && stationInModel.HProcID == oMain.HProcID) | 
 |  |  |                         return new ApiResult { code = -1, msg = "此单已关联" }; | 
 |  |  |                     if (stationOutList.Exists(a => a.HProcID == oMain.HProcID)) | 
 |  |  |                         return new ApiResult { code = -1, msg = "该单据已完成此工艺" }; | 
 |  |  | 
 |  |  |                 var result = oWebs.set_SaveStationInBill(oMain, ref sErrMsg);//进站 | 
 |  |  |                 if (!result) | 
 |  |  |                 { | 
 |  |  |  | 
 |  |  |                     return new ApiResult { code = -1, msg = sErrMsg }; | 
 |  |  |                 } | 
 |  |  |                 return new ApiResult { code = 1, msg = "操作成功" }; | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  |                 throw; | 
 |  |  |                 return new ApiResult { code = -1, msg = "请求错误" + ex.ToString() }; | 
 |  |  |             } | 
 |  |  |             finally | 
 |  |  |             { | 
 |  |  | 
 |  |  |         /// </summary> | 
 |  |  |         public static ApiResult SetStationOutBill(StationOutBillView omodel) | 
 |  |  |         { | 
 |  |  |             if (!dicLock.TryAdd(omodel.HBillNo, omodel.HBillNo)) | 
 |  |  |             if (!dicLock.TryAdd(omodel.HICMOBillNo + "cz", omodel.HBillNo))//同一单号并发处理 | 
 |  |  |                 return new ApiResult { code = -1, msg = "服务器繁忙" }; | 
 |  |  |             var stationInBillModel = YqnDal.GetStationInBillMail(omodel.HProcID, omodel.HICMOBillNo); | 
 |  |  |             if (stationInBillModel == null) | 
 |  |  |                 return new ApiResult { code = -1, msg = "该工序进站单不存在" }; | 
 |  |  |             var stationOutBillModel = YqnDal.GetStationOutBillMail(omodel.HProcID, omodel.HICMOBillNo); | 
 |  |  |             if (stationOutBillModel != null) | 
 |  |  |                 return new ApiResult { code = -1, msg = "该工序已存在出站单" }; | 
 |  |  |             WebS.WebService1 oWebs = new WebS.WebService1(); | 
 |  |  |             string sErrMsg = string.Empty; | 
 |  |  |             var result = SetOutBill(omodel); | 
 |  |  |             return result; | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 var stationInBillModel = YqnDal.GetStationInBillMail(omodel.HProcID, omodel.HProcExchBillNo); | 
 |  |  |                 if (stationInBillModel == null) | 
 |  |  |                     return new ApiResult { code = -1, msg = "该工序进站单不存在" }; | 
 |  |  |                 var stationOutBillModel = YqnDal.GetStationOutBillMail(omodel.HProcID, omodel.HProcExchBillNo); | 
 |  |  |                 if (stationOutBillModel != null) | 
 |  |  |                     return new ApiResult { code = -1, msg = "该工序已存在出站单" }; | 
 |  |  |                 omodel.HYear = DateTime.Now.Year; | 
 |  |  |                 var result = SetOutBill(omodel); | 
 |  |  |                 return result; | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  |                 return new ApiResult { code = -1, msg = ex.ToString() }; | 
 |  |  |             } | 
 |  |  |             finally | 
 |  |  |             { | 
 |  |  |                 dicLock.TryRemove(omodel.HICMOBillNo + "cz", out string key); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         /// <summary> | 
 |  |  |         /// 获取工序详情 | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="hItemId"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static ApiResult<Models.M_Process> GetProcessDetail(int hItemId) | 
 |  |  |         { | 
 |  |  |             var processModel = ProcessDal.GetProcessDetail(hItemId); | 
 |  |  |             if (processModel == null) | 
 |  |  |                 return new ApiResult<M_Process> { code = -1, msg = "查询为空" }; | 
 |  |  |             processModel.DepartmentModel = ProcessDal.GetDepartmentModel(processModel.HDeptID); | 
 |  |  |             processModel.ProcMulModel = ProcessDal.GetProcMulModel(processModel.HProcMulID); | 
 |  |  |             return new ApiResult<M_Process> { code = 1, msg = "查询成功", data = processModel }; | 
 |  |  |         } | 
 |  |  |         /// <summary> | 
 |  |  |         /// 获取工序列表 | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="hName"></param> | 
 |  |  |         /// <param name="hLevel"></param> | 
 |  |  |         /// <param name="hNumber"></param> | 
 |  |  |         /// <param name="hBillSubType"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static ApiResult<List<Models.M_Process>> GetProcessList(string hName, int hLevel, string hNumber, string hBillSubType, int page, int limit) | 
 |  |  |         { | 
 |  |  |             int pageCount = 0; | 
 |  |  |             var list = ProcessDal.GetProcessList(hName, hLevel, hNumber, hBillSubType, page, limit, ref pageCount); | 
 |  |  |             if (list?.Count == 0) | 
 |  |  |                 return new ApiResult<List<M_Process>> { code = -1, msg = "查询为空" }; | 
 |  |  |             return new ApiResult<List<M_Process>> { code = 0, msg = "查询成功", data = list, count = pageCount }; | 
 |  |  |         } | 
 |  |  |         /// <summary> | 
 |  |  |         /// 删除一条工序 | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="hItemID"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static ApiResult DeleteProcess(int hItemID) | 
 |  |  |         { | 
 |  |  |             var result = ProcessDal.DeleteProcess(hItemID); | 
 |  |  |             if (result > 0) | 
 |  |  |                 return new ApiResult { code = 1, msg = "删除成功" }; | 
 |  |  |             return new ApiResult { code = -1, msg = "删除数据不存在" }; | 
 |  |  |         } | 
 |  |  |         #region sql语句 | 
 |  |  |         public static DataSet GetStationOutBill(string strWhere) | 
 |  |  | 
 |  |  |                 SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); | 
 |  |  |                 omodel.HInterID = DBUtility.ClsPub.CreateBillID("3791", ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |                 oCN.BeginTran(); | 
 |  |  |                 oCN.RunProc("Insert Into Sc_StationOutBillMain " + | 
 |  |  |                 var sql = "Insert Into Sc_StationOutBillMain " + | 
 |  |  |                     "(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate" + | 
 |  |  |                     ",HYear,HPeriod,HRemark" + | 
 |  |  |                     ",HICMOInterID,HICMOBillNo,HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HProcExchInterID,HProcExchEntryID" + | 
 |  |  |                     ",HProcExchBillNo,HMaterID,HProcID,HICMOQty,HPlanQty,HStationOutTime,HSourceID" + | 
 |  |  |                     ",HGroupID,HDeptID,HEmpID,HBarCode,HAddr,HBarCodeMaker,HBarCodeMakeDate" + | 
 |  |  |                     ",HSupID,HQty,HPrice,HMoney" + | 
 |  |  |                     ",HSupID,HQty,HPrice,HMoney,HProcNo" + | 
 |  |  |                     ") " + | 
 |  |  |                     " values('3791','3791'," + omodel.HInterID.ToString() + ",'" + omodel.HBillNo + "'," + omodel.HBillStatus.ToString() + ",getdate(),'" + DBUtility.ClsPub.CurUserName + "',getdate()" + | 
 |  |  |                     "," + omodel.HYear.ToString() + "," + omodel.HPeriod.ToString() + ",'" + omodel.HRemark + "'" + | 
 |  |  |                     "," + omodel.HICMOInterID.ToString() + ",'" + omodel.HICMOBillNo + "'," + omodel.HProcPlanInterID.ToString() + "," + omodel.HProcPlanEntryID.ToString() + ",'" + omodel.HProcPlanBillNo + "'," + omodel.HProcExchInterID.ToString() + "," + omodel.HProcExchEntryID.ToString() + | 
 |  |  |                     ",'" + omodel.HProcExchBillNo + "'," + omodel.HMaterID.ToString() + "," + omodel.HProcID.ToString() + "," + omodel.HICMOQty.ToString() + "," + omodel.HPlanQty.ToString() + ",getdate()," + omodel.HSourceID.ToString() + | 
 |  |  |                     "," + omodel.HGroupID.ToString() + "," + omodel.HDeptID.ToString() + "," + omodel.HEmpID.ToString() + ",'" + omodel.HBarCode + "','" + omodel.HAddr + "','" + omodel.HBarCodeMaker + "',getdate()" + | 
 |  |  |                     "," + omodel.HSupID.ToString() + "," + omodel.HQty.ToString() + "," + omodel.HPrice.ToString() + "," + omodel.HMoney.ToString() + | 
 |  |  |                   ") "); | 
 |  |  |                     "," + omodel.HSupID.ToString() + "," + omodel.HQty.ToString() + "," + omodel.HPrice.ToString() + "," + omodel.HMoney.ToString() + "," + omodel.HProcNo + ") "; | 
 |  |  |                 //var result= SqlPools.GetInstance("YqnConn").ExecuteCommand(sql); | 
 |  |  |                 oCN.RunProc(sql); | 
 |  |  |                 oCN.Commit(); | 
 |  |  |                 return new ApiResult { code = 1, msg = "新增成功" }; | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  |                 return new ApiResult { code = -1, msg = "保存错误/"+ex.ToString() }; | 
 |  |  |                 return new ApiResult { code = -1, msg = "保存错误/" + ex.ToString() }; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         public static ApiResult SetInBill(ClsSc_StationInBillMain omodel) | 
 |  |  |         { | 
 |  |  |             SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); | 
 |  |  |             //SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 var nowTime = DateTime.Now; | 
 |  |  |                 omodel.HBillType = "3790"; | 
 |  |  |                 omodel.HYear = nowTime.Year; | 
 |  |  |                 omodel.HBillSubType = "3790"; | 
 |  |  |                 //得到mainid | 
 |  |  |                 omodel.HInterID = DBUtility.ClsPub.CreateBillID("3790", ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |                 omodel.HInterID = DBUtility.ClsPub.CreateBillID(omodel.HBillType, ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |                 omodel.HDate = nowTime; | 
 |  |  |                 omodel.HMakeDate = nowTime.ToString(); | 
 |  |  |                 omodel.HStationInTime = nowTime; | 
 |  |  |                 omodel.HBarCodeMakeDate = nowTime; | 
 |  |  |                 omodel.HPeriod = 1; | 
 |  |  |                 var sqlBuilder = new StringBuilder(); | 
 |  |  |                 sqlBuilder.Append("Insert Into Sc_StationInBillMain(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate,HYear,HPeriod,HRemark,HICMOInterID,HICMOBillNo"); | 
 |  |  |                 sqlBuilder.Append(",HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HProcExchInterID,HProcExchEntryID,HProcExchBillNo,HMaterID,HProcID,HICMOQty,HPlanQty,HStationInTime,HSourceID"); | 
 |  |  |                 sqlBuilder.Append(",HGroupID,HDeptID,HEmpID,HBarCode,HAddr,HBarCodeMaker,HBarCodeMakeDate,HSupID,HQty,HPrice,HMoney,HProcId,HProcNo) values "); | 
 |  |  |                 sqlBuilder.Append("(@HBillType,@HBillSubType,@HInterID,@HBillNo,@HBillStatus,@HDate,@HMaker,@HMakeDate,@HYear,@HPeriod,@HRemark,@HICMOInterID,@HICMOBillNo"); | 
 |  |  |                 sqlBuilder.Append(",@HProcPlanInterID,@HProcPlanEntryID,@HProcPlanBillNo,@HProcExchInterID,@HProcExchEntryID,@HProcExchBillNo,@HMaterID,@HProcID,@HICMOQty,@HPlanQty,@HStationInTime,@HSourceID"); | 
 |  |  |                 sqlBuilder.Append(",@HGroupID,@HDeptID,@HEmpID,@HBarCode,@HAddr,@HBarCodeMaker,@HBarCodeMakeDate,@HSupID,@HQty,@HPrice,@HMoney,@HProcId,@HProcNo)"); | 
 |  |  |                 //若MAINDI重复则重新获取 | 
 |  |  |                 oCN.BeginTran(); | 
 |  |  |                 //主表 | 
 |  |  |                 oCN.RunProc("Insert Into Sc_StationInBillMain " + | 
 |  |  |                 "(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate" + | 
 |  |  |                 ",HYear,HPeriod,HRemark" + | 
 |  |  |                 ",HICMOInterID,HICMOBillNo,HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HProcExchInterID,HProcExchEntryID" + | 
 |  |  |                 ",HProcExchBillNo,HMaterID,HProcID,HICMOQty,HPlanQty,HStationInTime,HSourceID" + | 
 |  |  |                 ",HGroupID,HDeptID,HEmpID,HBarCode,HAddr,HBarCodeMaker,HBarCodeMakeDate" + | 
 |  |  |                 ",HSupID,HQty,HPrice,HMoney,HMaker" + | 
 |  |  |                 ") " + | 
 |  |  |                 " values('3790','3790'," + omodel.HInterID.ToString() + ",'" + omodel.HBillNo + "'," + omodel.HBillStatus.ToString() + ",getdate(),'" + DBUtility.ClsPub.CurUserName + "',getdate()" + | 
 |  |  |                 "," + omodel.HYear.ToString() + "," + omodel.HPeriod.ToString() + ",'" + omodel.HRemark + "'" + | 
 |  |  |                 "," + omodel.HICMOInterID.ToString() + ",'" + omodel.HICMOBillNo + "'," + omodel.HProcPlanInterID.ToString() + "," + omodel.HProcPlanEntryID.ToString() + ",'" + omodel.HProcPlanBillNo + "'," + omodel.HProcExchInterID.ToString() + "," + omodel.HProcExchEntryID.ToString() + | 
 |  |  |                 ",'" + omodel.HProcExchBillNo + "'," + omodel.HMaterID.ToString() + "," + omodel.HProcID.ToString() + "," + omodel.HICMOQty.ToString() + "," + omodel.HPlanQty.ToString() + ",getdate()," + omodel.HSourceID.ToString() + | 
 |  |  |                 "," + omodel.HGroupID.ToString() + "," + omodel.HDeptID.ToString() + "," + omodel.HEmpID.ToString() + ",'" + omodel.HBarCode + "','" + omodel.HAddr + "','" + omodel.HBarCodeMaker + "',getdate()" + | 
 |  |  |                 "," + omodel.HSupID.ToString() + "," + omodel.HQty.ToString() + "," + omodel.HPrice.ToString() + "," + omodel.HMoney.ToString() + | 
 |  |  |               ",'"+omodel.HMaker+"') "); | 
 |  |  |  | 
 |  |  |                 oCN.Commit(); | 
 |  |  |                 //oCN.BeginTran(); | 
 |  |  |                 var result = SqlPools.GetInstance("YqnConn").ExecuteCommand(sqlBuilder.ToString(), omodel); | 
 |  |  |                 //oCN.RunProc(sql); | 
 |  |  |                 //oCN.Commit(); | 
 |  |  |                 return new ApiResult { code = 1, msg = "新增成功" }; | 
 |  |  |             } | 
 |  |  |             catch (Exception e) | 
 |  |  |             { | 
 |  |  |                 oCN.RollBack(); | 
 |  |  |                 //oCN.RollBack(); | 
 |  |  |                 return new ApiResult { code = -1, msg = "保存错误/" + e.ToString() }; | 
 |  |  |             } | 
 |  |  |         } |