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.
644 lines
38 KiB
C#
644 lines
38 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 QcRepository : BaseRepository<BaseEntity>, IQcRepository
|
|
{
|
|
public QcRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 质检单选择订单列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<WmsQcDetail> GetQCListing()
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
StringBuilder getqcSQL = new StringBuilder(1024);
|
|
getqcSQL.Append(@"select * from wms_qc_header (nolock) where order_status in ('10','20')");
|
|
List<WmsQcDetail> WmsQcDetail = dbConn.Query<WmsQcDetail>(getqcSQL.ToString()).ToList();
|
|
|
|
return WmsQcDetail;
|
|
}
|
|
}
|
|
|
|
//订单收货情况
|
|
public List<WmsQcShowList> GetShowList(string receving, string loginId)
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
StringBuilder getqcSQL = new StringBuilder(1024);
|
|
getqcSQL.Append(@"select a.*,b.part_spec2 from wms_qc_detail a (nolock) left join sys_part b (nolock) on a.part_id=b.part_id where order_no = @order_no ");
|
|
DynamicParameters Qcparameters = new DynamicParameters();
|
|
Qcparameters.Add("@order_no", receving);
|
|
List<WmsQcDetail> WmsQcDetail = dbConn.Query<WmsQcDetail>(getqcSQL.ToString(), Qcparameters).ToList();
|
|
|
|
List<WmsQcShowList> showlist = new List<WmsQcShowList>();
|
|
if (WmsQcDetail.Count > 0)
|
|
{
|
|
|
|
//去重 分组统计零件
|
|
List<WmsQcDetail> partDetail = WmsQcDetail.Distinct(new PartIdCompare()).ToList();
|
|
for (int i = 0; i < partDetail.Count; i++)
|
|
{
|
|
int PartId = partDetail[i].PartId;
|
|
//应收总数
|
|
int qtySum = WmsQcDetail.Where(a => a.PartId == PartId && a.Enabled == "Y").Sum(s => s.Qty);
|
|
//未收总数
|
|
int qty10 = WmsQcDetail.Where(a => a.PartId == PartId && a.Enabled == "Y" && a.ItemStatus == "10").Sum(s => s.Qty);
|
|
//合格数
|
|
//int OkQty = WmsQcDetail.Where(a => a.PartId == PartId && a.Enabled == "Y" && a.ItemStatus == "20").Sum(s => s.Qty);
|
|
//NC总数
|
|
int NcQty = WmsQcDetail.Where(a => a.PartId == PartId && a.Enabled == "Y").Sum(s => s.NcQty);
|
|
|
|
WmsQcShowList list = new WmsQcShowList();
|
|
list.partSpec = partDetail[i].PartSpec;
|
|
list.PartId = PartId;
|
|
list.PartNo = partDetail[i].PartNo;
|
|
list.PartSpec2 = partDetail[i].PartSpec2;
|
|
list.QtySum = qtySum;
|
|
list.qty10 = qtySum - qty10;
|
|
list.OkQty = qtySum - qty10 - NcQty;
|
|
list.NcQty = NcQty;
|
|
showlist.Add(list);
|
|
}
|
|
}
|
|
|
|
return showlist;
|
|
}
|
|
}
|
|
|
|
//完成质检
|
|
public string CheckQc(string receving, string loginId, string remark)
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
dbConn.Open();
|
|
|
|
List<string> sqlStrings = new List<string>();
|
|
List<DynamicParameters> parameterList = new List<DynamicParameters>();
|
|
|
|
//更改条码表箱 条码状态为 40
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
sql.Append("select * from sys_stock (nolock) where carton_no in ( select carton_no from wms_qc_detail (nolock) where order_no= @order_no and item_status != '30')");
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
parameters.Add("@order_no", receving);
|
|
List<SysStock> sysStocks = dbConn.Query<SysStock>(sql.ToString(), parameters).ToList();
|
|
|
|
for (int i = 0; i < sysStocks.Count; i++)
|
|
{
|
|
StringBuilder updateString3 = new StringBuilder(1024);
|
|
updateString3.Append("update sys_stock set status='40',update_userid=@update_userid,update_time=@update_time,qc_finish_time=@QCfinishTime where carton_no= @carton_no ");
|
|
DynamicParameters updateStringparameters3 = new DynamicParameters();
|
|
updateStringparameters3.Add("@carton_no", sysStocks[i].CartonNo);
|
|
updateStringparameters3.Add("@update_userid", loginId);
|
|
updateStringparameters3.Add("@QCfinishTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters3.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
sqlStrings.Add(updateString3.ToString());
|
|
parameterList.Add(updateStringparameters3);
|
|
|
|
//新增 sys_stock_trans 事务表
|
|
StringBuilder updateString4 = new StringBuilder(1024);
|
|
updateString4.Append(@" INSERT INTO[dbo].[sys_stock_trans]
|
|
([trans_code]
|
|
,[carton_no]
|
|
,[part_id]
|
|
,[part_no]
|
|
,[part_spec]
|
|
,[src_locate_id]
|
|
,[src_locate_name]
|
|
,[dest_locate_id]
|
|
,[dest_locate_name]
|
|
,[old_qty]
|
|
,[new_qty]
|
|
,[trans_qty]
|
|
,[old_status]
|
|
,[new_status]
|
|
,[old_qms_status]
|
|
,[new_qms_status]
|
|
,[unit]
|
|
,[factory_id]
|
|
,[factory_code]
|
|
,[src_erp_warehouse]
|
|
,[dest_erp_warehouse]
|
|
,[src_warehouse_id]
|
|
,[src_warehouse_name]
|
|
,[dest_warehouse_id]
|
|
,[dest_warehouse_name]
|
|
,[src_zone_id]
|
|
,[src_zone_name]
|
|
,[dest_zone_id]
|
|
,[dest_zone_name]
|
|
,[enabled]
|
|
,[update_userid]
|
|
,[update_time]
|
|
,[create_userid]
|
|
,[create_time]
|
|
,[guid],ref_order_no)
|
|
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
|
|
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid ,@ref_order_no)");
|
|
|
|
DynamicParameters updateStringparameters4 = new DynamicParameters();
|
|
updateStringparameters4.Add("@trans_code", 50);
|
|
updateStringparameters4.Add("@carton_no", sysStocks[i].CartonNo);
|
|
updateStringparameters4.Add("@part_id", sysStocks[i].PartId);
|
|
updateStringparameters4.Add("@part_no", sysStocks[i].PartNo);
|
|
updateStringparameters4.Add("@part_spec", sysStocks[i].PartSpec);
|
|
updateStringparameters4.Add("@src_locate_id", 0);
|
|
updateStringparameters4.Add("@src_locate_name", null);
|
|
updateStringparameters4.Add("@dest_locate_id", 0);
|
|
updateStringparameters4.Add("@dest_locate_name", null);
|
|
updateStringparameters4.Add("@old_qty", sysStocks[i].Qty);
|
|
updateStringparameters4.Add("@new_qty", sysStocks[i].Qty);
|
|
updateStringparameters4.Add("@trans_qty", sysStocks[i].Qty);
|
|
updateStringparameters4.Add("@old_status", sysStocks[i].Status);
|
|
updateStringparameters4.Add("@new_status", 40);
|
|
updateStringparameters4.Add("@old_qms_status", 10);
|
|
updateStringparameters4.Add("@new_qms_status", 20);
|
|
updateStringparameters4.Add("@unit", sysStocks[i].Unit);
|
|
updateStringparameters4.Add("@factory_id", sysStocks[i].FactoryId);
|
|
updateStringparameters4.Add("@factory_code", sysStocks[i].FactoryCode);
|
|
updateStringparameters4.Add("@src_erp_warehouse", sysStocks[i].ErpWarehouse);
|
|
updateStringparameters4.Add("@dest_erp_warehouse", sysStocks[i].ErpWarehouse);
|
|
updateStringparameters4.Add("@src_warehouse_id", sysStocks[i].WarehouseId);
|
|
updateStringparameters4.Add("@src_warehouse_name", sysStocks[i].WarehouseName);
|
|
updateStringparameters4.Add("@dest_warehouse_id", sysStocks[i].WarehouseId);
|
|
updateStringparameters4.Add("@dest_warehouse_name", sysStocks[i].WarehouseName);
|
|
updateStringparameters4.Add("@src_zone_id", sysStocks[i].ZoneId);
|
|
updateStringparameters4.Add("@src_zone_name", sysStocks[i].ZoneName);
|
|
updateStringparameters4.Add("@dest_zone_id", sysStocks[i].ZoneId);
|
|
updateStringparameters4.Add("@dest_zone_name", sysStocks[i].ZoneName);
|
|
updateStringparameters4.Add("@enabled", sysStocks[i].Enabled);
|
|
updateStringparameters4.Add("@update_userid", loginId);
|
|
updateStringparameters4.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters4.Add("@create_userid", loginId);
|
|
updateStringparameters4.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters4.Add("@guid", Guid.NewGuid());
|
|
updateStringparameters4.Add("@ref_order_no", receving);
|
|
|
|
sqlStrings.Add(updateString4.ToString());
|
|
parameterList.Add(updateStringparameters4);
|
|
}
|
|
|
|
StringBuilder sql3 = new StringBuilder(1024);
|
|
sql3.Append("select order_no,part_no,sum(qty) qty ,sum(nc_qty) nc_qty from wms_qc_detail (nolock) where order_no=@order_no group by part_no,order_no");
|
|
DynamicParameters sql3parameters = new DynamicParameters();
|
|
sql3parameters.Add("@order_no", receving);
|
|
List<WmsQcDetail> qcDetails = dbConn.Query<WmsQcDetail>(sql3.ToString(), sql3parameters).ToList();
|
|
|
|
//更改质检明细表状态 30 已完成
|
|
StringBuilder updateString = new StringBuilder(1024);
|
|
updateString.Append("update wms_qc_detail set item_status='30',update_userid=@update_userid,remark= isnull(remark,'') + @remark,update_time=@update_time where order_no= @order_no and item_status != '30' ");
|
|
DynamicParameters updateStringparameters = new DynamicParameters();
|
|
updateStringparameters.Add("@order_no", receving);
|
|
updateStringparameters.Add("@update_userid", loginId);
|
|
updateStringparameters.Add("@remark", remark);
|
|
updateStringparameters.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
sqlStrings.Add(updateString.ToString());
|
|
parameterList.Add(updateStringparameters);
|
|
|
|
//更改质检表状态 30 已完成
|
|
StringBuilder updateString2 = new StringBuilder(1024);
|
|
updateString2.Append("update wms_qc_header set order_status='30',update_userid=@update_userid,remark=isnull(remark,'') + @remark,update_time=@update_time where order_no= @order_no ");
|
|
DynamicParameters updateStringparameters2 = new DynamicParameters();
|
|
updateStringparameters2.Add("@order_no", receving);
|
|
updateStringparameters2.Add("@update_userid", loginId);
|
|
updateStringparameters2.Add("@remark", remark);
|
|
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
sqlStrings.Add(updateString2.ToString());
|
|
parameterList.Add(updateStringparameters2);
|
|
|
|
List<WmsPurchase> getorder = getOrderType(qcDetails[0].OrderNo);
|
|
|
|
string sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
string bstyp = "L";
|
|
if (getorder[0].OrderType == (int)WmsEnumUtil.PurchaseOrderType.PO)
|
|
{
|
|
bstyp = "F";
|
|
}
|
|
if (getorder[0].OrderType == (int)WmsEnumUtil.PurchaseOrderType.ASN)
|
|
{
|
|
bstyp = "L";
|
|
}
|
|
if (getorder[0].OrderType == (int)WmsEnumUtil.PurchaseOrderType.SWITCH)
|
|
{
|
|
bstyp = "Z";
|
|
}
|
|
if (getorder[0].OrderType == (int)WmsEnumUtil.PurchaseOrderType.SUB)
|
|
{
|
|
bstyp = "L";
|
|
}
|
|
for (int i = 0; i < qcDetails.Count; i++)
|
|
{
|
|
StringBuilder insertSAPQC = new StringBuilder(1024);
|
|
insertSAPQC.Append(@" INSERT INTO [dbo].[WMS_INQC]
|
|
([BSTYP]
|
|
,[EVRTN]
|
|
,[ETENR]
|
|
,[ZDEV]
|
|
,[LGORT]
|
|
,[UNIT]
|
|
,[ZPOST]
|
|
,[ZTIME]
|
|
,[WERKS]
|
|
,[MATNR]
|
|
,[LIFNR]
|
|
,[SID]
|
|
,[ACTTIM]
|
|
,[ACTUSR],[prove])
|
|
VALUES(@BSTYP,@EVRTN,@ETENR,@ZDEV,@LGORT,@UNIT,@ZPOST,@ZTIME,@WERKS,@MATNR,@LIFNR,@SID,@ACTTIM,@ACTUSR,@prove)");
|
|
|
|
DynamicParameters insertSAPQCparameters = new DynamicParameters();
|
|
insertSAPQCparameters.Add("@BSTYP", bstyp);
|
|
insertSAPQCparameters.Add("@EVRTN", getorder[0].OrderNo.Trim());
|
|
insertSAPQCparameters.Add("@SID", sid);
|
|
insertSAPQCparameters.Add("@ETENR", getItemNo(getorder[0].OrderNo, qcDetails[i].PartNo)[0].ItemNo);
|
|
insertSAPQCparameters.Add("@ZDEV", qcDetails[i].Qty - qcDetails[i].NcQty);
|
|
insertSAPQCparameters.Add("@LGORT", getItemNo(getorder[0].OrderNo, qcDetails[i].PartNo)[0].ErpWarehouse);
|
|
List<SysPart> sysParts = getPart(qcDetails[i].PartNo);
|
|
if (sysParts.Count == 0)
|
|
{
|
|
return "未查询到零件号信息,请维护" + qcDetails[i].PartNo;
|
|
}
|
|
insertSAPQCparameters.Add("@UNIT", sysParts[0].Unit);
|
|
insertSAPQCparameters.Add("@ACTTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
insertSAPQCparameters.Add("@ACTUSR", loginId);
|
|
insertSAPQCparameters.Add("@ZPOST", DateTime.Now.ToString("yyyyMMdd"));
|
|
insertSAPQCparameters.Add("@ZTIME", DateTime.Now.ToString("HHmmss"));
|
|
insertSAPQCparameters.Add("@WERKS", getorder[0].FactoryCode);
|
|
insertSAPQCparameters.Add("@MATNR", qcDetails[i].PartNo);
|
|
insertSAPQCparameters.Add("@LIFNR", getorder[0].OrderType == (int)WmsEnumUtil.PurchaseOrderType.SWITCH ? "" : getorder[0].VendorCode);
|
|
insertSAPQCparameters.Add("@prove", receving.Substring(4));
|
|
|
|
sqlStrings.Add(insertSAPQC.ToString());
|
|
parameterList.Add(insertSAPQCparameters);
|
|
}
|
|
|
|
|
|
//执行事务
|
|
IDbTransaction transaction = dbConn.BeginTransaction();
|
|
|
|
bool successCount = true;
|
|
for (int i = 0; i < sqlStrings.Count; i++)
|
|
{
|
|
if (dbConn.Execute(sqlStrings[i], parameterList[i], transaction) < 1)
|
|
{
|
|
successCount = false;
|
|
}
|
|
}
|
|
if (successCount)
|
|
{
|
|
transaction.Commit();
|
|
return "OK";
|
|
}
|
|
else
|
|
{
|
|
transaction.Rollback();
|
|
return "操作失败,请重新尝试!";
|
|
}
|
|
}
|
|
}
|
|
|
|
public string CheckCartonStatus(string cartonNo, string loginId, string orderNo)
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
dbConn.Open();
|
|
string result = string.Empty;
|
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
sql.Append("select * from wms_qc_detail (nolock) where order_no = @order_no and carton_no=@carton_no and Enabled='Y' ");
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
parameters.Add("@carton_no", cartonNo);
|
|
parameters.Add("@order_no", orderNo);
|
|
List<WmsQcDetail> dt = dbConn.Query<WmsQcDetail>(sql.ToString(), parameters).ToList();
|
|
|
|
if (dt.Count > 0)
|
|
{
|
|
List<WmsQcDetail> ifQc = dt.Where(a => a.CartonNo == cartonNo && a.ItemStatus == "10").ToList();
|
|
|
|
if (ifQc.Count > 0)
|
|
{
|
|
return "OK" + ifQc[0].Qty;
|
|
}
|
|
else
|
|
{
|
|
return "[" + cartonNo + "]: 已质检!";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return "[" + cartonNo + "]: 不在此质检单内!";
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public string CheckQcCarton(string QcCartonNo, string MAXmessage, string loginId, string Remark, string receving)
|
|
{
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
{
|
|
dbConn.Open();
|
|
|
|
List<string> sqlStrings = new List<string>();
|
|
List<DynamicParameters> parameterList = new List<DynamicParameters>();
|
|
|
|
//更改质检明细表状态 30 拒收
|
|
StringBuilder updateString = new StringBuilder(1024);
|
|
updateString.Append("update wms_qc_detail set item_status='30',update_userid=@update_userid,remark= isnull(remark,'') + @remark,update_time=@update_time,nc_qty=@nc_qty where carton_no= @carton_no and item_status != '30' ");
|
|
DynamicParameters updateStringparameters = new DynamicParameters();
|
|
updateStringparameters.Add("@carton_no", QcCartonNo);
|
|
updateStringparameters.Add("@update_userid", loginId);
|
|
updateStringparameters.Add("@remark", Remark);
|
|
updateStringparameters.Add("@nc_qty", MAXmessage);
|
|
updateStringparameters.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
sqlStrings.Add(updateString.ToString());
|
|
parameterList.Add(updateStringparameters);
|
|
|
|
//获取质检订单 条码信息
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
sql.Append(@"select a.* from sys_stock as a (nolock) right join
|
|
(select * from wms_qc_detail (nolock) where order_no = (
|
|
select distinct order_no from wms_qc_detail (nolock) where carton_no = @carton_no ) and item_status='10' ) as b
|
|
on a.carton_no = b.carton_no where isnull(a.carton_no,'') != '' ");
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
parameters.Add("@carton_no", QcCartonNo);
|
|
List<SysStock> sysStocks = dbConn.Query<SysStock>(sql.ToString(), parameters).ToList();
|
|
|
|
|
|
if (sysStocks.Count > 0)
|
|
{
|
|
//如果只有一条,质检明细表就是最后一条,需要将质检主表也进行状态变更
|
|
if (sysStocks.Count == 1)
|
|
{
|
|
//更改质检表状态 30 已完成
|
|
StringBuilder updateString2 = new StringBuilder(1024);
|
|
updateString2.Append("update wms_qc_header set order_status='30',update_userid=@update_userid,remark=isnull(remark,'') + @remark,update_time=@update_time where order_no= @order_no ");
|
|
DynamicParameters updateStringparameters2 = new DynamicParameters();
|
|
updateStringparameters2.Add("@order_no", receving);
|
|
updateStringparameters2.Add("@update_userid", loginId);
|
|
updateStringparameters2.Add("@remark", "");
|
|
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
sqlStrings.Add(updateString2.ToString());
|
|
parameterList.Add(updateStringparameters2);
|
|
}
|
|
}
|
|
List<SysStock> sysStock = sysStocks.Where(a => a.CartonNo == QcCartonNo && a.Enabled == "Y").ToList();
|
|
|
|
|
|
|
|
//新增 sys_stock_trans 事务表
|
|
StringBuilder updateString4 = new StringBuilder(1024);
|
|
updateString4.Append(@" INSERT INTO[dbo].[sys_stock_trans]
|
|
([trans_code]
|
|
,[carton_no]
|
|
,[part_id]
|
|
,[part_no]
|
|
,[part_spec]
|
|
,[src_locate_id]
|
|
,[src_locate_name]
|
|
,[dest_locate_id]
|
|
,[dest_locate_name]
|
|
,[old_qty]
|
|
,[new_qty]
|
|
,[trans_qty]
|
|
,[old_status]
|
|
,[new_status]
|
|
,[old_qms_status]
|
|
,[new_qms_status]
|
|
,[unit]
|
|
,[factory_id]
|
|
,[factory_code]
|
|
,[src_erp_warehouse]
|
|
,[dest_erp_warehouse]
|
|
,[src_warehouse_id]
|
|
,[src_warehouse_name]
|
|
,[dest_warehouse_id]
|
|
,[dest_warehouse_name]
|
|
,[src_zone_id]
|
|
,[src_zone_name]
|
|
,[dest_zone_id]
|
|
,[dest_zone_name]
|
|
,[enabled]
|
|
,[update_userid]
|
|
,[update_time]
|
|
,[create_userid]
|
|
,[create_time]
|
|
,[guid],ref_order_no)
|
|
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
|
|
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid ,@ref_order_no)");
|
|
|
|
//更改条码表状态为 150 拒收
|
|
if (sysStock.Count > 0)
|
|
{
|
|
if (Convert.ToInt32(sysStock[0].Qty) == Convert.ToInt32(MAXmessage))
|
|
{
|
|
StringBuilder updateString3 = new StringBuilder(1024);
|
|
updateString3.Append("update sys_stock set status='150',update_userid=@update_userid,update_time=@update_time,qc_finish_time=@QCfinishTime where carton_no= @carton_no ");
|
|
DynamicParameters updateStringparameters3 = new DynamicParameters();
|
|
updateStringparameters3.Add("@carton_no", QcCartonNo);
|
|
updateStringparameters3.Add("@update_userid", loginId);
|
|
updateStringparameters3.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters3.Add("@QCfinishTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
sqlStrings.Add(updateString3.ToString());
|
|
parameterList.Add(updateStringparameters3);
|
|
|
|
//拒收事务
|
|
DynamicParameters updateStringparameters4 = new DynamicParameters();
|
|
updateStringparameters4.Add("@trans_code", sysStock[0].Status);
|
|
updateStringparameters4.Add("@carton_no", sysStock[0].CartonNo);
|
|
updateStringparameters4.Add("@part_id", sysStock[0].PartId);
|
|
updateStringparameters4.Add("@part_no", sysStock[0].PartNo);
|
|
updateStringparameters4.Add("@part_spec", sysStock[0].PartSpec);
|
|
updateStringparameters4.Add("@src_locate_id", 0);
|
|
updateStringparameters4.Add("@src_locate_name", null);
|
|
updateStringparameters4.Add("@dest_locate_id", 0);
|
|
updateStringparameters4.Add("@dest_locate_name", null);
|
|
updateStringparameters4.Add("@old_qty", sysStock[0].Qty);
|
|
updateStringparameters4.Add("@new_qty", sysStock[0].Qty);
|
|
updateStringparameters4.Add("@trans_qty", sysStock[0].Qty);
|
|
updateStringparameters4.Add("@old_status", sysStock[0].Status);
|
|
updateStringparameters4.Add("@new_status", 150);
|
|
updateStringparameters4.Add("@old_qms_status", 10);
|
|
updateStringparameters4.Add("@new_qms_status", 30);
|
|
updateStringparameters4.Add("@unit", sysStock[0].Unit);
|
|
updateStringparameters4.Add("@factory_id", sysStock[0].FactoryId);
|
|
updateStringparameters4.Add("@factory_code", sysStock[0].FactoryCode);
|
|
updateStringparameters4.Add("@src_erp_warehouse", sysStock[0].ErpWarehouse);
|
|
updateStringparameters4.Add("@dest_erp_warehouse", sysStock[0].ErpWarehouse);
|
|
updateStringparameters4.Add("@src_warehouse_id", sysStock[0].WarehouseId);
|
|
updateStringparameters4.Add("@src_warehouse_name", sysStock[0].WarehouseName);
|
|
updateStringparameters4.Add("@dest_warehouse_id", sysStock[0].WarehouseId);
|
|
updateStringparameters4.Add("@dest_warehouse_name", sysStock[0].WarehouseName);
|
|
updateStringparameters4.Add("@src_zone_id", sysStock[0].ZoneId);
|
|
updateStringparameters4.Add("@src_zone_name", sysStock[0].ZoneName);
|
|
updateStringparameters4.Add("@dest_zone_id", sysStock[0].ZoneId);
|
|
updateStringparameters4.Add("@dest_zone_name", sysStock[0].ZoneName);
|
|
updateStringparameters4.Add("@enabled", sysStock[0].Enabled);
|
|
updateStringparameters4.Add("@update_userid", loginId);
|
|
updateStringparameters4.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters4.Add("@create_userid", loginId);
|
|
updateStringparameters4.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters4.Add("@guid", Guid.NewGuid());
|
|
updateStringparameters4.Add("@ref_order_no", receving);
|
|
|
|
sqlStrings.Add(updateString4.ToString());
|
|
parameterList.Add(updateStringparameters4);
|
|
}
|
|
else
|
|
{
|
|
StringBuilder updateString3 = new StringBuilder(1024);
|
|
updateString3.Append("update sys_stock set status='40',qty =@qty,update_userid=@update_userid,update_time=@update_time,qc_finish_time=@QCfinishTime where carton_no= @carton_no ");
|
|
DynamicParameters updateStringparameters3 = new DynamicParameters();
|
|
updateStringparameters3.Add("@carton_no", QcCartonNo);
|
|
updateStringparameters3.Add("@qty", sysStock[0].Qty - Convert.ToDecimal(MAXmessage));
|
|
updateStringparameters3.Add("@update_userid", loginId);
|
|
updateStringparameters3.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters3.Add("@QCfinishTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
sqlStrings.Add(updateString3.ToString());
|
|
parameterList.Add(updateStringparameters3);
|
|
//拒收事务
|
|
DynamicParameters updateStringparameters4 = new DynamicParameters();
|
|
updateStringparameters4.Add("@trans_code", sysStock[0].Status);
|
|
updateStringparameters4.Add("@carton_no", sysStock[0].CartonNo);
|
|
updateStringparameters4.Add("@part_id", sysStock[0].PartId);
|
|
updateStringparameters4.Add("@part_no", sysStock[0].PartNo);
|
|
updateStringparameters4.Add("@part_spec", sysStock[0].PartSpec);
|
|
updateStringparameters4.Add("@src_locate_id", 0);
|
|
updateStringparameters4.Add("@src_locate_name", null);
|
|
updateStringparameters4.Add("@dest_locate_id", 0);
|
|
updateStringparameters4.Add("@dest_locate_name", null);
|
|
updateStringparameters4.Add("@old_qty", sysStock[0].Qty);
|
|
updateStringparameters4.Add("@new_qty", sysStock[0].Qty - Convert.ToDecimal(MAXmessage));
|
|
updateStringparameters4.Add("@trans_qty", sysStock[0].Qty);
|
|
updateStringparameters4.Add("@old_status", sysStock[0].Status);
|
|
updateStringparameters4.Add("@new_status", 40);
|
|
updateStringparameters4.Add("@old_qms_status", 10);
|
|
updateStringparameters4.Add("@new_qms_status", 30);
|
|
updateStringparameters4.Add("@unit", sysStock[0].Unit);
|
|
updateStringparameters4.Add("@factory_id", sysStock[0].FactoryId);
|
|
updateStringparameters4.Add("@factory_code", sysStock[0].FactoryCode);
|
|
updateStringparameters4.Add("@src_erp_warehouse", sysStock[0].ErpWarehouse);
|
|
updateStringparameters4.Add("@dest_erp_warehouse", sysStock[0].ErpWarehouse);
|
|
updateStringparameters4.Add("@src_warehouse_id", sysStock[0].WarehouseId);
|
|
updateStringparameters4.Add("@src_warehouse_name", sysStock[0].WarehouseName);
|
|
updateStringparameters4.Add("@dest_warehouse_id", sysStock[0].WarehouseId);
|
|
updateStringparameters4.Add("@dest_warehouse_name", sysStock[0].WarehouseName);
|
|
updateStringparameters4.Add("@src_zone_id", sysStock[0].ZoneId);
|
|
updateStringparameters4.Add("@src_zone_name", sysStock[0].ZoneName);
|
|
updateStringparameters4.Add("@dest_zone_id", sysStock[0].ZoneId);
|
|
updateStringparameters4.Add("@dest_zone_name", sysStock[0].ZoneName);
|
|
updateStringparameters4.Add("@enabled", sysStock[0].Enabled);
|
|
updateStringparameters4.Add("@update_userid", loginId);
|
|
updateStringparameters4.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters4.Add("@create_userid", loginId);
|
|
updateStringparameters4.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
updateStringparameters4.Add("@guid", Guid.NewGuid());
|
|
updateStringparameters4.Add("@ref_order_no", receving);
|
|
|
|
sqlStrings.Add(updateString4.ToString());
|
|
parameterList.Add(updateStringparameters4);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//执行事务
|
|
IDbTransaction transaction = dbConn.BeginTransaction();
|
|
|
|
bool successCount = true;
|
|
for (int i = 0; i < sqlStrings.Count; i++)
|
|
{
|
|
if (dbConn.Execute(sqlStrings[i], parameterList[i], transaction) < 1)
|
|
{
|
|
successCount = false;
|
|
}
|
|
}
|
|
if (successCount)
|
|
{
|
|
transaction.Commit();
|
|
return "OK";
|
|
}
|
|
else
|
|
{
|
|
transaction.Rollback();
|
|
return "操作失败,请重新尝试!";
|
|
}
|
|
}
|
|
}
|
|
|
|
public List<WmsPurchase> getOrderType(string QCorderNo)
|
|
{
|
|
IDbConnection dbConn = dapperDbContext.GetDbConnection();
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
sql.Append("select c.* from wms_qc_header as a (nolock) left join wms_purchase as c (nolock) on a.ref_order_no = c.order_no where a.order_no = @orderNo");
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", QCorderNo);
|
|
List<WmsPurchase> qcHeaders = dbConn.Query<WmsPurchase>(sql.ToString(), parameters).ToList();
|
|
return qcHeaders;
|
|
}
|
|
|
|
public List<SysPart> getPart(string partNo)
|
|
{
|
|
IDbConnection dbConn = dapperDbContext.GetDbConnection();
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
sql.Append("select * from sys_part (nolock) where part_no=@partNo");
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
parameters.Add("@partNo", partNo);
|
|
List<SysPart> getParts = dbConn.Query<SysPart>(sql.ToString(), parameters).ToList();
|
|
return getParts;
|
|
}
|
|
public List<WmsPurchaseDetail> getItemNo(string orderNo, string partNo)
|
|
{
|
|
IDbConnection dbConn = dapperDbContext.GetDbConnection();
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
sql.Append("select * from wms_purchase_detail (nolock) where order_no=@order_no and part_no=@partNo");
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
parameters.Add("@order_no", orderNo);
|
|
parameters.Add("@partNo", partNo);
|
|
List<WmsPurchaseDetail> getPurchaseDetail = dbConn.Query<WmsPurchaseDetail>(sql.ToString(), parameters).ToList();
|
|
return getPurchaseDetail;
|
|
}
|
|
public List<SysZone> getErpWareHouse()
|
|
{
|
|
IDbConnection dbConn = dapperDbContext.GetDbConnection();
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
sql.Append("select a.erp_warehouse from sys_zone as a (nolock) left join sys_locate as b (nolock) on a.zone_id=b.zone_id where b.locate_type='50' ");
|
|
List<SysZone> sysZones = dbConn.Query<SysZone>(sql.ToString()).ToList();
|
|
return sysZones;
|
|
}
|
|
}
|
|
public class PartIdCompare : IEqualityComparer<WmsQcDetail>
|
|
{
|
|
public bool Equals(WmsQcDetail x, WmsQcDetail y)
|
|
{
|
|
return x.PartId.Equals(y.PartId);
|
|
}
|
|
public int GetHashCode(WmsQcDetail obj)
|
|
{
|
|
return obj.PartId.GetHashCode();
|
|
}
|
|
}
|
|
}
|