|
|
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;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
} |