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();
public DAL.ClsSc_ICMOBill BillOld = new DAL.ClsSc_ICMOBill();
string user_LongShan = "";
string HName_LongShan = "";
public DAL.ClsPM_WorkPlanMonthBillMain BillNew1 = new DAL.ClsPM_WorkPlanMonthBillMain(); //工作周总结对应单据类
public DAL.ClsPM_WorkPlanMonthBillMain BillOld1 = new DAL.ClsPM_WorkPlanMonthBillMain();
public DAL.ClsPM_WorkPlanMonthBillMain BillNew2 = new DAL.ClsPM_WorkPlanMonthBillMain(); //月度阶段计划对应单据类
public DAL.ClsPM_WorkPlanMonthBillMain BillOld2 = new DAL.ClsPM_WorkPlanMonthBillMain();
public DAL.ClsPM_CustomerTaskBillMain BillNew3 = new DAL.ClsPM_CustomerTaskBillMain(); //项目需求及问题清单对应单据类
public DAL.ClsPM_CustomerTaskBillMain BillOld3 = new DAL.ClsPM_CustomerTaskBillMain();
public DAL.ClsPM_ProjectMoneyBillMain BillNew4 = new DAL.ClsPM_ProjectMoneyBillMain(); //项目费用单对应单据类
public DAL.ClsPM_ProjectMoneyBillMain BillOld4 = new DAL.ClsPM_ProjectMoneyBillMain();
public DAL.ClsPM_ProjectBeginBillMain BillNew5 = new DAL.ClsPM_ProjectBeginBillMain(); //项目启动单对应单据类
public DAL.ClsPM_ProjectBeginBillMain BillOld5 = new DAL.ClsPM_ProjectBeginBillMain();
public DAL.ClsPM_ProjectEndBillMain BillNew6 = new DAL.ClsPM_ProjectEndBillMain(); //项目验收单对应单据类
public DAL.ClsPM_ProjectEndBillMain BillOld6 = new DAL.ClsPM_ProjectEndBillMain();
public DAL.ClsGy_ProjectMoneyBOMBill BillNew7 = new DAL.ClsGy_ProjectMoneyBOMBill(); //项目费用清单对应单据类
public DAL.ClsGy_ProjectMoneyBOMBill BillOld7 = new DAL.ClsGy_ProjectMoneyBOMBill();
#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;
public int HProjectClassID;
public string HBuildComp;
public string HBuildAddress;
public string HWorkNo;
public string HReDate;
public string HPicNo;
public string HWorkTask;
public string HProjectNote;
}
#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 bool 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 bool HIsPM;
public double HRate;
public double HPlanAvgMoney;
public double HPlanCountMoney;
public string HRemarkSub;
}
#endregion
#region 工程项目 新增/编辑
///
/// 新增单据-保存按钮
///参数:string sql。
///返回值:object。
///
[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 mainList = Newtonsoft.Json.JsonConvert.DeserializeObject>(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;
string HUpdater = mainList[0].HUpdater;
string HUpdaterDate = mainList[0].HUpdaterDate;
int HProjectClassID = mainList[0].HProjectClassID;
string HBuildComp = mainList[0].HBuildComp;
string HBuildAddress = mainList[0].HBuildAddress;
string HWorkNo = mainList[0].HWorkNo;
string HReDate = mainList[0].HReDate;
string HPicNo = mainList[0].HPicNo;
string HWorkTask = mainList[0].HWorkTask;
string HProjectNote = mainList[0].HProjectNote;
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");
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,HProjectClassID,HBuildComp,HBuildAddress,HWorkNo,HReDate,HPicNo,HWorkTask,HProjectNote) " +
"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 +
"," + HProjectClassID +
",'" + HBuildComp +
"','" + HBuildAddress +
"','" + HWorkNo +
"','" + HReDate +
"','" + HPicNo +
"','" + HWorkTask +
"','" + HProjectNote +
"')";
//主表
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 +
"',HUpdater = '" + HUpdater +
"',HUpdateDate = '" + HUpdaterDate +
"',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 +
",HProjectClassID = " + HProjectClassID +
",HBuildComp = '" + HBuildComp +
"',HBuildAddress = '" + HBuildAddress +
"',HWorkNo = '" + HWorkNo +
"',HReDate = '" + HReDate +
"',HPicNo = '" + HPicNo +
"',HWorkTask = '" + HWorkTask +
"',HProjectNote ='" + HProjectNote +
"' 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);
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 DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject>(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?1:0;
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 DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject>(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?1:0;
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 工程项目 查询
///
/// 返回项目阶段列表
///参数:string sql。
///返回值:object。
///
[Route("PM_ProjectBill/list")]
[HttpGet]
public object getProjectBill(string sWhere, string user)
{
try
{
List