using DBUtility;
|
using System;
|
using System.Collections.Concurrent;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Web;
|
using WebAPI.Dapper;
|
using WebAPI.Models;
|
using WebAPI.WebS;
|
|
namespace WebAPI.Service
|
{
|
public class YqnQbService
|
{
|
/// <summary>
|
/// 获取单据号
|
/// </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);
|
if (hInterId == 0 || string.IsNullOrEmpty(hBillNo))
|
return new ApiResult<DocumentsView> { code = -1, msg = "获取失败" };
|
DocumentsView documentsView = new DocumentsView()
|
{
|
HBillNo = hBillNo,
|
HInterID = hInterId
|
};
|
return new ApiResult<DocumentsView> { code = 1, msg = "获取成功", data = documentsView };
|
}
|
/// <summary>
|
/// 扫码方法
|
/// </summary>
|
public static ApiResult<DataSet> GetHbarCodeDetail(string sBillBarCode)
|
{
|
if (string.IsNullOrEmpty(sBillBarCode))
|
return new ApiResult<DataSet> { code = -1, msg = "条码不能为空" };
|
sBillBarCode = sBillBarCode.CompareTo("#") > 0 ? sBillBarCode.Split(Convert.ToChar("#"))[0] : sBillBarCode;
|
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 };
|
}
|
/// <summary>
|
/// 流转卡回车方法
|
/// </summary>
|
public static ApiResult<DataSet> GetProcDetail(string sBillNo, string 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<DataSet> { code = -1, msg = "流水号或流转卡号为空" };
|
return new ApiResult<DataSet> { code = 1, msg = "查询成功", data = dataSet };
|
}
|
/// <summary>
|
/// 获取生产资源列表
|
/// </summary>
|
public static ApiResult<DataSet> GetSourceList(string sWhere)
|
{
|
var dataSet = GetSourceDb(sWhere);
|
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 };
|
}
|
/// <summary>
|
/// 获取生产班组列表
|
/// </summary>
|
public static ApiResult<DataSet> GetGroupList(string sWhere)
|
{
|
var dataSet = GetGroupDb(sWhere);
|
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 };
|
}
|
/// <summary>
|
/// 获取工作中心列表
|
/// </summary>
|
public static ApiResult<DataSet> GetWorkCenterList(string sWhere)
|
{
|
var dataSet = GetGroupDb(sWhere);
|
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 };
|
}
|
private static ConcurrentDictionary<string, string> dicLock = new System.Collections.Concurrent.ConcurrentDictionary<string, string>();//并发锁
|
/// <summary>
|
/// 进站接收单
|
/// </summary>
|
public static ApiResult SetStationInBill(ClsSc_StationInBillMain oMain)
|
{
|
if (!dicLock.TryAdd(oMain.HICMOBillNo + "jz", ""))//防止并发
|
return new ApiResult { code = -1, msg = "服务器繁忙" };
|
try
|
{
|
if (oMain.HProcID == 0 || oMain.HQty == 0 || oMain.HEmpID == 0||string.IsNullOrEmpty(oMain.HICMOBillNo)||string.IsNullOrEmpty(oMain.HProcExchBillNo)||oMain.HQty==0||oMain.HICMOInterID==0||string.IsNullOrEmpty(oMain.HBillNo))
|
return new ApiResult { code = 1, msg = "参数不全" };
|
var stationInList = YqnDal.GetStationInBillMailList(oMain.HICMOBillNo);//获得该流转卡所有进站单
|
if (stationInList.Count > 0)
|
{
|
var stationOutList = YqnDal.GetStationOutBillMailList(oMain.HICMOBillNo);//获得该流转卡所有出站单
|
var stationInModel = stationInList.OrderByDescending(a => a.HDate).First();//获取进站单最新进站工序
|
if (stationOutList.Count == 0 && oMain.HEmpID == stationInModel.HEmpID)
|
return new ApiResult { code = -1, msg = "重复扫描" };
|
if (stationOutList.Count == 0 && oMain.HEmpID != stationInModel.HEmpID)
|
return new ApiResult { code = -1, msg = "此单已关联" };
|
var stationOutModel = stationOutList.OrderByDescending(a => a.HDate).First();//获取出站单最新出站工序
|
if (stationInModel.HProcID != stationOutModel.HProcID && stationInModel.HEmpID == oMain.HEmpID)
|
return new ApiResult { code = -1, msg = "重复扫描" };
|
if (stationInModel.HProcID != stationOutModel.HProcID && stationInModel.HEmpID == oMain.HEmpID)
|
return new ApiResult { code = -1, msg = "此单已关联" };
|
if (stationOutList.Exists(a => a.HProcID == oMain.HProcID))
|
return new ApiResult { code = -1, msg = "该单据已完成此工艺" };
|
}
|
WebS.WebService1 oWebs = new WebS.WebService1();
|
string sErrMsg = string.Empty;
|
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;
|
}
|
finally
|
{
|
dicLock.TryRemove(oMain.HICMOBillNo + "jz", out string key);
|
}
|
}
|
/// <summary>
|
/// 获取进站单列表
|
/// </summary>
|
/// <param name="sWhere"></param>
|
/// <returns></returns>
|
public static ApiResult<DataSet> GetStationInBillList(string sWhere)
|
{
|
var dataSet = GetStationInBill(sWhere);
|
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 };
|
}
|
/// <summary>
|
/// 获取出站单列表
|
/// </summary>
|
/// <param name="sWhere"></param>
|
/// <returns></returns>
|
public static ApiResult<DataSet> GetStationOutBillList(string sWhere)
|
{
|
var dataSet = GetStationOutBill(sWhere);
|
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 };
|
}
|
/// <summary>
|
/// 出站接收单
|
/// </summary>
|
public static ApiResult SetStationOutBill(StationOutBillView omodel)
|
{
|
if (!dicLock.TryAdd(omodel.HBillNo, 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;
|
}
|
#region sql语句
|
public static DataSet GetStationOutBill(string strWhere)
|
{
|
var sql = "Select top 5000 * from h_v_MES_StationOutBillList Where 1=1 " + strWhere;
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
var dataSet = oCN.RunProcReturn(sql, "h_v_MES_StationOutBillList");
|
return dataSet;
|
}
|
public static DataSet GetStationInBill(string strWhere)
|
{
|
var sql = "Select top 5000 * from h_v_MES_StationInBillList Where 1=1 " + strWhere;
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
var dataSet = oCN.RunProcReturn(sql, "h_v_MES_StationInBillList");
|
return dataSet;
|
}
|
public static DataSet GetBarCodeDb(string billBarCode)
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
var dataSet = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList where 单据号= '" + billBarCode + "'", "h_v_Sc_ProcessExchangeBillList");
|
return dataSet;
|
}
|
public static DataSet GetSourceDb(string sWhere)
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
var dataSet = oCN.RunProcReturn("Select HItemID,HNumber 生产资源代码,HName 生产资源 from Gy_Source where HStopflag=0 " + sWhere + " Order by HItemID ", "Gy_Source");
|
return dataSet;
|
}
|
public static DataSet GetGroupDb(string sWhere)
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
var dataSet = oCN.RunProcReturn("Select HItemID,HNumber 工作中心代码,HName 工作中心 from Gy_WorkCenter where HStopflag=0 " + sWhere + " Order by HItemID ", "Gy_Source");
|
return dataSet;
|
}
|
|
public static DataSet GetProcDb(string sBillNo, string sProcNo)
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
var dataSet = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList where 单据号= '" + sBillNo + "' and 工序号='" + sProcNo + "'", "h_v_Sc_ProcessExchangeBillList");
|
return dataSet;
|
}
|
/// <summary>
|
/// 工作中心
|
/// </summary>
|
/// <param name="sWhere"></param>
|
/// <returns></returns>
|
public static DataSet GetWorkCenterDb(string sWhere)
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
var dataSet = oCN.RunProcReturn("Select HItemID,HNumber 工作中心代码,HName 工作中心 from Gy_Group where HStopflag=0 " + sWhere + " Order by HItemID ", "Gy_Source");
|
return dataSet;
|
}
|
public static ApiResult SetOutBill(StationOutBillView omodel)
|
{
|
try
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
omodel.HInterID = DBUtility.ClsPub.CreateBillID("3791", ref DBUtility.ClsPub.sExeReturnInfo);
|
oCN.BeginTran();
|
oCN.RunProc("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" +
|
") " +
|
" 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() +
|
") ");
|
oCN.Commit();
|
return new ApiResult { code = 1, msg = "新增成功" };
|
}
|
catch (Exception ex)
|
{
|
return new ApiResult { code = -1, msg = "保存错误/"+ex.ToString() };
|
}
|
}
|
public static ApiResult SetInBill(ClsSc_StationInBillMain omodel)
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
try
|
{
|
//得到mainid
|
omodel.HInterID = DBUtility.ClsPub.CreateBillID("3790", ref DBUtility.ClsPub.sExeReturnInfo);
|
//若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();
|
return new ApiResult { code = 1, msg = "新增成功" };
|
}
|
catch (Exception e)
|
{
|
oCN.RollBack();
|
return new ApiResult { code = -1, msg = "保存错误/" + e.ToString() };
|
}
|
}
|
#endregion
|
|
}
|
}
|