天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

654 lines
24 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using QMFrameWork.WebUI.Attribute;
using QMAPP.Common.Web.Controllers;
using QMAPP.FJC.Web.Models.Stocktaking;
using QMFrameWork.Data;
using QMAPP.ServicesAgent;
using QMAPP.FJC.Entity.Stocktaking;
using QMFrameWork.WebUI.DataSource;
using QMFrameWork.Common.Serialization;
using QMAPP.FJC.Entity.Basic;
using QMAPP.FJC.Web.Models.Basic;
using System.Data;
using QMAPP.MD.Entity;
using System.Runtime.Serialization.Json;
using QMAPP.Entity;
using QMAPP.MD.Web.Models;
namespace QMAPP.FJC.Web.Controllers
{
public class StocktakingManageController : QController
{
#region 主界面加载列表
/// <summary>
/// 加载列表
/// </summary>
/// <returns>结果</returns>
[HandleException]
public ActionResult List(bool? callBack)
{
StocktakingSearchModel seachModel = new StocktakingSearchModel();
if (callBack == true)
TryGetSelectBuffer<StocktakingSearchModel>(out seachModel);
seachModel.rownumbers = false;
seachModel.url = "/StocktakingManage/GetList";
return View("List", seachModel);
}
#endregion
#region 主界面获取列表
/// <summary>
/// 获取列表
/// </summary>
/// <param name="callBack">是否回调</param>
/// <returns>列表</returns>
[HandleException]
public ActionResult GetList(bool? callBack)
{
StocktakingSearchModel seachModel = null;
DataPage page = null;
ServiceAgent wcfAgent = this.GetServiceAgent();
Countingplaninfo condition = null;
try
{
//获取查询对象
seachModel = GetModel<StocktakingSearchModel>();
#region 获取缓存值
if (callBack != null)
{
TryGetSelectBuffer<StocktakingSearchModel>(out seachModel);
}
else
{
//保存搜索条件
SetSelectBuffer<StocktakingSearchModel>(seachModel);
}
#endregion
//获取前台分页设置信息
page = this.GetDataPage(seachModel);
condition = CopyToModel<Countingplaninfo, StocktakingSearchModel>(seachModel);
#region wcf服务统一接口
var dataResult = wcfAgent.InvokeServiceFunction<DataResult<DataPage>>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_GetList.ToString(), condition, page);
//通过返回dataResult判断
if (dataResult.Ex != null)
{
throw dataResult.Ex;
}
else if (dataResult.IsSuccess)
{
page = dataResult.Result;
}
DateGridResult<Countingplaninfo> result = new DateGridResult<Countingplaninfo>();
result.Total = page.RecordCount;
result.Rows = JsonConvertHelper.GetDeserialize<List<Countingplaninfo>>(page.Result.ToString());
#endregion
return Content(result.GetJsonSource());
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 编辑载入(点击添加,修改)
/// <summary>
/// 编辑载入
/// </summary>
/// <returns>处理结果</returns>
[HandleException]
public ActionResult Edit()
{
StocktakingSearchModel model = new StocktakingSearchModel();
Countingplaninfo entity = new Countingplaninfo();
string PID = Request.Params["PID"];
ServiceAgent wcfAgent = this.GetServiceAgent();
DataResult<Countingplaninfo> result = new DataResult<Countingplaninfo>();
try
{
if (string.IsNullOrEmpty(PID) == false)
{
//修改获取原数据
entity.PID = PID;
result = wcfAgent.InvokeServiceFunction<DataResult<Countingplaninfo>>("StocktakingBLL_Get", entity);
if (result.IsSuccess == false)
{
SetMessage(result.Msg);
return View("E", model);
}
model = CopyToModel<StocktakingSearchModel, Countingplaninfo>(result.Result);
return View("E", model);
}
else
{
return View("A", model);
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 保存(添加,编辑)
/// <summary>
/// 新增界面保存
/// </summary>
/// <param name="model"></param>
/// <returns>处理结果</returns>
[HttpPost]
[HandleException]
[ValidateInput(false)]
public ActionResult StocktingPlanSave(StocktakingSearchModel saveModel)
{
Countingplaninfo entity = new Countingplaninfo();
QMAPP.MD.Entity.Material condition = new MD.Entity.Material();
ServiceAgent wcfAgent = this.GetServiceAgent();
DataResult<int> result = new DataResult<int>();
string materials = "('" + saveModel.MaterialCodes.Replace(";", "','") + "')";
condition.MaterialCodes = materials;
//获取物料信息
List<QMAPP.MD.Entity.Material> machinelist = wcfAgent.InvokeServiceFunction<List<QMAPP.MD.Entity.Material>>("MaterialBLL_GetMaterialInfoList", condition);
if (saveModel.EDITFLAG == null)
{
entity.PID = Guid.NewGuid().ToString();
entity.COUNTTYPE = saveModel.COUNTTYPE;
entity.PLAN_DATE = saveModel.PLAN_DATE;
entity.REMARK = saveModel.REMARK;
#region 计划单号
object PLAN_NO = wcfAgent.InvokeServiceFunction<object>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_GetPlanNoByDate.ToString(), saveModel.PLAN_DATE.ToString("yyyyMMdd"));
if (PLAN_NO == null)
{
entity.PLAN_NO = entity.PLAN_DATE.ToString("yyyyMMdd") + "01";
}
else
{
string PLAN_NO_Now = DateTime.Now.ToString("yyyyMMdd");
if (PLAN_NO_Now.ToString() == PLAN_NO.ToString().Substring(0, 8))
{
int resultSum = Convert.ToInt32(PLAN_NO.ToString().Substring(PLAN_NO.ToString().Length - 2, 2)) + 1;
string AddNumber = "";
if (resultSum.ToString().Length == 1)
{
AddNumber = "0" + resultSum.ToString();
}
entity.PLAN_NO = PLAN_NO.ToString().Substring(0, 8) + AddNumber.ToString();
}
else
{
entity.PLAN_NO = DateTime.Now.ToString("yyyyMMdd") + "01";
}
}
#endregion
//T_PP_COUNTINGPLAN插入
int result1 = wcfAgent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_Insert.ToString(), entity);
result = wcfAgent.InvokeServiceFunction<DataResult<int>>("StocktakingBLL_InsertStocktakingDeail", entity, machinelist);
}
//编辑时保存
else
{
//当前修改信息日期和计划号不一致时
if (saveModel.PLAN_DATE.ToString("yyyyMMdd") != saveModel.PLAN_NO.ToString().Substring(0, 8))
{
#region 计划单号
object PLAN_NO = wcfAgent.InvokeServiceFunction<object>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_GetPlanNoByDate.ToString(), saveModel.PLAN_DATE);
string PLAN_NO_Now = DateTime.Now.ToString("yyyyMMdd");
if (PLAN_NO_Now.ToString() == PLAN_NO.ToString().Substring(0, 8))
{
int resultSum = Convert.ToInt32(PLAN_NO.ToString().Substring(PLAN_NO.ToString().Length - 2, 2)) + 1;
string AddNumber = "";
if (resultSum.ToString().Length == 1)
{
AddNumber = "0" + resultSum.ToString();
}
entity.PLAN_NO = PLAN_NO.ToString().Substring(0, 8) + AddNumber.ToString();
}
else
{
entity.PLAN_NO = DateTime.Now.ToString("yyyyMMdd") + "01";
}
#endregion
}
else
{
entity.PLAN_NO = saveModel.PLAN_NO;
}
entity = CopyToModel<Countingplaninfo, StocktakingSearchModel>(saveModel);
//修改
result = wcfAgent.InvokeServiceFunction<DataResult<int>>("StocktakingBLL_Update", entity);
result = wcfAgent.InvokeServiceFunction<DataResult<int>>("StocktakingBLL_EditInsertStocktakingDeail", entity, machinelist);
}
return this.GetJsViewResult(string.Format("parent.List(1);parent.showTitle('{0}');parent.closeAppWindow1();", AppResource.SaveMessge));
}
#endregion
#region 点击设备下拉界面保存(提交)
/// <summary>
/// 编辑界面填充设备信息
/// </summary>
/// <returns></returns>
[HandleException]
public ActionResult AddMaterialDetail(CountingdetailViewModel saveMode)
{
var materialcode = Request.QueryString["MATERIAL_CODE"];
string kkk=materialcode.Substring(1, materialcode.Length-1);
string materialCodes = "('" + kkk.Replace(",", "','") + "')";
//物料发货明细实体
QMAPP.MD.Entity.Material detail = new QMAPP.MD.Entity.Material()
{
//MATERIAL_CODE = materialcode,
MaterialCodes = materialCodes,
};
try
{
//实例化服务
ServiceAgent wcfAgent = this.GetServiceAgent();
//通过服务调用ProductOffLineBLL中的CheckRfid方法校验填写的RFID是否合法
//QMAPP.MD.Entity.Material dataResult = wcfAgent.InvokeServiceFunction<QMAPP.MD.Entity.Material>("StocktakingBLL_GetMachineInfo", detail);
List<QMAPP.MD.Entity.Material> dataResult = wcfAgent.InvokeServiceFunction<List<QMAPP.MD.Entity.Material>>("StocktakingBLL_GetMachineInfo", detail);
//dataResult.CREATEUSERNAME = AccountController.GetLoginInfo().UserName.Trim().ToString();
for (var i = 0; i < dataResult.Count(); i++)
{
dataResult[i].CREATEUSERNAME = AccountController.GetLoginInfo().UserName.Trim().ToString();
}
return Json(dataResult, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 编辑时删除物料信息
/// <summary>
/// 编辑时删除物料信息
/// </summary>
/// <returns>结果</returns>
[HttpPost]
[HandleException]
public ActionResult EditDelete(CountingdetailViewModel saveMode)
{
ServiceAgent wcfAgent = this.GetServiceAgent();
DataResult<int> result = new DataResult<int>();
try
{
result = wcfAgent.InvokeServiceFunction<DataResult<int>>("StocktakingBLL_EditDelete",saveMode);
if (result.IsSuccess == false)
{
SetMessage(result.Msg);
return Edit();
}
SetMessage(AppResource.DeleteMessage);
return Edit();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 编辑界面填充物料信息
/// <summary>
/// 编辑界面填充物料信息
/// </summary>
/// <param name="callBack">是否回调</param>
/// <returns>列表</returns>
[HandleException]
public ActionResult GetMaterialGridList(bool? callBack)
{
CountingdetailViewModel seachModel = null;
DataResult<DataPage> pageResult = new DataResult<DataPage>();
DataPage page = new DataPage();
ServiceAgent wcfAgent = this.GetServiceAgent();
CountingdetailInfo condition = null;
try
{
//获取查询对象
seachModel = GetModel<CountingdetailViewModel>();
#region 获取缓存值
if (callBack != null)
{
TryGetSelectBuffer<CountingdetailViewModel>(out seachModel);
}
else
{
//保存搜索条件
SetSelectBuffer<CountingdetailViewModel>(seachModel);
}
#endregion
//获取前台分页设置信息
page = this.GetDataPage(seachModel);
condition = CopyToModel<CountingdetailInfo, CountingdetailViewModel>(seachModel);
condition.PLANID = seachModel.PLANID;
#region wcf服务统一接口
pageResult = wcfAgent.InvokeServiceFunction<DataResult<DataPage>>("StocktakingBLL_GetMaterialGridList", condition, page);
if (pageResult.IsSuccess == false)
{
SetMessage(pageResult.Msg);
return List(true);
}
DateGridResult<CountingdetailInfo> result = new DateGridResult<CountingdetailInfo>();
result.Total = pageResult.Result.RecordCount;
result.Rows = JsonConvertHelper.GetDeserialize<List<CountingdetailInfo>>(pageResult.Result.Result.ToString());
#endregion
return Content(result.GetJsonSource());
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 当前盘点计划下手持明细加载列表
/// <summary>
/// 加载列表
/// </summary>
/// <returns>结果</returns>
[HandleException]
public ActionResult PanDetail(bool? callBack)
{
CountSheetModel seachModel = new CountSheetModel();
if (callBack == true)
TryGetSelectBuffer<CountSheetModel>(out seachModel);
seachModel.rownumbers = false;
string PID = Request.Params["PID"];
seachModel.PLANID = PID;
seachModel.url = "/StocktakingManage/PanDetailList?PID=" + PID;
return View("PanDetail", seachModel);
}
#endregion
#region 盘点明细查询(手持明细查询)
/// <summary>
/// 盘点明细查询
/// </summary>
/// <returns>处理结果</returns>
[HandleException]
public ActionResult PanDetailList()
{
try
{
QMAPP.FJC.Web.Models.Stocktaking.CountSheetModel model = new QMAPP.FJC.Web.Models.Stocktaking.CountSheetModel();
DataTable tbl = null;
string PID = Request.QueryString["PID"];
ServiceAgent wcfAgent = this.GetServiceAgent();
DataPage page = null;
//获取前台分页设置信息
CountSheetModel seachModel = null;
//获取查询对象
seachModel = GetModel<CountSheetModel>();
page = this.GetDataPage(seachModel);
var dataResult = wcfAgent.InvokeServiceFunction<DataResult<DataPage>>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_GetPanDetail.ToString(), PID, page);
//通过返回dataResult判断
if (dataResult.Ex != null)
{
throw dataResult.Ex;
}
else if (dataResult.IsSuccess)
{
page = dataResult.Result;
}
DateGridResult<CountSheetInfo> result = new DateGridResult<CountSheetInfo>();
result.Total = page.RecordCount;
result.Rows = JsonConvertHelper.GetDeserialize<List<CountSheetInfo>>(page.Result.ToString());
return Content(result.GetJsonSource());
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 盘点比对
/// <summary>
/// 盘点比对
/// </summary>
/// <returns>结果</returns>
[HttpPost]
[HandleException]
public ActionResult detailCompareResult()
{
string selectKey = Request.Form["selectKey"];
ServiceAgent wcfAgent = this.GetServiceAgent();
DataResult<int> result = new DataResult<int>();
try
{
result = wcfAgent.InvokeServiceFunction<DataResult<int>>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_detailCompareResult.ToString(), selectKey, AccountController.GetLoginInfo().UserName.Trim().ToString());
if (result.Result <= 0)
{
SetMessage("比对失败!");
}
return List(true);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 加载盘点对比结果列表
/// <summary>
/// 加载盘点对比信息列表
/// </summary>
/// <returns>结果</returns>
[HandleException]
public ActionResult PanCompareResultDetail(bool? callBack)
{
CountSheetModel seachModel = new CountSheetModel();
if (callBack == true)
TryGetSelectBuffer<CountSheetModel>(out seachModel);
seachModel.rownumbers = false;
string PID = Request.Params["PID"];
seachModel.PLANID = PID;
seachModel.url = "/StocktakingManage/PanCompareResultDetailList?PID=" + PID;
return View("PanCompareResultDetail", seachModel);
}
#endregion
#region 对比结果查询
/// <summary>
/// 对比结果查询
/// </summary>
/// <returns>处理结果</returns>
[HandleException]
public ActionResult PanCompareResultDetailList()
{
try
{
QMAPP.FJC.Web.Models.Stocktaking.CountResultModel model = new QMAPP.FJC.Web.Models.Stocktaking.CountResultModel();
DataTable tbl = null;
string PID = Request.QueryString["PID"];
ServiceAgent wcfAgent = this.GetServiceAgent();
DataPage page = null;
//获取前台分页设置信息
CountResultModel seachModel = null;
//获取查询对象
seachModel = GetModel<CountResultModel>();
page = this.GetDataPage(seachModel);
var dataResult = wcfAgent.InvokeServiceFunction<DataResult<DataPage>>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_GetPanResultDetail.ToString(), PID, page);
// 通过返回dataResult判断
if (dataResult.Ex != null)
{
throw dataResult.Ex;
}
else if (dataResult.IsSuccess)
{
page = dataResult.Result;
}
DateGridResult<CountResultInfo> result = new DateGridResult<CountResultInfo>();
result.Total = page.RecordCount;
result.Rows = JsonConvertHelper.GetDeserialize<List<CountResultInfo>>(page.Result.ToString());
return Content(result.GetJsonSource());
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 删除
/// <summary>
/// 删除
/// </summary>
/// <returns>结果</returns>
[HttpPost]
[HandleException]
public ActionResult Delete()
{
string selectKey = Request.Form["selectKey"];
ServiceAgent wcfAgent = this.GetServiceAgent();
DataResult<int> result = new DataResult<int>();
DataResult<int> result2 = new DataResult<int>();
try
{
result = wcfAgent.InvokeServiceFunction<DataResult<int>>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_Delete.ToString(), selectKey);
result2 = wcfAgent.InvokeServiceFunction<DataResult<int>>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_SubDelete.ToString(), selectKey);
if (result.IsSuccess == false | result2.IsSuccess == false)
{
SetMessage("信息有关联,删除失败!");
return List(true);
}
SetMessage(AppResource.DeleteMessage);
return List(true);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 导出excel
/// <summary>
/// 导出excel
/// </summary>
/// <returns>结果</returns>
[HttpPost]
[HandleException]
public ActionResult ExportExcel()
{
//CountSheetModel seachModel = null;
//CountSheetInfo condition = null;
DataTable exportDt = new DataTable();
ServiceAgent wcfAgent = this.GetServiceAgent();
string PID = Request.QueryString["PID"];
//string selectKey = Request.Form["selectKey"];
try
{
//获取查询对象
//seachModel = GetModel<CountSheetModel>();
//condition = CopyToModel<CountSheetInfo, CountSheetModel>(seachModel);
////获取数据
exportDt = wcfAgent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.StocktakingManage.StocktakingBLL_GetExportData.ToString(), PID);
// if (selectKey != "")
// {
DataView dv = new DataView(exportDt);
// string strWhere = "";
// string[] list = selectKey.Split(":".ToCharArray());
// foreach (string id in list)
//{
// strWhere += " PID='" + id + "' or";
// }
// if (strWhere != "")
//{
// strWhere = strWhere.Remove((strWhere.Length - 2), 2);
// }
// dv.RowFilter = strWhere;
exportDt = dv.ToTable();
// }
//导出
QMFrameWork.WebUI.Util.IEFileTool efTool = new QMFrameWork.WebUI.Util.IEFileTool();
return efTool.GetExcelFileResult("PanDetailExp", "PanDetailExp.xlsx", exportDt);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 盘点完成
[HttpPost]
[HandleException]
public ActionResult CompleteCompare()
{
string selectKey = Request.Form["selectKey"];
ServiceAgent wcfAgent = this.GetServiceAgent();
DataResult<int> result = new DataResult<int>();
try
{
result = wcfAgent.InvokeServiceFunction<DataResult<int>>("StocktakingBLL_CompleteCompare", selectKey);
if (result.Result <= 0)
{
SetMessage("操作失败!");
}
return List(true);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}