| | |
| | | var log = JsonConvert.SerializeObject(model); |
| | | if (model != null) |
| | | { |
| | | model.EXPIRATION = System.DateTime.Now.AddMinutes(GetExportTime(model.SPEC)); |
| | | model.EXPIRATION = System.DateTime.Now.AddHours(GetExportTime(model.SPEC)); |
| | | |
| | | if (db.Insertable<TN_EquipProDetail>(model).ExecuteCommand() > 0) |
| | | { |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重置终点货位,只针对去线边的货品和去原材料产线的空托 |
| | | /// </summary> |
| | | /// <param name="tN_Task"></param> |
| | | internal static void RestEndLoc(TN_Task tN_Task) |
| | | { |
| | | try |
| | | { |
| | | if ( |
| | | tN_Task.S_END_AREA == Settings.Areas[2] || tN_Task.S_TYPE.Contains("满托出库上线") || |
| | | Settings.ProductionLines.Select(a=>a.PointIn).ToList().Contains(tN_Task.S_END_LOC) || |
| | | tN_Task.S_TYPE.Contains("线边空托上线") |
| | | ) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | using (var tran = db.Ado.UseTran()) |
| | | { |
| | | var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == tN_Task.S_END_LOC); |
| | | if (endLoc != null) |
| | | { |
| | | endLoc.N_CURRENT_NUM = 0; |
| | | endLoc.N_LOCK_STATE = 0; |
| | | endLoc.S_LOCK_STATE = "无"; |
| | | |
| | | if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0) |
| | | { |
| | | LogHelper.Info($"更新终点货位成功,{JsonConvert.SerializeObject(endLoc)}"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"更新终点货位失败,{JsonConvert.SerializeObject(endLoc)}"); |
| | | tran.RollbackTran(); |
| | | return; |
| | | } |
| | | |
| | | var locCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == tN_Task.S_CNTR_CODE); |
| | | |
| | | if (locCnt != null) |
| | | { |
| | | |
| | | if (db.Deleteable<TN_Loc_Container>(locCnt).ExecuteCommand() > 0) |
| | | { |
| | | LogHelper.Info($"删除货位容器绑定关系成功,{JsonConvert.SerializeObject(locCnt)}"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"删除货位容器绑定关系失败,{JsonConvert.SerializeObject(locCnt)}"); |
| | | tran.RollbackTran(); |
| | | return; |
| | | } |
| | | |
| | | var cgInfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == tN_Task.S_CNTR_CODE); |
| | | |
| | | if (cgInfo != null) |
| | | { |
| | | if (db.Deleteable<TN_CG_Detail>(cgInfo).ExecuteCommand() > 0) |
| | | { |
| | | LogHelper.Info($"删除容器货品明细成功,{JsonConvert.SerializeObject(cgInfo)}"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"删除容器货品明细失败,{JsonConvert.SerializeObject(cgInfo)}"); |
| | | tran.RollbackTran(); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | var cnt = db.Queryable<TN_Container>().First(it => it.S_CODE == cgInfo.S_CNTR_CODE); |
| | | if (cnt != null) |
| | | { |
| | | if (db.Deleteable<TN_Container>(cnt).ExecuteCommand() > 0) |
| | | { |
| | | LogHelper.Info($"删除容器成功,{JsonConvert.SerializeObject(cnt)}"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"删除容器失败,{JsonConvert.SerializeObject(cnt)}"); |
| | | tran.RollbackTran(); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | tran.CommitTran(); |
| | | LogHelper.Info($"重置终点货位,成功,{JsonConvert.SerializeObject(tN_Task)}"); |
| | | return; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"当前任务终点货位不是去线边,不需要重置终点货位,{JsonConvert.SerializeObject(tN_Task)}"); |
| | | return; |
| | | } |
| | | |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("重置终点货位,只针对去线边的货品 失败", ex); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新余料回库明细 |
| | | /// </summary> |
| | | public static void UpdateSurplusDetail(string taskNo,float weight) |
| | |
| | | |
| | | if (model != null) |
| | | { |
| | | var target = db.Queryable<TN_InventoryM>().First(o => o.RFID == model.RFID); |
| | | if (target != null) |
| | | { |
| | | db.Deleteable<TN_InventoryM>(target).ExecuteCommand(); |
| | | } |
| | | model.EXPIRATION = System.DateTime.Now.AddMinutes(GetExportTime(model.SPEC)); |
| | | if (db.Insertable<TN_InventoryM>(model).ExecuteCommand() > 0) |
| | | model.EXPIRATION = System.DateTime.Now.AddHours(GetExportTime(model.SPEC)); |
| | | if (db.Storageable<TN_InventoryM>(model).ExecuteCommand() > 0) |
| | | { |
| | | LogHelper.Info($"插入WMS库存明细成功,{log}"); |
| | | } |
| | |
| | | var target = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntId); |
| | | if (target != null) |
| | | { |
| | | var targetM = db.Queryable<TN_InventoryM>().First(a => a.S_ID == target.S_ID); |
| | | var targetM = db.Queryable<TN_InventoryM>().First(a => a.S_ID == target.S_ID || a.RFID == cntId); |
| | | |
| | | if (targetM != null) |
| | | { |
| | |
| | | LogHelper.Info($"更新WMS库存明细的入库时间,失败,容器号:{cntId}"); |
| | | } |
| | | } |
| | | |
| | | else |
| | | { |
| | | LogHelper.Info($"更新WMS库存明细的入库时间,失败,容器号:{cntId},TN_InventoryM为空"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"更新WMS库存明细的入库时间,失败,容器号:{cntId},TN_CG_Detail为空"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | /// <summary> |
| | | /// 删除WMS库存明细 |
| | | /// </summary> |
| | | public static void DeleteInventoryM(string cg_SID) |
| | | public static void DeleteInventoryM(TN_Task taskTn) |
| | | { |
| | | try |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | if(db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == cg_SID).ExecuteCommand() > 0) |
| | | if (taskTn.S_START_AREA == Settings.Areas[1] || taskTn.S_TYPE.Contains("满托出库上线")) //不是从满托缓存库区移出就不删除 |
| | | { |
| | | LogHelper.Info($"删除WMS库存明细,成功,物料主键:{cg_SID}"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | if (db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == taskTn.S_ID || it.RFID == taskTn.S_CNTR_CODE).ExecuteCommand() > 0) |
| | | { |
| | | LogHelper.Info($"删除WMS库存明细,成功,物料主键:{taskTn.S_ID},容器号:{taskTn.S_CNTR_CODE}"); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"删除WMS库存明细,失败,物料主键:{taskTn.S_ID},容器号:{taskTn.S_CNTR_CODE}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"删除WMS库存明细,失败,物料主键:{cg_SID}"); |
| | | LogHelper.Info($"不是从满托缓存库区搬出的货位,不需要删除库存明细,物料主键:{taskTn.S_ID},容器号:{taskTn.S_CNTR_CODE}"); |
| | | return; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("更新WMS库存明细的过期时间失败", ex); |
| | | LogHelper.Error("删除WMS库存明细", ex); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 计算时间差 |
| | | /// </summary> |
| | | /// <param name="start"></param> |
| | | /// <param name="end"></param> |
| | | /// <returns></returns> |
| | | public static int CalculateDaysDifference(DateTime start, DateTime end) |
| | | { |
| | | try |
| | | { |
| | | // 计算总时间差 |
| | | TimeSpan difference = end - start; |
| | | |
| | | // 如果差值为负(end早于start),返回0 |
| | | if (difference.TotalDays < 0) |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | // 获取总小时数(包括小数部分) |
| | | double totalHours = difference.TotalHours; |
| | | |
| | | // 向上取整 |
| | | return (int)Math.Ceiling(totalHours); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | } |