|
|
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;
|
|
|
using System.Diagnostics;
|
|
|
using Estsh.Core.Util;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
|
|
|
namespace Estsh.Core.Wms.Repositories
|
|
|
{
|
|
|
public class OutPdlineRepository : BaseRepository<BaseEntity>, IOutPdlineRepository
|
|
|
{
|
|
|
public OutPdlineRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询成品和半成品下线
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<MesWmsOutPdline> GetFinishedLineOffInfo(string pdlineCode)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append(" SELECT top 1000 * FROM MES_WMS_OUT_PDLINE (readpast) ");
|
|
|
sql.Append(" WHERE syn_flg = 10 AND pdline_code = @pdlineCode "); //未同步:10 已同步:20
|
|
|
sql.Append(" ORDER BY create_time ");
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@pdlineCode", pdlineCode);
|
|
|
|
|
|
return dbConn.Query<MesWmsOutPdline>(sql.ToString(), parameters).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 成品下线 处理成品和半成品下线
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool InsertFinishedLineOffInfo(List<MesWmsOutPdline> mesWmsOuts)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
|
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
|
stringBuilder.Append(" SELECT * from sys_part (nolock) ");
|
|
|
List<SysPart> sysPartsAll = dbConn.Query<SysPart>(stringBuilder.ToString()).ToList();
|
|
|
|
|
|
stringBuilder = new StringBuilder();
|
|
|
stringBuilder.Append(" SELECT * from sys_pdline (nolock) ");
|
|
|
List<SysPdline> sysPdlinesAll = dbConn.Query<SysPdline>(stringBuilder.ToString()).ToList();
|
|
|
|
|
|
StringBuilder factoryStringBuilder = new StringBuilder(1024);
|
|
|
factoryStringBuilder.Append("select * from sys_factory (nolock) ");//工厂代码获取工厂ID
|
|
|
List<SysFactory> sysFactoryAll = dbConn.Query<SysFactory>(factoryStringBuilder.ToString()).ToList();
|
|
|
|
|
|
MesWmsOutPdline mesWmsOut = new MesWmsOutPdline();
|
|
|
for (int i = 0; i < mesWmsOuts.Count; i++)
|
|
|
{
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
mesWmsOut = mesWmsOuts[i];
|
|
|
|
|
|
StringBuilder SqlStringBuilder = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
List<SysPart> sysParts = sysPartsAll.Where(a => a.PartNo == mesWmsOut.PartNo).ToList();//零件号ID
|
|
|
|
|
|
List<SysPdline> sysPdlines = sysPdlinesAll.Where(a => a.PdlineCode == mesWmsOut.PdlineCode).ToList();//产线
|
|
|
|
|
|
List<SysFactory> sysFactory = sysFactoryAll.Where(a => a.FactoryCode == mesWmsOut.FactoryCode).ToList();//工厂
|
|
|
|
|
|
stringBuilder = new StringBuilder();
|
|
|
stringBuilder.Append(" SELECT * from mes_out_pdline (nolock) WHERE work_order_no='" + mesWmsOut.WorkOrderNo + "' and pdline_code='" + mesWmsOut.PdlineCode + "' and part_no='" + mesWmsOut.PartNo + "' and serial_number='" + mesWmsOut.SerialNumber + "'");
|
|
|
List<MesOutPdline> mesOutPdlines = dbConn.Query<MesOutPdline>(stringBuilder.ToString()).ToList();
|
|
|
if (mesOutPdlines.Count > 0)
|
|
|
{
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
|
SqlStringBuilder.Append("UPDATE dbo.mes_out_pdline ");
|
|
|
SqlStringBuilder.Append(" SET work_order_no = @workOrderNo ,pdline_id = @pdlineId ");
|
|
|
SqlStringBuilder.Append(" ,pdline_code = @pdlineCode ,part_id = @partId ");
|
|
|
SqlStringBuilder.Append(" ,part_no = @partNo ,part_spec = @partSpec ");
|
|
|
SqlStringBuilder.Append(" ,serial_number = @serialNumber ,qty += @qty ");
|
|
|
SqlStringBuilder.Append(" ,lot_no = @lotNo ,product_type = @productType,product_version = @productVersion ");
|
|
|
SqlStringBuilder.Append(" ,report_status = @reportStatus ,erp_status = @erpStatus ");
|
|
|
SqlStringBuilder.Append(" ,tray_no = @tray_no ,mtoc = @mtoc ");
|
|
|
SqlStringBuilder.Append(" ,mtoc_desc = @mtoc_desc ,cartype_name = @cartype_name ");
|
|
|
SqlStringBuilder.Append(" ,factory_id = @factoryId ,factory_code = @factoryCode ");
|
|
|
SqlStringBuilder.Append(" ,enabled = @enabled ,update_userid = @updateUserid ");
|
|
|
SqlStringBuilder.Append(" ,update_time = @updateTime,isrejects=@isRejects ");
|
|
|
SqlStringBuilder.Append(" WHERE ruid=@ruid ");
|
|
|
|
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
parameters.Add("@workOrderNo", mesWmsOut.WorkOrderNo);//工单号
|
|
|
if (sysPdlines.Count > 0)
|
|
|
{
|
|
|
parameters.Add("@pdlineId", sysPdlines[0].PdlineId);//生产线id
|
|
|
parameters.Add("@pdlineCode", sysPdlines[0].PdlineCode);//生产线代码
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@pdlineId", 0);//生产线id
|
|
|
parameters.Add("@pdlineCode", mesWmsOut.PdlineCode);//生产线代码
|
|
|
}
|
|
|
|
|
|
if (sysParts.Count > 0)
|
|
|
{
|
|
|
parameters.Add("@partId", sysParts[0].PartId);//零件号ID
|
|
|
parameters.Add("@partNo", sysParts[0].PartNo);//零件号
|
|
|
parameters.Add("@partSpec", sysParts[0].PartSpec);//零件号简码
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@partId", 0);//零件号ID
|
|
|
parameters.Add("@partNo", mesWmsOut.PartNo);//零件号
|
|
|
parameters.Add("@partSpec", "");//零件号简码
|
|
|
}
|
|
|
|
|
|
parameters.Add("@serialNumber", mesWmsOut.SerialNumber);//产品条码
|
|
|
parameters.Add("@qty", mesWmsOut.Qty);//数量
|
|
|
parameters.Add("@lotNo", mesWmsOut.LotNo);//生产批次
|
|
|
parameters.Add("@productType", mesWmsOut.ProductType);//生产类型 针对座椅总成下线,product_type=10,针对骨架和滑轨,product_type=20
|
|
|
parameters.Add("@productVersion", mesWmsOut.ProductVersion);//生产版本
|
|
|
parameters.Add("@reportStatus", "10");//
|
|
|
parameters.Add("@erpStatus", "10");//
|
|
|
parameters.Add("@isRejects", mesWmsOut.IsRejects);//是否不良
|
|
|
|
|
|
parameters.Add("@tray_no", mesWmsOut.TrayNo);
|
|
|
parameters.Add("@mtoc", mesWmsOut.Mtoc);
|
|
|
parameters.Add("@mtoc_desc", mesWmsOut.MtocDesc);
|
|
|
parameters.Add("@cartype_name", mesWmsOut.CartypeName);
|
|
|
|
|
|
if (sysFactory.Count == 0)
|
|
|
{
|
|
|
parameters.Add("@factoryId", 0);//工厂ID
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@factoryId", sysFactory[0].FactoryId);//工厂ID
|
|
|
}
|
|
|
parameters.Add("@factoryCode", mesWmsOut.FactoryCode);//工厂代码
|
|
|
parameters.Add("@enabled", 'Y');//启用
|
|
|
parameters.Add("@updateUserid", 0);//修改人
|
|
|
parameters.Add("@updateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//修改日期
|
|
|
parameters.Add("@ruid", mesOutPdlines[0].Ruid);//ruid
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
|
SqlStringBuilder.Append("INSERT INTO dbo.mes_out_pdline (work_order_no,pdline_id,pdline_code,part_id,part_no,part_spec ");
|
|
|
SqlStringBuilder.Append(" ,serial_number,qty,lot_no,product_type,product_version,report_status,erp_status,err_msg ");
|
|
|
SqlStringBuilder.Append(" ,factory_id,factory_code,enabled,create_userid,create_time,Guid,isrejects ");
|
|
|
SqlStringBuilder.Append(" ,tray_no,mtoc,mtoc_desc,cartype_name) ");
|
|
|
SqlStringBuilder.Append(" VALUES(@workOrderNo,@pdlineId,@pdlineCode,@partId,@partNo,@partSpec,@serialNumber ");
|
|
|
SqlStringBuilder.Append(" ,@qty,@lotNo,@productType,@productVersion,@reportStatus,@erpStatus,@errMsg ");
|
|
|
SqlStringBuilder.Append(" ,@factoryId,@factoryCode,@enabled,@createUserid,@createTime,@Guid,@isRejects ");
|
|
|
SqlStringBuilder.Append(" ,@tray_no,@mtoc,@mtoc_desc,@cartype_name) ");
|
|
|
|
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
parameters.Add("@workOrderNo", mesWmsOut.WorkOrderNo);//工单号
|
|
|
if (sysPdlines.Count > 0)
|
|
|
{
|
|
|
parameters.Add("@pdlineId", sysPdlines[0].PdlineId);//生产线id
|
|
|
parameters.Add("@pdlineCode", sysPdlines[0].PdlineCode);//生产线代码
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@pdlineId", 0);//生产线id
|
|
|
parameters.Add("@pdlineCode", mesWmsOut.PdlineCode);//生产线代码
|
|
|
}
|
|
|
|
|
|
if (sysParts.Count > 0)
|
|
|
{
|
|
|
parameters.Add("@partId", sysParts[0].PartId);//零件号ID
|
|
|
parameters.Add("@partNo", sysParts[0].PartNo);//零件号
|
|
|
parameters.Add("@partSpec", sysParts[0].PartSpec);//零件号简码
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@partId", 0);//零件号ID
|
|
|
parameters.Add("@partNo", mesWmsOut.PartNo);//零件号
|
|
|
parameters.Add("@partSpec", "");//零件号简码
|
|
|
}
|
|
|
|
|
|
parameters.Add("@serialNumber", mesWmsOut.SerialNumber);//产品条码
|
|
|
parameters.Add("@qty", mesWmsOut.Qty);//数量
|
|
|
parameters.Add("@lotNo", mesWmsOut.LotNo);//生产批次
|
|
|
parameters.Add("@productType", mesWmsOut.ProductType);//生产类型 针对座椅总成下线,product_type=10,针对骨架和滑轨,product_type=20
|
|
|
parameters.Add("@productVersion", mesWmsOut.ProductVersion);//生产版本
|
|
|
parameters.Add("@reportStatus", "10");//
|
|
|
parameters.Add("@erpStatus", "10");//
|
|
|
parameters.Add("@errMsg", "");//
|
|
|
parameters.Add("@isRejects", mesWmsOut.IsRejects);//是否不良
|
|
|
|
|
|
parameters.Add("@tray_no", mesWmsOut.TrayNo);
|
|
|
parameters.Add("@mtoc", mesWmsOut.Mtoc);
|
|
|
parameters.Add("@mtoc_desc", mesWmsOut.MtocDesc);
|
|
|
parameters.Add("@cartype_name", mesWmsOut.CartypeName);
|
|
|
|
|
|
if (sysFactory.Count == 0)
|
|
|
{
|
|
|
parameters.Add("@factoryId", 0);//工厂ID
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@factoryId", sysFactory[0].FactoryId);//工厂ID
|
|
|
}
|
|
|
parameters.Add("@factoryCode", mesWmsOut.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());//ID
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
|
SqlStringBuilder.Append("update MES_WMS_OUT_PDLINE set syn_flg=@synFlg,syn_time=@synTime,update_userid=@updateUserid,update_time=@updateTime where GUID=@GUID ");//更新同步状态
|
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@GUID", mesWmsOut.Guid);//ID
|
|
|
parameters.Add("@synFlg", "20");//已同步
|
|
|
parameters.Add("@synTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@updateUserid", 0);//更新人
|
|
|
parameters.Add("@updateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//更新时间
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
bool staResult = ExecuteTransaction(sqlList, parametersList);
|
|
|
if (staResult == false)
|
|
|
{
|
|
|
sqlList = new List<string>();
|
|
|
parametersList = new List<DynamicParameters>();
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
|
SqlStringBuilder.Append("update MES_WMS_OUT_PDLINE set syn_flg=@synFlg,syn_time=@synTime,err_msg=@errMsg,update_userid=@updateUserid,update_time=@updateTime where GUID=@GUID ");//更新同步状态
|
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@GUID", mesWmsOut.Guid);//ID
|
|
|
parameters.Add("@synFlg", "30");//同步异常
|
|
|
parameters.Add("@synTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@errMsg", "同步错误,请检查接口数据!");//错误
|
|
|
parameters.Add("@updateUserid", 0);//更新人
|
|
|
parameters.Add("@updateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//更新时间
|
|
|
parametersList.Add(parameters);
|
|
|
ExecuteTransaction(sqlList, parametersList);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取待处理的下线报工数据
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<MesOutPdline> GetOutPdlineInfo(string pdlineCode)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
if (dbConn.State == ConnectionState.Closed)
|
|
|
{
|
|
|
dbConn.Open();
|
|
|
}
|
|
|
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT top 100 a.*,b.part_id,b.part_spec,b.unit FROM mes_out_pdline a WITH(readpast) ");
|
|
|
sql.Append("JOIN dbo.sys_part b (nolock) ON a.part_no = b.part_no ");
|
|
|
sql.Append("WHERE a.enabled = 'Y' ");
|
|
|
sql.Append(" AND a.report_status = @reportStatus ");
|
|
|
sql.Append(" AND a.pdline_code = @pdlineCode ");
|
|
|
sql.Append("ORDER BY a.create_time ");
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@reportStatus", MesEnumUtil.OutPdlineReportStatus.INIT);
|
|
|
parameters.Add("@pdlineCode", pdlineCode);
|
|
|
|
|
|
return dbConn.Query<MesOutPdline>(sql.ToString(), parameters).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取库位信息
|
|
|
/// </summary>
|
|
|
/// <param name="locateId"></param>
|
|
|
/// <returns></returns>
|
|
|
private SysLocate GetLocateInfo(int locateId)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
if (dbConn.State == ConnectionState.Closed)
|
|
|
{
|
|
|
dbConn.Open();
|
|
|
}
|
|
|
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT a.*,b.erp_warehouse FROM dbo.sys_locate a (nolock) ");
|
|
|
sql.Append("JOIN dbo.sys_zone b (nolock) ON a.zone_id = b.zone_id ");
|
|
|
sql.Append("WHERE a.locate_id = @locateId AND a.enabled = 'Y' ");
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@locateId", locateId);
|
|
|
|
|
|
return dbConn.QueryFirstOrDefault<SysLocate>(sql.ToString(), parameters);
|
|
|
}
|
|
|
}
|
|
|
private SysLocate GetNCLocateInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
if (dbConn.State == ConnectionState.Closed)
|
|
|
{
|
|
|
dbConn.Open();
|
|
|
}
|
|
|
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
//sql.Append("select * from sys_locate (nolock) where locate_type='60' ");
|
|
|
sql.Append("SELECT a.*,b.erp_warehouse FROM dbo.sys_locate a (nolock) ");
|
|
|
sql.Append("JOIN dbo.sys_zone b (nolock) ON a.zone_id = b.zone_id ");
|
|
|
sql.Append("WHERE a.enabled = 'Y' and a.locate_type='60'");
|
|
|
return dbConn.QueryFirstOrDefault<SysLocate>(sql.ToString());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新下线数据
|
|
|
/// </summary>
|
|
|
/// <param name="outPdline"></param>
|
|
|
/// <param name="status"></param>
|
|
|
/// <returns></returns>
|
|
|
public int UpdateOutPdlineInfo(MesOutPdline outPdline,
|
|
|
MesEnumUtil.OutPdlineReportStatus status, string msg = "")
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
if (dbConn.State == ConnectionState.Closed)
|
|
|
{
|
|
|
dbConn.Open();
|
|
|
}
|
|
|
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("UPDATE dbo.mes_out_pdline ");
|
|
|
sql.Append("SET report_status = @reportStatus, ");
|
|
|
sql.Append(" err_msg = @errMsg, ");
|
|
|
sql.Append(" update_userid = @updateUserid, ");
|
|
|
sql.Append(" update_time = @updateTime ");
|
|
|
sql.Append("WHERE serial_number = @serialNumber ");
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@reportStatus", status);
|
|
|
parameters.Add("@errMsg", msg);
|
|
|
parameters.Add("@updateUserid", 0);
|
|
|
parameters.Add("@updateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@serialNumber", outPdline.SerialNumber);
|
|
|
|
|
|
return dbConn.Execute(sql.ToString(), parameters);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 处理下线报工
|
|
|
/// </summary>
|
|
|
/// <param name="outPdline"></param>
|
|
|
/// <param name="bomDetails"></param>
|
|
|
/// <param name="pdline"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool DoOutPdline(MesOutPdline outPdline,
|
|
|
List<SysBomDetail> bomDetails, SysPdline pdline, List<SysBomDetail> bomDetailsList)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
if (dbConn.State == ConnectionState.Closed)
|
|
|
{
|
|
|
dbConn.Open();
|
|
|
}
|
|
|
//LogHelper.Info("当前操作:开始执行" + outPdline.SerialNumber + "条码下线逻辑处理(条件判断),当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
StringBuilder SqlStringBuilder = new StringBuilder(1024);
|
|
|
DynamicParameters parameters;
|
|
|
// 1、处理自动生产入库,针对成品和半成品。
|
|
|
// 写入库存表
|
|
|
if (outPdline.ProductType == (int)MesEnumUtil.OutPdlineProductType.WIP
|
|
|
|| outPdline.ProductType == (int)MesEnumUtil.OutPdlineProductType.FINISHED_PRODUCT)
|
|
|
{
|
|
|
StringBuilder stringBuilder = new StringBuilder(1024);
|
|
|
stringBuilder.Append("SELECT * from sys_stock WITH(NOLOCK) ");
|
|
|
stringBuilder.Append("WHERE carton_no = @cartonNo ");
|
|
|
|
|
|
DynamicParameters dynamic = new DynamicParameters();
|
|
|
dynamic.Add("@cartonNo", outPdline.SerialNumber);
|
|
|
SysStock sysStocks = dbConn.Query<SysStock>(stringBuilder.ToString(), dynamic).FirstOrDefault();
|
|
|
if (sysStocks != null)
|
|
|
{
|
|
|
SysLocate locate = null;
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("UPDATE dbo.sys_stock ");
|
|
|
sql.Append(" SET part_id = @part_id,part_no = @part_no ");
|
|
|
sql.Append(" ,part_spec = @part_spec,lot_no = @lot_no,fix_lot_no = @fix_lot_no ");
|
|
|
sql.Append(" ,status = @status,qty = @qty,snp_qty = @snp_qty ");
|
|
|
sql.Append(" ,ref_order_no = @ref_order_no,unit = @unit");
|
|
|
if (sysStocks.LocateId != 0)
|
|
|
{
|
|
|
//不等于0 ,说明下线时已有库位,此情况目前为激光焊 ,不赋值库位信息
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
sql.Append(" ,locate_id = @locate_id,locate_name = @locate_name,erp_warehouse = @erp_warehouse ");
|
|
|
sql.Append(" ,warehouse_name = @warehouse_name,zone_id = @zone_id,zone_name = @zone_name ,warehouse_id = @warehouse_id ");
|
|
|
}
|
|
|
sql.Append(" ,factory_id = @factory_id,factory_code = @factory_code,enabled = @enabled ");
|
|
|
sql.Append(" ,tray_no = @tray_no,mtoc = @mtoc,mtoc_desc = @mtoc_desc,cartype_name=@cartype_name ");
|
|
|
sql.Append(" ,update_userid = @update_userid,update_time = @update_time,guid = @guid ");
|
|
|
sql.Append(" WHERE carton_no = @carton_no ");
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@carton_no", outPdline.SerialNumber);
|
|
|
parameters.Add("@part_id", outPdline.PartId);
|
|
|
parameters.Add("@part_no", outPdline.PartNo);
|
|
|
parameters.Add("@part_spec", outPdline.PartSpec);
|
|
|
parameters.Add("@lot_no", outPdline.LotNo);
|
|
|
parameters.Add("@fix_lot_no", string.Empty);
|
|
|
parameters.Add("@qty", outPdline.Qty);
|
|
|
parameters.Add("@snp_qty", outPdline.Qty);
|
|
|
string isRejectsVal = outPdline.IsRejects.Trim();
|
|
|
//if (isRejectsVal == "Y")//不是不良品
|
|
|
//{
|
|
|
// parameters.Add("@status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
|
|
|
// locate = this.GetNCLocateInfo();
|
|
|
//}
|
|
|
//else //良品
|
|
|
//{
|
|
|
parameters.Add("@status", WmsEnumUtil.StockStatus.INSTOCKED);
|
|
|
locate = this.GetLocateInfo(pdline.DestLocateId == null ? 0 : pdline.DestLocateId.Value);
|
|
|
//}
|
|
|
if (locate == null)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
//第二次补 托盘号
|
|
|
parameters.Add("@tray_no", outPdline.TrayNo);
|
|
|
parameters.Add("@mtoc", outPdline.Mtoc);
|
|
|
parameters.Add("@mtoc_desc", outPdline.MtocDesc);
|
|
|
parameters.Add("@cartype_name", outPdline.CartypeName);
|
|
|
|
|
|
if (sysStocks.LocateId != 0)
|
|
|
{
|
|
|
//不等于0 ,说明下线时已有库位,此情况目前为激光焊 ,不赋值库位信息
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@locate_id", locate.LocateId);
|
|
|
parameters.Add("@locate_name", locate.LocateName);
|
|
|
parameters.Add("@erp_warehouse", locate.ErpWarehouse);
|
|
|
parameters.Add("@warehouse_id", locate.WarehouseId);
|
|
|
parameters.Add("@warehouse_name", locate.WarehouseName);
|
|
|
parameters.Add("@zone_id", locate.ZoneId);
|
|
|
parameters.Add("@zone_name", locate.ZoneName);
|
|
|
}
|
|
|
|
|
|
parameters.Add("@ref_order_no", outPdline.WorkOrderNo);
|
|
|
parameters.Add("@unit", outPdline.Unit);
|
|
|
|
|
|
parameters.Add("@factory_id", outPdline.FactoryId);
|
|
|
parameters.Add("@factory_code", outPdline.FactoryCode);
|
|
|
parameters.Add("@enabled", WmsEnumUtil.Enabled.Y.ToString());
|
|
|
parameters.Add("@update_userid", 0);
|
|
|
parameters.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@guid", Guid.NewGuid());
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
//新增 sys_stock_trans 事务表
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("INSERT INTO [dbo].[sys_stock_trans] ");
|
|
|
sql.Append("( ");
|
|
|
sql.Append(" [trans_code],[carton_no],[part_id],[part_no],[part_spec],[src_locate_id],[src_locate_name],[dest_locate_id], ");
|
|
|
sql.Append(" [dest_locate_name],[old_qty],[new_qty],[trans_qty],[old_status],[new_status],[unit], ");
|
|
|
sql.Append(" [factory_id],[factory_code],[src_erp_warehouse],[dest_erp_warehouse],[src_warehouse_id],[src_warehouse_name], ");
|
|
|
sql.Append(" [dest_warehouse_id],[dest_warehouse_name],[src_zone_id],[src_zone_name],[dest_zone_id],[dest_zone_name],[enabled], ");
|
|
|
sql.Append(" [update_userid],[update_time], [create_userid],[create_time],[guid],ref_order_no ");
|
|
|
sql.Append(") ");
|
|
|
sql.Append("VALUES ");
|
|
|
sql.Append("(@trans_code, @carton_no, @part_id, @part_no, @part_spec, @src_locate_id, @src_locate_name, @dest_locate_id, ");
|
|
|
sql.Append(" @dest_locate_name, @old_qty, @new_qty, @trans_qty, @old_status, @new_status, @unit, ");
|
|
|
sql.Append(" @factory_id, @factory_code, @src_erp_warehouse, @dest_erp_warehouse, @src_warehouse_id, @src_warehouse_name, ");
|
|
|
sql.Append(" @dest_warehouse_id, @dest_warehouse_name, @src_zone_id, @src_zone_name, @dest_zone_id, @dest_zone_name, @enabled, ");
|
|
|
sql.Append(" @update_userid, @update_time, @create_userid, @create_time, @guid, @ref_order_no) ");
|
|
|
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@trans_code", (int)WmsEnumUtil.TransType.PRODUCTION_REPORT);
|
|
|
parameters.Add("@carton_no", outPdline.SerialNumber);
|
|
|
parameters.Add("@part_id", outPdline.PartId);
|
|
|
parameters.Add("@part_no", outPdline.PartNo);
|
|
|
parameters.Add("@part_spec", outPdline.PartSpec);
|
|
|
parameters.Add("@old_qty", outPdline.Qty);
|
|
|
parameters.Add("@new_qty", outPdline.Qty);
|
|
|
parameters.Add("@trans_qty", outPdline.Qty);
|
|
|
parameters.Add("@old_status", sysStocks.Status);
|
|
|
//if (isRejectsVal == "Y") //是不良品
|
|
|
//{
|
|
|
// parameters.Add("@new_status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
parameters.Add("@new_status", (int)WmsEnumUtil.StockStatus.INSTOCKED);
|
|
|
//}
|
|
|
parameters.Add("@unit", outPdline.Unit);
|
|
|
parameters.Add("@factory_id", outPdline.FactoryId);
|
|
|
parameters.Add("@factory_code", outPdline.FactoryCode);
|
|
|
if (sysStocks.LocateId != 0)
|
|
|
{
|
|
|
//不等于0 ,说明下线时已有库位,此情况目前为激光焊 ,不赋值库位信息 ,使用已有库位写事务
|
|
|
parameters.Add("@src_locate_id", sysStocks.LocateId);
|
|
|
parameters.Add("@src_locate_name", sysStocks.LocateName);
|
|
|
parameters.Add("@dest_locate_id", sysStocks.LocateId);
|
|
|
parameters.Add("@dest_locate_name", sysStocks.LocateName);
|
|
|
parameters.Add("@src_erp_warehouse", sysStocks.ErpWarehouse);
|
|
|
parameters.Add("@dest_erp_warehouse", sysStocks.ErpWarehouse);
|
|
|
parameters.Add("@src_warehouse_id", sysStocks.WarehouseId);
|
|
|
parameters.Add("@src_warehouse_name", sysStocks.WarehouseName);
|
|
|
parameters.Add("@dest_warehouse_id", sysStocks.WarehouseId);
|
|
|
parameters.Add("@dest_warehouse_name", sysStocks.WarehouseName);
|
|
|
parameters.Add("@src_zone_id", sysStocks.ZoneId);
|
|
|
parameters.Add("@src_zone_name", sysStocks.ZoneName);
|
|
|
parameters.Add("@dest_zone_id", sysStocks.ZoneId);
|
|
|
parameters.Add("@dest_zone_name", sysStocks.ZoneName);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@src_locate_id", string.Empty);
|
|
|
parameters.Add("@src_locate_name", string.Empty);
|
|
|
parameters.Add("@dest_locate_id", locate == null ? 0 : locate.LocateId);
|
|
|
parameters.Add("@dest_locate_name", locate == null ? "" : locate.LocateName);
|
|
|
parameters.Add("@src_erp_warehouse", string.Empty);
|
|
|
parameters.Add("@dest_erp_warehouse", locate == null ? "" : locate.ErpWarehouse);
|
|
|
parameters.Add("@src_warehouse_id", 0);
|
|
|
parameters.Add("@src_warehouse_name", string.Empty);
|
|
|
parameters.Add("@dest_warehouse_id", locate == null ? 0 : locate.WarehouseId);
|
|
|
parameters.Add("@dest_warehouse_name", locate == null ? "" : locate.WarehouseName);
|
|
|
parameters.Add("@src_zone_id", 0);
|
|
|
parameters.Add("@src_zone_name", string.Empty);
|
|
|
parameters.Add("@dest_zone_id", locate == null ? 0 : locate.ZoneId);
|
|
|
parameters.Add("@dest_zone_name", locate == null ? "" : locate.ZoneName);
|
|
|
}
|
|
|
parameters.Add("@enabled", WmsEnumUtil.Enabled.Y.ToString());
|
|
|
parameters.Add("@update_userid", 0);
|
|
|
parameters.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@create_userid", 0);
|
|
|
parameters.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@guid", Guid.NewGuid());
|
|
|
parameters.Add("@ref_order_no", outPdline.WorkOrderNo);
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
SysLocate locate = null;
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("INSERT INTO dbo.sys_stock ");
|
|
|
sql.Append("( ");
|
|
|
sql.Append(" carton_no, part_id, part_no, part_spec,lot_no, fix_lot_no, status, ");
|
|
|
sql.Append(" qty, snp_qty, locate_id, locate_name,erp_warehouse, ref_order_no, ");
|
|
|
sql.Append(" unit, warehouse_id, warehouse_name, zone_id, zone_name, ");
|
|
|
sql.Append(" factory_id, factory_code, enabled,create_userid, create_time, guid ");
|
|
|
sql.Append(") ");
|
|
|
sql.Append("VALUES ");
|
|
|
sql.Append("( @carton_no, @part_id, @part_no, @part_spec,@lot_no, @fix_lot_no, @status, ");
|
|
|
sql.Append(" @qty, @snp_qty, @locate_id, @locate_name,@erp_warehouse, @ref_order_no, ");
|
|
|
sql.Append(" @unit, @warehouse_id, @warehouse_name, @zone_id, @zone_name, ");
|
|
|
sql.Append(" @factory_id, @factory_code, @enabled,@create_userid, @create_time, @guid ");
|
|
|
sql.Append(") ");
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@carton_no", outPdline.SerialNumber);
|
|
|
parameters.Add("@part_id", outPdline.PartId);
|
|
|
parameters.Add("@part_no", outPdline.PartNo);
|
|
|
parameters.Add("@part_spec", outPdline.PartSpec);
|
|
|
parameters.Add("@lot_no", outPdline.LotNo);
|
|
|
parameters.Add("@fix_lot_no", string.Empty);
|
|
|
parameters.Add("@qty", outPdline.Qty);
|
|
|
parameters.Add("@snp_qty", outPdline.Qty);
|
|
|
|
|
|
string isRejectsVal = outPdline.IsRejects.Trim();
|
|
|
//if (isRejectsVal == "Y")//是不良品
|
|
|
//{
|
|
|
// parameters.Add("@status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
|
|
|
// locate = this.GetNCLocateInfo();
|
|
|
//}
|
|
|
//else //良品
|
|
|
//{
|
|
|
parameters.Add("@status", WmsEnumUtil.StockStatus.INSTOCKED);
|
|
|
locate = this.GetLocateInfo(pdline.DestLocateId == null ? 0 : pdline.DestLocateId.Value);
|
|
|
//}
|
|
|
if (locate == null)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
parameters.Add("@locate_id", locate.LocateId);
|
|
|
parameters.Add("@locate_name", locate.LocateName);
|
|
|
parameters.Add("@erp_warehouse", locate.ErpWarehouse);
|
|
|
parameters.Add("@warehouse_id", locate.WarehouseId);
|
|
|
parameters.Add("@warehouse_name", locate.WarehouseName);
|
|
|
parameters.Add("@zone_id", locate.ZoneId);
|
|
|
parameters.Add("@zone_name", locate.ZoneName);
|
|
|
parameters.Add("@ref_order_no", outPdline.WorkOrderNo);
|
|
|
parameters.Add("@unit", outPdline.Unit);
|
|
|
|
|
|
parameters.Add("@factory_id", outPdline.FactoryId);
|
|
|
parameters.Add("@factory_code", outPdline.FactoryCode);
|
|
|
parameters.Add("@enabled", WmsEnumUtil.Enabled.Y.ToString());
|
|
|
parameters.Add("@create_userid", 0);
|
|
|
parameters.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@guid", Guid.NewGuid());
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
//新增 sys_stock_trans 事务表
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("INSERT INTO [dbo].[sys_stock_trans] ");
|
|
|
sql.Append("( ");
|
|
|
sql.Append(" [trans_code],[carton_no],[part_id],[part_no],[part_spec],[src_locate_id],[src_locate_name],[dest_locate_id], ");
|
|
|
sql.Append(" [dest_locate_name],[old_qty],[new_qty],[trans_qty],[old_status],[new_status],[unit], ");
|
|
|
sql.Append(" [factory_id],[factory_code],[src_erp_warehouse],[dest_erp_warehouse],[src_warehouse_id],[src_warehouse_name], ");
|
|
|
sql.Append(" [dest_warehouse_id],[dest_warehouse_name],[src_zone_id],[src_zone_name],[dest_zone_id],[dest_zone_name],[enabled], ");
|
|
|
sql.Append(" [update_userid],[update_time], [create_userid],[create_time],[guid],ref_order_no ");
|
|
|
sql.Append(") ");
|
|
|
sql.Append("VALUES ");
|
|
|
sql.Append("(@trans_code, @carton_no, @part_id, @part_no, @part_spec, @src_locate_id, @src_locate_name, @dest_locate_id, ");
|
|
|
sql.Append(" @dest_locate_name, @old_qty, @new_qty, @trans_qty, @old_status, @new_status, @unit, ");
|
|
|
sql.Append(" @factory_id, @factory_code, @src_erp_warehouse, @dest_erp_warehouse, @src_warehouse_id, @src_warehouse_name, ");
|
|
|
sql.Append(" @dest_warehouse_id, @dest_warehouse_name, @src_zone_id, @src_zone_name, @dest_zone_id, @dest_zone_name, @enabled, ");
|
|
|
sql.Append(" @update_userid, @update_time, @create_userid, @create_time, @guid,@ref_order_no) ");
|
|
|
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@trans_code", (int)WmsEnumUtil.TransType.PRODUCTION_REPORT);
|
|
|
parameters.Add("@carton_no", outPdline.SerialNumber);
|
|
|
parameters.Add("@part_id", outPdline.PartId);
|
|
|
parameters.Add("@part_no", outPdline.PartNo);
|
|
|
parameters.Add("@part_spec", outPdline.PartSpec);
|
|
|
parameters.Add("@src_locate_id", string.Empty);
|
|
|
parameters.Add("@src_locate_name", string.Empty);
|
|
|
parameters.Add("@dest_locate_id", locate == null ? 0 : locate.LocateId);
|
|
|
parameters.Add("@dest_locate_name", locate == null ? 0 : locate.LocateName);
|
|
|
parameters.Add("@old_qty", outPdline.Qty);
|
|
|
parameters.Add("@new_qty", outPdline.Qty);
|
|
|
parameters.Add("@trans_qty", outPdline.Qty);
|
|
|
parameters.Add("@old_status", 0);
|
|
|
|
|
|
parameters.Add("@new_status", (int)WmsEnumUtil.StockStatus.INSTOCKED);
|
|
|
|
|
|
parameters.Add("@unit", outPdline.Unit);
|
|
|
parameters.Add("@factory_id", outPdline.FactoryId);
|
|
|
parameters.Add("@factory_code", outPdline.FactoryCode);
|
|
|
parameters.Add("@src_erp_warehouse", string.Empty);
|
|
|
parameters.Add("@dest_erp_warehouse", locate == null ? 0 : locate.ErpWarehouse);
|
|
|
parameters.Add("@src_warehouse_id", 0);
|
|
|
parameters.Add("@src_warehouse_name", string.Empty);
|
|
|
parameters.Add("@dest_warehouse_id", locate == null ? 0 : locate.WarehouseId);
|
|
|
parameters.Add("@dest_warehouse_name", locate == null ? 0 : locate.WarehouseName);
|
|
|
parameters.Add("@src_zone_id", 0);
|
|
|
parameters.Add("@src_zone_name", string.Empty);
|
|
|
parameters.Add("@dest_zone_id", locate == null ? 0 : locate.ZoneId);
|
|
|
parameters.Add("@dest_zone_name", locate == null ? 0 : locate.ZoneName);
|
|
|
parameters.Add("@enabled", WmsEnumUtil.Enabled.Y.ToString());
|
|
|
parameters.Add("@update_userid", 0);
|
|
|
parameters.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@create_userid", 0);
|
|
|
parameters.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@guid", Guid.NewGuid());
|
|
|
parameters.Add("@ref_order_no", outPdline.WorkOrderNo);
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);//拉动状态
|
|
|
SqlStringBuilder.Append("update mes_work_order set order_status='20' where order_no=@order_no and part_no=@part_no ");
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@order_no", outPdline.WorkOrderNo);//工单号
|
|
|
parameters.Add("@part_no", outPdline.PartNo);//零件号
|
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("SELECT * FROM dbo.sys_zone (nolock) ");
|
|
|
sql.Append("WHERE zone_name = @zoneName ");
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@zoneName", pdline.DestZoneName);
|
|
|
SysZone sysZones = dbConn.QueryFirstOrDefault<SysZone>(sql.ToString(), parameters);
|
|
|
|
|
|
////LogHelper.Info("当前操作:结束执行" + outPdline.SerialNumber + "条码下线逻辑处理(条件判断),当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
string sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
|
|
|
////LogHelper.Info("当前操作:开始执行" + outPdline.SerialNumber + "条码下线拆解BOM,WMS计数器生成拉动单、MES计数器生成JIT需求任务,当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
//WMS拉动组实体
|
|
|
string checkPullingGroupSql = @"select * from [dbo].[wms_pulling_group] where enabled='Y'";
|
|
|
List<WmsPullingGroup> wmsPullings = dbConn.Query<WmsPullingGroup>(checkPullingGroupSql).ToList();
|
|
|
//MES 拉动
|
|
|
string MEScheckPullingGroupSql = @"select * from [dbo].[wms_pulling_group_mes] where enabled='Y'";
|
|
|
List<WmsPullingGroupMes> MesPullings = dbConn.Query<WmsPullingGroupMes>(MEScheckPullingGroupSql).ToList();
|
|
|
|
|
|
// 2、处理拆解BOM,针对所有。
|
|
|
foreach (var bom in bomDetails)
|
|
|
{
|
|
|
#region 拉动组操作
|
|
|
string workOrderNoSql = @"select * from mes_out_pdline (nolock) where work_order_no='" + outPdline.WorkOrderNo + "' and pull_record=1";
|
|
|
MesOutPdline mesOutPdline = dbConn.Query<MesOutPdline>(workOrderNoSql).FirstOrDefault();
|
|
|
if (mesOutPdline == null)
|
|
|
{
|
|
|
////LogHelper.Info("当前操作:开始执行" + outPdline.SerialNumber + "条码下线逻辑(WMS计数器),当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
//WMS 拉动
|
|
|
List<WmsPullingGroup> wmsPulling = wmsPullings.Where(a => a.PdlineCode == pdline.PdlineCode).ToList();
|
|
|
for (int j = 0; j < wmsPulling.Count; j++)
|
|
|
{
|
|
|
string pullingGroupCountSql = @"update wms_pulling_group set cumulativeValue = convert(int, isnull(cumulativeValue, 0)) + 1 where group_code='" + wmsPulling[j].GroupCode + "' and pdline_code = '" + wmsPulling[j].PdlineCode + "'";
|
|
|
dbConn.Execute(pullingGroupCountSql);
|
|
|
|
|
|
string getPullingGroupCumulativeValueSql = @"select * from [dbo].[wms_pulling_group] (nolock) where group_code='" + wmsPulling[j].GroupCode + "' and pdline_code = '" + wmsPulling[j].PdlineCode + "'";
|
|
|
List<WmsPullingGroup> wmsPullingGroup = dbConn.Query<WmsPullingGroup>(getPullingGroupCumulativeValueSql).ToList();
|
|
|
if (Convert.ToInt32(wmsPullingGroup[0].CumulativeValue) >= Convert.ToInt32(wmsPullingGroup[0].TriggerValue))
|
|
|
{
|
|
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
|
SqlStringBuilder.Append(" select * from mes_work_order_part k (nolock) where k.order_no in (select distinct top " + wmsPullingGroup[0].PullValue + " a.order_no from mes_work_order_part a (nolock) left join mes_work_order b (nolock) on a.order_no = b.order_no and a.parent_part_no = b.part_no ");
|
|
|
SqlStringBuilder.Append(" where a.part_no in (select part_no from[dbo].[wms_pulling_group_part] a (nolock) left join[dbo].[wms_pulling_group] b (nolock) on a.group_code = b.group_code ");
|
|
|
SqlStringBuilder.Append(" where b.group_code = '" + wmsPulling[j].GroupCode + "' and pdline_code = '" + wmsPulling[j].PdlineCode + "' and a.enabled='Y' and b.enabled='Y') and a.pull_status = 10 and pdline_code = '" + wmsPulling[j].PdlineCode + "' order by a.order_no ) ");
|
|
|
SqlStringBuilder.Append(" and k.part_no in (select part_no from[dbo].[wms_pulling_group_part] a (nolock) left join[dbo].[wms_pulling_group] b (nolock) on a.group_code = b.group_code ");
|
|
|
SqlStringBuilder.Append(" where b.group_code = '" + wmsPulling[j].GroupCode + "' and pdline_code = '" + wmsPulling[j].PdlineCode + "' and a.enabled='Y' and b.enabled='Y') ");
|
|
|
|
|
|
|
|
|
List<MesWorkOrderPart> mesWorkOrderParts = dbConn.Query<MesWorkOrderPart>(SqlStringBuilder.ToString()).ToList();
|
|
|
if (mesWorkOrderParts.Count > 0)
|
|
|
{
|
|
|
List<MesWorkOrderPart> storeInfoList = mesWorkOrderParts.GroupBy(x => new { x.PartNo, x.FactoryId, x.FactoryCode })
|
|
|
.Select(g => new MesWorkOrderPart { PartNo = g.Key.PartNo, FactoryId = g.Key.FactoryId, FactoryCode = g.Key.FactoryCode, Qty = g.Sum(b => b.Qty) }).ToList();
|
|
|
|
|
|
var orderNo = GetOrderNo("ShiftProduction", "P");//生产领料
|
|
|
for (int i = 0; i < storeInfoList.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 ");
|
|
|
SqlStringBuilder.Append(" ,unit,plan_date,plan_time,item_status,src_warehouse_id,src_warehouse_name,dest_warehouse_id ");
|
|
|
SqlStringBuilder.Append(" ,dest_warehouse_name,src_zone_id,src_zone_name,dest_zone_id,dest_zone_name,src_erp_warehouse,dest_erp_warehouse,factory_id ");
|
|
|
SqlStringBuilder.Append(" ,factory_code,enabled,create_userid,create_time,guid) ");
|
|
|
SqlStringBuilder.Append(" VALUES(@orderNo,@itemNo,@partId,@partNo,@partSpec,@qty,@pickQty,@outQty,@recQty,@unit,@planDate ");
|
|
|
SqlStringBuilder.Append(" ,@planTime,@itemStatus,@srcWarehouseId,@srcWarehouseName,@destWarehouseId,@destWarehouseName ");
|
|
|
SqlStringBuilder.Append(" ,@srcZoneId,@srcZoneName,@destZoneId,@destZoneName,@srcErpWarehouse,@destErpWarehouse ");
|
|
|
SqlStringBuilder.Append(" ,@factoryId,@factoryCode,@enabled,@createUserid,@createTime,@guid) ");
|
|
|
sqlList.Add(SqlStringBuilder.ToString());
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@orderNo", orderNo);//生产领料单
|
|
|
parameters.Add("@itemNo", (i + 1) * 10);//序号
|
|
|
|
|
|
StringBuilder partNoStringBuilder = new StringBuilder(1024);
|
|
|
partNoStringBuilder.Append("select * from sys_part (nolock) where part_no='" + storeInfoList[i].PartNo + "'");//零件号ID
|
|
|
List<SysPart> sysParts = dbConn.Query<SysPart>(partNoStringBuilder.ToString()).ToList();
|
|
|
if (sysParts.Count > 0)
|
|
|
{
|
|
|
parameters.Add("@partId", sysParts[0].PartId);//
|
|
|
parameters.Add("@partNo", sysParts[0].PartNo);//零件号
|
|
|
parameters.Add("@partSpec", sysParts[0].PartSpec);//简码
|
|
|
parameters.Add("@unit", sysParts[0].Unit);//单位
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@partId", 0);//零件号ID
|
|
|
parameters.Add("@partNo", storeInfoList[i].PartNo);//零件号
|
|
|
parameters.Add("@partSpec", "");//简码
|
|
|
parameters.Add("@unit", "");//单位
|
|
|
}
|
|
|
|
|
|
parameters.Add("@qty", storeInfoList[i].Qty);//数量
|
|
|
parameters.Add("@pickQty", 0);//
|
|
|
parameters.Add("@outQty", 0);//
|
|
|
parameters.Add("@recQty", 0);//
|
|
|
|
|
|
parameters.Add("@planDate", "");//计划日期
|
|
|
parameters.Add("@planTime", "");//计划时间
|
|
|
parameters.Add("@itemStatus", "10");//状态
|
|
|
parameters.Add("@srcWarehouseId", 0);//源仓库ID
|
|
|
parameters.Add("@srcWarehouseName", "");//源仓库
|
|
|
parameters.Add("@srcZoneId", 0);//源库区ID
|
|
|
parameters.Add("@srcZoneName", "");//源库区
|
|
|
parameters.Add("@srcErpWarehouse", "");//源ERP库存地
|
|
|
|
|
|
List<WmsPullingGroup> pullingGroup = wmsPullings.Where(a => a.GroupCode == wmsPulling[j].GroupCode).ToList();
|
|
|
if (pullingGroup.Count > 0)
|
|
|
{
|
|
|
parameters.Add("@destWarehouseId", 0);//目标仓库ID
|
|
|
parameters.Add("@destWarehouseName", "");//目标仓库
|
|
|
parameters.Add("@destZoneId", 0);//目标库区ID
|
|
|
parameters.Add("@destZoneName", pullingGroup[0].GroupName);//目标库区
|
|
|
parameters.Add("@destErpWarehouse", "");//目标ERP库存地
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@destWarehouseId", 0);//目标仓库ID
|
|
|
parameters.Add("@destWarehouseName", "");//目标仓库
|
|
|
parameters.Add("@destZoneId", 0);//目标库区ID
|
|
|
parameters.Add("@destZoneName", "");//目标库区
|
|
|
parameters.Add("@destErpWarehouse", "");//目标ERP库存地
|
|
|
}
|
|
|
|
|
|
parameters.Add("@factoryId", storeInfoList[0].FactoryId);//工厂ID
|
|
|
parameters.Add("@factoryCode", storeInfoList[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);
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
StringBuilder stringBuilderSQL = new StringBuilder(1024);
|
|
|
stringBuilderSQL.Append("INSERT INTO dbo.wms_move_header ");
|
|
|
stringBuilderSQL.Append(" (order_no,order_type,order_status,ref_order_no,factory_id,factory_code ");
|
|
|
stringBuilderSQL.Append(" ,enabled,create_userid,create_time,guid) ");
|
|
|
stringBuilderSQL.Append(" VALUES(@orderNo,@orderType,@orderStatus,@refOrderNo ");
|
|
|
stringBuilderSQL.Append(" ,@factoryId,@factoryCode,@enabled,@createUserid ");
|
|
|
stringBuilderSQL.Append(" ,@createTime,@guid) ");
|
|
|
sqlList.Add(stringBuilderSQL.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@orderNo", orderNo);//生产领料单
|
|
|
parameters.Add("@orderType", (int)WmsEnumUtil.MoveOrderType.PICK);//生产领料单
|
|
|
parameters.Add("@orderStatus", (int)WmsEnumUtil.MoveOrderStatus.CREATE);//已创建
|
|
|
parameters.Add("@refOrderNo", "成品下线大件拉动");//
|
|
|
|
|
|
parameters.Add("@factoryId", mesWorkOrderParts[0].FactoryId);//
|
|
|
parameters.Add("@factoryCode", mesWorkOrderParts[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 < mesWorkOrderParts.Count; i++)
|
|
|
{
|
|
|
for (int k = 0; k < storeInfoList.Count; k++)
|
|
|
{
|
|
|
stringBuilderSQL = new StringBuilder(1024);
|
|
|
stringBuilderSQL.Append("update mes_work_order_part set pull_status =@pullStatus where order_no=@order_no and part_no=@part_no");
|
|
|
sqlList.Add(stringBuilderSQL.ToString());
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@order_no", mesWorkOrderParts[i].OrderNo);//id
|
|
|
parameters.Add("@part_no", storeInfoList[k].PartNo);//id
|
|
|
parameters.Add("@pullStatus", "20");//
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
stringBuilderSQL = new StringBuilder(1024);
|
|
|
//stringBuilderSQL.Append("update wms_pulling_group set cumulativeValue =convert(int, isnull(cumulativeValue, 0))-convert(int, isnull(pullValue, 0)) where group_code=@groupCode and pdline_code = @PdlineCode");
|
|
|
stringBuilderSQL.Append("update wms_pulling_group set cumulativeValue =0 where group_code=@groupCode and pdline_code = @PdlineCode");
|
|
|
|
|
|
sqlList.Add(stringBuilderSQL.ToString());
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@groupCode", wmsPulling[j].GroupCode);//id
|
|
|
parameters.Add("@PdlineCode", wmsPulling[j].PdlineCode);//
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
////LogHelper.Info("当前操作:结束执行" + outPdline.SerialNumber + "条码下线逻辑(WMS计数器),当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
|
|
|
//LogHelper.Info("当前操作:开始执行" + outPdline.SerialNumber + "条码下线逻辑(MES计数器),当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
//MES 拉动
|
|
|
List<WmsPullingGroupMes> MesPulling = MesPullings.Where(a => a.PdlineCode == pdline.PdlineCode).ToList();
|
|
|
for (int j = 0; j < MesPulling.Count; j++)
|
|
|
{
|
|
|
string pullingGroupCountSql = @"update wms_pulling_group_mes set cumulative_value = convert(int, isnull(cumulative_value, 0)) + 1 where pdline_code = '" + MesPulling[j].PdlineCode + "'";
|
|
|
dbConn.Execute(pullingGroupCountSql);
|
|
|
|
|
|
string getPullingGroupCumulativeValueSql = @"select * from [dbo].[wms_pulling_group_mes] (nolock) where pdline_code = '" + MesPulling[j].PdlineCode + "'";
|
|
|
List<WmsPullingGroupMes> mesPullingGroup = dbConn.Query<WmsPullingGroupMes>(getPullingGroupCumulativeValueSql).ToList();
|
|
|
if (Convert.ToInt32(mesPullingGroup[0].CumulativeValue) >= Convert.ToInt32(mesPullingGroup[0].TriggerValue))
|
|
|
{
|
|
|
//给MES生成 拉动任务
|
|
|
StringBuilder stringBuilderSQL = new StringBuilder(1024);
|
|
|
stringBuilderSQL.Append("insert into WMS_MES_PULL_ORDER(pdline_id,src_move_qty,syn_fig,create_time) values(@pdline_id,@src_move_qty,@syn_fig,@create_time) ");
|
|
|
sqlList.Add(stringBuilderSQL.ToString());
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@pdline_id", MesPulling[j].PdlineCode);//产线 100001
|
|
|
parameters.Add("@src_move_qty", MesPulling[j].PullValue);// 需求数量
|
|
|
parameters.Add("@syn_fig", "0");// WMS生成为 0
|
|
|
parameters.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));// 创建时间
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
stringBuilderSQL = new StringBuilder(1024);
|
|
|
stringBuilderSQL.Append("update wms_pulling_group_mes set cumulative_value =0 where pdline_code = @PdlineCode");
|
|
|
sqlList.Add(stringBuilderSQL.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@PdlineCode", MesPulling[j].PdlineCode);//
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
}
|
|
|
//LogHelper.Info("当前操作:结束执行" + outPdline.SerialNumber + "条码下线逻辑(MES计数器),当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
string updateWorkOrderNoSql = @"update mes_out_pdline set pull_record=1 where ruid=" + outPdline.Ruid + "";
|
|
|
dbConn.Execute(updateWorkOrderNoSql);//拉动值+1
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
if (bom.VitualPart == "XXXX")//虚阶,向下再查一层
|
|
|
{
|
|
|
List<SysBomDetail> vitualBom = bomDetailsList.Where(a => a.PartId == bom.ItemPartId).ToList();
|
|
|
foreach (var item in vitualBom)
|
|
|
{
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("INSERT INTO dbo.wms_product_deduct ");
|
|
|
sql.Append("( ");
|
|
|
sql.Append(" serial_number,part_id, part_no, unit, qty, item_part_id, item_part_no, item_unit, item_qty, ");
|
|
|
sql.Append(" pdline_code, bom_id, factory_id, factory_code, enabled, create_userid, create_time, guid ");
|
|
|
sql.Append(") ");
|
|
|
sql.Append("VALUES ");
|
|
|
sql.Append("( ");
|
|
|
sql.Append(" @serial_number, @part_id, @part_no, @unit, @qty, @item_part_id, @item_part_no, @item_unit, @item_qty, ");
|
|
|
sql.Append(" @pdline_code, @bom_id, @factory_id, @factory_code, @enabled, @create_userid, @create_time, @guid ");
|
|
|
sql.Append(") ");
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@serial_number", outPdline.SerialNumber);
|
|
|
parameters.Add("@part_id", outPdline.PartId);
|
|
|
parameters.Add("@part_no", outPdline.PartNo);
|
|
|
parameters.Add("@unit", outPdline.Unit);
|
|
|
parameters.Add("@qty", outPdline.Qty);
|
|
|
parameters.Add("@item_part_id", item.ItemPartId);
|
|
|
parameters.Add("@item_part_no", item.ItemPartNo);
|
|
|
parameters.Add("@item_unit", item.ItemUnit);
|
|
|
parameters.Add("@item_qty", item.ItemQty * outPdline.Qty);
|
|
|
parameters.Add("@pdline_code", outPdline.PdlineCode);
|
|
|
parameters.Add("@bom_id", item.BomId);
|
|
|
parameters.Add("@factory_id", outPdline.FactoryId);
|
|
|
parameters.Add("@factory_code", outPdline.FactoryCode);
|
|
|
parameters.Add("@enabled", WmsEnumUtil.Enabled.Y.ToString());
|
|
|
parameters.Add("@create_userid", 0);
|
|
|
parameters.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@guid", Guid.NewGuid());
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
}
|
|
|
else//正常操作
|
|
|
{
|
|
|
//新增 wms_product_deduct 待扣减表
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("INSERT INTO dbo.wms_product_deduct ");
|
|
|
sql.Append("( ");
|
|
|
sql.Append(" serial_number,part_id, part_no, unit, qty, item_part_id, item_part_no, item_unit, item_qty, ");
|
|
|
sql.Append(" pdline_code, bom_id, factory_id, factory_code, enabled, create_userid, create_time, guid ");
|
|
|
sql.Append(") ");
|
|
|
sql.Append("VALUES ");
|
|
|
sql.Append("( ");
|
|
|
sql.Append(" @serial_number, @part_id, @part_no, @unit, @qty, @item_part_id, @item_part_no, @item_unit, @item_qty, ");
|
|
|
sql.Append(" @pdline_code, @bom_id, @factory_id, @factory_code, @enabled, @create_userid, @create_time, @guid ");
|
|
|
sql.Append(") ");
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@serial_number", outPdline.SerialNumber);
|
|
|
parameters.Add("@part_id", outPdline.PartId);
|
|
|
parameters.Add("@part_no", outPdline.PartNo);
|
|
|
parameters.Add("@unit", outPdline.Unit);
|
|
|
parameters.Add("@qty", outPdline.Qty);
|
|
|
parameters.Add("@item_part_id", bom.ItemPartId);
|
|
|
parameters.Add("@item_part_no", bom.ItemPartNo);
|
|
|
parameters.Add("@item_unit", bom.ItemUnit);
|
|
|
parameters.Add("@item_qty", bom.ItemQty * outPdline.Qty);
|
|
|
parameters.Add("@pdline_code", outPdline.PdlineCode);
|
|
|
parameters.Add("@bom_id", bom.BomId);
|
|
|
parameters.Add("@factory_id", outPdline.FactoryId);
|
|
|
parameters.Add("@factory_code", outPdline.FactoryCode);
|
|
|
parameters.Add("@enabled", WmsEnumUtil.Enabled.Y.ToString());
|
|
|
parameters.Add("@create_userid", 0);
|
|
|
parameters.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@guid", Guid.NewGuid());
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
}
|
|
|
|
|
|
////新增 MES_MOVTRN 生产汇报信息给SAP 原定 主表 从表都传
|
|
|
//sql.Remove(0, sql.Length);
|
|
|
//sql.Append("INSERT INTO dbo.MES_MOVTRN ");
|
|
|
//sql.Append(" (WERKS,MATNRLNR,LMNGA,GMEIN,MDV01,ALORT,MATNR,ENTRY_QNT,ENTRY_UOM ");
|
|
|
//sql.Append(" ,STGE_LOC,BOMUPDATE,POSTDATE,POSTTIME,SID,RECTIM,SYNFLG,SEQ,GUID) ");
|
|
|
//sql.Append("VALUES ");
|
|
|
//sql.Append(" (@WERKS,@MATNRLNR,@LMNGA,@GMEIN,@MDV01,@ALORT,@MATNR,@ENTRY_QNT ");
|
|
|
//sql.Append(" ,@ENTRY_UOM,@STGE_LOC,@BOMUPDATE,@POSTDATE,@POSTTIME,@SID ");
|
|
|
//sql.Append(" ,@RECTIM,@SYNFLG,@SEQ,@GUID) ");
|
|
|
|
|
|
//parameters = new DynamicParameters();
|
|
|
//parameters.Add("@WERKS", outPdline.FactoryCode);//工厂
|
|
|
//parameters.Add("@MATNRLNR", outPdline.PartNo);//产成品物料编码
|
|
|
//parameters.Add("@LMNGA", outPdline.Qty);//完工数量
|
|
|
//parameters.Add("@GMEIN", outPdline.Unit);//产成品单位
|
|
|
//parameters.Add("@MDV01", string.IsNullOrEmpty(outPdline.ProductVersion) ? "" : outPdline.ProductVersion);//SAP生产版本对应信息
|
|
|
//parameters.Add("@ALORT", sysZones == null ? "" : sysZones.ErpWarehouse);//生产入库的SAP库位
|
|
|
////parameters.Add("@MATNR", bom.ItemPartNo);//原材料编码
|
|
|
////parameters.Add("@ENTRY_QNT", bom.ItemQty * outPdline.Qty);//原材料消耗的数量
|
|
|
////parameters.Add("@ENTRY_UOM", bom.ItemUnit);//单位
|
|
|
////parameters.Add("@STGE_LOC", "3001");//原材料消耗SAP库位
|
|
|
////parameters.Add("@BOMUPDATE", bom.StartYmd);//BOM启用日期 + 时间
|
|
|
////parameters.Add("@POSTDATE", DateTime.Now.ToString("yyyyMMdd"));//提交日期
|
|
|
////parameters.Add("@POSTTIME", DateTime.Now.ToString("HHmmss"));//提交时间
|
|
|
//parameters.Add("@MATNR", "");//原材料编码
|
|
|
//parameters.Add("@ENTRY_QNT", "");//原材料消耗的数量
|
|
|
//parameters.Add("@ENTRY_UOM", "");//单位
|
|
|
//parameters.Add("@STGE_LOC", "");//原材料消耗SAP库位
|
|
|
//parameters.Add("@BOMUPDATE", "");//BOM启用日期 + 时间
|
|
|
//parameters.Add("@POSTDATE", "");//提交日期
|
|
|
//parameters.Add("@POSTTIME", "");//提交时间
|
|
|
//parameters.Add("@SID", sid);//SID
|
|
|
//parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//创建时间
|
|
|
//parameters.Add("@SYNFLG", "N");//同步状态 未同步:N 已同步:Y
|
|
|
//parameters.Add("@SEQ", 0);//序号
|
|
|
//parameters.Add("@guid", Guid.NewGuid());//GUID
|
|
|
|
|
|
//sqlList.Add(sql.ToString());
|
|
|
//parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
#region MyRegion
|
|
|
//新增 MES_MOVTRN 生产汇报信息给SAP 只传成品
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("INSERT INTO dbo.MES_MOVTRN ");
|
|
|
sql.Append(" (WERKS,MATNRLNR,LMNGA,GMEIN,MDV01,ALORT,MATNR,ENTRY_QNT,ENTRY_UOM ");
|
|
|
sql.Append(" ,STGE_LOC,BOMUPDATE,POSTDATE,POSTTIME,SID,RECTIM,SYNFLG,SEQ,GUID) ");
|
|
|
sql.Append("VALUES ");
|
|
|
sql.Append(" (@WERKS,@MATNRLNR,@LMNGA,@GMEIN,@MDV01,@ALORT,@MATNR,@ENTRY_QNT ");
|
|
|
sql.Append(" ,@ENTRY_UOM,@STGE_LOC,@BOMUPDATE,@POSTDATE,@POSTTIME,@SID ");
|
|
|
sql.Append(" ,@RECTIM,@SYNFLG,@SEQ,@GUID) ");
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@WERKS", outPdline.FactoryCode);//工厂
|
|
|
parameters.Add("@MATNRLNR", outPdline.PartNo);//产成品物料编码
|
|
|
parameters.Add("@LMNGA", outPdline.Qty);//完工数量
|
|
|
parameters.Add("@GMEIN", outPdline.Unit);//产成品单位
|
|
|
parameters.Add("@MDV01", string.IsNullOrEmpty(outPdline.ProductVersion) ? "" : outPdline.ProductVersion);//SAP生产版本对应信息
|
|
|
parameters.Add("@ALORT", sysZones == null ? "" : sysZones.ErpWarehouse);//生产入库的SAP库位
|
|
|
//parameters.Add("@MATNR", bom.ItemPartNo);//原材料编码
|
|
|
//parameters.Add("@ENTRY_QNT", bom.ItemQty * outPdline.Qty);//原材料消耗的数量
|
|
|
//parameters.Add("@ENTRY_UOM", bom.ItemUnit);//单位
|
|
|
//parameters.Add("@STGE_LOC", "3001");//原材料消耗SAP库位
|
|
|
//parameters.Add("@BOMUPDATE", bom.StartYmd);//BOM启用日期 + 时间
|
|
|
//parameters.Add("@POSTDATE", DateTime.Now.ToString("yyyyMMdd"));//提交日期
|
|
|
//parameters.Add("@POSTTIME", DateTime.Now.ToString("HHmmss"));//提交时间
|
|
|
parameters.Add("@MATNR", "");//原材料编码
|
|
|
parameters.Add("@ENTRY_QNT", 0);//原材料消耗的数量
|
|
|
parameters.Add("@ENTRY_UOM", "");//单位
|
|
|
parameters.Add("@STGE_LOC", "");//原材料消耗SAP库位
|
|
|
parameters.Add("@BOMUPDATE", "");//BOM启用日期 + 时间
|
|
|
parameters.Add("@POSTDATE", DateTime.Now.ToString("yyyyMMdd"));//提交日期
|
|
|
parameters.Add("@POSTTIME", DateTime.Now.ToString("HHmmss"));//提交时间
|
|
|
parameters.Add("@SID", sid);//SID
|
|
|
parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//创建时间
|
|
|
parameters.Add("@SYNFLG", "N");//同步状态 未同步:N 已同步:Y
|
|
|
parameters.Add("@SEQ", 0);//序号
|
|
|
parameters.Add("@guid", Guid.NewGuid());//GUID
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
#endregion
|
|
|
|
|
|
//LogHelper.Info("当前操作:结束执行" + outPdline.SerialNumber + "产线下线拆解BOM操作,WMS计数器生成拉动单、MES计数器生成JIT需求任务,当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
sql.Remove(0, sql.Length);
|
|
|
sql.Append("UPDATE dbo.mes_out_pdline ");
|
|
|
sql.Append("SET report_status = @reportStatus, ");
|
|
|
sql.Append(" err_msg = '', ");
|
|
|
sql.Append(" update_userid = @updateUserid, ");
|
|
|
sql.Append(" update_time = @updateTime ");
|
|
|
sql.Append("WHERE serial_number = @serialNumber ");
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@reportStatus", MesEnumUtil.OutPdlineReportStatus.REPORTED);
|
|
|
parameters.Add("@updateUserid", 0);
|
|
|
parameters.Add("@updateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@serialNumber", outPdline.SerialNumber);
|
|
|
|
|
|
sqlList.Add(sql.ToString());
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
return this.ExecuteTransaction(sqlList, parametersList);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <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;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|