using Estsh.Core.Controllers; using Estsh.Core.Model.ExcelModel; using Estsh.Core.Model.Result; using Estsh.Core.Models; using Estsh.Core.Services.IServices; using Estsh.Core.Util; using Microsoft.AspNetCore.Mvc; using System.Collections; /*************************************************************************************************** * * 更新人:sitong.dong * 描述:盘点单管理 * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Web.Controllers { public class CycleCountManageController : BaseController { private ICycleCountManageService service; public CycleCountManageController(ICycleCountManageService _service) { service = _service; } // // GET: /Menu/ public ActionResult Index() { return View(); } public ActionResult CheckStockDetailIndex(string orderNo) { ViewData.Add("orderNo", orderNo); return View(); } /// /// 盘点单 /// /// /// /// /// /// public ActionResult getCheckStockByPage(string orderNo, string orderType, string orderStatus, string startTime, string endTime, Pager pager, String direction, String sort, string enabled = "Y") { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); result.Add("pager.pageNo", pager.pageNo); Hashtable dataHt = this.service.getCheckStockByPage(orderNo, orderType, orderStatus, startTime, endTime, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt["dataList"]); result.Add("pager.totalRows", dataHt["totalCount"]); result.Add("sort", sort); result.Add("direction", direction); return Json(result); } /// /// 盘点单明细 /// /// /// /// /// /// public ActionResult getCheckStockListByPage(string orderNo, Pager pager, String direction, String sort, string enabled = "Y") { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List dataHt = this.service.getCheckStockListByPage(orderNo, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt); return Json(result); } //搜索盘点单明细 public ActionResult getSearchCheckStockList(string orderNo, string partNo, string partSpec, string cartonNo) { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List dataHt = this.service.getSearchCheckStockList(orderNo, partNo, partSpec, cartonNo); result.Add("rows", dataHt); return Json(result); } /// /// 盘点单零件 /// /// /// /// /// /// public ActionResult getCheckStockPartByPage(string orderNo, Pager pager, String direction, String sort, string enabled = "Y") { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List dataHt = this.service.getCheckStockPartByPage(orderNo, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt); return Json(result); } /// /// 盘点单存储区 /// /// /// /// /// /// public ActionResult getCheckStockZoneByPage(string orderNo, Pager pager, String direction, String sort, string enabled = "Y") { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List dataHt = this.service.getCheckStockZoneByPage(orderNo, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt); return Json(result); } /// /// 盘点单库位 /// /// /// /// /// /// public ActionResult getCheckStockLocateByPage(string orderNo, Pager pager, String direction, String sort, string enabled = "Y") { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List dataHt = this.service.getCheckStockLocateByPage(orderNo, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt); return Json(result); } /// /// 盘点单范围 /// /// /// /// /// /// public ActionResult getCheckStockRangeByPage(string orderNo, Pager pager, String direction, String sort, string enabled = "Y") { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List dataHt = this.service.getCheckStockRangeByPage(orderNo, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt); return Json(result); } public ActionResult getSelectMoveOrderType() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetMoveOrderType(factoryId); result.Add("list", menuList); return Json(result); } /// /// 获取父节点菜单下拉列表数据 /// /// public ActionResult getSelectFactory() { Hashtable result = new Hashtable(); List menuList = this.service.getSelectFactory(); result.Add("list", menuList); return Json(result); } public ActionResult getSelectWarehouse() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.getSelectWarehouse(factoryId); result.Add("list", menuList); return Json(result); } public ActionResult getMultiErpwarehouse() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetMultiErpwarehouse(factoryId); result.Add("treeNodes", menuList); return Json(result); } public ActionResult getMultiPartNo() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetMultiPartNo(factoryId); result.Add("treeNodes", menuList); return Json(result); } public ActionResult getMultiWarehouse() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetMultiWarehouse(factoryId); result.Add("treeNodes", menuList); return Json(result); } public ActionResult getMultiZone() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetMultiZone(factoryId); result.Add("treeNodes", menuList); return Json(result); } public ActionResult getMultiLocate() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetMultiLocate(factoryId); result.Add("treeNodes", menuList); return Json(result); } public ActionResult getSelectZone() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.getSelectZone(factoryId); result.Add("list", menuList); return Json(result); } public ActionResult getSelectVendor() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.getSelectVendor(factoryId); result.Add("list", menuList); return Json(result); } public ActionResult GetPart() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetPart(factoryId); result.Add("list", menuList); return Json(result); } public ActionResult GetPartByPage(string partNo, Pager pager, String direction, String sort, string enabled = "Y") { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); result.Add("pager.pageNo", pager.pageNo); Hashtable dataHt = this.service.GetPartByPage(partNo, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt["dataList"]); result.Add("pager.totalRows", dataHt["totalCount"]); result.Add("sort", sort); result.Add("direction", direction); return Json(result); } public ActionResult GetZoneByPage(string warehouseId, string erpWarehouse, string zoneName, Pager pager, String direction, String sort, string enabled = "Y") { string erpWarehouseVal = ""; if (!string.IsNullOrEmpty(erpWarehouse)) { List erpWarehouseList = erpWarehouse.Split(",").ToList(); for (int i = 0; i < erpWarehouseList.Count; i++) { erpWarehouseVal += "'" + erpWarehouseList[i] + "',"; } erpWarehouseVal = erpWarehouseVal.Substring(0, erpWarehouseVal.Length - 1); } if (!string.IsNullOrEmpty(warehouseId)) { if (warehouseId.Contains(",")) { warehouseId = warehouseId.Substring(0, warehouseId.Length - 1); } } int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); result.Add("pager.pageNo", pager.pageNo); Hashtable dataHt = this.service.GetZoneByPage(zoneName, warehouseId, erpWarehouseVal, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt["dataList"]); result.Add("pager.totalRows", dataHt["totalCount"]); result.Add("sort", sort); result.Add("direction", direction); return Json(result); } public ActionResult GetLocateByPage(string locateName, string warehouseId, Pager pager, String direction, String sort, string enabled = "Y") { if (!string.IsNullOrEmpty(warehouseId)) { if (warehouseId.Contains(",")) { warehouseId = warehouseId.Substring(0, warehouseId.Length - 1); } } int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); result.Add("pager.pageNo", pager.pageNo); Hashtable dataHt = this.service.GetLocateByPage(locateName, warehouseId, enabled, factoryId, pager, direction, sort); result.Add("rows", dataHt["dataList"]); result.Add("pager.totalRows", dataHt["totalCount"]); result.Add("sort", sort); result.Add("direction", direction); return Json(result); } public ActionResult GetCheckStockType() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetCheckStockType(factoryId); result.Add("list", menuList); return Json(result); } //单据类型 public ActionResult GetCheckStockStatus() { int factoryId = CurrentEmp.FactoryId; Hashtable result = new Hashtable(); List menuList = this.service.GetCheckStockStatus(factoryId); result.Add("list", menuList); return Json(result); } public ActionResult EditCycleCountManage() { return View("EditCycleCountManage"); } /// /// 保存菜单数据 /// /// public ActionResult saveCycleCountManage() { String editType = Request.Form["editType"].ToString(); String orderType = Request.Form["orderType"].ToString(); String isObvious = Request.Form["isObvious"].ToString(); String warehouseId = Request.Form["warehouseId"].ToString(); String erpWarehouse = Request.Form["erpWarehouse"].ToString(); String partNoDetailRow = Request.Form["partNoDetailRow"].ToString(); String zoneNameDetailRow = Request.Form["zoneNameDetailRow"].ToString(); String locateNameDetailRow = Request.Form["locateNameDetailRow"].ToString(); int factoryId = CurrentEmp.FactoryId; String factoryCode = CurrentEmp.FactoryCode; //String enabled = Request.Form["enabled"].ToString(); //String detailRow = Request.Form["detailRow"].ToString(); //List erpList = erphouse.Split(',').ToList(); IList partNoDetailRowList = Newtonsoft.Json.JsonConvert.DeserializeObject>(partNoDetailRow); IList zoneNameDetailRowList = Newtonsoft.Json.JsonConvert.DeserializeObject>(zoneNameDetailRow); IList locateNameDetailRowList = Newtonsoft.Json.JsonConvert.DeserializeObject>(locateNameDetailRow); string partNo = ""; for (int i = 0; i < partNoDetailRowList.Count; i++) { partNo += partNoDetailRowList[i].PartNo + ","; } if (!string.IsNullOrEmpty(partNo)) { partNo = partNo.Substring(0, partNo.Length - 1); } WmsCheckStock checkStock = new WmsCheckStock(); checkStock.OrderType = orderType; checkStock.PartNo = partNo; checkStock.ErpWarehouse = erpWarehouse; checkStock.IsObvious = string.IsNullOrEmpty(isObvious) ? 0 : Convert.ToInt32(isObvious); checkStock.FactoryId = factoryId; checkStock.FactoryCode = factoryCode; //List partNoList = partNo.Split(',').ToList(); List checkStockPartList = new List(); for (int i = 0; i < partNoDetailRowList.Count; i++) { WmsCheckStockPart checkStockPart = new WmsCheckStockPart(); checkStockPart.PartId = partNoDetailRowList[i].PartId; checkStockPart.PartNo = partNoDetailRowList[i].PartNo; checkStockPart.PartSpec = partNoDetailRowList[i].PartSpec; checkStockPart.FactoryId = factoryId; checkStockPart.FactoryCode = factoryCode; checkStockPartList.Add(checkStockPart); } List checkStockZoneList = new List(); for (int i = 0; i < zoneNameDetailRowList.Count; i++) { WmsCheckStockZone checkStockZone = new WmsCheckStockZone(); checkStockZone.ZoneId = zoneNameDetailRowList[i].ZoneId; checkStockZone.ZoneName = zoneNameDetailRowList[i].ZoneName; checkStockZone.FactoryId = factoryId; checkStockZone.FactoryCode = factoryCode; checkStockZoneList.Add(checkStockZone); } List checkStockLocateList = new List(); for (int i = 0; i < locateNameDetailRowList.Count; i++) { WmsCheckStockLocate checkStockLocate = new WmsCheckStockLocate(); checkStockLocate.LocateId = locateNameDetailRowList[i].LocateId; checkStockLocate.LocateName = locateNameDetailRowList[i].LocateName; checkStockLocate.FactoryId = factoryId; checkStockLocate.FactoryCode = factoryCode; checkStockLocateList.Add(checkStockLocate); } List checkStockRangeList = new List(); if (zoneNameDetailRowList.Count != 0) { for (int i = 0; i < zoneNameDetailRowList.Count; i++) { if (partNoDetailRowList.Count == 0) { WmsCheckStockRange checkStockRange = new WmsCheckStockRange(); checkStockRange.ZoneId = zoneNameDetailRowList[i].ZoneId; checkStockRange.ZoneName = string.IsNullOrEmpty(zoneNameDetailRowList[i].ZoneName) ? "" : zoneNameDetailRowList[i].ZoneName; checkStockRange.LocateId = 0; checkStockRange.LocateName = ""; checkStockRange.PartId = 0; checkStockRange.PartNo = ""; checkStockRange.PartSpec = ""; checkStockRange.FactoryId = factoryId; checkStockRange.FactoryCode = factoryCode; checkStockRangeList.Add(checkStockRange); } else { for (int j = 0; j < partNoDetailRowList.Count; j++) { WmsCheckStockRange checkStockRange = new WmsCheckStockRange(); checkStockRange.ZoneId = zoneNameDetailRowList[i].ZoneId; checkStockRange.ZoneName = string.IsNullOrEmpty(zoneNameDetailRowList[i].ZoneName) ? "" : zoneNameDetailRowList[i].ZoneName; checkStockRange.LocateId = 0; checkStockRange.LocateName = ""; checkStockRange.PartId = partNoDetailRowList[j].PartId; checkStockRange.PartNo = partNoDetailRowList[j].PartNo; checkStockRange.PartSpec = string.IsNullOrEmpty(partNoDetailRowList[j].PartSpec) ? "" : partNoDetailRowList[j].PartSpec; checkStockRange.FactoryId = factoryId; checkStockRange.FactoryCode = factoryCode; checkStockRangeList.Add(checkStockRange); } } } } else if (locateNameDetailRowList.Count != 0) { for (int i = 0; i < locateNameDetailRowList.Count; i++) { if (partNoDetailRowList.Count == 0) { WmsCheckStockRange checkStockRange = new WmsCheckStockRange(); checkStockRange.ZoneId = 0; checkStockRange.ZoneName = ""; checkStockRange.LocateId = locateNameDetailRowList[i].LocateId; checkStockRange.LocateName = string.IsNullOrEmpty(locateNameDetailRowList[i].LocateName) ? "" : locateNameDetailRowList[i].LocateName; checkStockRange.PartId = 0; checkStockRange.PartNo = ""; checkStockRange.PartSpec = ""; checkStockRange.FactoryId = factoryId; checkStockRange.FactoryCode = factoryCode; checkStockRangeList.Add(checkStockRange); } else { for (int j = 0; j < partNoDetailRowList.Count; j++) { WmsCheckStockRange checkStockRange = new WmsCheckStockRange(); checkStockRange.ZoneId = 0; checkStockRange.ZoneName = ""; checkStockRange.LocateId = locateNameDetailRowList[i].LocateId; checkStockRange.LocateName = string.IsNullOrEmpty(locateNameDetailRowList[i].LocateName) ? "" : locateNameDetailRowList[i].LocateName; checkStockRange.PartId = partNoDetailRowList[j].PartId; checkStockRange.PartNo = partNoDetailRowList[j].PartNo; checkStockRange.PartSpec = string.IsNullOrEmpty(partNoDetailRowList[j].PartSpec) ? "" : partNoDetailRowList[j].PartSpec; checkStockRange.FactoryId = factoryId; checkStockRange.FactoryCode = factoryCode; checkStockRangeList.Add(checkStockRange); } } } } else { for (int j = 0; j < partNoDetailRowList.Count; j++) { WmsCheckStockRange checkStockRange = new WmsCheckStockRange(); checkStockRange.ZoneId = 0; checkStockRange.ZoneName = ""; checkStockRange.LocateId = 0; checkStockRange.LocateName = ""; checkStockRange.PartId = partNoDetailRowList[j].PartId; checkStockRange.PartNo = partNoDetailRowList[j].PartNo; checkStockRange.PartSpec = string.IsNullOrEmpty(partNoDetailRowList[j].PartSpec) ? "" : partNoDetailRowList[j].PartSpec; checkStockRange.FactoryId = factoryId; checkStockRange.FactoryCode = factoryCode; checkStockRangeList.Add(checkStockRange); } } String message = ""; try { checkStock.CreateUserId = CurrentEmp.EmpId; bool bl = this.service.saveCycleCountManage(checkStock, checkStockPartList, checkStockZoneList, checkStockLocateList, checkStockRangeList); if (bl == true) { message = "添加成功"; } else { message = "添加失败!"; } } catch (Exception e) { message = "添加失败!"; } Hashtable result = new Hashtable(); result.Add("message", message); return Json(result); } public ActionResult GetErpwarehouse() { int factoryId = CurrentEmp.FactoryId; Hashtable resault = new Hashtable(); List pdlineList = service.GetErpwarehouse(factoryId); resault.Add("list", pdlineList); return Json(resault); } //根据库区筛选零件号信息 public ActionResult getPartNoByZoneIds(string zoneIds) { Hashtable result = new Hashtable(); List partList = this.service.getPartNoByZoneIds(zoneIds); result.Add("rows", partList); result.Add("pager.totalRows", partList.Count); return Json(result); } //根据库位筛选零件号信息 public ActionResult getPartNoByLocateIds(string locateIds) { Hashtable result = new Hashtable(); List partList = this.service.getPartNoByLocateIds(locateIds); result.Add("rows", partList); result.Add("pager.totalRows", partList.Count); return Json(result); } //根据库区或库位筛选零件号信息 public ActionResult getPartNoByZoneIdsOrLocateIds(string zoneIds, string locateIds) { Hashtable result = new Hashtable(); List partList = this.service.getPartNoByZoneIdsOrLocateIds(zoneIds, locateIds); result.Add("rows", partList); result.Add("pager.totalRows", partList.Count); return Json(result); } /// /// 开始盘点 /// /// /// public ActionResult onBeginCycle(String orderNo) { Hashtable result = new Hashtable(); try { string empId = CurrentEmp.EmpId.ToString(); result = this.service.onBeginCycle(orderNo, empId); } catch (Exception e) { result.Add("status", -1); result.Add("message", "开始盘点失败"); } return Json(result); } //整单解冻调差 public ActionResult onAdjustment(String orderNo) { Hashtable result = new Hashtable(); try { string empId = CurrentEmp.EmpId.ToString(); SysBase GetSysBase = this.service.GetSAPDIFOByBase(); if (GetSysBase.ParamValue =="N" ) { //判断不开启接口调差 result = this.service.onAdjustment(orderNo, empId); } else { //判断开启SAP接口调差 List sapDifos = this.service.GetSAPDIFO(orderNo, empId); if (sapDifos.Count == 0) { result.Add("status", -1); result.Add("message", "未得到调差指令,解冻调差失败!"); } else { result = this.service.onAdjustment(orderNo, empId); } } } catch (Exception e) { result.Add("status", -1); result.Add("message", "整单解冻调差失败"); } return Json(result); } //整单解冻不调差 public ActionResult onNoAdjustment(String orderNo) { Hashtable result = new Hashtable(); try { string empId = CurrentEmp.EmpId.ToString(); result = this.service.onNoAdjustment(orderNo, empId); } catch (Exception e) { result.Add("status", -1); result.Add("message", "整单解冻不调差失败"); } return Json(result); } //关闭盘点 public ActionResult onCloseCycle(String orderNo) { Hashtable result = new Hashtable(); try { string empId = CurrentEmp.EmpId.ToString(); result = this.service.onCloseCycle(orderNo, empId); } catch (Exception e) { result.Add("status", -1); result.Add("message", "关闭盘点指令失败"); } return Json(result); } //完成盘点 public ActionResult onCompleteCycle(String orderNo) { Hashtable result = new Hashtable(); try { string empId = CurrentEmp.EmpId.ToString(); result = this.service.onCompleteCycle(orderNo, empId); } catch (Exception e) { result.Add("status", -1); result.Add("message", "完成盘点失败"); } return Json(result); } //复盘 public ActionResult onReplay(String orderNo) { Hashtable result = new Hashtable(); try { string empId = CurrentEmp.EmpId.ToString(); result = this.service.onReplay(orderNo, empId); } catch (Exception e) { result.Add("status", -1); result.Add("message", "复盘失败"); } return Json(result); } /// /// 关闭 /// /// /// public ActionResult onClose(String ids) { int delCount = 0; try { string empId = CurrentEmp.EmpId.ToString(); delCount = this.service.onClose(ids, empId); } catch (Exception e) { delCount = -1; } Hashtable result = new Hashtable(); result.Add("status", delCount); return Json(result); } /// /// 启用 /// /// /// public ActionResult onEnable(String ids) { int delCount = 0; try { string empId = CurrentEmp.EmpId.ToString(); delCount = this.service.EnableData(ids, empId); } catch (Exception e) { delCount = -1; } Hashtable result = new Hashtable(); result.Add("status", delCount); return Json(result); } /// /// 禁用 /// /// /// public ActionResult onDisable(String ids) { int delCount = 0; try { string empId = CurrentEmp.EmpId.ToString(); delCount = this.service.DisableData(ids, empId); } catch (Exception e) { delCount = -1; } Hashtable result = new Hashtable(); result.Add("status", delCount); return Json(result); } //导出 public ActionResult exportData(String orderNo) { List dataHt = this.service.getCheckStockListByExportData(orderNo); var memoryStream = ExcelHelper.ToExcel(dataHt); string dateTime = DateTime.Now.ToString("yyyyMMddHHmmss"); return File(memoryStream.ToArray(), "application/ms-excel", "盘点单列表明细" + dateTime + ".xls"); } } }