using System.Collections; using Estsh.Core.Util; using Estsh.Core.Repository.IRepositories; using Estsh.Core.Services.IServices; using Estsh.Core.Models; using Estsh.Core.Model.Result; using Estsh.Core.IRepositories; using Estsh.Core.Dapper; using Estsh.Core.Model.ExcelModel; using Dapper; using System.Text; using Estsh.Core.Model.EnumUtil; /*************************************************************************************************** * * 更新人:sitong.dong * 描述:移动单管理 * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Services { public class MovementOutstockManageService : BaseService, IMovementOutstockManageService { private readonly IMovementOutstockManageRepository repository; public MovementOutstockManageService(IMovementOutstockManageRepository _repository) : base(_repository) { repository = _repository; } public Hashtable getMoveHeaderListByPage(string orderNo, string orderType, string orderStatus, string startTime, string endTime, string enabled, int factoryId, Pager pager, String direction, String sort) { Hashtable result = new Hashtable(); String strWhere = " 1=1 "; if (orderNo != null && !orderNo.Trim().Equals("")) { strWhere += "and a.order_no like '%" + orderNo.Trim() + "%' "; } if (orderType != null && !orderType.Trim().Equals("")) { strWhere += "and a.order_type ='" + orderType.Trim() + "' "; } if (orderStatus != null && !orderStatus.Trim().Equals("")) { strWhere += "and a.order_status ='" + orderStatus.Trim() + "' "; } if (!String.IsNullOrEmpty(startTime) && !String.IsNullOrEmpty(endTime)) { strWhere += " and a.create_time BETWEEN '" + startTime.Trim() + "' AND '" + endTime.Trim() + "'"; } else if (String.IsNullOrEmpty(startTime) && !String.IsNullOrEmpty(endTime)) { strWhere += " and a.create_time < '" + endTime.Trim() + "'"; } else if (!String.IsNullOrEmpty(startTime) && String.IsNullOrEmpty(endTime)) { strWhere += " and a.create_time >'" + startTime.Trim() + "'"; } if (enabled != null && !enabled.Trim().Equals("")) { strWhere += "and a.enabled = '" + enabled.Trim() + "' "; } strWhere += " and a.factory_id = " + factoryId + " "; String orderBy = ""; if (sort != null && !"".Equals(sort.Trim())) { orderBy += typeof(WmsOutstock).GetEntityColumnName(sort.Trim()) + " " + direction; } else { orderBy += typeof(WmsOutstock).GetEntityColumnName("ruid") + " " + direction; } return repository.getMoveHeaderListByPage(pager.pageSize, pager.pageNo, strWhere, orderBy); } public Hashtable getMoveDetailListByPage(string orderNo, string enabled, int factoryId) { Hashtable result = new Hashtable(); String strWhere = " 1=1 "; if (orderNo != null && !orderNo.Trim().Equals("")) { strWhere += "and a.order_no like '%" + orderNo.Trim() + "%' "; } if (enabled != null && !enabled.Trim().Equals("")) { strWhere += "and a.enabled = '" + enabled.Trim() + "' "; } strWhere += " and a.factory_id = " + factoryId + " "; return repository.getMoveDetailListByPage(strWhere); } public Hashtable getMoveSnListByPage(string orderNo, string partNo, string enabled, int factoryId) { Hashtable result = new Hashtable(); String strWhere = " 1=1 "; if (orderNo != null && !orderNo.Trim().Equals("")) { strWhere += "and a.order_no = '" + orderNo.Trim() + "' "; } if (partNo != null && !partNo.Trim().Equals("")) { strWhere += "and a.part_no = '" + partNo.Trim() + "' "; } if (enabled != null && !enabled.Trim().Equals("")) { strWhere += "and a.enabled = '" + enabled.Trim() + "' "; } strWhere += " and a.factory_id = " + factoryId + " "; return repository.getMoveSnListByPage(strWhere); } public List getMoveSnListByPrint(string orderNo, string enabled, int factoryId) { String strWhere = " 1=1 "; if (orderNo != null && !orderNo.Trim().Equals("")) { strWhere += "and a.order_no = '" + orderNo.Trim() + "' "; } if (enabled != null && !enabled.Trim().Equals("")) { strWhere += "and a.enabled = '" + enabled.Trim() + "' "; } strWhere += " and a.factory_id = " + factoryId + " "; return repository.getMoveSnListByPrint(strWhere); } public Hashtable onBarcodeGenerator(String ids) { ids = ids.Substring(0, ids.Length - 1); return this.repository.onBarcodeGenerator(ids); } public List GetErpwarehouse() { return repository.GetErpwarehouse(); } public List GetMoveOrderType() { return repository.GetMoveOrderType(); } public List GetMoveOrderStatus() { return repository.GetMoveOrderStatus(); } public List getSelectFactory() { return repository.getSelectFactory(); } public List getSelectWarehouse() { return repository.getSelectWarehouse(); } public List getSelectWarehouse(string warehouseid) { return repository.getSelectWarehouse(warehouseid); } public List getSelectZone(string zoneid) { return repository.getSelectZone(zoneid); } public List getSelectZone() { return repository.getSelectZone(); } public List getSelectLocate() { return repository.getSelectLocate(); } public List getSelectLocate(string locateid) { return repository.getSelectLocate(locateid); } public List getSelectVendor() { return repository.getSelectVendor(); } public List getSelectVendor(string vendorName) { return repository.getSelectVendor(vendorName); } public List getSelectCustomer() { return repository.getSelectCustomer(); } public List getSelectCustomer(string customerId) { return repository.getSelectCustomer(customerId); } public List GetPart() { return repository.GetPart(0); } public List GetPart(string PartNo) { return repository.GetPart(0, PartNo); } /// /// 保存菜单数据 /// /// /// public bool saveMovementManage(WmsOutstock htParams, IList htDetailParams) { return repository.saveMovementManage(htParams, htDetailParams); } public List GetPartNoInfo(string part_no) { return this.repository.GetPartNoInfo(part_no); } public List GetPartNoInfoByPartNo(string part_no) { return this.repository.GetPartNoInfoByPartNo(part_no); } public List GetPartSpecInfo(string partSpec) { return this.repository.GetPartSpecInfo(partSpec); } public List GetPartSpecInfoByPartSpec(string partSpec) { return this.repository.GetPartSpecInfoByPartSpec(partSpec); } /// /// 关闭 /// /// /// public bool onClose(String ids, String empId) { ids = ids.Substring(0, ids.Length - 1); return this.repository.onClose(ids, empId); } /// /// 启用 /// /// /// public bool EnableData(String ids) { ids = ids.Substring(0, ids.Length - 1); return this.repository.EnableData(ids); } /// /// 禁用 /// /// /// public bool DisableData(String ids) { ids = ids.Substring(0, ids.Length - 1); return this.repository.DisableData(ids); } /// /// 导入 /// public Hashtable ImportExcel(List inputStream, int factoryId, string factoryCode, int empId) { try { Hashtable result = new Hashtable(); List sqlLists = new List(); List parameters = new List(); DynamicParameters Params = new DynamicParameters(); //判断EXCEL是否存在数据 if (inputStream == null || inputStream.Count == 0) { result.Add("message", "导入数据为空,请重新导入!"); result.Add("flag", "error"); return result; } int OrderType = 0; string orderNo = ""; int orderType = 0; if (inputStream[0].OrderTypeDesc.Trim() == "零星出库单") { orderNo = repository.GetOrderNo("ShiftOutgoing", "O");//零星出库单 orderType = (int)WmsEnumUtil.OutStockType.EXCEPTION_OUT_STOCK; } else if (inputStream[0].OrderTypeDesc.Trim() == "NC报废单") { orderNo = repository.GetOrderNo("ShiftNCScrap", "S");//NC报废单 orderType = (int)WmsEnumUtil.OutStockType.NC_SCRAP; } else if (inputStream[0].OrderTypeDesc.Trim() == "销售发运单-JIS") { orderNo = repository.GetOrderNo("ShiftNonJis", "F");//销售发运单-JIS orderType = (int)WmsEnumUtil.OutStockType.SALE_SHIPPING; } else if (inputStream[0].OrderTypeDesc.Trim() == "销售发运单-非JIS") { orderNo = repository.GetOrderNo("ShiftNonJis", "F");//销售发运单-非JIS orderType = (int)WmsEnumUtil.OutStockType.SALE_SHIPPING_NJIS; } else if (inputStream[0].OrderTypeDesc.Trim() == "供应商退货单") { orderNo = repository.GetOrderNo("ShiftProduction", "G");//供应商退货单 orderType = (int)WmsEnumUtil.OutStockType.SUPPLIER_RETURN; } else if (inputStream[0].OrderTypeDesc.Trim() == "委外发运单") { orderNo = repository.GetOrderNo("ShiftProduction", "W");//委外发运单 orderType = (int)WmsEnumUtil.OutStockType.OUTSOURCE_ACTION; } else { result.Add("message", "导入数据单据类型错误,请检查!"); result.Add("flag", "error"); return result; } int vendorId = 0; string vendorCode = ""; List sysVendors = repository.getSelectVendor(inputStream[0].VendorCode); if (sysVendors.Count>0) { vendorId = sysVendors[0].VendorId; vendorCode = sysVendors[0].VendorCode; } else { result.Add("message", "导入数据供应商代码不存在,请检查!"); result.Add("flag", "error"); return result; } //判断零件号是否存在 StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("INSERT INTO dbo.wms_outstock(order_no,order_type,order_status,vendor_id,vendor_code,customer_id,customer_code,ref_order_no,factory_id,factory_code,enabled,create_userid,create_time,guid)"); SqlStringBuilder.Append("VALUES(@orderNo, @orderType, 10,@vendorId,@vendorCode,@customerId,@customerCode,@refOrderNo, @factoryId, @factoryCode, @enabled, @createUserid, CONVERT(varchar(50), GETDATE(), 21), newid()) "); sqlLists.Add(SqlStringBuilder.ToString()); DynamicParameters dynamic = new DynamicParameters(); dynamic.Add("@orderNo", orderNo); dynamic.Add("@orderType", orderType); dynamic.Add("@orderStatus", 10); dynamic.Add("@vendorId", vendorId); dynamic.Add("@vendorCode", vendorCode); dynamic.Add("@customerId", 0); dynamic.Add("@customerCode", ""); dynamic.Add("@refOrderNo", ""); dynamic.Add("@enabled", "Y"); dynamic.Add("@factoryId", factoryId); dynamic.Add("@factoryCode", factoryCode); dynamic.Add("@createUserid", empId); parameters.Add(dynamic); for (int i = 0; i < inputStream.Count; i++) { int PartId = 0; string partNo = ""; string partSpec = ""; string unit = ""; List sysParts = repository.GetPartNoInfoByPartNo(inputStream[i].PartNo.Trim()); if (sysParts.Count > 0) { PartId = sysParts[0].PartId; partNo = sysParts[0].PartNo; partSpec = sysParts[0].PartSpec; unit = string.IsNullOrEmpty(sysParts[0].Unit) ? "" : sysParts[0].Unit; } else { result.Add("message", "导入数据零件号不存在,请检查!"); result.Add("flag", "error"); return result; } int warehouseId = 0; string warehouseName = ""; List sysWarehouses = repository.getSelectWarehouseByName(inputStream[i].WarehouseName.Trim()); if (sysWarehouses.Count > 0) { warehouseId = sysWarehouses[0].WarehouseId; warehouseName = sysWarehouses[0].WarehouseName; } else { result.Add("message", "导入数据仓库不存在,请检查!"); result.Add("flag", "error"); return result; } int zoneId = 0; string zoneName = ""; string erpWarehouse = ""; List sysZones = repository.getSelectZoneByName(inputStream[i].ZoneName.Trim()); if (sysZones.Count > 0) { zoneId = sysZones[0].ZoneId; zoneName = sysZones[0].ZoneName; erpWarehouse = sysZones[0].ErpWarehouse; } else { result.Add("message", "导入数据库区不存在,请检查!"); result.Add("flag", "error"); return result; } StringBuilder SqlDetailStringBuilder = new StringBuilder(1024); SqlDetailStringBuilder.Append("INSERT INTO dbo.wms_outstock_detail(order_no,item_no,part_id,part_no,part_spec,qty,pick_qty,out_qty,unit,plan_date,plan_time,item_status"); SqlDetailStringBuilder.Append(", src_warehouse_id, src_warehouse_name, src_zone_id, src_zone_name,src_locate_id,src_locate_name"); SqlDetailStringBuilder.Append(", src_erp_warehouse, factory_id, factory_code, enabled, create_userid, create_time, guid)"); SqlDetailStringBuilder.Append("VALUES(@orderNo, @itemNo, @partId, @partNo, @partSpec, @qty, @pickQty, @outQty, @unit, @planDate, @planTime, @itemStatus, @srcWarehouseId"); SqlDetailStringBuilder.Append(", @srcWarehouseName, @srcZoneId, @srcZoneName,@srcLocateId,@srcLocateName, @srcErpWarehouse"); SqlDetailStringBuilder.Append(", @factoryId, @factoryCode, @enabled, @createUserid, CONVERT(varchar(50), GETDATE(), 21), newid())"); sqlLists.Add(SqlDetailStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", orderNo); dynamic.Add("@itemNo", i + 1); dynamic.Add("@partId", PartId); dynamic.Add("@partNo", partNo); dynamic.Add("@partSpec", partSpec); dynamic.Add("@unit", unit); dynamic.Add("@qty", inputStream[i].Qty); dynamic.Add("@pickQty", 0); dynamic.Add("@outQty", 0); dynamic.Add("@planDate", inputStream[i].PlanDate); dynamic.Add("@planTime", ""); dynamic.Add("@itemStatus", "10"); dynamic.Add("@srcWarehouseId", warehouseId); dynamic.Add("@srcWarehouseName", warehouseName); dynamic.Add("@srcZoneId", zoneId); dynamic.Add("@srcZoneName", zoneName); dynamic.Add("@srcLocateId", 0); dynamic.Add("@srcLocateName", ""); dynamic.Add("@srcErpWarehouse", erpWarehouse); dynamic.Add("@factoryId", factoryId); dynamic.Add("@factoryCode", factoryCode); dynamic.Add("@enabled", "Y"); dynamic.Add("@createUserid", empId); parameters.Add(dynamic); } if (repository.InsertData(sqlLists, parameters)) { result.Add("message", "导入成功"); result.Add("flag", "OK"); } else { result.Add("message", "导入失败"); result.Add("flag", "error"); } return result; } catch (Exception ex) { Hashtable result = new Hashtable(); result.Add("message", "导入失败"); result.Add("flag", "error"); return result; } } } }