From 7c926c1e3ade5158e6b1b0b805cd1b9c142e4b6c Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期六, 21 十二月 2024 09:45:33 +0800 Subject: [PATCH] 更新代码以使用SqlSugarScope替代SqlSugarClient,并添加生产产线属性 --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/GetStationService.cs | 4 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 118 ++++- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs | 132 +++--- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs | 12 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs | 3 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 47 ++ Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs | 2 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 9 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 65 ++- Code Management/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue | 108 +++-- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/Logger.cs | 2 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 325 ++++++++++------- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_needBarcodeService.cs | 2 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs | 14 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs | 6 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs | 4 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs | 2 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs | 2 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs | 13 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/DB/BaseDBConfig.cs | 2 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs | 7 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs | 6 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 6 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Seed/DBContext.cs | 28 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs | 60 +++ Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs | 28 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseServices/ServiceBase.cs | 18 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs | 2 28 files changed, 647 insertions(+), 380 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue b/Code Management/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue index 98eb092..47c9bd9 100644 --- a/Code Management/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue +++ b/Code Management/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue @@ -1,74 +1,78 @@ <template> - <el-row> - <el-col :span="3"> - - <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker> - </el-col> - <el-col :span="21"> - <device-line v-for="device in devices" :key="device.deviceName" :device="device" /> - </el-col> - </el-row> + <div> + <div> + <div class="Stackerbox"> + <div class="card"> + <div class="card-header"> + <div> + <div class="card-body Stacker"> + {{ StackerOne.deviceName }} + </div> + </div> + </div> + <div class="card-body"> + <ul class="list-group"> + <li class="list-group-item list-group-item-secondary"> + 浠诲姟鍙凤細{{ StackerOne.data.currentTaskNum || '鏆傛棤浠诲姟鍙�' }} + </li> + <li :class="getStatusClass(StackerOne.data.stackerCraneAutoStatusDes)"> + 宸ヤ綔妯″紡锛歿{ StackerOne.data.stackerCraneAutoStatusDes }} + </li> + <li :class="getStatusClass(StackerOne.data.stackerCraneStatusDes)"> + 璁惧鐘舵�侊細{{ StackerOne.data.stackerCraneStatusDes }} + </li> + <li :class="getStatusClass(StackerOne.data.stackerCraneWorkStatusDes)"> + 宸ヤ綔鐘舵�侊細{{ StackerOne.data.stackerCraneWorkStatusDes }} + </li> + </ul> + </div> + </div> + </div> + </div> + <device-line v-for="device in devices" :key="device.deviceName" :device="device" /> + </div> </template> <script setup> import { onMounted, reactive, toRefs } from "vue"; import eventBus from "@/uitils/eventBus"; import DeviceLine from "@/components/DeviceLine.vue"; -import DeviceStacker from "@/components/DeviceStacker.vue"; // 鍫嗗灈鏈� -const Stackers = reactive([]); +const StackerOne = reactive({ + deviceName: "", + data: { + } +}); // 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級 -const devices = reactive([]); +const devices = reactive([ + { deviceName: "闄堝寲鍑哄簱杈撻�佺嚎", data: { command: {}, commandWrite: {}, writeInteractiveSignal: [] } }, + { deviceName: "闄堝寲鍏ュ簱杈撻�佺嚎", data: { command: {}, commandWrite: {}, writeInteractiveSignal: [] } }, + // { deviceName: "鍫嗗灈鏈�1", data: { command: {}, commandWrite: {}, writeInteractiveSignal: [] } }, + // Add all devices similarly... +]); -const intToBitArrayFromBinaryString = (num, numBits) => { - let binaryString = num.toString(2).padStart(numBits, '0'); - return Array.from({ length: numBits }, (_, index) => binaryString[index] === '1'); +// 鑾峰彇鐘舵�佺被鍚嶏紙浼樺寲鐘舵�佸垽鏂級 +const getStatusClass = (status) => { + if (status === '姝e父' || status === '鑷姩' || status === '寰呮満') { + return 'list-group-item list-group-item-success'; + } + if (status === '鏁呴殰' || status === '鍋滄満') { + return 'list-group-item list-group-item-danger'; + } + return 'list-group-item list-group-item-warning'; // 榛樿璀﹀憡鐘舵�� }; // 鐩戝惉璁惧鏁版嵁鍙樺寲 onMounted(() => { eventBus.on('locationData', eventData => { - console.log(eventData) - if (eventData.deviceName === "闄堝寲鍏ュ簱杈撻�佺嚎"||eventData.deviceName === "闄堝寲鍏ュ簱杈撻�佺嚎") { - - if (devices.length <= 0) { - devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode }); - } - else { - const device = devices.find(c => c.childDeviceCode == eventData.childDeviceCode) - if (device) { - const number = eventData.data.commandWrite.writeInteractiveSignal; - const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8) - eventData.data.writeInteractiveSignal = writeInteractiveSignal; - device.data = eventData.data - } - else { - const number = eventData.data.commandWrite.writeInteractiveSignal; - const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8) - eventData.data.writeInteractiveSignal = writeInteractiveSignal; - devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode }); - } - } + const device = devices.find(d => d.deviceName === eventData.deviceName); + if (device) { + // 浣跨敤鎵╁睍杩愮畻绗︽洿鏂板璞″睘鎬э紝淇濇寔鍝嶅簲鎬� + device.data = { ...device.data, ...eventData.data }; } }); - eventBus.on('stackerData', eventData => { - if (eventData.deviceName == "闄堝寲1鍙峰爢鍨涙満"||eventData.deviceName == "闄堝寲2鍙峰爢鍨涙満") { - if (Stackers.length == 0) { - Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); - } - else { - const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName); - if (Stacker) { - Stacker.data = eventData.data - } - else { - Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); - } - } - } - }) }); </script> <style scoped> diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs index 20dd214..da6b068 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs @@ -22,7 +22,7 @@ public class RepositoryBase<TEntity> : IRepository<TEntity> where TEntity : class, new() { private readonly IUnitOfWorkManage _unitOfWorkManage; - private readonly SqlSugarClient _dbBase; + private readonly SqlSugarScope _dbBase; private ISqlSugarClient _db { @@ -84,7 +84,7 @@ /// <returns>鏌ヨ缁撴灉</returns> public virtual TEntity QureyDataById(object id) { - return _db.Queryable<TEntity>().In(id).Single(); + return _db.CopyNew().Queryable<TEntity>().In(id).Single(); } /// <summary> @@ -94,7 +94,7 @@ /// <returns>鏌ヨ缁撴灉闆嗗悎</returns> public virtual List<TEntity> QureyDataByIds(object[] lstIds) { - return _db.Queryable<TEntity>().In(lstIds).ToList(); + return _db.CopyNew().Queryable<TEntity>().In(lstIds).ToList(); } /// <summary> @@ -104,7 +104,7 @@ /// <returns>鏌ヨ缁撴灉闆嗗悎</returns> public virtual List<TEntity> QureyDataByIds(List<object> lstIds) { - return _db.Queryable<TEntity>().In(lstIds).ToList(); + return _db.CopyNew().Queryable<TEntity>().In(lstIds).ToList(); } /// <summary> @@ -114,7 +114,7 @@ /// <returns>褰卞搷琛屾暟</returns> public virtual int AddData(TEntity entity) { - IInsertable<TEntity> insert = _db.Insertable(entity); + IInsertable<TEntity> insert = _db.CopyNew().Insertable(entity); return insert.ExecuteReturnIdentity(); } @@ -125,7 +125,7 @@ /// <returns>褰卞搷琛屾暟</returns> public virtual int AddData(List<TEntity> listEntity) { - IInsertable<TEntity> insert = _db.Insertable(listEntity); + IInsertable<TEntity> insert = _db.CopyNew().Insertable(listEntity); return insert.ExecuteCommand(); } @@ -136,7 +136,7 @@ /// <returns>鍒犻櫎缁撴灉</returns> public virtual bool DeleteDataById(object id) { - return _db.Deleteable<TEntity>().In(id).ExecuteCommandHasChange(); + return _db.CopyNew().Deleteable<TEntity>().In(id).ExecuteCommandHasChange(); } /// <summary> @@ -146,7 +146,7 @@ /// <returns>鍒犻櫎缁撴灉</returns> public virtual bool DeleteDataByIds(object[] ids) { - return _db.Deleteable<TEntity>().In(ids).ExecuteCommandHasChange(); + return _db.CopyNew().Deleteable<TEntity>().In(ids).ExecuteCommandHasChange(); } /// <summary> @@ -156,7 +156,7 @@ /// <returns>鍒犻櫎缁撴灉</returns> public virtual bool DeleteData(TEntity entity) { - return _db.Deleteable(entity).ExecuteCommandHasChange(); + return _db.CopyNew().Deleteable(entity).ExecuteCommandHasChange(); } /// <summary> @@ -166,7 +166,7 @@ /// <returns>鍒犻櫎缁撴灉</returns> public virtual bool DeleteData(List<TEntity> listEntity) { - return _db.Deleteable(listEntity).ExecuteCommandHasChange(); + return _db.CopyNew().Deleteable(listEntity).ExecuteCommandHasChange(); } /// <summary> @@ -176,7 +176,7 @@ /// <returns></returns> public virtual bool UpdateData(TEntity entity) { - return _db.Updateable(entity).ExecuteCommandHasChange(); + return _db.CopyNew().Updateable(entity).ExecuteCommandHasChange(); } /// <summary> @@ -186,7 +186,7 @@ /// <returns></returns> public virtual bool UpdateData(List<TEntity> listEntity) { - return _db.Updateable(listEntity).ExecuteCommandHasChange(); + return _db.CopyNew().Updateable(listEntity).ExecuteCommandHasChange(); } /// <summary> @@ -198,7 +198,7 @@ /// <returns></returns> public virtual bool UpdateData(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null) { - IUpdateable<TEntity> update = _db.Updateable(entity); + IUpdateable<TEntity> update = _db.CopyNew().Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { @@ -219,7 +219,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData() { - return _db.Queryable<TEntity>().ToList(); + return _db.CopyNew().Queryable<TEntity>().ToList(); } /// <summary> @@ -229,7 +229,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData(string where) { - return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToList(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToList(); } /// <summary> @@ -239,17 +239,17 @@ /// <returns></returns> public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression) { - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToList(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToList(); } public virtual TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression) { - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).First(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).First(); } public virtual TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression) { - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).First(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).First(); } /// <summary> @@ -270,7 +270,7 @@ }; orderByModels.Add(orderByModel); } - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).ToList(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).ToList(); } /// <summary> @@ -291,7 +291,7 @@ }; orderByModels.Add(orderByModel); } - return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToList(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToList(); } /// <summary> @@ -302,7 +302,7 @@ /// <returns></returns> public virtual List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression) { - return _db.Queryable<TEntity>().Select(expression).ToList(); + return _db.CopyNew().Queryable<TEntity>().Select(expression).ToList(); } /// <summary> @@ -315,7 +315,7 @@ /// <returns></returns> public virtual List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields = "") { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList(); } /// <summary> @@ -327,7 +327,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true) { - return _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList(); } /// <summary> @@ -338,7 +338,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData(string where, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToList(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToList(); } /// <summary> @@ -405,7 +405,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToList(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToList(); } /// <summary> @@ -417,7 +417,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData(string where, int top, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToList(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToList(); } /// <summary> @@ -430,7 +430,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) .WhereIF(whereExpression != null, whereExpression).ToPageList(pageIndex, pageSize); } @@ -444,7 +444,7 @@ /// <returns></returns> public virtual List<TEntity> QueryData(string where, int pageIndex, int pageSize, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) .WhereIF(!string.IsNullOrEmpty(where), where).ToPageList(pageIndex, pageSize); } @@ -459,7 +459,7 @@ public virtual PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string? orderByFields = null) { int totalCount = 0; - var list = _db.Queryable<TEntity>() + var list = _db.CopyNew().Queryable<TEntity>() .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) .WhereIF(whereExpression != null, whereExpression) .ToPageList(pageIndex, pageSize, ref totalCount); @@ -488,7 +488,7 @@ orderByModels.Add(orderByModel); } int totalCount = 0; - List<TEntity> list = _db.Queryable<TEntity>() + List<TEntity> list = _db.CopyNew().Queryable<TEntity>() .OrderBy(orderByModels) .WhereIF(whereExpression != null, whereExpression) .ToPageList(pageIndex, pageSize, ref totalCount); @@ -517,7 +517,7 @@ orderByModels.Add(orderByModel); } int totalCount = 0; - List<TEntity> list = _db.Queryable<TEntity>() + List<TEntity> list = _db.CopyNew().Queryable<TEntity>() .WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToPageList(pageIndex, pageSize, ref totalCount); return new PageGridData<TEntity>(totalCount, list); @@ -539,7 +539,7 @@ Expression<Func<T,T2, bool>> whereExpressionT1, Expression<Func<TResult, bool>> whereExpression) { - List<TResult> list = _db.Queryable(joinExpression).WhereIF(whereExpressionT1 != null, whereExpressionT1) + List<TResult> list = _db.CopyNew().Queryable(joinExpression).WhereIF(whereExpressionT1 != null, whereExpressionT1) .Select(selectExpression) .WhereIF(whereExpression != null, whereExpression).ToList(); return list; @@ -560,7 +560,7 @@ public virtual PageGridData<TResult> QueryTabsPage<T1, T2, TResult>(Expression<Func<T1, T2, object[]>> joinExpression, Expression<Func<T1, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression, int pageIndex, int pageSize, string? orderByFields = null) { int totalCount = 0; - List<TResult> list = _db.Queryable(joinExpression) + List<TResult> list = _db.CopyNew().Queryable(joinExpression) .Select(selectExpression) .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) .WhereIF(whereExpression != null, whereExpression) @@ -585,7 +585,7 @@ public virtual PageGridData<TResult> QueryTabsPage<T1, T2, TResult>(Expression<Func<T1, T2, object[]>> joinExpression, Expression<Func<T1, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression, Expression<Func<T1, object>> groupExpression, int pageIndex, int pageSize, string? orderByFields = null) { int totalCount = 0; - List<TResult> list = _db.Queryable(joinExpression).GroupBy(groupExpression) + List<TResult> list = _db.CopyNew().Queryable(joinExpression).GroupBy(groupExpression) .Select(selectExpression) .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) .WhereIF(whereExpression != null, whereExpression) @@ -595,64 +595,64 @@ public Task<TEntity> QureyDataByIdAsync(object id) { - return _db.Queryable<TEntity>().In(id).SingleAsync(); + return _db.CopyNew().Queryable<TEntity>().In(id).SingleAsync(); } public Task<List<TEntity>> QureyDataByIdsAsync(object[] lstIds) { - return _db.Queryable<TEntity>().In(lstIds).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().In(lstIds).ToListAsync(); } public Task<List<TEntity>> QureyDataByIdsAsync(List<object> lstIds) { - return _db.Queryable<TEntity>().In(lstIds).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().In(lstIds).ToListAsync(); } public Task<int> AddDataAsync(TEntity entity) { - IInsertable<TEntity> insert = _db.Insertable(entity); + IInsertable<TEntity> insert = _db.CopyNew().Insertable(entity); return insert.ExecuteReturnIdentityAsync(); } public Task<int> AddDataAsync(List<TEntity> listEntity) { - IInsertable<TEntity> insert = _db.Insertable(listEntity); + IInsertable<TEntity> insert = _db.CopyNew().Insertable(listEntity); return insert.ExecuteReturnIdentityAsync(); } public Task<bool> DeleteDataByIdAsync(object id) { - return _db.Deleteable<TEntity>().In(id).ExecuteCommandHasChangeAsync(); + return _db.CopyNew().Deleteable<TEntity>().In(id).ExecuteCommandHasChangeAsync(); } public Task<bool> DeleteDataByIdsAsync(object[] ids) { - return _db.Deleteable<TEntity>().In(ids).ExecuteCommandHasChangeAsync(); + return _db.CopyNew().Deleteable<TEntity>().In(ids).ExecuteCommandHasChangeAsync(); } public Task<bool> DeleteDataAsync(TEntity entity) { - return _db.Deleteable(entity).ExecuteCommandHasChangeAsync(); + return _db.CopyNew().Deleteable(entity).ExecuteCommandHasChangeAsync(); } public Task<bool> DeleteDataAsync(List<TEntity> listEntity) { - return _db.Deleteable(listEntity).ExecuteCommandHasChangeAsync(); + return _db.CopyNew().Deleteable(listEntity).ExecuteCommandHasChangeAsync(); } public Task<bool> UpdateDataAsync(TEntity entity) { - return _db.Updateable(entity).ExecuteCommandHasChangeAsync(); + return _db.CopyNew().Updateable(entity).ExecuteCommandHasChangeAsync(); } public Task<bool> UpdateDataAsync(List<TEntity> listEntity) { - return _db.Updateable(listEntity).ExecuteCommandHasChangeAsync(); + return _db.CopyNew().Updateable(listEntity).ExecuteCommandHasChangeAsync(); } public Task<bool> UpdateDataAsync(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null) { - IUpdateable<TEntity> update = _db.Updateable(entity); + IUpdateable<TEntity> update = _db.CopyNew().Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { @@ -669,27 +669,27 @@ public Task<List<TEntity>> QueryDataAsync() { - return _db.Queryable<TEntity>().ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().ToListAsync(); } public Task<List<TEntity>> QueryDataAsync(string where) { - return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync(); } public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression) { - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToListAsync(); } public Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression) { - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).FirstAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).FirstAsync(); } public Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression) { - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).FirstAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).FirstAsync(); } public TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy) @@ -704,7 +704,7 @@ }; orderByModels.Add(orderByModel); } - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).First(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).First(); } public Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy) @@ -719,7 +719,7 @@ }; orderByModels.Add(orderByModel); } - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).FirstAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).FirstAsync(); } public TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy) @@ -734,7 +734,7 @@ }; orderByModels.Add(orderByModel); } - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).First(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).First(); } public Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy) @@ -749,12 +749,12 @@ }; orderByModels.Add(orderByModel); } - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).FirstAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).FirstAsync(); } public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, string orderByFields) { - return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).ToListAsync(); } public Task<List<TEntity>> QueryDataAsync(string where, Dictionary<string, OrderByType> orderBy) @@ -769,27 +769,27 @@ }; orderByModels.Add(orderByModel); } - return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToListAsync(); } public Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression) { - return _db.Queryable<TEntity>().Select(expression).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().Select(expression).ToListAsync(); } public Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync(); } public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true) { - return _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync(); } public Task<List<TEntity>> QueryDataAsync(string where, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync(); } public Task<List<TEntity>> QueryDataBySqlAsync(string sql, SugarParameter[]? parameters = null) @@ -819,29 +819,29 @@ public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToListAsync(); } public Task<List<TEntity>> QueryDataAsync(string where, int top, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToListAsync(); + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToListAsync(); } public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) .WhereIF(whereExpression != null, whereExpression).ToPageListAsync(pageIndex, pageSize); } public Task<List<TEntity>> QueryDataAsync(string where, int pageIndex, int pageSize, string orderByFields) { - return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) + return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) .WhereIF(!string.IsNullOrEmpty(where), where).ToPageListAsync(pageIndex, pageSize); } public Task<List<TResult>> QueryTabsAsync<T, T2, TResult>(Expression<Func<T, T2, object[]>> joinExpression, Expression<Func<T, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression) { - return _db.Queryable(joinExpression) + return _db.CopyNew().Queryable(joinExpression) .Select(selectExpression) .WhereIF(whereExpression != null, whereExpression).ToListAsync(); } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs index f63d9d2..3792727 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs @@ -10,7 +10,7 @@ { public interface IUnitOfWorkManage { - SqlSugarClient GetDbClient(); + SqlSugarScope GetDbClient(); int TranCount { get; } UnitOfWork CreateUnitOfWork(); diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs index fa6dd14..fbc2bb2 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs @@ -31,10 +31,10 @@ /// 鑾峰彇DB锛屼繚璇佸敮涓�鎬� /// </summary> /// <returns></returns> - public SqlSugarClient GetDbClient() + public SqlSugarScope GetDbClient() { // 蹇呴』瑕乤s锛屽悗杈逛細鐢ㄥ埌鍒囨崲鏁版嵁搴撴搷浣� - return _sqlSugarClient as SqlSugarClient; + return _sqlSugarClient as SqlSugarScope; } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseServices/ServiceBase.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseServices/ServiceBase.cs index ded801d..ee18736 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseServices/ServiceBase.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseServices/ServiceBase.cs @@ -286,7 +286,7 @@ List<TDetail> list = detailDics.DicToIEnumerable<TDetail>(); - ((SqlSugarClient)BaseDal.Db).BeginTran(); + ((SqlSugarScope)BaseDal.Db).BeginTran(); int id = BaseDal.Db.Insertable(entity).ExecuteReturnIdentity(); @@ -298,13 +298,13 @@ BaseDal.Db.Insertable(list).ExecuteCommand(); - ((SqlSugarClient)BaseDal.Db).CommitTran(); + ((SqlSugarScope)BaseDal.Db).CommitTran(); content = WebResponseContent.Instance.OK(); } catch (Exception ex) { - ((SqlSugarClient)BaseDal.Db).RollbackTran(); + ((SqlSugarScope)BaseDal.Db).RollbackTran(); content = WebResponseContent.Instance.Error(ex.Message); } return content; @@ -457,7 +457,7 @@ object mainId = typeof(TEntity).GetPropertyValue(entity, typeof(TEntity).GetKeyName()); if (mainId != null) { - ((SqlSugarClient)BaseDal.Db).BeginTran(); + ((SqlSugarScope)BaseDal.Db).BeginTran(); if (dynamicDelKeys.Count > 0) BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{detailType.GetKeyName()} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange(); @@ -474,7 +474,7 @@ BaseDal.Db.Insertable(addRows).ExecuteCommand(); - ((SqlSugarClient)BaseDal.Db).CommitTran(); + ((SqlSugarScope)BaseDal.Db).CommitTran(); content = WebResponseContent.Instance.OK(); } @@ -486,7 +486,7 @@ } catch (Exception ex) { - ((SqlSugarClient)BaseDal.Db).RollbackTran(); + ((SqlSugarScope)BaseDal.Db).RollbackTran(); content = WebResponseContent.Instance.Error(ex.Message); } return content; @@ -532,14 +532,14 @@ { dynamicDelKeys.Add(keys[i]); } - ((SqlSugarClient)BaseDal.Db).BeginTran(); + ((SqlSugarScope)BaseDal.Db).BeginTran(); if (dynamicDelKeys.Count > 0) BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{name} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange(); BaseDal.DeleteDataByIds(keys); - ((SqlSugarClient)BaseDal.Db).CommitTran(); + ((SqlSugarScope)BaseDal.Db).CommitTran(); return WebResponseContent.Instance.OK(); } @@ -551,7 +551,7 @@ } catch (Exception ex) { - ((SqlSugarClient)BaseDal.Db).RollbackTran(); + ((SqlSugarScope)BaseDal.Db).RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/DB/BaseDBConfig.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/DB/BaseDBConfig.cs index 65764aa..09440d9 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/DB/BaseDBConfig.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/DB/BaseDBConfig.cs @@ -39,7 +39,7 @@ public static List<MutiDBOperate> MutiInitConn() { - SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig + SqlSugarScope sqlSugarClient = new SqlSugarScope(new ConnectionConfig { ConfigId = MainDb.CurrentDbConnId, ConnectionString = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB), diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs index 2357478..2cfeef4 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs @@ -28,10 +28,10 @@ // 榛樿娣诲姞涓绘暟鎹簱杩炴帴 //MainDb.CurrentDbConnId = AppSettings.app(new string[] { "MainDB" }); - + services.AddHttpContextAccessor(); // SqlSugarScope鏄嚎绋嬪畨鍏紝鍙娇鐢ㄥ崟渚嬫敞鍏� // 鍙傝�冿細https://www.donet5.com/Home/Doc?typeId=1181 - services.AddScoped<ISqlSugarClient>(o => + services.AddSingleton<ISqlSugarClient>(o => { var memoryCache = o.GetRequiredService<IMemoryCache>(); @@ -114,7 +114,7 @@ //}); #endregion - SqlSugarClient sqlSugarClient = new SqlSugarClient(listConfig, db => + SqlSugarScope sqlSugarClient = new SqlSugarScope(listConfig, db => { db.Aop.DataExecuting = SqlSugarAop.DataExecuting; }); diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/Logger.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/Logger.cs index 7f1d74a..1932cdb 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/Logger.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/Logger.cs @@ -42,7 +42,7 @@ if (queueTable.Rows.Count == 0) { continue; } - SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig() + SqlSugarScope sugarClient = new SqlSugarScope(new ConnectionConfig() { ConnectionString = DBContext.GetMainConnectionDb().Connection, IsAutoCloseConnection = true, diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Seed/DBContext.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Seed/DBContext.cs index 85d3b5e..3f478e4 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Seed/DBContext.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Seed/DBContext.cs @@ -16,7 +16,7 @@ private static string _connectionString = connectObject.Connection; private static DbType _dbType = (DbType)connectObject.DbType; public static string ConnId = connectObject.ConnId; - private SqlSugarClient _db; + private SqlSugarScope _db; /// <summary> /// 杩炴帴瀛楃涓� @@ -51,7 +51,7 @@ /// <summary> /// 鏁版嵁杩炴帴瀵硅薄 /// </summary> - public SqlSugarClient Db + public SqlSugarScope Db { get { return _db; } private set { _db = value; } @@ -71,7 +71,7 @@ if (string.IsNullOrEmpty(_connectionString)) throw new ArgumentNullException("鏁版嵁搴撹繛鎺ュ瓧绗︿覆涓虹┖"); - _db = sqlSugarClient as SqlSugarClient; + _db = sqlSugarClient as SqlSugarScope; //_db.Aop.DataExecuting = SqlSugarAop.DataExecuting; } @@ -188,29 +188,29 @@ /// </summary> /// <param name="config">config</param> /// <returns>杩斿洖鍊�</returns> - public static SqlSugarClient GetCustomDB(ConnectionConfig config) + public static SqlSugarScope GetCustomDB(ConnectionConfig config) { - return new SqlSugarClient(config); + return new SqlSugarScope(config); } /// <summary> /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨勬暟鎹簱澶勭悊瀵硅薄 /// </summary> /// <param name="sugarClient">sugarClient</param> /// <returns>杩斿洖鍊�</returns> - public static SimpleClient<T> GetCustomEntityDB<T>(SqlSugarClient sugarClient) where T : class, new() - { - return new SimpleClient<T>(sugarClient); - } + //public static SqlSugarScope<T> GetCustomEntityDB<T>(SqlSugarScope sugarClient) where T : class, new() + //{ + // return new SqlSugarScope<T>(sugarClient); + //} /// <summary> /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨勬暟鎹簱澶勭悊瀵硅薄 /// </summary> /// <param name="config">config</param> /// <returns>杩斿洖鍊�</returns> - public static SimpleClient<T> GetCustomEntityDB<T>(ConnectionConfig config) where T : class, new() - { - SqlSugarClient sugarClient = GetCustomDB(config); - return GetCustomEntityDB<T>(sugarClient); - } + //public static SimpleClient<T> GetCustomEntityDB<T>(ConnectionConfig config) where T : class, new() + //{ + // SqlSugarScope sugarClient = GetCustomDB(config); + // return GetCustomEntityDB<T>(sugarClient); + //} #endregion } } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs index 909d960..96bd474 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs @@ -201,6 +201,15 @@ Dt_Task QueryStackerCraneOutTask(string deviceNo, string currentAddress = ""); /// <summary> + /// 鏍规嵁璁惧缂栧彿銆佹帓闄ょ殑浠诲姟銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑浠诲姟 + /// </summary> + /// <param name="deviceNo">璁惧缂栧彿</param> + /// <param name="excludedTaskId">鎺掗櫎鐨勪换鍔�</param> + /// <param name="currentAddress">褰撳墠鍦板潃</param> + /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> + List<Dt_Task> QueryAllOutboundTasks(string deviceNo, string currentAddress = ""); + + /// <summary> /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑浠诲姟 /// </summary> /// <param name="deviceNo">璁惧缂栧彿</param> diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs index febec47..08ee278 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs @@ -178,6 +178,11 @@ #endregion //浼犲叆鍙嶅皠鍑烘潵鐨勬墽琛岀▼搴忛泦 + //IJobDetail jobDetail = JobBuilder.Create(jobType) + // .WithIdentity(tasksQz.Id.ToString(), tasksQz.JobGroup) + // .Build(); + //jobDetail.JobDataMap.Add("JobParams", tasksQz.JobParams); + IJobDetail job = new JobDetailImpl(tasksQz.Id.ToString(), tasksQz.JobGroup, jobType); job.JobDataMap.Add("JobParams", tasksQz.JobParams); @@ -185,6 +190,7 @@ // 鍛婅瘔Quartz浣跨敤鎴戜滑鐨勮Е鍙戝櫒鏉ュ畨鎺掍綔涓� await _scheduler.Result.ScheduleJob(job, trigger); + //await _scheduler.Result.ScheduleJob(jobDetail, trigger); result = WebResponseContent.Instance.OK(string.Format(QuartzJobInfoMessage.JobAddSuccess, tasksQz.Name)); return result; diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs index 27a92be..858681c 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs @@ -15,11 +15,15 @@ *----------------------------------------------------------------*/ #endregion << 鐗� 鏈� 娉� 閲� >> +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; +using Quartz.Impl.Matchers; +using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Helper; @@ -28,6 +32,8 @@ using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Repository; +using Quartz.Impl; +using System.Collections.Specialized; namespace WIDESEAWCS_QuartzJob.Service { @@ -35,10 +41,12 @@ { private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IDeviceInfoRepository _deviceInfoRepository; - public DispatchInfoService(IDispatchInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IDeviceInfoRepository deviceInfoRepository) : base(BaseDal) + private readonly ISchedulerCenter _schedulerCenter; + public DispatchInfoService(IDispatchInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IDeviceInfoRepository deviceInfoRepository, ISchedulerCenter schedulerCenter) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _deviceInfoRepository = deviceInfoRepository; + _schedulerCenter = schedulerCenter; } /// <summary> @@ -66,5 +74,55 @@ DeviceType = b.DeviceType }).ToList(); } + + public async Task<WebResponseContent> GetDispatchInfosAsync() + { + WebResponseContent content = new WebResponseContent(); + NameValueCollection collection = new NameValueCollection + { + { "quartz.serializer.type", "binary" }, + }; + StdSchedulerFactory factory = new StdSchedulerFactory(collection); + IScheduler scheduler = await factory.GetScheduler(); + var jobKeys = await scheduler.GetJobKeys(GroupMatcher<JobKey>.AnyGroup()); + foreach (var jobKey in jobKeys) + { + // 鍦ㄨ繖閲屽鐞嗘瘡涓狫obKey + IJobDetail jobDetail = await scheduler.GetJobDetail(jobKey); + if (jobDetail != null) + { + // 鍙互鑾峰彇Job鐨勬弿杩颁俊鎭� + string jobDescription = jobDetail.Description; + // 浠ュ強Job鐨勬暟鎹槧灏勶紙JobDataMap锛� + JobDataMap jobDataMap = jobDetail.JobDataMap; + } + } + + var triggerKeys = await scheduler.GetTriggerKeys(GroupMatcher<TriggerKey>.AnyGroup()); + foreach (var triggerKey in triggerKeys) + { + // 鍦ㄨ繖閲屽鐞嗘瘡涓猅riggerKey + ITrigger trigger = await scheduler.GetTrigger(triggerKey); + if (trigger != null) + { + // 鑾峰彇涓嬩竴娆¤Е鍙戞椂闂达紙濡傛灉鏈夛級 + DateTimeOffset? nextFireTime = trigger.GetNextFireTimeUtc(); + // 鑾峰彇涓婃瑙﹀彂鏃堕棿锛堝鏋滄湁锛� + DateTimeOffset? previousFireTime = trigger.GetPreviousFireTimeUtc(); + // 鑾峰彇瑙﹀彂绫诲瀷锛堝SimpleTrigger銆丆ronTrigger锛� + string triggerType = trigger.GetType().Name; + // 瀵逛簬CronTrigger锛岃繕鍙互鑾峰彇Cron琛ㄨ揪寮忥紙濡傛灉鏄級 + //if (trigger is CronTrigger cronTrigger) + //{ + // string cronExpression = cronTrigger.CronExpressionString; + //} + if (!previousFireTime.HasValue && nextFireTime.HasValue) + { + Console.WriteLine($"Job澶勪簬绛夊緟瑙﹀彂鐘舵�侊紝Trigger鍚嶇О: {triggerKey.Name}"); + } + } + } + return content; + } } } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs index 63be19e..5a4131d 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs @@ -20,6 +20,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Models; @@ -33,5 +34,7 @@ /// </summary> /// <returns>杩斿洖瀹氭椂鍣↗ob涓庡搴旂殑璁惧淇℃伅DTO闆嗗悎銆�</returns> List<DispatchInfoDTO> QueryDispatchInfos(); + + Task<WebResponseContent> GetDispatchInfosAsync(); } } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs index 59046ac..4bc52e8 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs @@ -1,5 +1,7 @@ -锘縰sing Microsoft.AspNetCore.Http; +锘縰sing Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseController; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Service; @@ -10,8 +12,16 @@ [ApiController] public class DispatchInfoController : ApiBaseController<IDispatchInfoService, Dt_DispatchInfo> { - public DispatchInfoController(IDispatchInfoService service) : base(service) + private readonly IDispatchInfoService _dispatchInfoService; + public DispatchInfoController(IDispatchInfoService service, IDispatchInfoService dispatchInfoService) : base(service) { + _dispatchInfoService = dispatchInfoService; + } + + [HttpGet("GetDispatchInfosAsync"),AllowAnonymous] + public Task<WebResponseContent> GetDispatchInfosAsync() + { + return _dispatchInfoService.GetDispatchInfosAsync(); } } } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs index c962f62..bfa2c3b 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs @@ -90,32 +90,48 @@ task.Creater = "WMS"; if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { - List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress); - if (routers.Count > 0) + if (task.TargetAddress == "002-021-001") { task.TaskState = (int)TaskOutStatusEnum.OutNew; task.CurrentAddress = item.SourceAddress; - task.NextAddress = routers.FirstOrDefault().ChildPosi; } else { - routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); + List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress); if (routers.Count > 0) { - task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; + task.TaskState = (int)TaskOutStatusEnum.OutNew; task.CurrentAddress = item.SourceAddress; task.NextAddress = routers.FirstOrDefault().ChildPosi; + } + else + { + routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); + if (routers.Count > 0) + { + task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; + task.CurrentAddress = item.SourceAddress; + task.NextAddress = routers.FirstOrDefault().ChildPosi; + } } } } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { - List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); - if (routers.Count > 0) + if (task.SourceAddress == "1359-4") { task.TaskState = (int)TaskInStatusEnum.InNew; task.CurrentAddress = item.SourceAddress; - task.NextAddress = routers.FirstOrDefault().ChildPosi; + } + else + { + List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); + if (routers.Count > 0) + { + task.TaskState = (int)TaskInStatusEnum.InNew; + task.CurrentAddress = item.SourceAddress; + task.NextAddress = routers.FirstOrDefault().ChildPosi; + } } } tasks.Add(task); @@ -326,6 +342,21 @@ } /// <summary> + /// 鏍规嵁璁惧缂栧彿銆佹帓闄ょ殑浠诲姟銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑鎵�鏈変换鍔� + /// </summary> + /// <param name="deviceNo">璁惧缂栧彿</param> + /// <param name="excludedTaskId">鎺掗櫎鐨勪换鍔�</param> + /// <param name="currentAddress">褰撳墠鍦板潃</param> + /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> + public List<Dt_Task> QueryAllOutboundTasks(string deviceNo, string currentAddress = "") + { + if (string.IsNullOrEmpty(currentAddress)) + return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); + else + return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy); + } + + /// <summary> /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑浠诲姟 /// </summary> /// <param name="deviceNo">璁惧缂栧彿</param> diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs index a64d5e3..8352fc6 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs @@ -58,160 +58,207 @@ _noticeService = noticeService; } - public Task Execute(IJobExecutionContext context) + public async Task Execute(IJobExecutionContext context) { - try + string jobName = context.JobDetail.Key.Name; + if (MemoryLockManager.TryAcquireLock(jobName)) { - CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams"); - if (conveyorLine != null) + try { - List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); - foreach (string childDeviceCode in childDeviceCodes) + CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams"); + if (conveyorLine != null) { - ProcessDeviceAsync(conveyorLine, childDeviceCode); - } + List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); + var tasks = childDeviceCodes.Select(childDeviceCode => ProcessDeviceAsync(conveyorLine, childDeviceCode)).ToList(); + await Task.WhenAll(tasks); - List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode); - foreach (var station in stationManagers) - { - if (station.stationType == 11) + List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode); + foreach (var station in stationManagers) { - ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); - ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); - if (command != null && commandWrite != null) + if (station.stationType == 11) { - var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); - if (structs[0] == true) + ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); + ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); + if (command != null && commandWrite != null) { - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戠┖鎵樼洏璇锋眰鎵爜鍏ュ簱"); - NGRequestTaskInbound(conveyorLine, command, station.stationChildCode, 0, station.stationLocation); - } - else - { - ConveyorLineSendFinish(conveyorLine, station.stationChildCode, 0, false); - } - } - } - } - } - } - catch (Exception ex) - { - Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString()); - } - return Task.CompletedTask; - } - - private void ProcessDeviceAsync(CommonConveyorLine conveyorLine, string childDeviceCode) - { - ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode); - ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(childDeviceCode, "DeviceCommand"); - if (command != null && commandWrite != null) - { - - #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 - - var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken"); - if (tokenInfos == null || !tokenInfos.Any()) - { - //throw new Exception(conveyorLine.DeviceName + "缂撳瓨涓湭鎵惧埌Token缂撳瓨"); - return; - } - var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList(); - var userIds = tokenInfos?.Select(x => x.UserId).ToList(); - - object obj = new - { - command, - commandWrite - }; - _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, childDeviceCode, data = obj }); - - #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 - - var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); - - List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList(); - - if (deviceProtocolDetails != null) - { - foreach (var item in deviceProtocolDetails) - { - var outDeviceCodes = _routerService.QueryOutDeviceCodes(conveyorLine.DeviceCode); - if (structs[item.ProtocalDetailValue.ObjToInt()] == true) - { - MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType); - if (method != null) - { - var numRead = item.ProtocalDetailValue.ObjToInt(); - var numWrite = item.ProtocalDetailValue.ObjToInt() + 1; - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine.DeviceName}銆戙�恵childDeviceCode}銆戙�恵numRead.ToString()}銆戜綅杈撻�佺嚎璇诲彇淇″彿锛氥�恵structs[item.ProtocalDetailValue.ObjToInt()]}銆� 銆恵numWrite}銆戜綅WCS鍐欏叆淇″彿锛氥�恵structs[item.ProtocalDetailValue.ObjToInt() + 1]}銆�"); - if (structs[item.ProtocalDetailValue.ObjToInt() + 1] != structs[item.ProtocalDetailValue.ObjToInt()]) - { - command.InteractiveSignal = commandWrite.WriteInteractiveSignal; - method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() }); - } - } - } - else - { - - - ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false); - - //DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); - //string[] x = devicePro.DeviceProAddress.Split('.'); - //x[x.Length - 1] = (item.ProtocalDetailValue.ObjToInt() + 1).ToString(); - //string DeviceProAddress = string.Join(".", x); - //var writeRead = conveyorLine.Communicator.Read<bool>(DeviceProAddress); - //if (writeRead) - //{ - // conveyorLine.Communicator.Write(DeviceProAddress, false); - // //ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false); - //} - } - } - } - - Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); - if (platform != null) - { - if (command.InteractiveSignal != 2) - { - MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); - if (method != null) - { - command.InteractiveSignal = commandWrite.WriteInteractiveSignal; - int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1; - method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); - } - } - else - { - if (platform.Location != null && platform.Location != "") - { - var strings = platform.Location.Split(',').ToList(); - foreach (var ite in strings) - { - //int index = strings.FindIndex(p => p == ite); - ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); - if (command1.InteractiveSignal != 2) - { - MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); - if (method != null) + var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); + if (structs[0] == true) { - command.InteractiveSignal = commandWrite.WriteInteractiveSignal; - //int count = strings.Count - index; - int count = strings.Count; - method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); + ConsoleHelper.WriteWarningLine($"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戠┖鎵樼洏璇锋眰鎵爜鍏ュ簱"); + NGRequestTaskInbound(conveyorLine, command, station.stationChildCode, 0, station.stationLocation); + } + else + { + ConveyorLineSendFinish(conveyorLine, station.stationChildCode, 0, false); } } } } } } - + catch (Exception ex) + { + Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString()); + } + finally + { + MemoryLockManager.ReleaseLock(jobName); + } } + else + { + ConsoleHelper.WriteErrorLine($"[CommonConveyorLineJob]銆恵jobName}銆戜换鍔″凡琚攣瀹氾紝鏃犳硶澶勭悊"); + } + return; + } + + private Task ProcessDeviceAsync(CommonConveyorLine conveyorLine, string childDeviceCode) + { + ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode); + ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(childDeviceCode, "DeviceCommand"); + if (command != null && commandWrite != null) + { + #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 + + var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken"); + if (tokenInfos != null && tokenInfos.Any()) + { + var userTokenIds = tokenInfos.Select(x => x.Token_ID).ToList(); + var userIds = tokenInfos.Select(x => x.UserId).ToList(); + + object obj = new + { + command, + commandWrite + }; + _noticeService.LineData(userIds.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, childDeviceCode, data = obj }); + } + + #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 + + var writeInteractiveSignal = commandWrite.WriteInteractiveSignal; + var structs = BitConverter.GetBytes(writeInteractiveSignal).Reverse().ToArray().ToBoolArray(); + List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList(); + + if (deviceProtocolDetails != null) + { + foreach (var item in deviceProtocolDetails) + { + int itemValue = item.ProtocalDetailValue.ObjToInt(); + if (structs[itemValue] == true) + { + var numRead = itemValue; + var numWrite = itemValue + 1; + ConsoleHelper.WriteWarningLine($"銆恵conveyorLine.DeviceName}銆戙�恵childDeviceCode}銆戙�恵numRead.ToString()}銆戜綅杈撻�佺嚎璇诲彇淇″彿锛氥�恵structs[itemValue]}銆� 銆恵numWrite}銆戜綅WCS鍐欏叆淇″彿锛氥�恵structs[itemValue + 1]}銆�"); + if (structs[itemValue + 1] != structs[itemValue]) + { + MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType); + if (method != null) + { + command.InteractiveSignal = writeInteractiveSignal; + method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, itemValue }); + } + } + } + else + { + ConveyorLineSendFinish(conveyorLine, childDeviceCode, itemValue, false); + } + } + } + + Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); + if (platform != null && !string.IsNullOrEmpty(platform.Location)) + { + var strings = platform.Location.Split(',').ToList(); + foreach (var ite in strings) + { + ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); + if (command1.InteractiveSignal != 2) + { + command.InteractiveSignal = writeInteractiveSignal; + int count = strings.Count; + MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); + if (method != null) + { + command.InteractiveSignal = commandWrite.WriteInteractiveSignal; + method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); + }; + } + } + } + + #region + //var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); + + //List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList(); + + //if (deviceProtocolDetails != null) + //{ + // foreach (var item in deviceProtocolDetails) + // { + // if (structs[item.ProtocalDetailValue.ObjToInt()] == true) + // { + // MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType); + // if (method != null) + // { + // var numRead = item.ProtocalDetailValue.ObjToInt(); + // var numWrite = item.ProtocalDetailValue.ObjToInt() + 1; + // ConsoleHelper.WriteWarningLine($"銆恵conveyorLine.DeviceName}銆戙�恵childDeviceCode}銆戙�恵numRead.ToString()}銆戜綅杈撻�佺嚎璇诲彇淇″彿锛氥�恵structs[item.ProtocalDetailValue.ObjToInt()]}銆� 銆恵numWrite}銆戜綅WCS鍐欏叆淇″彿锛氥�恵structs[item.ProtocalDetailValue.ObjToInt() + 1]}銆�"); + // if (structs[item.ProtocalDetailValue.ObjToInt() + 1] != structs[item.ProtocalDetailValue.ObjToInt()]) + // { + // command.InteractiveSignal = commandWrite.WriteInteractiveSignal; + // method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() }); + // } + // } + // } + // else + // { + // ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false); + // } + // } + //} + + //Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); + //if (platform != null) + //{ + // if (command.InteractiveSignal != 2) + // { + // MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); + // if (method != null) + // { + // command.InteractiveSignal = commandWrite.WriteInteractiveSignal; + // int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1; + // method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); + // } + // } + // else + // { + // if (platform.Location != null && platform.Location != "") + // { + // var strings = platform.Location.Split(',').ToList(); + // foreach (var ite in strings) + // { + // //int index = strings.FindIndex(p => p == ite); + // ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); + // if (command1.InteractiveSignal != 2) + // { + // MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); + // if (method != null) + // { + // command.InteractiveSignal = commandWrite.WriteInteractiveSignal; + // //int count = strings.Count - index; + // int count = strings.Count; + // method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); + // } + // } + // } + // } + // } + //} + #endregion + } + return Task.CompletedTask; } #region 鍏ュ簱 @@ -312,7 +359,7 @@ var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) { - if (command.Barcode == task.PalletCode) + if (command.Barcode == task.PalletCode && childDeviceCode == task.NextAddress) { ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆愮瓑寰呭垎閰嶈揣浣嶃��"); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs index 634c58f..7fd4c81 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs @@ -223,12 +223,10 @@ { if (task.NextAddress.Contains("JZ")) { - command.Barcode = task.PalletCode; - command.TaskNum = task.TaskNum; int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); task.TaskState = nextStatus; - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵task.TargetAddress}銆�"); + ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵task.TargetAddress}銆�"); _taskService.UpdateTaskStatusToNext(task); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); } @@ -239,7 +237,7 @@ var taskCommand = MapTaskCommand(task, command); task.NextAddress = next; - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(鏄儢),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"); + ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"); conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs index f38e6a1..f637dd2 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs @@ -21,6 +21,7 @@ using AutoMapper; using HslCommunication; +using Microsoft.CodeAnalysis; using Newtonsoft.Json; using Quartz; using SqlSugar; @@ -44,6 +45,7 @@ using WIDESEAWCS_SignalR; using WIDESEAWCS_Tasks.ConveyorLineJob; using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; +using Platform = WIDESEAWCS_Model.Models.Platform; namespace WIDESEAWCS_Tasks { @@ -405,7 +407,7 @@ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> - public async void EmptyTrayReturn(CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index, Platform platform) + public async void EmptyTrayReturn(CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index, WIDESEAWCS_Model.Models.Platform platform) { try { @@ -414,7 +416,7 @@ taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray; else taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound; - await CheckAndCreateTask(taskOutboundTypeEnum, childDeviceCode, index, platform.Stacker); + await CheckAndCreateTask(taskOutboundTypeEnum, childDeviceCode, index, platform.Stacker, platform); } catch (Exception) { @@ -424,7 +426,7 @@ /// <summary> /// 妫�鏌ヤ换鍔″苟鍒涘缓鏂颁换鍔� /// </summary> - private async Task CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null) + private async Task CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, Platform platform) { var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode); if (tasks.Count < index) @@ -443,7 +445,10 @@ } var wmsIpAddress = wmsBase + requestTrayOutTask; - var result = await HttpHelper.PostAsync(wmsIpAddress, new { position = childDeviceCode, tag = (int)taskType, areaCdoe = roadWay, roadways = roadways }.ToJsonString()); + + List<string> strings = platform.Location.Split(',').ToList(); + + var result = await HttpHelper.PostAsync(wmsIpAddress, new { Position = childDeviceCode, Tag = (int)taskType, AreaCdoe = roadWay, AreaCdoes = strings, platform.ProductionLine }.ToJsonString()); //var result = await HttpHelper.PostAsync("http://localhost:5000/api/Task/RequestTrayOutTaskAsync", dynamic.ToJsonString()); WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/GetStationService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/GetStationService.cs index 743d33f..f5dd88d 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/GetStationService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/GetStationService.cs @@ -30,7 +30,7 @@ if (IsStationValid(station)) { var hasPallet = ReadPalletStatus(station); // 鑾峰彇鎵樼洏鐘舵�� - if (hasPallet == 0) // 濡傛灉娌℃湁鎵樼洏 + if (hasPallet == 16) // 濡傛灉娌℃湁鎵樼洏 { palletCount++; } @@ -57,7 +57,7 @@ private int ReadPalletStatus(Dt_StationManager station) { var commonConveyorLine_GW = Storage.Devices.FirstOrDefault(device => device.DeviceCode == station.stationPLC) as CommonConveyorLine_GW; - return Convert.ToInt32(commonConveyorLine_GW.ReadValue(ConveyorLineDBName_After.HasPallet, station.stationChildCode)); + return Convert.ToInt32(commonConveyorLine_GW.ReadValue(ConveyorLineDBName_After.InteractiveSignal, station.stationChildCode)); } } } \ No newline at end of file diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs index 83311b0..7889386 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json; using Quartz; using System.Diagnostics.CodeAnalysis; +using System.Threading.Tasks; using WIDESEAWCS_BasicInfoRepository; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core.Caches; @@ -171,14 +172,14 @@ else return; } - + _taskService.StackCraneTaskCompleted(e.TaskNum); if (commonStackerCrane.DeviceCode.Contains("CH") && task.TaskType == (int)TaskOutboundTypeEnum.Outbound) { task = _taskRepository.QueryFirst(x => x.TaskNum == e.TaskNum); Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); } - if(task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TargetAddress == "1359-4") + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TargetAddress == "002-021-001") { var TASKHTY = task.Adapt<Dt_Task_Hty>(); _taskRepository.DeleteData(task); @@ -197,15 +198,14 @@ private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane) { Dt_Task task; - //var taskRun = _taskRepository.QueryFirst(x => x.Roadway == commonStackerCrane.DeviceCode && (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskInStatusEnum.SC_InExecuting)); - //if (taskRun != null) { return null; } if (commonStackerCrane.LastTaskType == null) { task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); } else { - if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + var lastTaskTypeGroup = commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup(); + if (lastTaskTypeGroup == TaskTypeGroup.OutbondGroup) { task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); if (task == null) @@ -221,23 +221,18 @@ if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { - if (OutTaskStationIsOccupied(task) != null) + // 妫�鏌ュ綋鍓嶅嚭搴撲换鍔$珯鍙版槸鍚﹀厑璁告斁璐� + var occupiedStation = OutTaskStationIsOccupied(task); + if (occupiedStation == null) + { + // 濡傛灉褰撳墠鍑哄簱浠诲姟绔欏彴涓嶅厑璁告斁璐э紝鎺掗櫎褰撳墠浠诲姟锛屾煡鎵惧叾浠栧嚭搴撲换鍔� + ConsoleHelper.WriteErrorLine($"浠诲姟鍙凤細銆恵task.TaskNum}銆戝嚭搴撳湴鍧�锛氥�恵task.NextAddress}銆戜笉鍏佽鏀捐揣"); + task = FindAnotherOutboundTask(commonStackerCrane.DeviceCode, task.TaskId); + } + else { return task; } - //else - //{ - // List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList(); - // List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes); - // foreach (var item in tasks) - // { - // if (OutTaskStationIsOccupied(task) != null) - // { - // return task; - // } - // } - // task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); - //} } else if (task == null) { @@ -326,6 +321,38 @@ return null; } + + /// <summary> + /// 鏌ユ壘鍏朵粬鍑哄簱浠诲姟鐨勮緟鍔╂柟娉曪紙鎺掗櫎鎸囧畾浠诲姟ID鐨勪换鍔★級 + /// </summary> + /// <param name="deviceCode">璁惧浠g爜</param> + /// <param name="excludedTaskId">瑕佹帓闄ょ殑浠诲姟ID</param> + /// <returns></returns> + private Dt_Task? FindAnotherOutboundTask(string deviceCode, int excludedTaskId) + { + // 鍏堣幏鍙栨墍鏈夌鍚堟潯浠讹紙鎺掗櫎鎸囧畾浠诲姟ID锛夌殑鍑哄簱浠诲姟鍒楄〃 + var allOutboundTasks = _taskService.QueryAllOutboundTasks(deviceCode); + var availableTasks = allOutboundTasks?.Where(t => excludedTaskId != t.TaskId && t.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup).ToList(); + + if (availableTasks == null || availableTasks.Count == 0) + { + return null; + } + + // 閬嶅巻鍙敤浠诲姟鍒楄〃锛屾鏌ヤ换鍔$珯鍙版槸鍚﹀厑璁告斁璐э紝鎵惧埌绗竴涓厑璁告斁璐х殑浠诲姟灏辫繑鍥� + foreach (var candidateTask in availableTasks) + { + var occupiedStation = OutTaskStationIsOccupied(candidateTask); + if (occupiedStation != null) + { + return candidateTask; + } + ConsoleHelper.WriteErrorLine($"浠诲姟鍙凤細銆恵occupiedStation.TaskNum}銆戝嚭搴撳湴鍧�锛氥�恵occupiedStation.NextAddress}銆戜笉鍏佽鏀捐揣"); + } + + return null; + } + /// <summary> /// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel /// </summary> diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs index 9b90299..0aeaa65 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs @@ -27,6 +27,7 @@ public string Roadways { get; set; } public int area { get; set; } + public string ProductionLine { get; set; } } public class RequestOutTaskDto @@ -34,5 +35,6 @@ public string Position { get; set; } public int Tag { get; set; } public string AreaCdoe { get; set; } + public List<string> AreaCdoes { get; set; } public string ProductionLine { get; set; } } \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs index 8e104b3..82858a6 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs @@ -165,7 +165,7 @@ /// <param name="areaCode">鍖哄煙缂栫爜</param> /// <param name="roadways">宸烽亾鍒楄〃</param> /// <returns>杩斿洖缁撴灉闆�</returns> - Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, string productionLine); + Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> areaCodes, string productionLine); /// <summary> diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs index 7cc810a..de981c4 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs @@ -34,6 +34,13 @@ [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")] public string Remark { get; set; } + + /// <summary> + /// 鐢熶骇浜х嚎 + /// </summary> + [SugarColumn(IsNullable = true, ColumnDescription = "鐢熶骇浜х嚎")] + public string ProductionLine { get; set; } + /// <summary> /// 褰撳墠宸ュ簭 /// </summary> diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_needBarcodeService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_needBarcodeService.cs index 36a7f72..4559635 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_needBarcodeService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_needBarcodeService.cs @@ -8,7 +8,7 @@ { public dt_needBarcodeService(IDt_needBarcodeRepository BaseDal) : base(BaseDal) { - + } } } \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs index ffd4a8a..bf8748c 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs @@ -1,4 +1,5 @@ -锘縰sing Mapster; +锘縰sing AngleSharp.Io; +using Mapster; using Masuit.Tools; using System.Text.RegularExpressions; using WIDESEA_Core.Const; @@ -78,7 +79,7 @@ //var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>() // .FirstAsync(x => x.EquipmentName == task.Roadway); //var info = JsonConvert.DeserializeObject<ResponseEqptRunDto>(process.ProcessValue); - if (!task.Roadway.Contains("FR")) //闈炲垎瀹瑰簱鍖哄潎涓婃姤MOM鍑哄叆绔� + if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB") //闈炲垎瀹瑰簱鍖轰笌褰撳墠宸ュ簭鏄疧CVB鍧囦笂鎶OM鍑哄叆绔� { var agingOutputDto = MapToAgingOutputDto(stock); content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto); @@ -418,11 +419,20 @@ } else { - var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress); - if (station.stationPLC == "1017") - area = _areaInfoRepository.QueryFirst(x => x.AreaID == Convert.ToInt32(station.stationNGLocation)); - else - area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId); + //var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress); + //if (station.stationPLC == "1017") + // area = _areaInfoRepository.QueryFirst(x => x.AreaID == Convert.ToInt32(station.stationNGLocation)); + //else + // area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId); + //if (area == null) + // throw new Exception("鏈壘鍒板搴斿尯鍩熶俊鎭�"); + + if (boxing.ProcessCode == "OCV1") + area = _areaInfoRepository.QueryFirst(x => x.AreaID == 6); + + else if (boxing.ProcessCode == "OCVB") + area = _areaInfoRepository.QueryFirst(x => x.AreaID == 7); + if (area == null) throw new Exception("鏈壘鍒板搴斿尯鍩熶俊鎭�"); } @@ -444,31 +454,46 @@ Remark = boxing.BoxingInfoDetails.Count().ToString(), }; - // 澶勭悊璇锋眰鍙傛暟 - AgingInputDto agingInputDto = new AgingInputDto() + if (boxing.ProcessCode != "OCVB") { - SerialNos = boxing.BoxingInfoDetails - .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo }) - .ToList(), - TrayBarcode = task.PalletCode, - OpFlag = 1, - EquipmentCode = area.Spare2, - Software = area.Spare3 - }; + // 澶勭悊璇锋眰鍙傛暟 + AgingInputDto agingInputDto = new AgingInputDto() + { + SerialNos = boxing.BoxingInfoDetails + .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo }) + .ToList(), + TrayBarcode = task.PalletCode, + OpFlag = 1, + EquipmentCode = area.Spare2, + Software = area.Spare3 + }; - var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result; - var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()); - if (respone.ProductionLine == null || respone.ParameterInfos == null || respone.SpecialParameterDuration.IsNullOrEmpty()) - { - throw new Exception("MOM鏁版嵁杩斿洖閿欒"); + var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result; + var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()); + + bool isFull = false; + if (!task.Roadway.Contains("FR")) + { + isFull = respone.SpecialParameterDuration.IsNullOrEmpty(); + } + if (respone.ProductionLine == null || respone.ParameterInfos == null) + { + throw new Exception("MOM鏁版嵁杩斿洖閿欒"); + } + stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime; + stock.SpecialParameterDuration = respone.SpecialParameterDuration; + //2024骞�11鏈�16鏃ワ細鏂板瀛楁璁$畻搴斿嚭搴撴椂闂� + stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime == null ? DateTime.Now : respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration)); + stock.ProductionLine = respone.ProductionLine; + stock.ParameterInfos = respone.ParameterInfos.ToJsonString(); + stock.StockStatus = 1; } - stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime; - stock.SpecialParameterDuration = respone.SpecialParameterDuration; - //2024骞�11鏈�16鏃ワ細鏂板瀛楁璁$畻搴斿嚭搴撴椂闂� - stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime == null ? DateTime.Now : respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration)); - stock.ProductionLine = respone.ProductionLine; - stock.ParameterInfos = respone.ParameterInfos.ToJsonString(); - stock.StockStatus = 1; + else + { + stock.OutboundTime = DateTime.Now; + stock.StockStatus = 1; + stock.ProductionLine = boxing.ProductionLine; + } // 璁板綍鏃ュ織 LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}"); @@ -956,6 +981,7 @@ PalletCode = palletCode, IsFull = true, ProcessCode = result.ProcessCode, + ProductionLine = result.ProductionLine, BoxingInfoDetails = result.SerialNos.Select(serialNoObj => new DtBoxingInfoDetail { SerialNumber = serialNoObj.SerialNo, @@ -993,15 +1019,15 @@ /// <param name="areaCode">鍖哄煙缂栫爜</param> /// <param name="roadways">宸烽亾缂栫爜闆嗗悎</param> /// <returns>杩斿洖缁撴灉闆�</returns> - public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, string productionLine) + public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> areaCodes, string productionLine) { WebResponseContent content = new WebResponseContent(); try { // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅 DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound - ? QueryStockInfoForRealTrayAsync(areaCode, productionLine).Result - : QueryStockInfoForEmptyTrayAsync(areaCode).Result; + ? areaCodes == null ? await QueryStockInfoForRealTrayAsync(areaCode, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine) + : await QueryStockInfoForEmptyTrayAsync(areaCode); if (stockInfo == null) { @@ -1056,6 +1082,28 @@ .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails .Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢 + .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine) + .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢 + .OrderBy(x => x.OutboundTime) // 鎺掑簭 + .FirstAsync(); // 鑾峰彇绗竴涓厓绱� + + //var firstOrDefault = result.FirstOrDefault(x => roadways.Contains(x.LocationInfo.RoadwayNo)); // 鏌ユ壘绗竴涓尮閰嶇殑鍏冪礌 + //var firstOrDefault = result[0]; // 鏌ユ壘绗竴涓尮閰嶇殑鍏冪礌 + //return firstOrDefault; + return result; + } + + /// <summary> + /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅 + /// </summary> + private async Task<DtStockInfo> QueryStockInfoForRealTrayCWAsync(List<string> areaCodes, string productionLine) + { + var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == "CWSC1"); + + var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>() + .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo + .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails + .Where(x => areaCodes.Contains(x.AreaCode) && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢 .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine) .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢 .OrderBy(x => x.OutboundTime) // 鎺掑簭 @@ -1220,7 +1268,7 @@ { if (stockInfo.LocationInfo.RoadwayNo == "JZSC1") { - task = CreateTask(stockInfo, "1359-4", taskType); + task = CreateTask(stockInfo, "002-021-001", taskType); } } //var taskId = await BaseDal.AddDataAsync(task); @@ -1275,6 +1323,10 @@ #endregion 鎸囧畾浠诲姟鍑哄簱 + #region 闈欑疆寮傚父鍙e叆搴� + + #endregion + #endregion 澶栭儴鎺ュ彛鏂规硶 #region 鍐呴儴璋冪敤鏂规硶 diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs index 8113250..eee68a9 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs @@ -5,6 +5,8 @@ using System.Threading.Tasks; using WIDESEA_Common; using WIDESEA_Common.CustomModels; + +//using WIDESEA_Common.CustomModels; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.Const; using WIDESEA_DTO.MOM; diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs index 363e05c..611c289 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs @@ -39,19 +39,25 @@ { WebResponseContent content = new WebResponseContent(); // 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁 - var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache"); - var station = stationManagers.Select(x => x.stationChildCode).ToList(); + var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache" && x.productLine == input.ProductionLine); - // 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆 - var wcsIpAddrss = GetWCSIpAddress(); - if (wcsIpAddrss == null) - { - throw new InvalidOperationException("WCS IP 鏈厤缃�"); - } + //var station = stationManagers.Select(x => x.stationChildCode).ToList(); - var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result; - content = JsonConvert.DeserializeObject<WebResponseContent>(abc); - if (content.Data.ObjToInt() > 0) + //// 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆 + //var wcsIpAddrss = GetWCSIpAddress(); + //if (wcsIpAddrss == null) + //{ + // throw new InvalidOperationException("WCS IP 鏈厤缃�"); + //} + + //var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result; + //content = JsonConvert.DeserializeObject<WebResponseContent>(abc); + //var num = content.Data.ObjToInt(); + + + // TODO 鍒ゆ柇鍦ㄩ�旀暟閲� + var count = BaseDal.QueryData(x => x.TargetAddress == stationManagers[0].Roadway).Count; + if (count <= 10) { // 閫佽嚦鍖呰 List<string> strings = stationManagers.Where(x => x.stationType == 0).Select(x => x.Roadway).ToList(); diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs index bc14b7d..662da3a 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs @@ -108,7 +108,7 @@ [HttpPost, AllowAnonymous, Route("RequestTrayOutTaskAsync")] public async Task<WebResponseContent> RequestTrayOutTaskAsync([FromBody] RequestOutTaskDto request) { - return await Service.RequestTrayOutTaskAsync(request.Position, request.Tag, request.AreaCdoe, request.ProductionLine); + return await Service.RequestTrayOutTaskAsync(request.Position, request.Tag, request.AreaCdoe, request.AreaCdoes, request.ProductionLine); } /// <summary> @@ -161,9 +161,9 @@ /// </summary> /// <param name="input">璇锋眰鏁版嵁</param> /// <returns></returns> - [HttpPost, AllowAnonymous, Route("EmergencyTask")] - public WebResponseContent EmergencyTask([FromBody] object input) - { - return Service.EmergencyTask(input); - } + //[HttpPost, AllowAnonymous, Route("EmergencyTask")] + //public WebResponseContent EmergencyTask([FromBody] object input) + //{ + // //return Service.EmergencyTask(input); + //} } \ No newline at end of file -- Gitblit v1.9.3