duhe
2023-09-07 2fa45c3a43e907ad22dcfada5be88c0f31115e31
WebAPI/Controllers/CJGL/Cj_StationInBillController.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Pub_Class;
using System;
using System.Collections;
@@ -6,6 +7,7 @@
using System.Data;
using System.Data.SqlClient;
using System.Web.Http;
using System.Windows.Forms;
using WebAPI.Models;
namespace WebAPI.Controllers
@@ -20,6 +22,7 @@
        private json objJsonResult = new json();
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        public DAL.ClsSc_ICMOBill BillOld = new DAL.ClsSc_ICMOBill();
        DataSet ds;
        DataSet ds1;
@@ -36,6 +39,8 @@
                //委外工序发出反序列化
                string msg2 = "[" + sArray[0].ToString() + "]";
                string user = sArray[1].ToString();
                string OperationType = sArray[2].ToString();
                string HComputerName = SystemInformation.ComputerName; //设备名称
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("Cj_StationInBill_Edit", 1, false, user))
@@ -71,8 +76,8 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                long HProcNo = list[0].HProcNo;//流水号
                if (HProcNo <= 0)
                string HProcNo = list[0].HProcNo;//流水号
                if (HProcNo == "")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
@@ -94,7 +99,7 @@
                long HInterID = list[0].HInterID;//递入type得到的单据ID
                string HBillNo = list[0].HBillNo;//递入type得到的单据号
                int HBillStatus = 0;
                string HMaker = list[0].HMaker;//制单人
                string HMaker = user;//制单人
                int HYear = 2021;
                double HPeriod = 1;
                string HRemark = list[0].HRemark;//备注
