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; using static WebAPI.Controllers.Pay_SingleBalBillController; using static WebAPI.Controllers.Pay_GroupBalBillController; namespace WebAPI.Controllers.工资管理.工资计算 { public class Pay_SalaryCulateController : 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 = ""; #region 工资运算 /// /// 根据开始日期、结束日期、班组进行工资运算 /// /// [Route("Pay_SalaryCulateController/GetSalaryCalculate_Json")] [HttpGet] public object GetSalaryCalculate_Json(DateTime HBeginDate, DateTime HEndDate, Int64 HGroupID, string HSourceBillType, string HMaker, Int64 HStockOrgID) { try { ds = oCN.RunProcReturn("exec h_p_Pay_SalaryCalculate '" + HBeginDate + "','" + HEndDate + "'," + HGroupID.ToString() + ",'" + HSourceBillType + "','" + HMaker + "'," + HStockOrgID.ToString(), "h_p_Pay_SalaryCalculate"); if (ds == null || ds.Tables[0].Rows.Count == 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "工资运算时出现错误,请重新运算!"; objJsonResult.data = null; return objJsonResult; } else if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) == 1) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]); objJsonResult.data = null; return objJsonResult; } else { objJsonResult.code = "0"; objJsonResult.count = 1; objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]); 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 工资计算-数据查询 /// /// 返回项目阶段列表 ///参数:string sql。 ///返回值:object。 /// [Route("Pay_SalaryCalculate/list")] [HttpGet] public object getSalaryCalculateData(string HBeginDate, string HEndDate, int HOperatorType,string HBillType,string user) { try { string sql = "exec h_p_Pay_SalaryCalculate_getData " + HOperatorType + ",'" + HBeginDate + "','" + HEndDate + "'"; ds = oCN.RunProcReturn(sql, "h_p_Pay_SalaryCalculate_getData"); if (HOperatorType == 1) { oCN.BeginTran(); objJsonResult = getSalaryCalculateData_SingleBalBill(HBeginDate, HEndDate, HOperatorType, HBillType, user); 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; }else if(HOperatorType == 2) { oCN.BeginTran(); objJsonResult = getSalaryCalculateData_GroupBalBill(HBeginDate, HEndDate, HOperatorType, HBillType, user); 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; } 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 工资计算-个人工资结算单 #region 工资计算-批量计算-个人工资结算单 public json getSalaryCalculateData_SingleBalBill(string HBeginDate, string HEndDate, int HOperatorType, string HBillType, string user) { try { //判断是否有编辑权限 if (!DBUtility.ClsPub.Security_Log("Pay_SingleBalBill_Edit", 1, false, user)) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "无新增权限!"; objJsonResult.data = null; return objJsonResult; } ds = oCN.RunProcReturn("select * from Pay_SingleBalBillMain where HAutoCreate = 1 and CONVERT(varchar(100),HDate, 23) >= '" + HBeginDate + "' and CONVERT(varchar(100),HDate, 23) <= '" + HEndDate + "'", "Pay_SingleBalBillMain"); if (ds.Tables[0].Rows.Count > 0) { for(int i = 0; i < ds.Tables[0].Rows.Count; i++) { int HInterID = int.Parse(ds.Tables[0].Rows[i]["HInterID"].ToString()); oCN.RunProc("delete from Pay_SingleBalBillMain where HInterID = " + HInterID); oCN.RunProc("delete from Pay_SingleBalBillSub where HInterID = " + HInterID); } } //获取工序出站汇报单数据 string sql = "exec h_p_Pay_SalaryCalculate_getData " + HOperatorType + ",'" + HBeginDate + "','" + HEndDate + "'"; ds = oCN.RunProcReturn(sql, "h_p_Pay_SalaryCalculate_getData"); DataTable data = ds.Tables[0]; //整理工序出站汇报单数据,并分别生成个人工资结算单 if (data.Rows.Count > 0) { int HEmpIDBar = -100; //当前个人工资结算单-职员ID标记 Pay_SingleBalBillMain mainTable = new Pay_SingleBalBillMain(); List subTable = new List(); for(int i = 0; i < data.Rows.Count; i++) { int HEmpID = data.Rows[i]["HEmpID"] == null ? 0 : (int)data.Rows[i]["HEmpID"]; if (HEmpIDBar != HEmpID) { if (subTable.Count > 0) { //新增单据 objJsonResult = AddBillMain_Pay_SingleBalBillMain(mainTable, user,subTable); if (objJsonResult.code == "0") { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = objJsonResult.Message; objJsonResult.data = null; return objJsonResult; } //清空表头信息和子表信息,加载新单据的数据 mainTable = new Pay_SingleBalBillMain(); subTable.Clear(); } //生成单据后,更新当前个人工资结算单-职员ID标记 HEmpIDBar = HEmpID; //填充表头信息 mainTable.HInterID = (int)DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo); mainTable.HBillNo = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true); mainTable.HDate = DateTime.Now.ToString("yyyy-MM-dd"); mainTable.HInnerBillNo = mainTable.HBillNo; mainTable.HDeptID = data.Rows[i]["HDeptID"] == null ? 0 : (int)data.Rows[i]["HDeptID"]; mainTable.HGroupID = data.Rows[i]["HGroupID"] == null ? 0 :(int)data.Rows[i]["HGroupID"]; mainTable.HEmpID = data.Rows[i]["HEmpID"] == null ? 0 : (int)data.Rows[i]["HEmpID"]; mainTable.HPayTypeID = 0; mainTable.HSourceBillID = 0; mainTable.HSourceBillNo = ""; mainTable.HSourceBillType = ""; mainTable.HExplanation = ""; mainTable.HRemark = ""; mainTable.HMaker = user; mainTable.HMakerDate = DateTime.Now.ToString("yyyy-MM-dd"); } //填充并添加子表记录信息 Pay_SingleBalBillController.Pay_SingleBalBillSub oSub = new Pay_SingleBalBillController.Pay_SingleBalBillSub(); oSub.HMaterID = data.Rows[i]["HMaterID"] == null ? 0 : (int)data.Rows[i]["HMaterID"]; oSub.HProcID = data.Rows[i]["HProcID"] == null ? 0 : (int)data.Rows[i]["HProcID"]; oSub.HEmpID = data.Rows[i]["HEmpID"] == null ? 0 : (int)data.Rows[i]["HEmpID"]; oSub.HTimes = data.Rows[i]["HTimes"] == null ? 0 : double.Parse(data.Rows[i]["HTimes"].ToString()); oSub.HQty = data.Rows[i]["HQty"] == null ? 0 : double.Parse(data.Rows[i]["HQty"].ToString()); oSub.HPrice = data.Rows[i]["HPrice"] == null ? 0 : double.Parse(data.Rows[i]["HPrice"].ToString()); oSub.HPriceRate = 1; oSub.HSubsidyQty = 0; oSub.HSubsidyMoney = 0; oSub.HSubsidyTotal = 0; oSub.HDeuctTotal = 0; oSub.HPackQty = 0; oSub.HPackPrice = 0; oSub.HPackMoney = 0; oSub.HPackMaterID = 0; oSub.HMoney = data.Rows[i]["HMoney"] == null ? 0 : double.Parse(data.Rows[i]["HMoney"].ToString()); oSub.HRemark = ""; oSub.HICMOInterID = data.Rows[i]["HICMOInterID"] == null ? 0 : (int)data.Rows[i]["HICMOInterID"]; oSub.HICMOBillNo = data.Rows[i]["HICMOBillNo"] == null ? "" : data.Rows[i]["HICMOBillNo"].ToString(); oSub.HProcReportInterID = 0; oSub.HProcReportEntryID = 0; oSub.HProcReportBillNo = ""; oSub.HProcPlanInterID = data.Rows[i]["HProcPlanInterID"] == null ? 0 : (int)data.Rows[i]["HProcPlanInterID"]; oSub.HProcPlanEntryID = data.Rows[i]["HProcPlanEntryID"] == null ? 0 : (int)data.Rows[i]["HProcPlanEntryID"]; oSub.HProcPlanBillNo = data.Rows[i]["HProcPlanBillNo"] == null ? "" : data.Rows[i]["HProcPlanBillNo"].ToString(); oSub.HSourceInterID = 0; //data.Rows[i]["HSourceInterID"] == null ? 0 : (int)data.Rows[i]["HSourceInterID"]; oSub.HSourceEntryID = 0; //data.Rows[i]["HSourceEntryID "] == null ? 0 : (int)data.Rows[i]["HSourceEntryID "]; oSub.HSourceBillNo = ""; //data.Rows[i]["HSourceBillNo"] == null ? "" : data.Rows[i]["HSourceBillNo"].ToString(); oSub.HSourceBillType = ""; oSub.HRelationQty = 0; oSub.HRelationMoney = 0; oSub.HCloseMan = ""; oSub.HEntryCloseDate = ""; subTable.Add(oSub); } //生成最后一条记录:最后一条记录因为无法再与data.Rows[data.Rows.Count]["HEmpID"]比较,所以不会添加,需要最后另外添加 objJsonResult = AddBillMain_Pay_SingleBalBillMain(mainTable, user, subTable); 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 = "Sucess!"; objJsonResult.data = null; 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 = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } #endregion #region 工资计算-工资结算单(个人) 主表 public json AddBillMain_Pay_SingleBalBillMain(Pay_SingleBalBillMain oMain,string user,List subTable) { int OperationType = 1;//数据类型 1添加 3修改 2 复制 string HComputerName = SystemInformation.ComputerName; //设备名称 try { List mainList = new List(); mainList.Add(oMain); int HYear = int.Parse(mainList[0].HDate.Split('-')[0]); int HPeriod = int.Parse(mainList[0].HDate.Split('-')[1]); string HBillType = "2205"; string HBillSubType = ""; int HBillStatus = 1; int HInterID = mainList[0].HInterID; string HBillNo = mainList[0].HBillNo; string HDate = mainList[0].HDate; string HInnerBillNo = mainList[0].HInnerBillNo; int HGroupID = mainList[0].HGroupID; int HDeptID = mainList[0].HDeptID; int HEmpID = mainList[0].HEmpID; int HPayType = mainList[0].HPayTypeID; int HMainSourceInterID = mainList[0].HSourceBillID; string HMainSourceBillNo = mainList[0].HSourceBillNo; string HMainSourceBillType = mainList[0].HSourceBillType; string HExplanation = mainList[0].HExplanation; string HRemark = mainList[0].HRemark; //制单、修改 string HMaker = mainList[0].HMaker; string HMakerDate = mainList[0].HMakerDate; ds = oCN.RunProcReturn("select * from Pay_SingleBalBillMain where HInterID = " + HInterID + " and HBillNo = '" + HBillNo + "'", "Pay_SingleBalBillMain"); if (OperationType == 1 && ds.Tables[0].Rows.Count == 0)//新增 { string sql = "insert into Pay_SingleBalBillMain" + "(HYear,HPeriod,HBillType,HBillSubType,HInterID,HDate,HBillNo,HBillStatus,HGroupID,HDeptID,HEmpID,HPayType,HExplanation,HInnerBillNo,HRemark,HMaker,HMakeDate,HMainSourceInterID,HMainSourceBillNo,HMainSourceBillType,HAutoCreate) " + "values(" + "" + HYear + "," + HPeriod + ",'" + HBillType + "','" + HBillSubType + "'," + HInterID + ",'" + HDate + "','" + HBillNo + "'," + HBillStatus + "," + HGroupID + "," + HDeptID + "," + HEmpID + "," + HPayType + ",'" + HExplanation + "','" + HInnerBillNo + "','" + HRemark + "','" + HMaker + "','" + HMakerDate + "'," + HMainSourceInterID + ",'" + HMainSourceBillNo + "','" + HMainSourceBillType + "'," + 1 + ")"; //主表 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); } //保存子表 objJsonResult = AddBillSub_Pay_SingleBalBillMain(subTable, 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 AddBillSub_Pay_SingleBalBillMain(List DetailColl, long HInterID, string HBillNo, int OperationType) { try { int i = 0; //作为子表内码 foreach (Pay_SingleBalBillController.Pay_SingleBalBillSub oSub in DetailColl) { i++; //同一个主表下的子表的内码自增 int HEntryID = i; int HMaterID = oSub.HMaterID; int HProcID = oSub.HProcID; int HEmpID = oSub.HEmpID; double HTimes = oSub.HTimes; double HQty = oSub.HQty; double HPrice = oSub.HPrice; double HPriceRate = oSub.HPriceRate; double HSubsidyQty = oSub.HSubsidyQty; double HSubsidyMoney = oSub.HSubsidyMoney; double HSubsidyTotal = oSub.HSubsidyTotal; double HDeuctTotal = oSub.HDeuctTotal; double HPackQty = oSub.HPackQty; double HPackPrice = oSub.HPackPrice; double HPackMoney = oSub.HPackMoney; int HPackMaterID = oSub.HPackMaterID; double HMoney = oSub.HMoney; int HICMOInterID = oSub.HICMOInterID; string HICMOBillNo = oSub.HICMOBillNo; int HProcReportInterID = oSub.HProcReportInterID; int HProcReportEntryID = oSub.HProcReportEntryID; string HProcReportBillNo = oSub.HProcReportBillNo; int HProcPlanInterID = oSub.HProcPlanInterID; int HProcPlanEntryID = oSub.HProcPlanEntryID; string HProcPlanBillNo = oSub.HProcPlanBillNo; string HRemark = oSub.HRemark; int HSourceInterID = oSub.HSourceInterID; int HSourceEntryID = oSub.HSourceEntryID; string HSourceBillNo = oSub.HSourceBillNo; string HSourceBillType = oSub.HSourceBillType; double HRelationQty = oSub.HRelationQty; double HRelationMoney = oSub.HRelationMoney; string HCloseMan = oSub.HCloseMan; string HEntryCloseDate = oSub.HEntryCloseDate; string sql = "insert into Pay_SingleBalBillSub" + "(HInterID,HEntryID,HMaterID,HProcID,HEmpID,HTimes,HQty,HPrice,HPriceRate,HSubsidyQty,HSubsidyMoney,HSubsidyTotal,HDeuctTotal" + ",HPackQty,HPackPrice,HPackMoney,HPackMaterID,HMoney,HICMOInterID,HICMOBillNo,HProcReportInterID,HProcReportEntryID,HProcReportBillNo" + ",HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" + ",HCloseMan,HEntryCloseDate) " + "values(" + "" + HInterID + "," + HEntryID + "," + HMaterID + "," + HProcID + "," + HEmpID + "," + HTimes + "," + HQty + "," + HPrice + "," + HPriceRate + "," + HSubsidyQty + "," + HSubsidyMoney + "," + HSubsidyTotal + "," + HDeuctTotal + "," + HPackQty + "," + HPackPrice + "," + HPackMoney + "," + HPackMaterID + "," + HMoney + "," + HICMOInterID + ",'" + HICMOBillNo + "'," + HProcReportInterID + "," + HProcReportEntryID + ",'" + HProcReportBillNo + "'," + HProcPlanInterID + "," + HProcPlanEntryID + ",'" + HProcPlanBillNo + "','" + HRemark + "'," + HSourceInterID + "," + HSourceEntryID + ",'" + HSourceBillNo + "','" + HSourceBillType + "'," + HRelationQty + "," + HRelationMoney + ",'" + HCloseMan + "','" + HEntryCloseDate + "')"; oCN.RunProc(sql); } 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 #endregion #region 工资计算-集体工资结算单 #region 工资计算-批量计算-集体工资结算单 public json getSalaryCalculateData_GroupBalBill(string HBeginDate, string HEndDate, int HOperatorType, string HBillType, string user) { try { //判断是否有编辑权限 if (!DBUtility.ClsPub.Security_Log("Pay_GroupBalBill_Edit", 1, false, user)) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "无新增权限!"; objJsonResult.data = null; return objJsonResult; } ds = oCN.RunProcReturn("select * from Pay_GroupBalBillMain where HAutoCreate = 1 and CONVERT(varchar(100),HDate, 23) >= '" + HBeginDate + "' and CONVERT(varchar(100),HDate, 23) <= '" + HEndDate + "'", "Pay_GroupBalBillMain"); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { int HInterID = int.Parse(ds.Tables[0].Rows[i]["HInterID"].ToString()); oCN.RunProc("delete from Pay_GroupBalBillMain where HInterID = " + HInterID); oCN.RunProc("delete from Pay_GroupBalBillSub where HInterID = " + HInterID); oCN.RunProc("delete from Pay_GroupBalBillEmp where HInterID = " + HInterID); } } //获取工序出站汇报单数据 string sql = "exec h_p_Pay_SalaryCalculate_getData " + HOperatorType + ",'" + HBeginDate + "','" + HEndDate + "'"; ds = oCN.RunProcReturn(sql, "h_p_Pay_SalaryCalculate_getData"); DataTable data = ds.Tables[0]; //查询子表2所需变量 DataSet ds1; string sql1; //整理工序出站汇报单数据,并分别生成个人工资结算单 if (data.Rows.Count > 0) { int HDeptIDBar = -100; int HGroupIDBar = -100; Pay_GroupBalBillMain mainTable = new Pay_GroupBalBillMain(); List subTable = new List(); List subEmpTable = new List(); for (int i = 0; i < data.Rows.Count; i++) { int HDeptID = data.Rows[i]["HDeptID"] == null ? 0 : (int)data.Rows[i]["HDeptID"]; int HGroupID = data.Rows[i]["HGroupID"] == null ? 0 : (int)data.Rows[i]["HGroupID"]; if (HDeptIDBar != HDeptID || HGroupIDBar != HGroupID) { if (subTable.Count > 0) { //获取子表2数据 sql1 = "select * from h_v_Gy_Employee_ForWeb where HDeptID ='" + HDeptIDBar + "' and HGroupID = '" + HGroupIDBar + "'"; ds1 = oCN.RunProcReturn(sql1, "h_v_Gy_Employee_ForWeb"); if (ds1.Tables[0].Rows.Count > 0) { for(int j = 0; j < ds1.Tables[0].Rows.Count; j++) { Pay_GroupBalBillController.Pay_GroupBalBillEmp oSubEmp = new Pay_GroupBalBillController.Pay_GroupBalBillEmp(); oSubEmp.HEmpID = ds1.Tables[0].Rows[j]["HItemID"] == null ? 0 : int.Parse(ds1.Tables[0].Rows[j]["HItemID"].ToString()); oSubEmp.HEmpRate = ds1.Tables[0].Rows[j]["HEmpRate"] == null ? 0 : double.Parse(ds1.Tables[0].Rows[j]["HEmpRate"].ToString()); oSubEmp.HBaseTimes = 0; oSubEmp.HMoney = 0; oSubEmp.HOtherSubsidy = 0; oSubEmp.HOtherDeduct = 0; oSubEmp.HYF = 0; oSubEmp.HIsPay = false; oSubEmp.HAvgFlag = false; oSubEmp.HRemark = ""; subEmpTable.Add(oSubEmp); } } //新增单据 objJsonResult = AddBillMain_Pay_GroupBalBill(mainTable, user, subTable, subEmpTable); if (objJsonResult.code == "0") { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = objJsonResult.Message; objJsonResult.data = null; return objJsonResult; } //清空表头信息和子表信息,加载新单据的数据 mainTable = new Pay_GroupBalBillMain(); subTable.Clear(); subEmpTable.Clear(); } //生成单据后,更新当前集体工资结算单-部门ID,班组ID HDeptIDBar = HDeptID; HGroupIDBar = HGroupID; //填充表头信息 mainTable.HInterID = (int)DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo); mainTable.HBillNo = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true); mainTable.HDate = DateTime.Now.ToString("yyyy-MM-dd"); mainTable.HInnerBillNo = mainTable.HBillNo; mainTable.HDeptID = data.Rows[i]["HDeptID"] == null ? 0 : (int)data.Rows[i]["HDeptID"]; mainTable.HGroupID = data.Rows[i]["HGroupID"] == null ? 0 : (int)data.Rows[i]["HGroupID"]; mainTable.HSumMoney = 0; mainTable.HOtherSubsidy = 0; mainTable.HPayMoney = 0; mainTable.HOtherDeduct = 0; mainTable.HSourceBillID = 0; mainTable.HSourceBillNo = ""; mainTable.HSourceBillType = ""; mainTable.HExplanation = ""; mainTable.HRemark = ""; mainTable.HMaker = user; mainTable.HMakerDate = DateTime.Now.ToString("yyyy-MM-dd"); } //填充并添加子表记录信息 Pay_GroupBalBillController.Pay_GroupBalBillSub oSub = new Pay_GroupBalBillController.Pay_GroupBalBillSub(); oSub.HMaterID = data.Rows[i]["HMaterID"] == null ? 0 : (int)data.Rows[i]["HMaterID"]; oSub.HUnitID = data.Rows[i]["HUnitID"] == null ? 0 : (int)data.Rows[i]["HUnitID"]; oSub.HProcID = data.Rows[i]["HProcID"] == null ? 0 : (int)data.Rows[i]["HProcID"]; oSub.HSourceID = data.Rows[i]["HSourceID"] == null ? 0 : (int)data.Rows[i]["HSourceID"]; oSub.HTimes = data.Rows[i]["HTimes"] == null ? 0 : double.Parse(data.Rows[i]["HTimes"].ToString()); oSub.HQty = data.Rows[i]["HQty"] == null ? 0 : double.Parse(data.Rows[i]["HQty"].ToString()); oSub.HPrice = data.Rows[i]["HPrice"] == null ? 0 : double.Parse(data.Rows[i]["HPrice"].ToString()); oSub.HMoney = data.Rows[i]["HMoney"] == null ? 0 : double.Parse(data.Rows[i]["HMoney"].ToString()); oSub.HRemark = ""; oSub.HICMOInterID = 0; // data.Rows[i]["HICMOInterID"] == null ? 0 : (int)data.Rows[i]["HICMOInterID"]; oSub.HICMOBillNo = ""; // data.Rows[i]["HICMOBillNo"] == null ? "" : data.Rows[i]["HICMOBillNo"].ToString(); oSub.HProcReportInterID = 0; oSub.HProcReportEntryID = 0; oSub.HProcReportBillNo = ""; oSub.HProcPlanInterID = 0; // data.Rows[i]["HProcPlanInterID"] == null ? 0 : (int)data.Rows[i]["HProcPlanInterID"]; oSub.HProcPlanEntryID = 0; // data.Rows[i]["HProcPlanEntryID"] == null ? 0 : (int)data.Rows[i]["HProcPlanEntryID"]; oSub.HProcPlanBillNo = ""; // data.Rows[i]["HProcPlanBillNo"] == null ? "" : data.Rows[i]["HProcPlanBillNo"].ToString(); oSub.HSourceInterID = data.Rows[i]["HSourceInterID"] == null ? 0 : (int)data.Rows[i]["HSourceInterID"]; oSub.HSourceEntryID = data.Rows[i]["HSourceEntryID"] == null ? 0 : (int)data.Rows[i]["HSourceEntryID"]; oSub.HSourceBillNo = data.Rows[i]["HSourceBillNo"] == null ? "" : data.Rows[i]["HSourceBillNo"].ToString(); oSub.HSourceBillType = data.Rows[i]["HSourceBillType"] == null ? "" : data.Rows[i]["HSourceBillType"].ToString(); oSub.HRelationQty = data.Rows[i]["HQty"] == null ? 0 : double.Parse(data.Rows[i]["HQty"].ToString()); oSub.HRelationMoney = data.Rows[i]["HMoney"] == null ? 0 : double.Parse(data.Rows[i]["HMoney"].ToString()); subTable.Add(oSub); } //生成最后一条记录:最后一条记录因为无法再与data.Rows[data.Rows.Count]["HEmpID"]比较,所以不会添加,需要最后另外添加 sql1 = "select * from h_v_Gy_Employee_ForWeb where HDeptID ='" + HDeptIDBar + "' and HGroupID = '" + HGroupIDBar + "'"; ds1 = oCN.RunProcReturn(sql1, "h_v_Gy_Employee_ForWeb"); if (ds1.Tables[0].Rows.Count > 0) { for (int j = 0; j < ds1.Tables[0].Rows.Count; j++) { Pay_GroupBalBillController.Pay_GroupBalBillEmp oSubEmp = new Pay_GroupBalBillController.Pay_GroupBalBillEmp(); oSubEmp.HEmpID = ds1.Tables[0].Rows[j]["HItemID"] == null ? 0 : int.Parse(ds1.Tables[0].Rows[j]["HItemID"].ToString()); oSubEmp.HEmpRate = ds1.Tables[0].Rows[j]["HEmpRate"] == null ? 0 : double.Parse(ds1.Tables[0].Rows[j]["HEmpRate"].ToString()); oSubEmp.HBaseTimes = 0; oSubEmp.HMoney = 0; oSubEmp.HOtherSubsidy = 0; oSubEmp.HOtherDeduct = 0; oSubEmp.HYF = 0; oSubEmp.HIsPay = false; oSubEmp.HAvgFlag = false; oSubEmp.HRemark = ""; subEmpTable.Add(oSubEmp); } } objJsonResult = AddBillMain_Pay_GroupBalBill(mainTable, user, subTable,subEmpTable); 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 = "Sucess!"; objJsonResult.data = null; 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 = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } #endregion #region 工资计算-工资结算单(集体) 主表 public json AddBillMain_Pay_GroupBalBill(Pay_GroupBalBillMain oMain, string user, List subTable, List subEmpTable) { int OperationType = 1;//数据类型 1添加 3修改 2 复制 string HComputerName = SystemInformation.ComputerName; //设备名称 try { List mainList = new List(); mainList.Add(oMain); int HYear = int.Parse(mainList[0].HDate.Split('-')[0]); int HPeriod = int.Parse(mainList[0].HDate.Split('-')[1]); string HBillType = "2201"; string HBillSubType = ""; int HBillStatus = 1; int HInterID = mainList[0].HInterID; string HBillNo = mainList[0].HBillNo; string HDate = mainList[0].HDate; string HInnerBillNo = mainList[0].HInnerBillNo; int HGroupID = mainList[0].HGroupID; string HGroupName = mainList[0].HGroupName; double HSumMoney = mainList[0].HSumMoney; double HOtherSubsidy = mainList[0].HOtherSubsidy; int HDeptID = mainList[0].HDeptID; string HDeptName = mainList[0].HDeptName; double HPayMoney = mainList[0].HPayMoney; double HOtherDeduct = mainList[0].HOtherDeduct; string HSourceBillType = mainList[0].HSourceBillType; int HSourceBillID = mainList[0].HSourceBillID; string HSourceBillNo = mainList[0].HSourceBillNo; string HExplanation = mainList[0].HExplanation; string HRemark = mainList[0].HRemark; string HMaker = mainList[0].HMaker; string HMakerDate = mainList[0].HMakerDate; string HUpdater = mainList[0].HUpdater; string HUpdaterDate = mainList[0].HUpdaterDate; string HChecker = mainList[0].HChecker; string HCheckerDate = mainList[0].HCheckerDate; string HCloseMan = mainList[0].HCloseMan; string HCloseManDate = mainList[0].HCloseManDate; string HDeleteMan = mainList[0].HDeleteMan; string HDeleteManDate = mainList[0].HDeleteManDate; string HBacker = mainList[0].HBacker; string HBackerDate = mainList[0].HBackerDate; string HBackRemark = mainList[0].HBackRemark; ds = oCN.RunProcReturn("select * from Pay_GroupBalBillMain where HInterID = " + HInterID + " and HBillNo = '" + HBillNo + "'", "Pay_GroupBalBillMain"); if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//新增 { string sql = "insert into Pay_GroupBalBillMain" + "(HYear,HPeriod,HBillType,HBillSubType,HBillStatus,HInterID,HBillNo,HDate,HInnerBillNo,HGroupID,HSumMoney,HOtherSubsidy,HDeptID" + ",HPayMoney,HOtherDeduct,HMainSourceBillType,HMainSourceInterID,HMainSourceBillNo,HExplanation,HRemark,HMaker,HMakeDate) " + "values(" + "" + HYear + "," + HPeriod + ",'" + HBillType + "','" + HBillSubType + "','" + HBillStatus + "'," + HInterID + ",'" + HBillNo + "','" + HDate + "','" + HInnerBillNo + "'," + HGroupID + ",'" + HSumMoney + "','" + HOtherSubsidy + "'," + HDeptID + "," + HPayMoney + "," + HOtherDeduct + ",'" + HSourceBillType + "'," + HSourceBillID + ",'" + HSourceBillNo + "','" + HExplanation + "','" + HRemark + "','" + HMaker + "','" + HMakerDate + "')"; //主表 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); } //保存子表 objJsonResult = AddBillSub1_Pay_GroupBalBill(subTable, HInterID, HBillNo, OperationType); objJsonResult = AddBillSub2_Pay_GroupBalBill(subEmpTable, 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 添加 工资结算单(集体) 子表1 public json AddBillSub1_Pay_GroupBalBill(List DetailColl, long HInterID, string HBillNo, int OperationType) { try { int i = 0; //作为子表内码 foreach (Pay_GroupBalBillController.Pay_GroupBalBillSub oSub in DetailColl) { i++; //同一个主表下的子表的内码自增 int HEntryID = i; int HMaterID = oSub.HMaterID; int HUnitID = oSub.HUnitID; int HProcID = oSub.HProcID; int HSourceID = oSub.HSourceID; double HTimes = oSub.HTimes; double HQty = oSub.HQty; double HPrice = oSub.HPrice; double HMoney = oSub.HMoney; string HRemark = oSub.HRemark; int HICMOInterID = oSub.HICMOInterID; string HICMOBillNo = oSub.HICMOBillNo; int HProcReportInterID = oSub.HProcReportInterID; int HProcReportEntryID = oSub.HProcReportEntryID; string HProcReportBillNo = oSub.HProcReportBillNo; int HProcPlanInterID = oSub.HProcPlanInterID; int HProcPlanEntryID = oSub.HProcPlanEntryID; string HProcPlanBillNo = oSub.HProcPlanBillNo; int HSourceInterID = oSub.HSourceInterID; int HSourceEntryID = oSub.HSourceEntryID; string HSourceBillNo = oSub.HSourceBillNo; string HSourceBillType = oSub.HSourceBillType; double HRelationQty = oSub.HRelationQty; double HRelationMoney = oSub.HRelationMoney; string sql = "insert into Pay_GroupBalBillSub" + "(HInterID,HEntryID,HMaterID,HUnitID,HProcID,HSourceID,HTimes,HQty,HPrice,HMoney,HRemark,HICMOInterID,HICMOBillNo,HProcReportInterID" + ",HProcReportEntryID,HProcReportBillNo,HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HSourceInterID,HSourceEntryID,HSourceBillNo" + ",HSourceBillType,HRelationQty,HRelationMoney) " + "values(" + "" + HInterID + "," + HEntryID + "," + HMaterID + "," + HUnitID + "," + HProcID + "," + HSourceID + "," + HTimes + "," + HQty + "," + HPrice + "," + HMoney + ",'" + HRemark + "'," + HICMOInterID + ",'" + HICMOBillNo + "'," + HProcReportInterID + "," + HProcReportEntryID + ",'" + HProcReportBillNo + "'," + HProcPlanInterID + "," + HProcPlanEntryID + ",'" + HProcPlanBillNo + "'," + HSourceInterID + "," + HSourceEntryID + ",'" + HSourceBillNo + "','" + HSourceBillType + "'," + HRelationQty + "," + HRelationMoney + ")"; oCN.RunProc(sql); } 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 添加 工资结算单(集体) 子表2 public json AddBillSub2_Pay_GroupBalBill(List DetailColl, long HInterID, string HBillNo, int OperationType) { try { int i = 0; //作为子表内码 foreach (Pay_GroupBalBillEmp oSub in DetailColl) { i++; //同一个主表下的子表的内码自增 int HEntryID = i; int HEmpID = oSub.HEmpID; string HEmpNumber = oSub.HEmpNumber; string HEmpName = oSub.HEmpName; double HEmpRate = oSub.HEmpRate; double HBaseTimes = oSub.HBaseTimes; double HMoney = oSub.HMoney; double HOtherSubsidy = oSub.HOtherSubsidy; double HOtherDeduct = oSub.HOtherDeduct; double HYF = oSub.HYF; int HIsPay = oSub.HIsPay ? 1 : 0; int HAvgFlag = oSub.HAvgFlag ? 1 : 0; string HRemark = oSub.HRemark; string sql = "insert into Pay_GroupBalBillEmp" + "(HInterID,HEntryID,HEmpID,HEmpRate,HBaseTimes,HMoney,HOtherSubsidy,HOtherDeduct,HYF,HIsPay,HAvgFlag,HRemark) " + "values(" + "" + HInterID + "," + HEntryID + "," + HEmpID + "," + HEmpRate + "," + HBaseTimes + "," + HMoney + "," + HOtherSubsidy + "," + HOtherDeduct + "," + HYF + "," + HIsPay + "," + HAvgFlag + ",'" + HRemark + "')"; oCN.RunProc(sql); } 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 #endregion } }