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.
254 lines
14 KiB
C#
254 lines
14 KiB
C#
using Dapper;
|
|
using Estsh.Core.Base;
|
|
using Estsh.Core.Dapper;
|
|
using Estsh.Core.Wms.IRepositories;
|
|
using Estsh.Core.Model.Result;
|
|
using Estsh.Core.Repositories;
|
|
using System.Collections;
|
|
using System.Data;
|
|
using System.Text;
|
|
using System.Security.Cryptography;
|
|
using System.Text.Json;
|
|
using Estsh.Core.Models;
|
|
using Newtonsoft.Json.Linq;
|
|
using Estsh.Core.Model.EnumUtil;
|
|
|
|
namespace Estsh.Core.Wms.Repositories
|
|
{
|
|
public class ReworkPartRepository : BaseRepository<BaseEntity>, IReworkPartRepository
|
|
{
|
|
public ReworkPartRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取返工返修物料拉动的数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<MesWmsReworkPart> GetReworkPartInfo()
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
StringBuilder SqlStringBuilder = new StringBuilder(1024);
|
|
//SqlStringBuilder.Append("select * from MES_WMS_REWORK_PART where syn_time in (select top 1 syn_time from MES_WMS_REWORK_PART where syn_flg = '10' order by syn_time) and syn_flg = '10' ");
|
|
SqlStringBuilder.Append("select * from MES_WMS_REWORK_PART (nolock) where serial_number in (select top 1 serial_number from MES_WMS_REWORK_PART (nolock) where syn_flg = '10' order by syn_time) and syn_flg = '10' ");
|
|
return dbConn.Query<MesWmsReworkPart>(SqlStringBuilder.ToString()).ToList();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取订单编号
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GetOrderNo(string stockOrder, string p)
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
dbConn.Open();
|
|
DynamicParameters list = new DynamicParameters();
|
|
list.Add("@order_type", stockOrder);
|
|
list.Add("@order_prefix", p);
|
|
list.Add("@order_no", null, DbType.String, ParameterDirection.Output, 50);
|
|
|
|
var hashtable = dbConn.Execute("sys_create_orderno", list, commandType: CommandType.StoredProcedure);
|
|
string result = list.Get<string>("@order_no");
|
|
return result;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 处理返工返修物料拉动的数据
|
|
/// </summary>
|
|
/// <param name="sapSu"></param>
|
|
/// <returns></returns>
|
|
public bool InsertReworkPartInfo(List<MesWmsReworkPart> mesWmsReworkList)
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
WmsSubcontractData wmsSubcontract = new WmsSubcontractData();
|
|
List<string> sqlList = new List<string>();
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
|
StringBuilder SqlStringBuilder = new StringBuilder(1024);
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
//List<MesWmsReworkPart> WmsRework = mesWmsReworkList.GroupBy(a => a.SerialNumber).Select(b => new MesWmsReworkPart
|
|
//{
|
|
// SerialNumber = b.Key,
|
|
// ItemQty = b.Count()
|
|
//}).ToList();
|
|
|
|
|
|
//sqlList = new List<string>();
|
|
//parametersList = new List<DynamicParameters>();
|
|
//List<MesWmsReworkPart> mesWmsReworks = mesWmsReworkList.Where(a => a.SerialNumber == WmsRework[0].SerialNumber).ToList();
|
|
List<MesWmsReworkPart> mesWmsReworks = mesWmsReworkList;
|
|
|
|
StringBuilder factoryStringBuilder = new StringBuilder(1024);
|
|
factoryStringBuilder.Append("select * from sys_factory (nolock) where factory_code='" + mesWmsReworks[0].FactoryCode + "'");//工厂代码获取工厂ID
|
|
List<SysFactory> sysFactory = dbConn.Query<SysFactory>(factoryStringBuilder.ToString()).ToList();
|
|
|
|
SqlStringBuilder = new StringBuilder();
|
|
SqlStringBuilder.Append(" SELECT * from sys_pdline (nolock) WHERE pdline_code='" + mesWmsReworks[0].PdlineCode + "'");
|
|
List<SysPdline> sysPdlines = dbConn.Query<SysPdline>(SqlStringBuilder.ToString()).ToList();
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("INSERT INTO dbo.wms_move_header ");
|
|
SqlStringBuilder.Append(" (order_no,order_type,order_status,ref_order_no ");
|
|
SqlStringBuilder.Append(" ,factory_id,factory_code,enabled,create_userid ");
|
|
SqlStringBuilder.Append(" ,create_time,guid) ");
|
|
SqlStringBuilder.Append(" VALUES(@orderNo,@orderType,@orderStatus,@refOrderNo ");
|
|
SqlStringBuilder.Append(" ,@factoryId,@factoryCode,@enabled,@createUserid ");
|
|
SqlStringBuilder.Append(" ,@createTime,@guid) ");
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
|
string orderNo = GetOrderNo("ShiftWarehouse", "RR");
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);//返修NC入库单
|
|
parameters.Add("@orderType", (int)WmsEnumUtil.MoveOrderType.REWORK_NC_IN_STOCK);//NC返修NC入库单
|
|
parameters.Add("@orderStatus", (int)WmsEnumUtil.MoveOrderStatus.CREATE);//已创建
|
|
parameters.Add("@refOrderNo", "");//
|
|
|
|
if (sysFactory.Count > 0)
|
|
{
|
|
parameters.Add("@factoryId", sysFactory[0].FactoryId);//
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@factoryId", 0);//
|
|
}
|
|
parameters.Add("@factoryCode", mesWmsReworks[0].FactoryCode);//工厂
|
|
parameters.Add("@enabled", "Y");//
|
|
parameters.Add("@createUserid", 0);//
|
|
parameters.Add("@createTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//更新日期
|
|
parameters.Add("@guid", Guid.NewGuid().ToString());//
|
|
parametersList.Add(parameters);
|
|
|
|
for (int i = 0; i < mesWmsReworks.Count; i++)
|
|
{
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("INSERT INTO dbo.wms_move_detail ");
|
|
SqlStringBuilder.Append(" ([order_no], [item_no], [part_id], [part_no], [part_spec], [qty], [pick_qty], [out_qty], [rec_qty], [unit], [plan_date] ");
|
|
SqlStringBuilder.Append(" , [plan_time], [item_status], [src_warehouse_id], [src_warehouse_name], [dest_warehouse_id], [dest_warehouse_name] ");
|
|
SqlStringBuilder.Append(" , [src_zone_id], [src_zone_name], [dest_zone_id], [dest_zone_name], [src_erp_warehouse], [dest_erp_warehouse] ");
|
|
SqlStringBuilder.Append(" , [factory_id], [factory_code], [enabled], [create_userid], [create_time] ");
|
|
SqlStringBuilder.Append(" , [update_userid], [update_time], [guid]) ");
|
|
SqlStringBuilder.Append(" VALUES(@orderNo,@itemNo,@partId,@partNo,@partSpec,@qty,@pickQty,@outQty,@rec_qty,@unit ");
|
|
SqlStringBuilder.Append(" ,@planDate,@planTime,@itemStatus,@srcWarehouseId,@srcWarehouseName,@dest_warehouse_id,@dest_warehouse_name,@srcZoneId ");
|
|
SqlStringBuilder.Append(" ,@srcZoneName,@dest_zone_id,@dest_zone_name,@srcErpWarehouse,@dest_erp_warehouse,@factoryId ");
|
|
SqlStringBuilder.Append(" ,@factoryCode,@enabled,@createUserid,@createTime,@update_userid,@update_time,@guid) ");
|
|
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);//返修NC入库单
|
|
parameters.Add("@itemNo", (i + 1) * 10);//序号
|
|
|
|
StringBuilder partNoStringBuilder = new StringBuilder(1024);
|
|
partNoStringBuilder.Append("select * from sys_part (nolock) where part_no='" + mesWmsReworks[i].ItemPartNo + "'");//零件号ID
|
|
List<SysPart> sysPart = dbConn.Query<SysPart>(partNoStringBuilder.ToString()).ToList();
|
|
if (sysPart.Count > 0)
|
|
{
|
|
parameters.Add("@partId", sysPart[0].PartId);//
|
|
parameters.Add("@partNo", sysPart[0].PartNo);//零件号
|
|
parameters.Add("@partSpec", sysPart[0].PartSpec);//简码
|
|
parameters.Add("@unit", sysPart[0].Unit);//单位
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@partId", 0);//零件号ID
|
|
parameters.Add("@partNo", mesWmsReworks[i].ItemPartNo);//零件号
|
|
parameters.Add("@partSpec", "");//简码
|
|
parameters.Add("@unit", "");//单位
|
|
}
|
|
|
|
parameters.Add("@qty", mesWmsReworks[i].ItemQty);//数量
|
|
parameters.Add("@pickQty", 0);//
|
|
parameters.Add("@outQty", 0);//
|
|
parameters.Add("@rec_qty", 0);//
|
|
parameters.Add("@planDate", "");//计划日期
|
|
parameters.Add("@planTime", "");//计划时间
|
|
parameters.Add("@itemStatus", "10");//状态
|
|
|
|
if (sysPdlines.Count > 0)
|
|
{
|
|
parameters.Add("@srcWarehouseId", sysPdlines[0].SrcWarehouseId);//源仓库ID
|
|
parameters.Add("@srcWarehouseName", sysPdlines[0].SrcWarehouseName);//源仓库
|
|
parameters.Add("@dest_warehouse_id", "");//目标源仓库ID
|
|
parameters.Add("@dest_warehouse_name", "");//目标源仓库
|
|
parameters.Add("@srcZoneId", sysPdlines[0].SrcZoneId);//源库区ID
|
|
parameters.Add("@srcZoneName", sysPdlines[0].SrcZoneName);//源库区
|
|
parameters.Add("@dest_zone_id", "");//目标源库区ID
|
|
parameters.Add("@dest_zone_name", "");//目标源库区
|
|
parameters.Add("@srcErpWarehouse", "");//源ERP库存地
|
|
parameters.Add("@dest_erp_warehouse", "");//目标源ERP库存地
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
stringBuilder.Append(" SELECT * from sys_zone (nolock) WHERE zone_name='" + sysPdlines[0].SrcZoneName + "'");
|
|
List<SysZone> sysZones = dbConn.Query<SysZone>(stringBuilder.ToString()).ToList();
|
|
if (sysZones.Count > 0)
|
|
{
|
|
parameters.Add("@srcErpWarehouse", sysZones[0].ErpWarehouse);//ERP库存地
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@srcErpWarehouse", "");//ERP库存地
|
|
}
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@srcWarehouseId", "");//源仓库ID
|
|
parameters.Add("@srcWarehouseName", "");//源仓库
|
|
parameters.Add("@dest_warehouse_id", "");//目标源仓库ID
|
|
parameters.Add("@dest_warehouse_name", "");//目标源仓库
|
|
parameters.Add("@srcZoneId", "");//源库区ID
|
|
parameters.Add("@srcZoneName", "");//源库区
|
|
parameters.Add("@dest_zone_id", "");//目标源库区ID
|
|
parameters.Add("@dest_zone_name", "");//目标源库区
|
|
parameters.Add("@srcErpWarehouse", "");//源ERP库存地
|
|
parameters.Add("@dest_erp_warehouse", "");//目标源ERP库存地
|
|
}
|
|
|
|
if (sysFactory.Count > 0)
|
|
{
|
|
parameters.Add("@factoryId", sysFactory[0].FactoryId);//工厂ID
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@factoryId", 0);
|
|
}
|
|
parameters.Add("@factoryCode", mesWmsReworks[i].FactoryCode);//工厂代码
|
|
parameters.Add("@enabled", "Y");
|
|
parameters.Add("@createUserid", 0);
|
|
parameters.Add("@createTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//更新日期
|
|
parameters.Add("@update_userid", 0);
|
|
parameters.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//更新日期
|
|
parameters.Add("@guid", Guid.NewGuid().ToString());//
|
|
parametersList.Add(parameters);
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("update MES_WMS_REWORK_PART set syn_flg=@synFlg,syn_time=@synTime where pdline_code=@pdlineCode and item_part_no=@itemPartNo ");//更新同步状态
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@pdlineCode", mesWmsReworks[i].PdlineCode);//产线
|
|
parameters.Add("@itemPartNo", mesWmsReworks[i].ItemPartNo);//零件号
|
|
parameters.Add("@serialNumber", mesWmsReworks[i].SerialNumber);//条码
|
|
parameters.Add("@synFlg", "20");//
|
|
parameters.Add("@synTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
parametersList.Add(parameters);
|
|
}
|
|
|
|
bool staResult = ExecuteTransaction(sqlList, parametersList);
|
|
if (staResult)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|