You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

483 lines
20 KiB
C#

2 years ago
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<WmsOutstock>, 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<WmsOutstockDetail> 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<KeyValueResult> GetErpwarehouse()
{
return repository.GetErpwarehouse();
}
public List<KeyValueResult> GetMoveOrderType()
{
return repository.GetMoveOrderType();
}
public List<KeyValueResult> GetMoveOrderStatus()
{
return repository.GetMoveOrderStatus();
}
public List<KeyValueResult> getSelectFactory()
{
return repository.getSelectFactory();
}
public List<KeyValueResult> getSelectWarehouse()
{
return repository.getSelectWarehouse();
}
public List<SysWarehouse> getSelectWarehouse(string warehouseid)
{
return repository.getSelectWarehouse(warehouseid);
}
public List<SysZone> getSelectZone(string zoneid)
{
return repository.getSelectZone(zoneid);
}
public List<KeyValueResult> getSelectZone()
{
return repository.getSelectZone();
}
public List<KeyValueResult> getSelectLocate()
{
return repository.getSelectLocate();
}
public List<SysLocate> getSelectLocate(string locateid)
{
return repository.getSelectLocate(locateid);
}
public List<KeyValueResult> getSelectVendor()
{
return repository.getSelectVendor();
}
public List<SysVendor> getSelectVendor(string vendorName)
{
return repository.getSelectVendor(vendorName);
}
public List<KeyValueResult> getSelectCustomer()
{
return repository.getSelectCustomer();
}
public List<SysCustomer> getSelectCustomer(string customerId)
{
return repository.getSelectCustomer(customerId);
}
public List<KeyValueResult> GetPart()
{
return repository.GetPart(0);
}
public List<SysPart> GetPart(string PartNo)
{
return repository.GetPart(0, PartNo);
}
/// <summary>
/// 保存菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public bool saveMovementManage(WmsOutstock htParams, IList<WmsOutstockDetail> htDetailParams)
{
return repository.saveMovementManage(htParams, htDetailParams);
}
public List<SysPart> GetPartNoInfo(string part_no)
{
return this.repository.GetPartNoInfo(part_no);
}
public List<SysPart> GetPartNoInfoByPartNo(string part_no)
{
return this.repository.GetPartNoInfoByPartNo(part_no);
}
public List<SysPart> GetPartSpecInfo(string partSpec)
{
return this.repository.GetPartSpecInfo(partSpec);
}
public List<SysPart> GetPartSpecInfoByPartSpec(string partSpec)
{
return this.repository.GetPartSpecInfoByPartSpec(partSpec);
}
/// <summary>
/// 关闭
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public bool onClose(String ids, String empId)
{
ids = ids.Substring(0, ids.Length - 1);
return this.repository.onClose(ids, empId);
}
/// <summary>
/// 启用
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public bool EnableData(String ids)
{
ids = ids.Substring(0, ids.Length - 1);
return this.repository.EnableData(ids);
}
/// <summary>
/// 禁用
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public bool DisableData(String ids)
{
ids = ids.Substring(0, ids.Length - 1);
return this.repository.DisableData(ids);
}
/// <summary>
/// 导入
/// </summary>
public Hashtable ImportExcel(List<MovementOutstockManage> inputStream, int factoryId, string factoryCode, int empId)
{
try
{
Hashtable result = new Hashtable();
List<string> sqlLists = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
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<SysVendor> 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<SysPart> 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<SysWarehouse> 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<SysZone> 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;
}
}
}
}