duhe
2023-07-08 7313e29b71844817a75cb44cf77ab902c5016c95
工程项目 及列表
工作任务 及列表
1个文件已添加
616 ■■■■■ 已修改文件
WebAPI/Controllers/项目管理/工程项目/PM_ProjectBillController.cs 616 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/ÏîÄ¿¹ÜÀí/¹¤³ÌÏîÄ¿/PM_ProjectBillController.cs
New file
@@ -0,0 +1,616 @@
using DBUtility;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Windows.Forms;
using WebAPI.Models;
namespace WebAPI.Controllers.项目管理.工程项目
{
    public class PM_ProjectBillController : ApiController
    {
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;//单据状态(新增,修改,浏览,更新单价,变更)
        private json objJsonResult = new json();
        public DataSet ds = new DataSet();
        public SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        string user_LongShan = "";
        string HName_LongShan = "";
        #region å·¥ç¨‹é¡¹ç›® æ–°å¢ž/编辑
        #region å·¥ç¨‹é¡¹ç›® è¡¨å¤´æ•°æ®
        public class PM_ProjectBill_Main
        {
            public int HInterID;
            public string HBillNo;
            public string HProNumber;
            public string HProName;
            public int HCusID;
            public string HCusName;
            public string HBeginDate;
            public string HEndDate;
            public string HDate;
            public int HPMEmpID;
            public string HPMEmpName;
            public int HWorkEmpID;
            public string HWorkEmpName;
            public int HDepEmpID;
            public string HDepEmpName;
            public int HMaterID;
            public string HMaterNumber;
            public string HMaterName;
            public int HPayCusID;
            public string HPayCusName;
            public string HProType;
            public string HRemark;
            public int HOrgID;
            public string HMaker;
            public string HUpdater;
            public string HChecker;
            public string HMakerDate;
            public string HUpdaterDate;
            public string HCheckerDate;
            public string HCloseMan;
            public string HDeleteMan;
            public string HBacker;
            public string HCloseManDate;
            public string HDeleteManDate;
            public string HBackerDate;
            public string HBackRemark;
            public double HSumMoney;
            public double HProMoney;
            public double HWorkMoney;
            public double HOtherMoney;
            public int HConWorkDays;
            public int HDepDays;
            public double HLastMoney;
        }
        #endregion
        #region å·¥ç¨‹é¡¹ç›® é¡¹ç›®é˜¶æ®µè¡¨ä½“数据
        public class PM_ProjectBill_ProjectStage
        {
            public int RowID;
            public int HProjectStageID;
            public string HProjectStageName;
            public string HStageNote;
            public int HPMGoodsID;
            public string HPMGoodsName;
            public int HIsKey;
            public double HRate;
            public int HEmpID;
            public string HEmpName;
            public int HCheckEmpID;
            public string HCheckEmpName;
            public string HFinishDate;
            public double HWorkDays;
            public string HRemarkSub;
        }
        #endregion
        #region å·¥ç¨‹é¡¹ç›® é¡¹ç›®æˆå‘˜è¡¨ä½“数据
        public class PM_ProjectBill_Employee
        {
            public int RowID;
            public int HEmployeeID;
            public string HEmployeeName;
            public int HIsPM;
            public double HRate;
            public double HPlanAvgMoney;
            public double HPlanCountMoney;
            public string HRemarkSub;
        }
        #endregion
        #region å·¥ç¨‹é¡¹ç›® æ–°å¢ž/编辑
        /// <summary>
        /// æ–°å¢žå•据-保存按钮
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("PM_ProjectBill/AddBill")]
        [HttpPost]
        public object AddBill([FromBody] JObject sMainSub)
        {
            //获取参数
            var _value = sMainSub["sMainSub"].ToString();
            string msg1 = _value.ToString();
            //开始事务
            oCN.BeginTran();
            //保存主表
            objJsonResult = AddBillMain(msg1);
            if (objJsonResult.code == "0")
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = objJsonResult.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
            oCN.Commit();
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = "新增单据成功!";
            objJsonResult.data = ds.Tables[0];
            return objJsonResult;
        }
        #endregion
        #region æ·»åŠ  å·¥ç¨‹é¡¹ç›® ä¸»è¡¨
        public json AddBillMain(string msg1)
        {
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string msg4 = sArray[2].ToString();
            int OperationType = int.Parse(sArray[3].ToString());//数据类型 1添加 3修改 2 å¤åˆ¶
            string user = sArray[4].ToString();//用户名
            string HComputerName = SystemInformation.ComputerName; //设备名称
            user_LongShan = sArray[4].ToString();//用户名
            try
            {
                if(OperationType == 1)
                {
                    //判断是否有编辑权限
                    if (!DBUtility.ClsPub.Security_Log("Pm_ProjectBill_add", 1, false, user))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "无新增权限!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else if(OperationType == 3)
                {
                    //判断是否有编辑权限
                    if (!DBUtility.ClsPub.Security_Log("Pm_ProjectBill_edit", 1, false, user))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "无编辑权限!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                msg2 = "[" + msg2.ToString() + "]";
                List<PM_ProjectBill_Main> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PM_ProjectBill_Main>>(msg2);
                int HYear = int.Parse(mainList[0].HDate.Split('-')[0]);
                int HPeriod = int.Parse(mainList[0].HDate.Split('-')[1]);
                string HBillType = "4750";
                string HBillSubType = "";
                int HInterID = mainList[0].HInterID;
                string HDate = mainList[0].HDate;
                string HBillNo = mainList[0].HBillNo;
                int HBillStatus = 1;
                string HRemark = mainList[0].HRemark;
                string HMaker = user;
                string HMakerDate = mainList[0].HMakerDate;
                string HProNumber = mainList[0].HProNumber;
                string HProName = mainList[0].HProName;
                int HCusID = mainList[0].HCusID;
                string HBeginDate = mainList[0].HBeginDate;
                string HEndDate = mainList[0].HEndDate;
                double HSumMoney = mainList[0].HSumMoney;
                double HProMoney = mainList[0].HProMoney;
                double HWorkMoney = mainList[0].HWorkMoney;
                double HOtherMoney = mainList[0].HOtherMoney;
                string HProType = mainList[0].HProType;
                int HPMEmpID = mainList[0].HPMEmpID;
                int HWorkEmpID = mainList[0].HWorkEmpID;
                int HDepEmpID = mainList[0].HDepEmpID;
                double HConWorkDays = mainList[0].HConWorkDays;
                double HDepDays = mainList[0].HDepDays;
                double HLastMoney = mainList[0].HLastMoney;
                int HPayCusID = mainList[0].HPayCusID;
                int HOrgID = mainList[0].HOrgID;
                int HMaterID = mainList[0].HMaterID;
                if (OperationType == 2)
                {
                    ds = oCN.RunProcReturn("select * from PM_ProjectBillMain where HBillNo ='" + HBillNo + "'", "PM_ProjectBillMain");
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据号重复,请重新输入!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                ds = oCN.RunProcReturn("select * from PM_ProjectBillMain where HInterID = " + HInterID + " and HBillNo = '" + HBillNo + "'", "PM_ProjectBillMain");
                oCN.BeginTran();
                if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//新增
                {
                    string sql = "insert into PM_ProjectBillMain" +
                        "(HYear,HPeriod,HBillType,HBillSubType,HInterID,HDate,HBillNo,HBillStatus,HRemark,HMaker,HMakeDate,HProNumber,HProName,HCusID,HBeginDate,HEndDate,HSumMoney," +
                        "HProMoney,HWorkMoney,HOtherMoney,HProType,HPMEmpID,HWorkEmpID,HDepEmpID,HConWorkDays,HDepDays,HLastMoney,HPayCusID,HOrgID,HMaterID) " +
                        "values(" +
                        "" + HYear +
                        "," + HPeriod +
                        ",'" + HBillType +
                        "','" + HBillSubType +
                        "'," + HInterID +
                        ",'" + HDate +
                        "','" + HBillNo +
                        "'," + HBillStatus +
                        ",'" + HRemark +
                        "','" + HMaker +
                        "','" + HMakerDate +
                        "','" + HProNumber +
                        "','" + HProName +
                        "'," + HCusID +
                        ",'" + HBeginDate +
                        "','" + HEndDate +
                        "'," + HSumMoney +
                        "," + HProMoney +
                        "," + HWorkMoney +
                        "," + HOtherMoney +
                        ",'" + HProType +
                        "'," + HPMEmpID +
                        "," + HWorkEmpID +
                        "," + HDepEmpID +
                        "," + HConWorkDays +
                        "," + HDepDays +
                        "," + HLastMoney +
                        "," + HPayCusID +
                        "," + HOrgID +
                        "," + HMaterID +
                        ")";
                    //主表
                    oCN.RunProc(sql);
                    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 (OperationType == 3 || ds.Tables[0].Rows.Count != 0)                    //编辑
                {
                    string sql = "update PM_ProjectBillMain set " +
                        "HYear = " + HYear +
                        ",HPeriod = " + HPeriod +
                        ",HBillType = '" + HBillType +
                        "',HBillSubType = '" + HBillSubType +
                        "',HDate = '" + HDate +
                        "',HBillNo = '" + HBillNo +
                        "',HBillStatus = " + HBillStatus +
                        ",HRemark = '" + HRemark +
                        "',HMaker = '" + HMaker +
                        "',HMakeDate = '" + HMakerDate +
                        "',HProNumber = '" + HProNumber +
                        "',HProName = '" + HProName +
                        "',HCusID = " + HCusID +
                        ",HBeginDate = '" + HBeginDate +
                        "',HEndDate = '" + HEndDate +
                        "',HSumMoney = " + HSumMoney +
                        ",HProMoney = '" + HProMoney +
                        "',HWorkMoney = " + HWorkMoney +
                        ",HOtherMoney = " + HOtherMoney +
                        ",HProType = '" + HProType +
                        "',HPMEmpID = " + HPMEmpID +
                        ",HWorkEmpID = " + HWorkEmpID +
                        ",HDepEmpID = " + HDepEmpID +
                        ",HConWorkDays = " + HConWorkDays +
                        ",HDepDays = '" + HDepDays +
                        "',HLastMoney = " + HLastMoney +
                        ",HPayCusID = " + HPayCusID +
                        ",HOrgID = " + HOrgID +
                        ",HMaterID = " + HMaterID +
                        " where HInterID = " + HInterID;
                    oCN.RunProc(sql);
                    //删除子表
                    oCN.RunProc("delete from PM_ProjectBillSub_Emp where HInterID='" + HInterID + "'");
                    oCN.RunProc("delete from PM_ProjectBillSub 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);
                }
                //保存子表
                objJsonResult = AddBillSub1(msg3, HInterID, HBillNo, OperationType);
                objJsonResult = AddBillSub2(msg4, HInterID, HBillNo, OperationType);
                oCN.Commit();
                if (objJsonResult.code == "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = objJsonResult.Message;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = null;
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region æ·»åŠ å·¥ç¨‹é¡¹ç›® è¡¨ä½“:项目阶段表
        public json AddBillSub1(string msg3, long HInterID, string HBillNo, int OperationType)
        {
            List<PM_ProjectBill_ProjectStage> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PM_ProjectBill_ProjectStage>>(msg3);
            int i = 0;                                          //作为子表内码
            foreach (PM_ProjectBill_ProjectStage oSub in DetailColl)
            {
                i++;                                            //同一个主表下的子表的内码自增
                int HEntryID = i;
                string HRemark = oSub.HRemarkSub;
                int HProjectStageID = oSub.HProjectStageID;
                string HStageNote = oSub.HStageNote;
                int HPMGoodsID = oSub.HPMGoodsID;
                string HRelationGoods = oSub.HPMGoodsName;
                int HIsKey = oSub.HIsKey;
                double HRate = oSub.HRate;
                int HEmpID = oSub.HEmpID;
                int HCheckEmpID = oSub.HCheckEmpID;
                string HFinishDate = oSub.HFinishDate;
                double HWorkDays = oSub.HWorkDays;
                string sql = "insert into PM_ProjectBillSub" +
                    "(HInterID,HBillNo_bak,HEntryID,HRemark,HProjectStageID,HStageNote,HPMGoodsID,HRelationGoods,HIsKey,HRate,HEmpID,HCheckEmpID,HFinishDate,HWorkDays) " +
                    "values(" +
                    "" + HInterID +
                    ",'" + HBillNo +
                    "'," + HEntryID +
                    ",'" + HRemark +
                    "'," + HProjectStageID +
                    ",'" + HStageNote +
                    "'," + HPMGoodsID +
                    ",'" + HRelationGoods +
                    "'," + HIsKey +
                    "," + HRate +
                    "," + HEmpID +
                    "," + HCheckEmpID +
                    ",'" + HFinishDate +
                    "'," + HWorkDays +
                    ")";
                oCN.RunProc(sql);
            }
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = null;
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
        #region æ·»åŠ å·¥ç¨‹é¡¹ç›® è¡¨ä½“:项目成员表
        public json AddBillSub2(string msg3, long HInterID, string HBillNo, int OperationType)
        {
            List<PM_ProjectBill_Employee> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PM_ProjectBill_Employee>>(msg3);
            int i = 0;                                          //作为子表内码
            foreach (PM_ProjectBill_Employee oSub in DetailColl)
            {
                i++;                                            //同一个主表下的子表的内码自增
                int HEntryID = i;
                string HRemark = oSub.HRemarkSub;
                int HEmpID = oSub.HEmployeeID;
                int HIsPM = oSub.HIsPM;
                double HRate = oSub.HRate;
                double HPlanAvgMoney = oSub.HPlanAvgMoney;
                double HPlanCountMoney = oSub.HPlanCountMoney;
                string sql = "insert into PM_ProjectBillSub_Emp" +
                    "(HInterID,HBillNo_bak,HEntryID,HRemark,HEmpID,HIsPM,HRate,HPlanAvgMoney,HPlanCountMoney) " +
                    "values(" +
                    "" + HInterID +
                    ",'" + HBillNo +
                    "'," + HEntryID +
                    ",'" + HRemark +
                    "'," + HEmpID +
                    "," + HIsPM +
                    "," + HRate +
                    "," + HPlanAvgMoney +
                    "," + HPlanCountMoney +
                    ")";
                oCN.RunProc(sql);
            }
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = null;
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
        #endregion
        #region å·¥ç¨‹é¡¹ç›® æŸ¥è¯¢
        /// <summary>
        /// è¿”回项目阶段列表
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("PM_ProjectBill/list")]
        [HttpGet]
        public object getProjectBill(string sWhere, string user)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                //查看权限
                //if (!DBUtility.ClsPub.Security_Log("Gy_ProjectStage_Query", 1, false, user))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "无查看权限!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from PM_ProjectBillMain order by HProNumber ", "PM_ProjectBillMain");
                }
                else
                {
                    string sql1 = "select * from PM_ProjectBillMain where 1 = 1 ";
                    string sql = sql1 + sWhere + " order by HProNumber ";
                    ds = oCN.RunProcReturn(sql, "PM_ProjectBillMain");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = columnNameList;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region å·¥ç¨‹é¡¹ç›® ç¼–辑-页面赋值
        /// <summary>
        ///参数:string HInterID。
        ///返回值:object。
        /// </summary>
        [Route("PM_ProjectBill/editInit")]
        [HttpGet]
        public object getProjectBilleditInit(string HInterID, string user)
        {
            try
            {
                List<DataTable> tableList = new List<DataTable>();
                //查看权限
                if (!DBUtility.ClsPub.Security_Log("Pm_ProjectBill_edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if(HInterID == null || HInterID.Equals(""))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ds = oCN.RunProcReturn("exec h_p_PM_ProjectReportBill_EditInit " + HInterID, "h_p_PM_ProjectReportBill_EditInit");
                tableList.Add(ds.Tables[0]);
                tableList.Add(ds.Tables[1]);
                tableList.Add(ds.Tables[2]);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = tableList;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region å·¥ç¨‹é¡¹ç›® åˆ é™¤
        /// <summary>
        ///参数:string HInterID。
        ///返回值:object。
        /// </summary>
        [Route("PM_ProjectBill/delete")]
        [HttpGet]
        public object deleteProjectBill(string HInterID, string user)
        {
            try
            {
                //查看权限
                if (!DBUtility.ClsPub.Security_Log("Pm_ProjectBill_delete", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无删除权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if(HInterID == null || HInterID.Equals(""))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.BeginTran();
                oCN.RunProc("delete from PM_ProjectBillMain where HInterID = " + HInterID);
                oCN.RunProc("delete from PM_ProjectBillSub_Emp where HInterID='" + HInterID + "'");
                oCN.RunProc("delete from PM_ProjectBillSub where HInterID='" + HInterID + "'");
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}