@@ -122,6 +127,8 @@
                string HSourceName = list[0].HSourceName;//生产资源名称
                long HCenterID = list[0].HCenterID;//工作中心ID
                string HOrderProcNO = list[0].HOrderProcNO;//订单跟踪号
                long HPRDOrgID = list[0].HPRDOrgID;//组织ID
                double HmaterOutqty = list[0].HmaterOutqty;//白坯发布
                //单据完整性判断
                if (HMaterID <= 0)
                {
@@ -131,6 +138,23 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                string sReturn = "";
                if (oSystemParameter.ShowBill(ref sReturn) == true)
                {
                    if (oSystemParameter.omodel.WMS_CampanyName == "乔一") //系统参数  判断客户
                    {
                        //判断生产资源
                        if (HSourceID <= 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "生产资源没有选择!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                if (HCenterID <= 0)
                {
                    objJsonResult.code = "0";
@@ -188,16 +212,20 @@
                    ",HProcExchBillNo,HMaterID,HProcID,HICMOQty,HPlanQty,HStationInTime,HSourceID" +
                    ",HGroupID,HDeptID,HEmpID,HBarCode,HAddr,HBarCodeMaker,HBarCodeMakeDate" +
                    ",HSupID,HQty,HPrice,HMoney,HPieceQty,HSourceName,HCenterID" +
                    ",HProcNo,HOrderProcNO,HMainInterID" +
                    ",HProcNo,HOrderProcNO,HMainInterID,HPRDOrgID" +
                    ",HmaterOutqty" +
                    ") " +
                    " values('" + BillType + "','" + BillType + "'," + HInterID + ",'" + HBillNo + "'," + HBillStatus + ",getdate(),'" + HMaker + "',getdate()" +
                    " values('" + BillType + "','" + (OperationType=="5"?"SUB":BillType) + "'," + HInterID + ",'" + HBillNo + "'," + HBillStatus + ",getdate(),'" + HMaker + "',getdate()" +
                    "," + HYear + "," + HPeriod + ",'" + HRemark + "'" +
                    "," + HICMOInterID + ",'" + HICMOBillNo + "'," + HProcPlanInterID + "," + HProcPlanEntryID + ",'" + HProcPlanBillNo + "'," + HProcExchInterID + "," + HProcExchEntryID +
                    ",'" + HProcExchBillNo + "'," + HMaterID + "," + HProcID + "," + HICMOQty + "," + HPlanQty + ",getdate()," + HSourceID +
                    "," + HGroupID + "," + HDeptID + "," + HEmpID + ",'" + HBarCode + "','" + HAddr + "','" + HBarCodeMaker + "',getdate()" +
                    "," + HSupID + "," + HQty + "," + HPrice + "," + HMoney + "," + HPieceQty + ",'" + HSourceName + "'," + HCenterID +
                    ",'" + HProcNo + "','" + HOrderProcNO + "'," + HMainInterID +
                    ") ");
                    ",'" + HProcNo + "','" + HOrderProcNO + "','" + HMainInterID + "'," + HPRDOrgID +
                    ","+ HmaterOutqty + ") ");
                    LogService.Write("用户:" + user + ",日期:" + DateTime.Now + ",新增工序进站单据:" + HBillNo);
                    oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + user + "','" + HComputerName + "','" + "新增工序进站单据:" + HBillNo + "','LMES-工序进站模块','" + DBUtility.ClsPub.IPAddress + "','新增单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else if ("Modify".Equals(eventType))
                {
@@ -225,6 +253,7 @@
                    ",HProcExchBillNo='" + HProcExchBillNo + "'" +
                    ",HMaterID=" + HMaterID +
                    ",HProcID=" + HProcID +
                    ",HmaterOutqty=" + HmaterOutqty +
                    ",HICMOQty=" + HICMOQty +
                    ",HPlanQty=" + HPlanQty +
                    ",HStationInTime=getdate()" +
@@ -239,6 +268,9 @@
                    ",HProcNo='" + HProcNo + "'" +
                    ",HOrderProcNO='" + HOrderProcNO + "'" +
                    " where HInterID=" + HInterID);
                    LogService.Write("用户:" + user + ",日期:" + DateTime.Now + ",修改工序进站单据:" + HBillNo);
                    oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + user + "','" + HComputerName + "','" + "修改工序进站单据:" + HBillNo + "','LMES-工序进站模块','" + DBUtility.ClsPub.IPAddress + "','修改单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
@@ -292,7 +324,7 @@
                }
                oCN.Commit();
                string sReturn = "";
                if (oSystemParameter.ShowBill(ref sReturn) == true)
                {
                    if (oSystemParameter.omodel.MES_StationInBill_SaveAutoAddnew == "Y") //系统参数  自动审核 
@@ -376,6 +408,129 @@
        }
        #endregion
        #region 工序进站接收单流水号回车获取工序信息
        [Route("Cj_StationInBill/txtHProcNo_KeyDown_qiaoyi")]
        [HttpGet]
        public object txtHProcNo_KeyDown_qiaoyi(string sBillNo, string sProcNo)
        {
            try
            {
                if (sBillNo.Equals("") || sProcNo.Equals(""))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "条形码不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //得到信息(委外标记为0时,流转标记为1时)
                ds = oCN.RunProcReturn("select top 2 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + sBillNo + "' and 下道流转工序<>'转' and 委外标记=0 and 流转标记=1  and cast(工序号 as int)<='" + sProcNo + "' order by cast(工序号 as int) desc", "h_v_Sc_ProcessExchangeBillList");
                //Ds = oCn.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + sBillNo + "' and 工序号='" + sProcNo + "' and 委外标记=0 and 流转标记=1 ", "h_v_Sc_ProcessExchangeBillList");
                //写入信息
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "工序号错误或者当前工序号不允许进站,请重新输入!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工序进站接收单根据职员代码模糊回车查询
        [Route("Cj_StationInBill/GetMessageByEmpNumber")]
        [HttpGet]
        public object GetMessageByEmpNumber(string HEmpNumber)
        {
            try
            {
                //得到信息
                ds = oCN.RunProcReturn("select top 1 * from gy_employee  where hnumber like '%" + HEmpNumber + "%'", "gy_employee");
                //写入信息
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "未查询到出站单明细信息!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工序进站接收单根据物料代码模糊回车查询
        [Route("Cj_StationInBill/GetMessageByMaterNumber")]
        [HttpGet]
        public object GetMessageByMaterNumber(string HMaterNumber)
        {
            try
            {
                //得到信息
                ds = oCN.RunProcReturn("select top 1 * from gy_material  where hnumber like '%" + HMaterNumber + "%'", "gy_material");
                //写入信息
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "未查询到物料信息!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 返回工序进站接收单列表
        [Route("Cj_StationInBill/get_Display")]
        [HttpGet]
@@ -383,6 +538,7 @@
        {
            try
            {
                List<object> columnNameList = new List<object>();
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("Cj_StationInBill_Query", 1, false, user))
                {
@@ -404,12 +560,21 @@
                    ds = oCN.RunProcReturn(sql, "h_v_MES_StationInBillList");
                }
                //添加列名
                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列对象的列名
                }
                //if (ds.Tables[0].Rows.Count != 0 || ds != null)
                //{
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = columnNameList;
                return objJsonResult;
                //}
                //else
@@ -774,6 +939,112 @@
        }
        #endregion
        #region 工序进站关闭/反关闭功能
        [Route("Cj_StationInBill/CloseCj_StationInBill")]
        [HttpGet]
        public object CloseSc_StationInBill(string HInterID, int Type, string user)
        {
            try
            {
                //判断是否有删除权限
                if (!DBUtility.ClsPub.Security_Log("Cj_StationInBill_Close", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限关闭!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (string.IsNullOrWhiteSpace(HInterID))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ClsPub.CurUserName = user;
                BillOld.MvarItemKey = "Sc_StationInBillMain";
                oCN.BeginTran();//开始事务
                //Type 1 关闭  2  反关闭
                if (Type == 1)
                {
                    //判断单据是否已经关闭
                    DataSet ds;
                    string sql = "select * from " + BillOld.MvarItemKey + " where HinterID = " + HInterID;
                    ds = oCN.RunProcReturn(sql, BillOld.MvarItemKey);
                    if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
                    {
                        if (ds.Tables[0].Rows[0]["HCloseMan"] != null && ds.Tables[0].Rows[0]["HCloseMan"].ToString() != "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已关闭!不需要再关闭!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    //关闭单据
                    if (!BillOld.CloseBill(Int64.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    //判断单据是否已经反关闭
                    DataSet ds;
                    string sql = "select * from " + BillOld.MvarItemKey + " where HinterID = " + HInterID;
                    ds = oCN.RunProcReturn(sql, BillOld.MvarItemKey);
                    if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
                    {
                        if (ds.Tables[0].Rows[0]["HCloseMan"] == null || ds.Tables[0].Rows[0]["HCloseMan"].ToString() == "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已反关闭!不需要再反关闭!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    //反关闭单据
                    if (!BillOld.CancelClose(Int64.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                oCN.Commit();//提交事务
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "执行成功!";
                objJsonResult.data = null;
                return objJsonResult; ;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "执行失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        //批量进站
        #region 批量进站模块返回明细信息列表
        [Route("Cj_StationInBill/get_BarCodeDetail")]
@@ -827,6 +1098,7 @@
        {
            try
            {
                string HComputerName = SystemInformation.ComputerName; //设备名称
                //编辑权限
                if (!DBUtility.ClsPub.Security_Log("Cj_StationInBill_Drop", 1, false, HDeleteMan))
                {
@@ -839,14 +1111,22 @@
                DAL.ClsSc_StationInBill oBill = new DAL.ClsSc_StationInBill();
                if (oBill.ShowBill(HInterID, ref DBUtility.ClsPub.sExeReturnInfo))
                {
                    if (oBill.omodel.HMaker != HDeleteMan && (HDeleteMan != "admin" && HDeleteMan != "Admin"))
                    string sReturn = "";
                    if (oSystemParameter.ShowBill(ref sReturn))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "只能删除本人的单据!";
                        objJsonResult.data = null;
                        return objJsonResult;
                        if (oSystemParameter.omodel.MES_StationInBill_DeleteCtl == "Y")
                        {
                            if (oBill.omodel.HMaker != HDeleteMan && (HDeleteMan != "admin" && HDeleteMan != "Admin"))
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "只能删除本人的单据!";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                        }
                    }
                    SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                    DataSet ds;
@@ -877,8 +1157,18 @@
                        return objJsonResult;
                    }
                    //写入删除日志
                    string WorkList = "删除进站单:" + oBill.omodel.HBillNo;
                    ds = oCn.RunProcReturn($"exec h_p_DelOutInBill {HInterID},'MES_StationInBill_DeleteRelationCtl'", "h_p_DelOutInBill");
                    if (ds.Tables[0].Rows[0][0].ToString() == "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "系统参数控制,已有下道工序,不能删除!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (!oBill.DeleteBill(oBill.omodel.HInterID, oBill.omodel.HProcExchInterID, oBill.omodel.HProcExchEntryID, ref DBUtility.ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
@@ -889,6 +1179,10 @@
                    }
                    else
                    {
                        //写入删除日志
                        LogService.Write("用户:" + HDeleteMan + ",日期:" + DateTime.Now + ",删除工序进站单据:" + oBill.omodel.HBillNo);
                        oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + HDeleteMan + "','" + HComputerName + "','" + "删除工序进站单据:" + oBill.omodel.HBillNo + "','LMES-工序进站模块','" + DBUtility.ClsPub.IPAddress + "','删除单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "删除成功!";
@@ -952,5 +1246,61 @@
            }
        }
        #endregion
        #region 返回用户获取默认值列表
        [Route("Cj_StationInBill/GetDefValByUser")]
        [HttpGet]
        public object GetDefValByUser(string Czybm, string Czymc)
        {
            try
            {
                ////判断是否有查询权限
                //if (!DBUtility.ClsPub.Security_Log("Cj_StationInBill_Query", 1, false, user))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "无查询权限!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                if (Czymc == null || Czymc.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from h_v_Cj_GetDefValByUser", "h_v_Cj_GetDefValByUser");
                }
                else
                {
                    string sql1 = "select * from h_v_Cj_GetDefValByUser where 1 = 1 ";
                    string sql = sql1 + " and 用户编码 ='" + Czybm + "' and 用户名称 ='" + Czymc + "'";
                    ds = oCN.RunProcReturn(sql, "h_v_Cj_GetDefValByUser");
                }
                if (ds.Tables[0].Rows.Count != 0 || ds != null)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无数据";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "查询数据异常,请与管理员联系!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}