ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs
@@ -61,7 +61,6 @@ Dt_StationPackInfo? stationPackInfo = stationPackInfos.FirstOrDefault(x => x.PackType == packinfo.PackType && x.OrderNo == packinfo.OrderNo && x.AssignNum < x.PackNum); Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask(); //å¦æè®¢åç¸åãååä¸è´å¹¶ä¸åé æ°éå°äºç åç»ææ°éååé å°ä¸èµ· _unitOfWorkManage.BeginTran(); if (stationPackInfo != null) { packaxisTask = new Dt_PackaxisTask() @@ -82,14 +81,14 @@ stationPackInfo.AssignNum += 1; stationPackInfo.ExecutingNum += 1; packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt(); _unitOfWorkManage.BeginTran(); //æ´æ°ç åæ§è¡å·¥ä½ _stationPackInfoRepository.UpdateData(stationPackInfo); //æ´æ°å¾ ç åä¿¡æ¯è¡¨ _packinfoRepository.UpdateData(packinfo); //æ·»å ç åä»»å¡ BaseDal.AddData(packaxisTask); _unitOfWorkManage.CommitTran(); } else//åé æ°å·¥ä½ { @@ -130,14 +129,16 @@ packInfoAssign.AssignNum += 1; packInfoAssign.ExecutingNum += 1; packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt(); _unitOfWorkManage.BeginTran(); //æ´æ°ç åæ§è¡å·¥ä½ _stationPackInfoRepository.UpdateData(packInfoAssign); //æ´æ°å¾ ç åä¿¡æ¯è¡¨ _packinfoRepository.UpdateData(packinfo); //æ·»å ç åä»»å¡ BaseDal.AddData(packaxisTask); _unitOfWorkManage.CommitTran(); } _unitOfWorkManage.CommitTran(); return content.OK(barCode, packaxisTask); } catch (Exception ex) @@ -209,7 +210,6 @@ { try { Dt_PackaxisTask? packaxisTaskFinish = null; if (packaxisTask!=null) { ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPC.cs
@@ -75,7 +75,7 @@ { DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null) if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null && deviceProWrite != null) { R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); //ç åæ»¡ççæRGVæ¬è¿ä»»å¡ @@ -91,6 +91,7 @@ Dt_Task taskNew = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.New.ObjToInt())); if (taskNew != null) { device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode); _taskService.UpdateTask(taskNew, TaskStatusEnum.RGV_Execute); } } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPH.cs
@@ -217,6 +217,7 @@ packaxisTask.DeviceCode = item.StackerCraneCode; packaxisTask.TaskState = TaskStatusEnum.MD_Executing.ObjToInt(); _packaxisTaskRepository.UpdateData(packaxisTask); device.SetValue(W_CLineCPHDB.W_Request, 1, item.StationCode); } } else ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/RGVJob_CP.cs
@@ -88,6 +88,7 @@ Dt_Task? task2 = tasks.FirstOrDefault(x => x.HeightType == 2); Dt_Task? task3 = tasks.FirstOrDefault(x => x.HeightType == 3); List<Dt_Task> tasksDown = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode).OrderBy(x=>x.CreateDate).Take(3).ToList(); List<Dt_Task> taskSends = new List<Dt_Task>(); if (tasksDown.Count>0) { bool ReceivedDone = false; @@ -102,8 +103,7 @@ device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress); device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress); tasksDown[0].HeightType = 1; _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing); Thread.Sleep(100); taskSends.Add(tasksDown[0]); ReceivedDone=true; } } @@ -114,19 +114,16 @@ { //ä¸åæ§è¡å·¥ä½ device.SetValue(W_RgvCPDB.WorkStation, 4); device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum); device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress); device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress); tasksDown[0].HeightType = 1; _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing); Thread.Sleep(100); device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum); device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress); device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress); tasksDown[1].HeightType = 2; _taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing); Thread.Sleep(100); taskSends.Add(tasksDown[0]); taskSends.Add(tasksDown[1]); ReceivedDone = true; } } @@ -136,39 +133,53 @@ { //ä¸åæ§è¡å·¥ä½ device.SetValue(W_RgvCPDB.WorkStation, 7); device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum); device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress); device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress); tasksDown[0].HeightType = 1; _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing); Thread.Sleep(100); device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum); device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress); device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress); tasksDown[1].HeightType = 2; _taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing); Thread.Sleep(100); device.SetValue(W_RgvCPDB.WcsTask3, tasksDown[2].TaskNum); device.SetValue(W_RgvCPDB.Qu3, tasksDown[2].CurrentAddress); device.SetValue(W_RgvCPDB.Fang3, tasksDown[2].NextAddress); tasksDown[2].HeightType = 3; _taskService.UpdateTask(tasksDown[2], TaskStatusEnum.RGV_Executing); Thread.Sleep(100); taskSends.Add(tasksDown[0]); taskSends.Add(tasksDown[1]); taskSends.Add(tasksDown[2]); ReceivedDone = true; } } //ä¸åæ´æ°ä»»å¡ if (ReceivedDone) { device.SetValue(W_RgvCPDB.TaskType, 4); device.SetValue(W_RgvCPDB.TaskReceivedDone, 1); foreach (var item in taskSends) { _taskService.UpdateTask(item, TaskStatusEnum.RGV_Executing); } } } } else if((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.TaskDone == 3) { int taskNum = 0; if (rgvInfoRead.RgvTask > 0) { taskNum = rgvInfoRead.RgvTask; } else if (rgvInfoRead.RgvEndTask > 0) { taskNum = rgvInfoRead.RgvEndTask; } else if (rgvInfoRead.RgvLastTask > 0) { taskNum = rgvInfoRead.RgvLastTask; } //è·åä»»å¡ Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvTask && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== taskNum && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null) { //è·åä¸ä¸ä¸ªèç¹çè·¯ç± @@ -178,18 +189,18 @@ task.DeviceCode = stationManger.StationDeviceCode; device.SetValue(W_RgvCPDB.TaskReceivedDone, 2); _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute); WriteInfo(device.DeviceName, $"RGVä»»å¡å®æ,ä»»å¡å·{rgvInfoRead.RgvEndTask}"); WriteInfo(device.DeviceName, $"RGVä»»å¡å®æ,ä»»å¡å·{taskNum}"); } else { WriteInfo(device.DeviceName, $"æªæ¾å°RGV对åºçç»æä»»å¡{rgvInfoRead.RgvEndTask}"); WriteInfo(device.DeviceName, $"æªæ¾å°RGV对åºçç»æä»»å¡{taskNum}"); } } else if (rgvInfoRead.TaskDone == 2 && rgvInfoWrite.TaskReceivedDone == 1) { device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); } else if (rgvInfoRead.TaskDone == 0 && rgvInfoWrite.TaskReceivedDone == 2) else if (rgvInfoRead.TaskDone != 3 && rgvInfoWrite.TaskReceivedDone == 2) { device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicRepository/SendStationCodeRepository.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core.BaseRepository; using WIDESEA_Model.Models; namespace WIDESEA_IBasicRepository { /// <summary> /// å货车ä½ä¿¡æ¯ä»å¨å®ç°å± /// </summary> public class SendStationCodeRepository : RepositoryBase<Dt_SendStationCode>, ISendStationCodeRepository { public SendStationCodeRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) { } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicService/SendStationCodeService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ using AutoMapper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_BasicRepository; using WIDESEA_Common.MaterielEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Helper; using WIDESEA_DTO.Basic; using WIDESEA_DTO.ERP; using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_Model.Models; namespace WIDESEA_BasicService { public class SendStationCodeService : ServiceBase<Dt_SendStationCode, ISendStationCodeRepository>, ISendStationCodeService { public ISendStationCodeRepository Repository => BaseDal; private readonly IMapper _mapper; private readonly IUnitOfWorkManage _unitOfWorkManage; public SendStationCodeService(ISendStationCodeRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) { _mapper = mapper; _unitOfWorkManage = unitOfWorkManage; } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_DTO/ERP/ERPProDeliveryDTO.cs
@@ -9,27 +9,27 @@ public class DeliveryDetailItem { /// <summary> /// /// éå®åè´§æç»ID /// </summary> public int DetailId { get; set; } /// <summary> /// /// éå®åå· /// </summary> public string SaleOrderNo { get; set; } /// <summary> /// /// å®¢æ· /// </summary> public string Customer { get; set; } /// <summary> /// /// ç©æç¼ç /// </summary> public string MaterialCode { get; set; } /// <summary> /// /// ç©ææ¹æ¬¡ /// </summary> public string MaterialLot { get; set; } /// <summary> /// /// ç©ææ°é /// </summary> public decimal MaterialQty { get; set; } } @@ -37,7 +37,7 @@ public class ERPProDeliveryDTO { /// <summary> /// /// éå®åå· /// </summary> public string DeliveryCode { get; set; } /// <summary> @@ -53,10 +53,14 @@ /// </summary> public int DeliveryType { get; set; } /// <summary> /// /// 计ååºåºæ¶é´ /// </summary> public string PlanDate { get; set; } /// <summary> /// åè´§è½¦å· /// </summary> public string CarCode { get; set; } /// <summary> /// /// </summary> public string Remark { get; set; } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IBasicRepository/ISendStationCodeRepository.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core.BaseRepository; using WIDESEA_Model.Models; namespace WIDESEA_IBasicRepository { /// <summary> /// å货车ä½ä¿¡æ¯ä»å¨æ¥å£å± /// </summary> public interface ISendStationCodeRepository : IRepository<Dt_SendStationCode> { } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IBasicService/ISendStationCodeService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_DTO.Basic; using WIDESEA_DTO.ERP; using WIDESEA_IBasicRepository; using WIDESEA_Model.Models; namespace WIDESEA_IBasicService { public interface ISendStationCodeService : IService<Dt_SendStationCode> { ISendStationCodeRepository Repository { get; } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseOrderService.cs
@@ -24,11 +24,6 @@ /// <returns></returns> WebResponseContent ReceivePurchaseReturn(ERPReturnOrderDTO eRPReturnOrderDTO); /// <summary> /// æ¥æ¶ERPæåéå®åºåºä¿¡æ¯ /// </summary> /// <returns></returns> WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO); /// <summary> /// æ¥æ¶ERPéçäº§é¢æä¿¡æ¯ /// </summary> /// <returns></returns> ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IOutboundService.cs
@@ -32,5 +32,13 @@ /// èå线ä½ç¼åä¸å¡æ¥å£å± /// </summary> IOutLineViewService OutLineViewService { get; } /// <summary> /// æ°åæåéå®ä¸å¡æ¥å£å± /// </summary> IProDeliveryOrderService ProDeliveryOrderService { get; } /// <summary> /// æ°åæåé宿ç»ä¸å¡æ¥å£å± /// </summary> IProDeliveryOrderDetailService ProDeliveryOrderDetailService { get; } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IProDeliveryOrderService.cs
@@ -3,7 +3,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_DTO.ERP; using WIDESEA_IOutboundRepository; using WIDESEA_Model.Models; @@ -12,5 +14,16 @@ public interface IProDeliveryOrderService : IService<Dt_ProDeliveryOrder> { IProDeliveryOrderRepository Repository { get; } /// <summary> /// æ¥æ¶ERPæåéå®åºåºä¿¡æ¯ /// </summary> /// <returns></returns> WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO); /// <summary> /// ERPæåéå®åºåºåé åºå /// </summary> /// <returns></returns> (List<Dt_ProStockInfo>, List<Dt_ProDeliveryOrder>, List<Dt_ProDeliveryOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignProStockOutbound(List<Dt_ProDeliveryOrder> proDeliveryOrders, List<Dt_ProDeliveryOrderDetail> deliveryOrderDetails); } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -262,6 +262,12 @@ /// <returns></returns> WebResponseContent CreateSGManualTasks(List<int> ids); /// <summary> /// å建éå®åºåº /// </summary> /// <param name="ids"></param> /// <returns></returns> WebResponseContent CreateProDeliveryTasks(List<int> ids); /// <summary> /// 空æå çåºåº /// </summary> /// <returns></returns> @@ -276,6 +282,10 @@ /// </summary> /// <returns></returns> WebResponseContent DisableStatus(int[] keys); /// <summary> /// æåç»ç /// </summary> /// <returns></returns> WebResponseContent BoxingInBound(string stationCode, List<string> barCodes); /// <summary> /// æåå ¥åºæ«ç è¯·æ±æ´æ°æ¡ç ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs
@@ -312,114 +312,6 @@ return content; } /// <summary> /// æ¥æ¶ERPæåéå®åºåºä¿¡æ¯ /// </summary> /// <returns></returns> public WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO) { WebResponseContent content = new WebResponseContent(); try { if (eRPProDeliveryDTO == null) { return content.Error("éå®åºåºä¿¡æ¯ä¸è½ä¸ºç©º"); } Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == eRPProDeliveryDTO.WarehouseCode); if (warehouse == null) { return content.Error($"ä»åºä¿¡æ¯ä¸åå¨{eRPProDeliveryDTO.WarehouseCode}"); } //è·åææç©æ List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == warehouse.WarehouseId && x.MaterielInvOrgId == MaterielInvOrgEnum.æ°å.ObjToInt()); //è·åææå®¢æ· List<Dt_CustomerInfo> customerInfos = _basicRepository.CustomerInfoRepository.QueryData(); //夿æ¯å¦åå¨ç©æ DeliveryDetailItem? deliveryDetailItem = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode)); if (deliveryDetailItem != null) { return content.Error($"ç©æä¿¡æ¯{deliveryDetailItem.MaterialCode}ä¸åå¨"); } //夿æ¯å¦åå¨å®¢æ· DeliveryDetailItem? deliveryDetailCustom = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !customerInfos.Select(x => x.CustomerCode).Contains(x.Customer)); if (deliveryDetailCustom != null) { return content.Error($"客æ·ä¿¡æ¯{deliveryDetailCustom.Customer}ä¸åå¨"); } //è·åææéå®åºåºä¿¡æ¯ List<Dt_ProDeliveryOrder> proDeliveryOrdersOld = BaseDal.Db.Queryable<Dt_ProDeliveryOrder>().Includes(x => x.Details).ToList(); if (eRPProDeliveryDTO.OperateType == 1) { //夿éå¤æå ¥ Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode); if (proDeliveryOrderOld != null) { return content.Error($"éå®åºåºåå·{proDeliveryOrderOld.DeliveryCode}ä¿¡æ¯å·²åå¨"); } List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = eRPProDeliveryDTO.DeliveryDetail.Select(x => _mapper.Map<Dt_ProDeliveryOrderDetail>(x)).ToList(); Dt_ProDeliveryOrder proDeliveryOrderAdd = _mapper.Map<Dt_ProDeliveryOrder>(eRPProDeliveryDTO); proDeliveryOrderDetails.ForEach(x => { Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode); x.MaterielName = materielInfo?.MaterielName; x.Unit = materielInfo?.MaterielUnit; }); proDeliveryOrderAdd.Details = proDeliveryOrderDetails; proDeliveryOrderAdd.WarehouseId = warehouse.WarehouseId; //æ°å¢ BaseDal.Db.InsertNav(proDeliveryOrderAdd).Include(x => x.Details).ExecuteCommand(); } //else if (eRPPurchaseOrderDTO.OperateType == 2) //{ // //夿æ¯å¦åå¨ // Dt_UserInfo? userInfoOld = OlduserInfos.FirstOrDefault(x => x.Code == eRPUserInfoDTO.StaffCode); // if (userInfoOld == null) // { // return content.Error($"æ´æ°å·¥å·{eRPUserInfoDTO.StaffCode}ï¼åå·¥{eRPUserInfoDTO.StaffName}ä¸åå¨"); // } // Dt_UserInfo userInfo = _mapper.Map<Dt_UserInfo>(eRPUserInfoDTO); // userInfo.Id = userInfoOld.Id; // Sys_User user = _userRepository.QueryFirst(x => x.UserName == userInfo.Code); // if (userInfoOld == null) // { // return content.Error($"æ´æ°å·¥å·{eRPUserInfoDTO.StaffCode}ï¼åå·¥{eRPUserInfoDTO.StaffName}ï¼WMSè´¦å·ä¸åå¨"); // } // user.Enable = (byte)userInfo.State; // user.UserTrueName = userInfo.Name; // //æ´æ° // BaseDal.UpdateData(userInfo); // _userRepository.UpdateData(user); //} //else if (eRPPurchaseOrderDTO.OperateType == 3) //{ // //夿æ¯å¦åå¨ // Dt_UserInfo? userInfoOld = OlduserInfos.FirstOrDefault(x => x.Code == eRPUserInfoDTO.StaffCode); // if (userInfoOld == null) // { // return content.Error($"æ´æ°å·¥å·{eRPUserInfoDTO.StaffCode}ï¼åå·¥{eRPUserInfoDTO.StaffName}ä¸åå¨"); // } // BaseDal.DeleteData(userInfoOld); //} else { return content.Error("æªæ¾å°æä½ç±»å"); } //æ´æ°æ°æ® return content.OK("æ¥æ¶æå"); } catch (Exception ex) { content.Error(ex.Message); } return content; } /// <summary> /// æ¥æ¶ERPéçäº§é¢æä¿¡æ¯ /// </summary> /// <returns></returns> ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs
@@ -42,6 +42,12 @@ public int Depth { get; set; } /// <summary> /// 车ä½å· /// </summary> [SugarColumn(IsNullable = true,Length = 50, ColumnDescription = "车ä½å·")] public string CodeName { get; set; } /// <summary> /// æ¯å¦å ç¨ /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æ¯å¦å ç¨")] ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_SendStationCode.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core.DB.Models; namespace WIDESEA_Model.Models { /// <summary> /// åè´§æå°è½¦ä½ /// </summary> [SugarTable(nameof(Dt_SendStationCode), "åè´§æå°è½¦ä½")] public class Dt_SendStationCode : BaseEntity { /// <summary> /// ä¸»é® /// </summary> [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] public int Id { get; set; } /// <summary> /// è½¦ä½ /// </summary> [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "车ä½")] public string CodeName { get; set; } /// <summary> /// å½åè½¦å· /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "å½å车å·")] public string CarCode { get; set; } /// <summary> /// æå«åè´§åå· /// </summary> [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "æå«åè´§åå·")] public string DeliveryCodes { get; set; } /// <summary> /// æ¯å¦å ç¨ /// </summary> [SugarColumn(IsNullable = false, ColumnDescription = "æ¯å¦å ç¨")] public int IsOccupied { get; set; } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutStockLockInfo.cs
@@ -10,7 +10,7 @@ namespace WIDESEA_Model.Models { /// <summary> /// åºåºè¯¦æ (åæ) /// åºåºè¯¦æ /// </summary> [SugarTable(nameof(Dt_OutStockLockInfo), "åºåºè¯¦æ ")] public class Dt_OutStockLockInfo : BaseEntity ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ProDeliveryOrder.cs
@@ -68,6 +68,18 @@ public DateTime PlanDate { get; set; } /// <summary> /// åè´§è½¦å· /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "å货车å·")] public string CarCode { get; set; } /// <summary> /// æ´¾éè½¦ä½ /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "æ´¾é车ä½")] public string SendStationCode { get; set; } /// <summary> /// 夿³¨ /// </summary> [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "夿³¨")] ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/OutboundService.cs
@@ -32,13 +32,23 @@ /// èå线ä½ç¼åä¸å¡æ¥å£å± /// </summary> public IOutLineViewService OutLineViewService { get; } public OutboundService(IOutMESOrderService outMESOrderService, IOutSGOrderService outSGOrderService, IOutSGOrderDetailService outSGOrderDetailService, IOutStockLockInfoService outStockLockInfoService, IOutLineViewService outLineViewService) /// <summary> /// æ°åæåéå®ä¸å¡æ¥å£å± /// </summary> public IProDeliveryOrderService ProDeliveryOrderService { get; } /// <summary> /// æ°åæåé宿ç»ä¸å¡æ¥å£å± /// </summary> public IProDeliveryOrderDetailService ProDeliveryOrderDetailService { get; } public OutboundService(IOutMESOrderService outMESOrderService, IOutSGOrderService outSGOrderService, IOutSGOrderDetailService outSGOrderDetailService, IOutStockLockInfoService outStockLockInfoService, IOutLineViewService outLineViewService, IProDeliveryOrderService proDeliveryOrderService, IProDeliveryOrderDetailService proDeliveryOrderDetailService) { OutMESOrderService = outMESOrderService; OutSGOrderService = outSGOrderService; OutSGOrderDetailService = outSGOrderDetailService; OutStockLockInfoService = outStockLockInfoService; OutLineViewService = outLineViewService; ProDeliveryOrderService = proDeliveryOrderService; ProDeliveryOrderDetailService = proDeliveryOrderDetailService; } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/ProDeliveryOrderService.cs
@@ -4,7 +4,13 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.MaterielEnum; using WIDESEA_Common.OrderEnum; using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Helper; using WIDESEA_DTO.ERP; using WIDESEA_IBasicRepository; using WIDESEA_IOutboundRepository; using WIDESEA_IOutboundService; @@ -17,10 +23,197 @@ public IProDeliveryOrderRepository Repository => BaseDal; private readonly IBasicRepository _basicRepository; private readonly IMapper _mapper; public ProDeliveryOrderService(IProDeliveryOrderRepository BaseDal, IBasicRepository basicRepository, IMapper mapper) : base(BaseDal) private readonly IProDeliveryOrderDetailRepository _proDeliveryOrderDetailRepository; public ProDeliveryOrderService(IProDeliveryOrderRepository BaseDal, IBasicRepository basicRepository, IMapper mapper, IProDeliveryOrderDetailRepository proDeliveryOrderDetailRepository) : base(BaseDal) { _basicRepository = basicRepository; _mapper = mapper; _proDeliveryOrderDetailRepository = proDeliveryOrderDetailRepository; } /// <summary> /// æ¥æ¶ERPæåéå®åºåºä¿¡æ¯ /// </summary> /// <returns></returns> public WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO) { WebResponseContent content = new WebResponseContent(); try { if (eRPProDeliveryDTO == null) { return content.Error("éå®åºåºä¿¡æ¯ä¸è½ä¸ºç©º"); } Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == eRPProDeliveryDTO.WarehouseCode); if (warehouse == null) { return content.Error($"ä»åºä¿¡æ¯ä¸åå¨{eRPProDeliveryDTO.WarehouseCode}"); } //è·åææç©æ List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == warehouse.WarehouseId && x.MaterielInvOrgId == MaterielInvOrgEnum.æ°å.ObjToInt()); //è·åææå®¢æ· List<Dt_CustomerInfo> customerInfos = _basicRepository.CustomerInfoRepository.QueryData(); //夿æ¯å¦åå¨ç©æ DeliveryDetailItem? deliveryDetailItem = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode)); if (deliveryDetailItem != null) { return content.Error($"ç©æä¿¡æ¯{deliveryDetailItem.MaterialCode}ä¸åå¨"); } //夿æ¯å¦åå¨å®¢æ· DeliveryDetailItem? deliveryDetailCustom = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !customerInfos.Select(x => x.CustomerCode).Contains(x.Customer)); if (deliveryDetailCustom != null) { return content.Error($"客æ·ä¿¡æ¯{deliveryDetailCustom.Customer}ä¸åå¨"); } //è·åææéå®åºåºä¿¡æ¯ List<Dt_ProDeliveryOrder> proDeliveryOrdersOld = BaseDal.Db.Queryable<Dt_ProDeliveryOrder>().Includes(x => x.Details).ToList(); if (eRPProDeliveryDTO.OperateType == 1) { //夿éå¤æå ¥ Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode); if (proDeliveryOrderOld != null) { return content.Error($"éå®åºåºåå·{proDeliveryOrderOld.DeliveryCode}ä¿¡æ¯å·²åå¨"); } List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = eRPProDeliveryDTO.DeliveryDetail.Select(x => _mapper.Map<Dt_ProDeliveryOrderDetail>(x)).ToList(); Dt_ProDeliveryOrder proDeliveryOrderAdd = _mapper.Map<Dt_ProDeliveryOrder>(eRPProDeliveryDTO); proDeliveryOrderDetails.ForEach(x => { Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode); x.MaterielName = materielInfo?.MaterielName; x.Unit = materielInfo?.MaterielUnit; }); proDeliveryOrderAdd.Details = proDeliveryOrderDetails; proDeliveryOrderAdd.WarehouseId = warehouse.WarehouseId; //æ°å¢ BaseDal.Db.InsertNav(proDeliveryOrderAdd).Include(x => x.Details).ExecuteCommand(); } else if (eRPProDeliveryDTO.OperateType == 2) { //夿æ¯å¦åå¨ Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode); if (proDeliveryOrderOld == null) { return content.Error($"éå®åºåºåå·{eRPProDeliveryDTO.DeliveryCode}ä¿¡æ¯ä¸åå¨"); } if (proDeliveryOrderOld.ProDeliveryStatus != OutOrderStatusEnum.æªå¼å§.ObjToInt()) { return content.Error($"éå®åºåºåå·{proDeliveryOrderOld.DeliveryCode}ç¶æä¸º{(OutOrderStatusEnum)proDeliveryOrderOld.ProDeliveryStatus}"); } List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = eRPProDeliveryDTO.DeliveryDetail.Select(x => _mapper.Map<Dt_ProDeliveryOrderDetail>(x)).ToList(); Dt_ProDeliveryOrder proDeliveryOrder = _mapper.Map<Dt_ProDeliveryOrder>(eRPProDeliveryDTO); proDeliveryOrder.Id = proDeliveryOrderOld.Id; proDeliveryOrderDetails.ForEach(x => { Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode); x.MaterielName = materielInfo?.MaterielName; x.Unit = materielInfo?.MaterielUnit; }); proDeliveryOrder.Details = proDeliveryOrderDetails; proDeliveryOrder.WarehouseId = warehouse.WarehouseId; //æ´æ° BaseDal.Db.UpdateNav(proDeliveryOrder).Include(x => x.Details).ExecuteCommand(); } else if (eRPProDeliveryDTO.OperateType == 3) { //夿æ¯å¦åå¨ Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode); if (proDeliveryOrderOld == null) { return content.Error($"éå®åºåºåå·{eRPProDeliveryDTO.DeliveryCode}ä¿¡æ¯ä¸åå¨"); } if (proDeliveryOrderOld.ProDeliveryStatus != OutOrderStatusEnum.æªå¼å§.ObjToInt()) { return content.Error($"éå®åºåºåå·{proDeliveryOrderOld.DeliveryCode}ç¶æä¸º{(OutOrderStatusEnum)proDeliveryOrderOld.ProDeliveryStatus}"); } //å é¤ BaseDal.Db.DeleteNav(proDeliveryOrderOld).Include(x => x.Details).ExecuteCommand(); } else { return content.Error("æªæ¾å°æä½ç±»å"); } //æ´æ°æ°æ® return content.OK("æ¥æ¶æå"); } catch (Exception ex) { content.Error(ex.Message); } return content; } /// <summary> /// ERPæåéå®åºåºåé åºå /// </summary> public (List<Dt_ProStockInfo>, List<Dt_ProDeliveryOrder>, List<Dt_ProDeliveryOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignProStockOutbound(List<Dt_ProDeliveryOrder> proDeliveryOrders,List<Dt_ProDeliveryOrderDetail> deliveryOrderDetails) { List<Dt_ProStockInfo> outStocks = new List<Dt_ProStockInfo>(); //åºåºè¯¦æ List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); //è´§ä½åå¨ List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); //foreach (var item in ) //{ //} //foreach (var item in deliveryOrderDetails) //{ // decimal needQuantity = item.ReqQuantity; // //è·åå¯ç¨åºå // List<Dt_ProStockInfo> stockInfos = _stockService.ProStockInfoService.GetUseableStocks(item.MaterialCode, WarehouseEnum.LLDCP.ObjToInt()).Where(x => !outStocks.Select(x => x.PalletCode).Contains(x.PalletCode)).ToList(); // if (!stockInfos.Any()) // { // continue; // } // //åé å®é åºå // List<Dt_ProStockInfo> autoAssignStocks = _stockService.ProStockInfoService.GetOutboundStocks(stockInfos, needQuantity); // //æ·»å åºååé // outStocks.AddRange(autoAssignStocks); // //è®¢åæ°é // decimal orderQuantity = item.ReqQuantity; // bool assignStop = true; // while (assignStop) // { // //åºåºè®¢åæç»å·²åé æ°é // decimal detailAssignQuantity = outStockLockInfos.Where(x => x.OrderDetailId == item.OutDetailId).Sum(x => x.AssignQuantity); // decimal orderDetailNeedQuantity = item.ReqQuantity - detailAssignQuantity; // decimal useStockLength = autoAssignStocks[0].proStockInfoDetails // .Sum(x => x.StockQty); // if (orderDetailNeedQuantity > useStockLength) // { // //çæè¯¦æ // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(item, autoAssignStocks[0], useStockLength); // outStockLockInfos.Add(outStockLockInfo); // item.AssignTotalUsage += useStockLength; // autoAssignStocks.Remove(autoAssignStocks[0]); // } // else // { // //çæè¯¦æ // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(item, autoAssignStocks[0], orderDetailNeedQuantity); // outStockLockInfos.Add(outStockLockInfo); // item.AssignTotalUsage = orderQuantity; // autoAssignStocks.Remove(autoAssignStocks[0]); // assignStop = false; // } // } // item.OutMESOrderStatus = OutOrderStatusEnum.åºåºä¸.ObjToInt(); // locationInfos.AddRange(_basicRepository.LocationInfoRepository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); //} return (outStocks, proDeliveryOrders, deliveryOrderDetails, outStockLockInfos, locationInfos); } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -975,7 +975,7 @@ { item.Count -= count.Count; } if (item.Count >= 50 && count?.Count<=2) if (item.Count >= 50 && count?.Count<=1) { return item.RoadwayNo; } @@ -2158,6 +2158,10 @@ throw new Exception(ex.Message); } } /// <summary> /// æåç»ç /// </summary> /// <returns></returns> public WebResponseContent BoxingInBound(string stationCode,List<string> barCodes) { WebResponseContent content = new WebResponseContent(); ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -61,7 +61,7 @@ } tasks.ForEach(x => { x.Grade = 99; x.Grade = 1; }); stockInfos.ForEach(x => { @@ -907,7 +907,6 @@ item.StockLength = 0; item.MaterielWeight = 0; item.MaterielThickness = 0; item.MaterielWide = 0; item.StockOutLength = 0; item.IsFull = WhetherEnum.True.ObjToInt(); item.IsPick = WhetherEnum.True.ObjToInt(); @@ -960,6 +959,76 @@ } return content; } /// <summary> /// å建éå®åºåº /// </summary> /// <param name="ids"></param> /// <returns></returns> public WebResponseContent CreateProDeliveryTasks(List<int> ids) { WebResponseContent content=new WebResponseContent(); try { ////è·åéå®åºåºåæ® //List<Dt_ProDeliveryOrder> deliveryOrders = BaseDal.Db.Queryable<Dt_ProDeliveryOrder>().Where(x=> ids.Contains(x.Id)).Includes(x=>x.Details).ToList(); //Dt_ProDeliveryOrder? proDeliveryOrder = deliveryOrders.FirstOrDefault(x => x.ProDeliveryStatus != OutOrderStatusEnum.æªå¼å§.ObjToInt()); //if (proDeliveryOrder != null) //{ // return content.Error($"åå·{proDeliveryOrder.DeliveryCode},订åç¶æ{(OutOrderStatusEnum)proDeliveryOrder.ProDeliveryStatus}"); //} //List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = deliveryOrders.SelectMany(x=>x.Details).ToList(); //if (!proDeliveryOrderDetails.Any()) //{ // throw new Exception($"æªæ¾å°éåºåºçæç»ä¿¡æ¯"); //} //_unitOfWorkManage.BeginTran(); //List<Dt_Task> tasks = new List<Dt_Task>(); //List<Dt_ProStockInfo>? stockInfos = null; //List<Dt_ProDeliveryOrder>? Orders = null; //List<Dt_ProDeliveryOrderDetail>? OrderDetails = null; //List<Dt_OutStockLockInfo>? outStockLockInfos = null; //List<Dt_LocationInfo>? locationInfos = null; //{ // //åé åºå // (List<Dt_ProStockInfo>, List<Dt_ProDeliveryOrder>, List<Dt_ProDeliveryOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.ProDeliveryOrderService.AssignProStockOutbound(deliveryOrders, proDeliveryOrderDetails); // if (result.Item1 != null && result.Item1.Count > 0) // { // //åå»ºä»»å¡ // tasks = GetTasks(result.Item1, result.Item3); // result.Item3.ForEach(x => // { // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); // }); // stockInfos = result.Item1; // Orders = result.Item2; // outStockLockInfos = result.Item3; // locationInfos = result.Item4; // } //} //if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0 && tasks.Count > 0) //{ // BaseDal.AddData(tasks); // stockInfos.ForEach(x => // { // x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); // }); // WebResponseContent contentResponse = _outboundService.OutMESOrderService.LockOutboundStockDataUpdate(stockInfos, Orders, outStockLockInfos, locationInfos, tasks: tasks); // if (!contentResponse.Status) // { // _unitOfWorkManage.RollbackTran(); // return content.Error(contentResponse.Message); // } //} //_unitOfWorkManage.CommitTran(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); content.Error(ex.Message); } return content; } List<string> GradeCodes = new List<string> { "001" ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Basic/SendStationCodeController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ using Microsoft.AspNetCore.Mvc; using WIDESEA_Core.BaseController; using WIDESEA_IBasicService; using WIDESEA_Model.Models; namespace WIDESEA_WMSServer.Controllers.Basic { /// <summary> /// å货车ä½ä¿¡æ¯ /// </summary> [Route("api/SendStationCode")] [ApiController] public class SendStationCodeController : ApiBaseController<ISendStationCodeService, Dt_SendStationCode> { public SendStationCodeController(ISendStationCodeService service) : base(service) { } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs
@@ -16,6 +16,7 @@ using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_IInboundService; using WIDESEA_IOutboundService; using WIDESEA_Model.Models; namespace WIDESEA_WMSServer.Controllers.ERP @@ -30,12 +31,14 @@ private readonly IBasicService _basicService; private readonly IInvokeERPService _invokeERPService; private readonly IInboundService _inboundService; private readonly IOutboundService _outboundService; public ErpController(IBasicService basicService,IInvokeERPService invokeERPService, IInboundService inboundService) public ErpController(IBasicService basicService,IInvokeERPService invokeERPService, IInboundService inboundService, IOutboundService outboundService) { _basicService = basicService; _invokeERPService = invokeERPService; _inboundService = inboundService; _outboundService = outboundService; } /// <summary> /// æ·»å äºæç©æ @@ -109,7 +112,7 @@ public WebResponseContent ProDeliveryOrder([FromBody] ERPRoot<ERPProDeliveryDTO> eRPRoot) { return _inboundService.PurchaseOrderService.ReceiveProDeliveryOrder(eRPRoot.Content); return _outboundService.ProDeliveryOrderService.ReceiveProDeliveryOrder(eRPRoot.Content); } /// <summary> ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -148,7 +148,16 @@ { return Service.CreateSGManualTasks(ids); } /// <summary> /// å建éå®åºåº /// </summary> /// <param name="ids"></param> /// <returns></returns> [HttpPost, Route("CreateSGManualTasks"), AllowAnonymous] public WebResponseContent CreateProDeliveryTasks([FromBody] List<int> ids) { return Service.CreateProDeliveryTasks(ids); } /// <summary> /// ä¿®æ¹ä»»å¡ç¶æ /// </summary> ÏîÄ¿×ÊÁÏ/±ä¸ü¹ÜÀí/ÁúÀûµÃÏîÄ¿ÐèÇó±ä¸üÈ·ÈÏÊé-20260401.docBinary files differ
ÏîÄ¿×ÊÁÏ/±ä¸ü¹ÜÀí/ÁúÀûµÃÏîÄ¿ÐèÇó±ä¸üÈ·ÈÏÊé-20260402.docBinary files differ
ÏîÄ¿×ÊÁÏ/±ä¸ü¹ÜÀí/ÁúÀûµÃÏîÄ¿ÐèÇó±ä¸üÈ·ÈÏÊé-20260416.docBinary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÐÒé/²©Ë¹Í¨ÀûÍØ½Ó¿Ú.V2.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÐÒé/ÁúÀûµÃRCS²æ³µAGVÈ·ÈÏÄ¿±êµã½Ó¿Ú.pdfBinary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÐÒé/ÁúÀûµÃRCS¶¥ÉýAGVÈ·ÈÏÄ¿±êµã½Ó¿Ú.pdfBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/¶þÂ¥»·Ïß20250715.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/³ÉÆ·ÊäËÍÏßͨѶÐÒé_20250707.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÁúÀûµÃÉ豸ͨѶÐÒé.xlsBinary files differ