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, IQcRepository { public QcRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext) { } /// /// 质检单选择订单列表 /// /// public List 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 = dbConn.Query(getqcSQL.ToString()).ToList(); return WmsQcDetail; } } //订单收货情况 public List 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 = dbConn.Query(getqcSQL.ToString(), Qcparameters).ToList(); List showlist = new List(); if (WmsQcDetail.Count > 0) { //去重 分组统计零件 List 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 sqlStrings = new List(); List parameterList = new List(); //更改条码表箱 条码状态为 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 sysStocks = dbConn.Query(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 qcDetails = dbConn.Query(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 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 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 dt = dbConn.Query(sql.ToString(), parameters).ToList(); if (dt.Count > 0) { List 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 sqlStrings = new List(); List parameterList = new List(); //更改质检明细表状态 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 sysStocks = dbConn.Query(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 = 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 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 qcHeaders = dbConn.Query(sql.ToString(), parameters).ToList(); return qcHeaders; } public List 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 getParts = dbConn.Query(sql.ToString(), parameters).ToList(); return getParts; } public List 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 getPurchaseDetail = dbConn.Query(sql.ToString(), parameters).ToList(); return getPurchaseDetail; } public List 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 sysZones = dbConn.Query(sql.ToString()).ToList(); return sysZones; } } public class PartIdCompare : IEqualityComparer { public bool Equals(WmsQcDetail x, WmsQcDetail y) { return x.PartId.Equals(y.PartId); } public int GetHashCode(WmsQcDetail obj) { return obj.PartId.GetHashCode(); } } }