using Dapper; using Estsh.Core.Base; using Estsh.Core.Model.EnumUtil; using Estsh.Core.Models; using Estsh.Core.Services; using Estsh.Core.Wms.IRepositories; using Estsh.Core.Wms.IServices; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Estsh.Core.Wms.Services { /// /// 零星入库 /// public class ScatteredInStockService : BaseService, IScatteredInStockService { private readonly IScatteredInStockRepository repository; public ScatteredInStockService(IScatteredInStockRepository _repository) : base(_repository) { repository = _repository; } public SetObjectDetail GetScatteredInStockOrderList(string orderNo) { SetObjectDetail rfInfo = new SetObjectDetail();//返回消息 List wmsMoves = repository.GetScatteredInStockOrderList(orderNo); if (wmsMoves.Count > 0) { rfInfo.type = "PASS"; rfInfo.message = "成功"; rfInfo.wmsObjectDetail = wmsMoves.ConvertAll(s => (object)s); } else { rfInfo.type = "FAIL"; rfInfo.message = "未查询到数据,请检查!"; } return rfInfo; } public SetObjectDetail GetScatteredInStockOrderListByOrderNo(string orderNo) { SetObjectDetail rfInfo = new SetObjectDetail(); List wmsMoves = repository.GetScatteredInStockOrderListByOrderNo(orderNo); if (wmsMoves.Count > 0) { rfInfo.type = "PASS"; rfInfo.message = "成功"; rfInfo.wmsObjectDetail = wmsMoves.ConvertAll(s => (object)s); } else { rfInfo.type = "FAIL"; rfInfo.message = "未查询到数据,请检查!"; } return rfInfo; } public SetObjectDetail GetLocateByName(string locateName, string orderNo) { SetObjectDetail rfInfo = new SetObjectDetail(); SysLocate sysLocates = repository.GetLocateByLocateName(locateName); SysStock sysStocksLocateCount = repository.GetStackQtySumByLocateName(locateName);//库位在库数 if (sysLocates == null) { //提示 [A1-2-2]:该库位不存在,请检查! rfInfo.type = "FAIL"; rfInfo.message = "[" + locateName + "]:该库位不存在,请检查!"; return rfInfo; } else if (sysLocates.Enabled != "Y") { //提示 [A1-2-2]:该库位不可用,请检查! rfInfo.type = "FAIL"; rfInfo.message = "[" + locateName + "]:该库位不可用,请检查!"; return rfInfo; } else if (sysStocksLocateCount.Qty >= sysLocates.LocateCapacity) { //提示 [A1-2-2]:该库位容量已满,请检查! rfInfo.type = "FAIL"; rfInfo.message = "[" + locateName + "]:该库位容量已满,请检查!"; return rfInfo; } List instockDetailsErp = repository.GetInstockByOrderNoDestErp(orderNo, sysLocates.ErpWarehouse); if (instockDetailsErp.Count == 0) { rfInfo.type = "FAIL"; rfInfo.message = "[" + locateName + "]:库位ERP库存与订单指定库存地不一致!"; return rfInfo; } ////单据ERP库存地与扫描的库位ERP库存地比较 //if (WmsInstockDetails[0].DestErpWarehouse != sysLocates.ErpWarehouse) //{ // //提示 [M0090105]:该条码是零星入库状态,无法操作! // rfInfo.type = "FAIL"; // rfInfo.message = "[" + locateName + "]:库位ERP库存与订单指定库存地不一致!"; // return rfInfo; //} rfInfo.type = "PASS"; rfInfo.message = "[" + locateName + "]:扫描成功,请扫描箱条码"; return rfInfo; } public SetObjectDetail CheckStockByCartonAlocate(string cartonNo, string locateName, string orderNo, string loginId) { SetObjectDetail rfInfo = new SetObjectDetail(); SysStock sysStocks = repository.GetStockByCartonNo(cartonNo); List moveSnCreates = repository.GetInStockSnByOrderNo(orderNo); if (moveSnCreates.Count > 0) { List WmsInstockSns = repository.GetInStockSnByOrderNoCartonNo(orderNo, cartonNo); if (WmsInstockSns.Count == 0) { rfInfo.type = "FAIL"; rfInfo.message = "订单中不包含此包装条码,不允许此操作!"; return rfInfo; } } if (sysStocks == null) { //提示 [M0090105]:该条码不可用,请检查! rfInfo.type = "FAIL"; rfInfo.message = "[" + cartonNo + "]:该条码不存在,请检查!"; return rfInfo; } else if (sysStocks.Enabled != "Y") { //提示 [M0090105]:箱条码已冻结,无法操作! rfInfo.type = "FAIL"; rfInfo.message = "[" + cartonNo + "]:箱条码已冻结,无法操作!"; return rfInfo; } else if (sysStocks.Status != (int)WmsEnumUtil.StockStatus.WAITINSTOCKED)//待零星入库 { //提示 [M0090105]:该条码是**状态,无法操作! rfInfo.type = "FAIL"; rfInfo.message = "[" + cartonNo + "]:该条码是[" + sysStocks.StockStatus + "]状态,请检查!"; return rfInfo; } SysLocate sysLocates = repository.GetLocateInfoByLocateName(locateName); string locatePartNo1 = sysLocates.PartNo; string stockPartNo1 = sysStocks.PartNo; int InLocateCartonNoStatus = 0; if (sysLocates.LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE) { if (locatePartNo1 != stockPartNo1) { //提示 此箱码所对应零件与库位零件不匹配! rfInfo.type = "FAIL"; rfInfo.message = "此箱码所对应零件与库位零件不匹配!"; return rfInfo; } InLocateCartonNoStatus = (int)WmsEnumUtil.StockStatus.INSTOCKED; } else if (sysLocates.LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE)//机动库位 { List sysStocks3 = repository.GetInStockByLocateName(sysLocates.LocateName); for (int i = 0; i < sysStocks3.Count; i++) { if (sysStocks3[i].PartNo != "" && stockPartNo1 != sysStocks3[i].PartNo) { //提示 此箱码所对应零件与库位零件不匹配! rfInfo.type = "FAIL"; rfInfo.message = "[" + stockPartNo1 + "]该零件号无法入到机动库位,请检查!"; return rfInfo; } } InLocateCartonNoStatus = (int)WmsEnumUtil.StockStatus.INSTOCKED; } if (sysLocates.LocateType == (int)WmsEnumUtil.LocateType.NC_LOCATE) { InLocateCartonNoStatus = (int)WmsEnumUtil.StockStatus.NC_INSTOCK; } if (sysLocates.LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE) { InLocateCartonNoStatus = (int)WmsEnumUtil.StockStatus.INSTOCKED; } List WmsInstocks = repository.GetInStockByOrderNo(orderNo); if (WmsInstocks.Count == 0) { rfInfo.type = "FAIL"; rfInfo.message = "[" + orderNo + "]:该订单是未创建或已关闭状态,请检查!"; return rfInfo; } List WmsInstockDetails = repository.GetInStockDetailByOrderNoPartNo(orderNo, sysStocks.PartNo); if (WmsInstockDetails.Count == 0) { //提示 [M0090105]:该条码是零星入库状态,无法操作! rfInfo.type = "FAIL"; rfInfo.message = "[" + cartonNo + "]:该条码零件号不在订单内!"; return rfInfo; } StringBuilder stringBuilder = new StringBuilder(1024); List sqlStrings = new List(); List parameterList = new List(); for (int i = 0; i < WmsInstockDetails.Count; i++) { int remainNum = Convert.ToInt32(WmsInstockDetails[i].Qty - WmsInstockDetails[i].RecQty);//余数 if (sysStocks.Qty == remainNum) { if (WmsInstocks[0].OrderStatus != (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING)// { stringBuilder = new StringBuilder(1024); stringBuilder.Append("UPDATE wms_instock SET order_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no='" + orderNo + "';"); sqlStrings.Add(stringBuilder.ToString()); } stringBuilder = new StringBuilder(1024); stringBuilder.Append("UPDATE wms_instock_detail SET rec_qty+=" + sysStocks.Qty + ",item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED + " ,update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE ruid='" + WmsInstockDetails[i].Ruid + "';"); sqlStrings.Add(stringBuilder.ToString()); stringBuilder = new StringBuilder(1024); stringBuilder.Append("UPDATE sys_stock SET status=" + InLocateCartonNoStatus + ",locate_id=" + sysLocates.LocateId + ",locate_name='" + locateName + "',zone_id=" + sysLocates.ZoneId + ",zone_name='" + sysLocates.ZoneName + "',warehouse_id=" + sysLocates.WarehouseId + ",warehouse_name='" + sysLocates.WarehouseName + "',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE carton_no='" + cartonNo + "';"); sqlStrings.Add(stringBuilder.ToString()); stringBuilder = new StringBuilder(1024); //更新单据条码表 stringBuilder.Append("UPDATE dbo.wms_instock_sn "); stringBuilder.Append("SET status = " + (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED + ", "); stringBuilder.Append(" update_userid = " + loginId + ", "); stringBuilder.Append(" update_time = CONVERT(VARCHAR(20),GETDATE(),21) "); stringBuilder.Append("WHERE order_no = '" + orderNo + "' "); stringBuilder.Append(" AND carton_no = '" + cartonNo + "'; "); sqlStrings.Add(stringBuilder.ToString()); break; } else if (sysStocks.Qty > remainNum) { rfInfo.type = "FAIL"; rfInfo.message = "[" + cartonNo + "]:该条码库存大于订单需求数量!"; return rfInfo; } else if (sysStocks.Qty < remainNum) { if (WmsInstocks[0].OrderStatus != (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING)// { //处理中 stringBuilder = new StringBuilder(1024); stringBuilder.Append("UPDATE wms_instock SET order_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no='" + orderNo + "';"); sqlStrings.Add(stringBuilder.ToString()); } stringBuilder = new StringBuilder(1024); stringBuilder.Append("UPDATE wms_instock_detail SET rec_qty+=" + sysStocks.Qty + ",item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE ruid='" + WmsInstockDetails[i].Ruid + "';"); sqlStrings.Add(stringBuilder.ToString()); stringBuilder = new StringBuilder(1024); stringBuilder.Append("UPDATE sys_stock SET status=" + InLocateCartonNoStatus + ",locate_id=" + sysLocates.LocateId + ",locate_name='" + locateName + "',zone_id=" + sysLocates.ZoneId + ",zone_name='" + sysLocates.ZoneName + "',warehouse_id=" + sysLocates.WarehouseId + ",warehouse_name='" + sysLocates.WarehouseName + "',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE carton_no='" + cartonNo + "';"); sqlStrings.Add(stringBuilder.ToString()); stringBuilder = new StringBuilder(1024); //更新单据条码表 stringBuilder.Append("UPDATE dbo.wms_instock_sn "); stringBuilder.Append("SET status = " + (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED + ", "); stringBuilder.Append(" update_userid = " + loginId + ", "); stringBuilder.Append(" update_time = CONVERT(VARCHAR(20),GETDATE(),21) "); stringBuilder.Append("WHERE order_no = '" + orderNo + "' "); stringBuilder.Append(" AND carton_no = '" + cartonNo + "'; "); sqlStrings.Add(stringBuilder.ToString()); break; } } stringBuilder = new StringBuilder(1024); stringBuilder.Append("INSERT INTO dbo.sys_stock_trans "); stringBuilder.Append("( "); stringBuilder.Append(" trans_code, "); stringBuilder.Append(" carton_no, "); stringBuilder.Append(" part_id, "); stringBuilder.Append(" part_no, "); stringBuilder.Append(" part_spec, "); stringBuilder.Append(" src_locate_id, "); stringBuilder.Append(" src_locate_name, "); stringBuilder.Append(" dest_locate_id, "); stringBuilder.Append(" dest_locate_name, "); stringBuilder.Append(" old_qty, "); stringBuilder.Append(" new_qty, "); stringBuilder.Append(" trans_qty, "); stringBuilder.Append(" old_status, "); stringBuilder.Append(" new_status, "); stringBuilder.Append(" unit, "); stringBuilder.Append(" factory_id, "); stringBuilder.Append(" factory_code, "); stringBuilder.Append(" src_erp_warehouse, "); stringBuilder.Append(" dest_erp_warehouse, "); stringBuilder.Append(" src_warehouse_id, "); stringBuilder.Append(" src_warehouse_name, "); stringBuilder.Append(" dest_warehouse_id, "); stringBuilder.Append(" dest_warehouse_name, "); stringBuilder.Append(" src_zone_id, "); stringBuilder.Append(" src_zone_name, "); stringBuilder.Append(" dest_zone_id, "); stringBuilder.Append(" dest_zone_name, "); stringBuilder.Append(" enabled, "); stringBuilder.Append(" create_userid, "); stringBuilder.Append(" create_time, "); stringBuilder.Append(" update_userid, "); stringBuilder.Append(" update_time, "); stringBuilder.Append(" guid ,ref_order_no"); stringBuilder.Append(") "); stringBuilder.Append("VALUES "); stringBuilder.Append(" ('" + (int)WmsEnumUtil.TransType.SCATTERED_INSTOCK + "', ");//零星入库 stringBuilder.Append(" '" + sysStocks.CartonNo + "', "); stringBuilder.Append(" " + sysStocks.PartId + ", "); stringBuilder.Append(" '" + sysStocks.PartNo + "', "); stringBuilder.Append(" N'" + sysStocks.PartSpec + "', "); stringBuilder.Append(" " + sysStocks.LocateId + ", ");//源库位 stringBuilder.Append(" '" + sysStocks.LocateName + "', "); stringBuilder.Append(" " + sysLocates.LocateId + ", ");//目标库位 stringBuilder.Append(" '" + sysLocates.LocateName + "', "); stringBuilder.Append(" " + sysStocks.Qty + ","); stringBuilder.Append(" " + sysStocks.Qty + ","); stringBuilder.Append(" " + sysStocks.Qty + ","); stringBuilder.Append(" '" + sysStocks.Status + "', "); stringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.INSTOCKED + "', "); stringBuilder.Append(" '" + sysStocks.Unit + "', "); stringBuilder.Append(" " + sysStocks.FactoryId + ", "); stringBuilder.Append(" '" + sysStocks.FactoryCode + "',"); stringBuilder.Append(" '" + sysStocks.ErpWarehouse + "',"); stringBuilder.Append(" '" + sysStocks.ErpWarehouse + "', "); stringBuilder.Append(" " + sysStocks.WarehouseId + ", "); stringBuilder.Append(" '" + sysStocks.WarehouseName + "', "); stringBuilder.Append(" " + sysStocks.WarehouseId + ", "); stringBuilder.Append(" '" + sysStocks.WarehouseName + "', "); stringBuilder.Append(" " + sysStocks.ZoneId + ", "); stringBuilder.Append(" '" + sysStocks.ZoneName + "', "); stringBuilder.Append(" " + sysStocks.ZoneId + ", "); stringBuilder.Append(" '" + sysStocks.ZoneName + "', "); stringBuilder.Append(" 'Y', "); stringBuilder.Append(" " + loginId + ", "); stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), "); stringBuilder.Append(" " + loginId + ", "); stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), "); stringBuilder.Append(" NEWID() ,"); stringBuilder.Append(" '" + orderNo + "' "); stringBuilder.Append(" ) ; "); sqlStrings.Add(stringBuilder.ToString()); int refNum = repository.SQLTransaction(sqlStrings, parameterList); if (refNum > 0) { List wmsMoves = repository.GetInStockInfoByOrderNo(orderNo); if (wmsMoves.Count > 0) { List wmsMoves1 = repository.GetInStockDetailQtySumByOrderNo(orderNo); for (int i = 0; i < wmsMoves1.Count; i++) { if (wmsMoves1[i].Qty != wmsMoves1[i].RecQty) { rfInfo.type = "PASS"; rfInfo.message = "操作成功!请继续扫描箱条码"; rfInfo.wmsObjectDetail = wmsMoves1.ConvertAll(s => (object)s); return rfInfo; } } int updateStatus = 1; sqlStrings = new List(); parameterList = new List(); StringBuilder SqlStringBuilder = new StringBuilder(1024); DynamicParameters parameters = new DynamicParameters(); List wmsInstockDetails = repository.GetFinishInStockDetailByOrderNo(orderNo); wmsInstockDetails = wmsInstockDetails.Where(a => a.RecQty > 0).ToList(); if (wmsInstockDetails.Count > 0) { SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("INSERT INTO dbo.WMS_MOVR(ZINSTNO,ZEILE,WERKS,LGORT,UMLGO,MATNR,ERFMG "); SqlStringBuilder.Append(" ,ERFME,ACTION,ZPOST,ZTIME,SID,RECTIM,SYNFLG "); SqlStringBuilder.Append(" ,GUID) "); SqlStringBuilder.Append(" VALUES(@ZINSTNO,@ZEILE,@WERKS,@LGORT,@UMLGO,@MATNR,@ERFMG,@ERFME "); SqlStringBuilder.Append(" ,@ACTION,@ZPOST,@ZTIME,@SID,@RECTIM,@SYNFLG "); SqlStringBuilder.Append(" ,@GUID) "); string sid = Guid.NewGuid().ToString().Replace("-", ""); string sapOrderType = WmsEnumUtil.WmsMovrActionType.M07.ToString(); if ((int)WmsEnumUtil.InStockType.EXCEPTION_IN_STOCK == wmsInstockDetails[0].OrderType) { sapOrderType = WmsEnumUtil.WmsMovrActionType.M07.ToString(); } if ((int)WmsEnumUtil.InStockType.RESERVE_IN == wmsInstockDetails[0].OrderType) { sapOrderType = WmsEnumUtil.WmsMovrActionType.M09.ToString(); } if ((int)WmsEnumUtil.InStockType.REWORK_IN == wmsInstockDetails[0].OrderType) { sapOrderType = WmsEnumUtil.WmsMovrActionType.M10.ToString(); } for (int i = 0; i < wmsInstockDetails.Count; i++) { SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsInstockDetails[i].PartNo); sqlStrings.Add(SqlStringBuilder.ToString()); parameters = new DynamicParameters(); parameters.Add("@ZINSTNO", wmsInstockDetails[i].OrderNo);//盘点凭证号 parameters.Add("@ZEILE", wmsInstockDetails[i].ItemNo);//行号 parameters.Add("@WERKS", wmsInstockDetails[i].FactoryCode);//工厂 parameters.Add("@LGORT", "");//发出库存地点 parameters.Add("@UMLGO", wmsInstockDetails[i].DestErpWarehouse);//接收库存地点 parameters.Add("@MATNR", wmsInstockDetails[i].PartNo);//物料编码 parameters.Add("@ERFMG", wmsInstockDetails[i].RecQty);//转储数量 if (sysPart == null) { parameters.Add("@ERFME", "");//计量单位 } else { parameters.Add("@ERFME", sysPart.Unit);//计量单位 } parameters.Add("@ACTION", sapOrderType); //M07:零星入库 parameters.Add("@ZPOST", DateTime.Now.ToString("yyyyMMdd"));//交易日期 parameters.Add("@ZTIME", DateTime.Now.ToString("HHmmss"));//交易时间 parameters.Add("@SID", sid); parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); parameters.Add("@SYNFLG", "N"); parameters.Add("@GUID", Guid.NewGuid().ToString()); parameterList.Add(parameters); } SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("UPDATE wms_instock SET order_status='40',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;"); sqlStrings.Add(SqlStringBuilder.ToString()); parameters = new DynamicParameters(); parameters.Add("@orderNo", orderNo); parameterList.Add(parameters); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("UPDATE wms_instock_detail SET item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;"); sqlStrings.Add(SqlStringBuilder.ToString()); parameters = new DynamicParameters(); parameters.Add("@orderNo", orderNo); parameterList.Add(parameters); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("UPDATE wms_instock_sn SET status = @status,update_userid=@updateUserid,update_time=CONVERT(VARCHAR(30),GETDATE(),21) "); SqlStringBuilder.Append("WHERE order_no=@orderNo and status = @snStatus"); sqlStrings.Add(SqlStringBuilder.ToString()); parameters = new DynamicParameters(); parameters.Add("@orderNo", orderNo); parameters.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.SUBMITED); parameters.Add("@snStatus", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED); parameters.Add("@updateUserid", loginId); parameterList.Add(parameters); updateStatus = repository.SQLTransaction(sqlStrings, parameterList); } if (updateStatus > 0) { rfInfo.type = "PASS"; rfInfo.message = "订单操作完成!"; } else { rfInfo.type = "FAIL"; rfInfo.message = "订单操作操作失败!请检查"; } } else { rfInfo.type = "FAIL"; rfInfo.message = "未查询到数据,请检查!"; } } else { //提示 操作失败! rfInfo.type = "FAIL"; rfInfo.message = "未查询到数据,请检查!"; } return rfInfo; } public SetObjectDetail SetScatteredInStockOrderNoSubmit(string orderNo, string loginId) { List sqlStrings = new List(); List parameterList = new List(); SetObjectDetail rfInfo = new SetObjectDetail();//返回消息 StringBuilder SqlStringBuilder = new StringBuilder(1024); DynamicParameters parameters = new DynamicParameters(); int updateStatus = 1; List wmsInstockDetails = repository.GetFinishInStockDetailByOrderNo(orderNo); wmsInstockDetails = wmsInstockDetails.Where(a => a.RecQty > 0).ToList(); if (wmsInstockDetails.Count > 0) { SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("INSERT INTO dbo.WMS_MOVR(ZINSTNO,ZEILE,WERKS,LGORT,UMLGO,MATNR,ERFMG "); SqlStringBuilder.Append(" ,ERFME,ACTION,ZPOST,ZTIME,SID,RECTIM,SYNFLG "); SqlStringBuilder.Append(" ,GUID) "); SqlStringBuilder.Append(" VALUES(@ZINSTNO,@ZEILE,@WERKS,@LGORT,@UMLGO,@MATNR,@ERFMG,@ERFME "); SqlStringBuilder.Append(" ,@ACTION,@ZPOST,@ZTIME,@SID,@RECTIM,@SYNFLG "); SqlStringBuilder.Append(" ,@GUID) "); string sid = Guid.NewGuid().ToString().Replace("-", ""); string sapOrderType = WmsEnumUtil.WmsMovrActionType.M07.ToString(); if ((int)WmsEnumUtil.InStockType.EXCEPTION_IN_STOCK == wmsInstockDetails[0].OrderType) { sapOrderType = WmsEnumUtil.WmsMovrActionType.M07.ToString(); } if ((int)WmsEnumUtil.InStockType.RESERVE_IN == wmsInstockDetails[0].OrderType) { sapOrderType = WmsEnumUtil.WmsMovrActionType.M09.ToString(); } if ((int)WmsEnumUtil.InStockType.REWORK_IN == wmsInstockDetails[0].OrderType) { sapOrderType = WmsEnumUtil.WmsMovrActionType.M10.ToString(); } for (int i = 0; i < wmsInstockDetails.Count; i++) { SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsInstockDetails[i].PartNo); sqlStrings.Add(SqlStringBuilder.ToString()); parameters = new DynamicParameters(); parameters.Add("@ZINSTNO", wmsInstockDetails[i].OrderNo);//盘点凭证号 parameters.Add("@ZEILE", wmsInstockDetails[i].ItemNo);//行号 parameters.Add("@WERKS", wmsInstockDetails[i].FactoryCode);//工厂 parameters.Add("@LGORT", "");//发出库存地点 parameters.Add("@UMLGO", wmsInstockDetails[i].DestErpWarehouse);//接收库存地点 parameters.Add("@MATNR", wmsInstockDetails[i].PartNo);//物料编码 parameters.Add("@ERFMG", wmsInstockDetails[i].RecQty);//转储数量 if (sysPart == null) { parameters.Add("@ERFME", "");//计量单位 } else { parameters.Add("@ERFME", sysPart.Unit);//计量单位 } parameters.Add("@ACTION", sapOrderType); //M07:零星入库 parameters.Add("@ZPOST", DateTime.Now.ToString("yyyyMMdd"));//交易日期 parameters.Add("@ZTIME", DateTime.Now.ToString("HHmmss"));//交易时间 parameters.Add("@SID", sid); parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); parameters.Add("@SYNFLG", "N"); parameters.Add("@GUID", Guid.NewGuid().ToString()); parameterList.Add(parameters); } //SqlStringBuilder = new StringBuilder(1024); //SqlStringBuilder.Append("UPDATE wms_instock SET order_status=" + (int)WmsEnumUtil.MoveOrderStatus.COMPLETED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;"); //sqlStrings.Add(SqlStringBuilder.ToString()); //parameters = new DynamicParameters(); //parameters.Add("@orderNo", orderNo); //parameterList.Add(parameters); //SqlStringBuilder = new StringBuilder(1024); //SqlStringBuilder.Append("UPDATE wms_instock_detail SET item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;"); //sqlStrings.Add(SqlStringBuilder.ToString()); //parameters = new DynamicParameters(); //parameters.Add("@orderNo", orderNo); //parameterList.Add(parameters); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("UPDATE wms_instock_sn SET status = @status,update_userid=@updateUserid,update_time=CONVERT(VARCHAR(30),GETDATE(),21) "); SqlStringBuilder.Append("WHERE order_no=@orderNo and status = @snStatus"); sqlStrings.Add(SqlStringBuilder.ToString()); parameters = new DynamicParameters(); parameters.Add("@orderNo", orderNo); parameters.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.SUBMITED); parameters.Add("@snStatus", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED); parameters.Add("@updateUserid", loginId); parameterList.Add(parameters); updateStatus = repository.SQLTransaction(sqlStrings, parameterList); } else { updateStatus = 0; } if (updateStatus > 0) { rfInfo.type = "PASS"; rfInfo.message = "[" + orderNo + "]订单已提交,请重新选择单据"; } else { rfInfo.type = "FAIL"; rfInfo.message = "未查询到需要提交的数据,请检查!"; } return rfInfo; } } }