| Code/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/AGVTaskDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Code/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue
@@ -48,7 +48,7 @@ { title: "å建人", field: "creater", type: "like" }, ], [ { title: "ä»»å¡ç±»å",field: "taskType",type: "selectList",dataKey: "taskType",data: [],}, { title: "ä»»å¡ç±»å",field: "taskType",type: "selectList",dataKey: "taskTypeEnum",data: [],}, { title: "ä»»å¡ç¶æ",field: "taskStatus",type: "selectList",dataKey: "taskStatusEnum",data: [],}, { title: "å··éå·", field: "roadway", type: "like" }, ], @@ -96,7 +96,7 @@ type: "int", width: 120, align: "left", bind: { key: "taskType", data: [] }, bind: { key: "taskTypeEnum", data: [] }, }, { field: "taskStatus", Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs
@@ -19,15 +19,15 @@ Undefined = 0, /// <summary> /// å°æç /// æ¨¡åæ®µ /// </summary> [Description("å°æç")] [Description("æ¨¡åæ®µ")] SmallPallet = 1, /// <summary> /// 䏿ç /// å·ç»æ®µ /// </summary> [Description("䏿ç")] [Description("å·ç»æ®µ")] MediumPallet = 2, /// <summary> Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs
@@ -9,68 +9,45 @@ { /// <summary> /// ä»åº /// HA57 = æ·®å®äºå - æ¿æä»<br/> /// HA58 = æ·®å®äºå - PPä»<br/> /// HA60 = æ·®å®äºå - è¾ æä»<br/> /// HA64 = æ·®å®äºå - æµè¯æ¶ä»<br/> /// HA71 = æ·®å®äºå - æåä»<br/> /// HA72 = æ·®å®äºå - å°¾æ°ä»<br/> /// HA73 = æ·®å®äºå - ç åä»<br/> /// HA101 = æ·®å®äºå - æåä»å¹³åº<br/> /// HA152 = æ·®å®äºå - å¹²èä»<br/> /// HA153 = æ·®å®äºå - 油墨ä»<br/> /// GW1 = éç ¤äºå - 髿¸©1å·ä»åº<br/> /// CW1 = éç ¤äºå - 常温1å·ä»åº<br/> /// HCFR1 = éç ¤äºå - å容1å·ä»åº<br/> /// GW2 = éç ¤äºå - 髿¸©2å·ä»åº<br/> /// ZJ1 = éç ¤äºå - æ£æå·ä»<br/> /// FJ1 = éç ¤äºå - è´æå·ä»<br/> /// </summary> public enum WarehouseEnum { /// <summary> /// æ¿æä» /// 髿¸©1å·ä»åº /// </summary> [Description("æ¿æä»")] HA57, [Description("髿¸©1å·ä»åº")] GW1 = 1, /// <summary> /// PPä» /// 常温1å·ä»åº /// </summary> [Description("PPä»")] HA58, [Description("常温1å·ä»åº")] CW1 = 2, /// <summary> /// è¾ æä» /// å容1å·ä»åº /// </summary> [Description("è¾ æä»")] HA60, [Description("å容1å·ä»åº")] HCFR1 = 3, /// <summary> /// æµè¯æ¶ä» /// 髿¸©2å·ä»åº /// </summary> [Description("æµè¯æ¶ä»")] HA64, [Description("髿¸©2å·ä»åº")] GW2 = 4, /// <summary> /// æåä» /// æ£æå·ä» /// </summary> [Description("æåä»")] HA71, [Description("æ£æå·ä»")] ZJ1 = 5, /// <summary> /// å°¾æ°ä» /// è´æå·ä» /// </summary> [Description("å°¾æ°ä»")] HA72, /// <summary> /// ç åä» /// </summary> [Description("ç åä»")] HA73, /// <summary> /// æåä»å¹³åº /// </summary> [Description("æåä»å¹³åº")] HA101, /// <summary> /// å¹²èä» /// </summary> [Description("å¹²èä»")] HA152, /// <summary> /// æ²¹å¢¨ä» /// </summary> [Description("油墨ä»")] HA153 [Description("è´æå·ä»")] FJ1 = 6 } } Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/AGVTaskDto.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,636 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Text.Json.Serialization; using System.Threading.Tasks; namespace WIDESEA_DTO.Task { public class AGVResponse { /// <summary> /// 请æ±ç»æä»£ç - å¿ å¡«ï¼trueæåï¼false失败 /// </summary> public bool Code { get; set; } /// <summary> /// 请æ±ç»æè¯´æ - éå¡«ï¼æ¯å¦æåï¼æåè¿å空ï¼å¼å¸¸è¿åå¼å¸¸ä¿¡æ¯ /// </summary> public string Msg { get; set; } /// <summary> /// å ¥åºå£ç¼å· - éå¡« /// </summary> public string Devid { get; set; } /// <summary> /// æçå· - éå¡« /// </summary> public string Traynumber { get; set; } /// <summary> /// æ´æç»å«-å度 - éå¡« /// </summary> public string Group { get; set; } /// <summary> /// 宽度 - éå¡« /// </summary> public int? Width { get; set; } /// <summary> /// æ°æ®å表 - éå¡« /// </summary> public List<string> Data { get; set; } /// <summary> /// æ¡ç å· - éå¡« /// </summary> public string Labelnumber { get; set; } /// <summary> /// ç©æç¼ç - éå¡« /// </summary> public string Productno { get; set; } /// <summary> /// ç©ææè¿° - éå¡« /// </summary> public string Productname { get; set; } /// <summary> /// æ°é - éå¡« /// </summary> public string Quantity { get; set; } /// <summary> /// åä½ - éå¡« /// </summary> public string Uomcode { get; set; } /// <summary> /// ç©æç±»å - éå¡« /// </summary> public string Producttype { get; set; } /// <summary> /// 产åºè®¾å¤ - éå¡« /// </summary> public string Equipment { get; set; } /// <summary> /// äº§åºæ¶é´ - éå¡« /// </summary> public string Productiondate { get; set; } /// <summary> /// ä¸éæ¶é´ - éå¡« /// </summary> public string Lowerlimittime { get; set; } /// <summary> /// é¢è¦æ¶é´ - éå¡« /// </summary> public string Warningtime { get; set; } /// <summary> /// è¶ ææ¶é´ - éå¡« /// </summary> public string Overduetime { get; set; } /// <summary> /// é¢çèªå®ä¹å段1 - éå¡« /// </summary> public string Define1 { get; set; } /// <summary> /// é¢çèªå®ä¹å段2 - éå¡« /// </summary> public string Define2 { get; set; } public AGVResponse OK(AGVDataDto aGVDataDto = null) { Msg = ""; Code = true; if (aGVDataDto != null) { // å°AGVDataDtoç屿§èµå¼ç»AGVResponse Devid = aGVDataDto.DevId; Traynumber = aGVDataDto.TrayNumber; Group = aGVDataDto.Group; Width = aGVDataDto.Width; Data = aGVDataDto.Data; Labelnumber = aGVDataDto.LabelNumber; Productno = aGVDataDto.ProductNo; Productname = aGVDataDto.ProductName; Quantity = aGVDataDto.Quantity; Uomcode = aGVDataDto.UomCode; Producttype = aGVDataDto.ProductType; Equipment = aGVDataDto.Equipment; Productiondate = aGVDataDto.ProductionDate; Lowerlimittime = aGVDataDto.LowerLimitTime; Warningtime = aGVDataDto.WarningTime; Overduetime = aGVDataDto.OverdueTime; Define1 = aGVDataDto.Define1; Define2 = aGVDataDto.Define2; } return this; } public AGVResponse Error(string msg) { Msg = msg; Code = false; return this; } } /// <summary> /// AGVååºæ°æ®é¡¹ /// </summary> /// <summary> /// AGVæ°æ®DTO /// </summary> public class AGVDataDto { /// <summary> /// å ¥åºå£ç¼å· - éå¡« /// </summary> [JsonPropertyName("devid")] [StringLength(50, ErrorMessage = "å ¥åºå£ç¼å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string DevId { get; set; } /// <summary> /// æçå· - éå¡« /// </summary> [JsonPropertyName("traynumber")] [StringLength(50, ErrorMessage = "æçå·é¿åº¦ä¸è½è¶ è¿50个å符")] public string TrayNumber { get; set; } /// <summary> /// æ´æç»å«-å度 - éå¡« /// </summary> [JsonPropertyName("group")] [StringLength(50, ErrorMessage = "æ´æç»å«é¿åº¦ä¸è½è¶ è¿50个å符")] public string Group { get; set; } /// <summary> /// 宽度 - éå¡« /// </summary> [JsonPropertyName("width")] public int? Width { get; set; } /// <summary> /// æ°æ®å表 - éå¡« /// </summary> [JsonPropertyName("data")] public List<string> Data { get; set; } /// <summary> /// æ¡ç å· - éå¡« /// </summary> [JsonPropertyName("labelnumber")] [StringLength(50, ErrorMessage = "æ¡ç å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string LabelNumber { get; set; } /// <summary> /// ç©æç¼ç - éå¡« /// </summary> [JsonPropertyName("productno")] [StringLength(50, ErrorMessage = "ç©æç¼ç é¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductNo { get; set; } /// <summary> /// ç©ææè¿° - éå¡« /// </summary> [JsonPropertyName("productname")] [StringLength(50, ErrorMessage = "ç©ææè¿°é¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductName { get; set; } /// <summary> /// æ°é - éå¡« /// </summary> [JsonPropertyName("quantity")] [StringLength(50, ErrorMessage = "æ°éé¿åº¦ä¸è½è¶ è¿50个å符")] public string Quantity { get; set; } /// <summary> /// åä½ - éå¡« /// </summary> [JsonPropertyName("uomcode")] [StringLength(50, ErrorMessage = "åä½é¿åº¦ä¸è½è¶ è¿50个å符")] public string UomCode { get; set; } /// <summary> /// ç©æç±»å - éå¡« /// </summary> [JsonPropertyName("producttype")] [StringLength(50, ErrorMessage = "ç©æç±»åé¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductType { get; set; } /// <summary> /// 产åºè®¾å¤ - éå¡« /// </summary> [JsonPropertyName("equipment")] [StringLength(50, ErrorMessage = "产åºè®¾å¤é¿åº¦ä¸è½è¶ è¿50个å符")] public string Equipment { get; set; } /// <summary> /// äº§åºæ¶é´ - éå¡« /// </summary> [JsonPropertyName("productiondate")] [StringLength(50, ErrorMessage = "äº§åºæ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductionDate { get; set; } /// <summary> /// ä¸éæ¶é´ - éå¡« /// </summary> [JsonPropertyName("lowerlimittime")] [StringLength(50, ErrorMessage = "ä¸éæ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string LowerLimitTime { get; set; } /// <summary> /// é¢è¦æ¶é´ - éå¡« /// </summary> [JsonPropertyName("warningtime")] [StringLength(50, ErrorMessage = "é¢è¦æ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string WarningTime { get; set; } /// <summary> /// è¶ ææ¶é´ - éå¡« /// </summary> [JsonPropertyName("overduetime")] [StringLength(50, ErrorMessage = "è¶ ææ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string OverdueTime { get; set; } /// <summary> /// é¢çèªå®ä¹å段1 - éå¡« /// </summary> [JsonPropertyName("define1")] [StringLength(50, ErrorMessage = "èªå®ä¹å段1é¿åº¦ä¸è½è¶ è¿50个å符")] public string Define1 { get; set; } /// <summary> /// é¢çèªå®ä¹å段2 - éå¡« /// </summary> [JsonPropertyName("define2")] [StringLength(50, ErrorMessage = "èªå®ä¹å段2é¿åº¦ä¸è½è¶ è¿50个å符")] public string Define2 { get; set; } } /// <summary> /// ä»»å¡åå»ºæ°æ®ä¼ è¾å¯¹è±¡ /// </summary> public class ApplyInOutDto { /// <summary> /// ä»»å¡å· /// </summary> [JsonPropertyName("taskid")] [Required(ErrorMessage = "ä»»å¡å·ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "ä»»å¡å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string TaskId { get; set; } /// <summary> /// 1-æ¨¡åæ®µï¼2-å·ç»æ®µ /// </summary> [JsonPropertyName("floor")] [Required(ErrorMessage = "æ¥¼å±æ®µä¸è½ä¸ºç©º")] [Range(1, 2, ErrorMessage = "æ¥¼å±æ®µå¼å¿ é¡»æ¯1æ2")] public int Floor { get; set; } /// <summary> /// 1-é´æï¼2-鳿 /// </summary> [JsonPropertyName("yinyang")] [Required(ErrorMessage = "é´é³æä¸è½ä¸ºç©º")] [Range(1, 2, ErrorMessage = "é´é³æå¼å¿ é¡»æ¯1æ2")] public int YinYang { get; set; } /// <summary> /// 1-å ¥åºï¼2-åºåº /// </summary> [JsonPropertyName("inout")] [Required(ErrorMessage = "åºå ¥åºç±»åä¸è½ä¸ºç©º")] [Range(1, 2, ErrorMessage = "åºå ¥åºç±»åå¼å¿ é¡»æ¯1æ2")] public int InOut { get; set; } /// <summary> /// ç©æç±»å /// </summary> [JsonPropertyName("materialtype")] [Required(ErrorMessage = "ç©æç±»åä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "ç©æç±»åé¿åº¦ä¸è½è¶ è¿50个å符")] public string MaterialType { get; set; } /// <summary> /// ç©ææè¿° /// </summary> [JsonPropertyName("materialname")] [Required(ErrorMessage = "ç©ææè¿°ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "ç©ææè¿°é¿åº¦ä¸è½è¶ è¿50个å符")] public string MaterialName { get; set; } /// <summary> /// æçå· /// </summary> [JsonPropertyName("traynumber")] [StringLength(50, ErrorMessage = "æçå·é¿åº¦ä¸è½è¶ è¿50个å符")] public string TrayNumber { get; set; } /// <summary> /// æ´æç»å«-å度 /// </summary> [JsonPropertyName("group")] [StringLength(50, ErrorMessage = "æ´æç»å«é¿åº¦ä¸è½è¶ è¿50个å符")] public string Group { get; set; } /// <summary> /// 宽度 /// </summary> [JsonPropertyName("width")] public int? Width { get; set; } /// <summary> /// æ°æ®éå /// </summary> [JsonPropertyName("data")] public List<string> Data { get; set; } /// <summary> /// æ¡ç å· /// </summary> [JsonPropertyName("labelnumber")] [StringLength(50, ErrorMessage = "æ¡ç å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string LabelNumber { get; set; } /// <summary> /// ç©æç¼ç /// </summary> [JsonPropertyName("productno")] [StringLength(50, ErrorMessage = "ç©æç¼ç é¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductNo { get; set; } /// <summary> /// ç©ææè¿° /// </summary> [JsonPropertyName("productname")] [StringLength(50, ErrorMessage = "ç©ææè¿°é¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductName { get; set; } /// <summary> /// æ°é /// </summary> [JsonPropertyName("quantity")] [StringLength(50, ErrorMessage = "æ°éé¿åº¦ä¸è½è¶ è¿50个å符")] public string Quantity { get; set; } /// <summary> /// åä½ /// </summary> [JsonPropertyName("uomcode")] [StringLength(50, ErrorMessage = "åä½é¿åº¦ä¸è½è¶ è¿50个å符")] public string UomCode { get; set; } /// <summary> /// ç©æç±»å /// </summary> [JsonPropertyName("producttype")] [StringLength(50, ErrorMessage = "ç©æç±»åé¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductType { get; set; } /// <summary> /// 产åºè®¾å¤ /// </summary> [JsonPropertyName("equipment")] [StringLength(50, ErrorMessage = "产åºè®¾å¤é¿åº¦ä¸è½è¶ è¿50个å符")] public string Equipment { get; set; } /// <summary> /// äº§åºæ¶é´ /// </summary> [JsonPropertyName("productiondate")] [StringLength(50, ErrorMessage = "äº§åºæ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string ProductionDate { get; set; } /// <summary> /// ä¸éæ¶é´ /// </summary> [JsonPropertyName("lowerlimittime")] [StringLength(50, ErrorMessage = "ä¸éæ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string LowerLimitTime { get; set; } /// <summary> /// é¢è¦æ¶é´ /// </summary> [JsonPropertyName("warningtime")] [StringLength(50, ErrorMessage = "é¢è¦æ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string WarningTime { get; set; } /// <summary> /// è¶ ææ¶é´ /// </summary> [JsonPropertyName("overduetime")] [StringLength(50, ErrorMessage = "è¶ ææ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string OverdueTime { get; set; } /// <summary> /// é¢çèªå®ä¹å段1 /// </summary> [JsonPropertyName("define1")] [StringLength(50, ErrorMessage = "èªå®ä¹å段1é¿åº¦ä¸è½è¶ è¿50个å符")] public string Define1 { get; set; } /// <summary> /// é¢çèªå®ä¹å段2 /// </summary> [JsonPropertyName("define2")] [StringLength(50, ErrorMessage = "èªå®ä¹å段2é¿åº¦ä¸è½è¶ è¿50个å符")] public string Define2 { get; set; } /// <summary> /// è¯·æ±æ¶é´ /// </summary> [JsonPropertyName("reqtime")] [Required(ErrorMessage = "è¯·æ±æ¶é´ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "è¯·æ±æ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string ReqTime { get; set; } } /// <summary> /// è¾é线ç³è¯·è¿å ¥è¯·æ±æ¨¡å /// </summary> public class ApplyEnterDto { /// <summary> /// 设å¤ID /// </summary> [JsonPropertyName("devid")] [Required(ErrorMessage = "设å¤IDä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "设å¤IDé¿åº¦ä¸è½è¶ è¿50个å符")] public string DevId { get; set; } /// <summary> /// åºå ¥åºç±»å 1-å ¥åºï¼2-åºåº /// </summary> [JsonPropertyName("inout")] [Required(ErrorMessage = "åºå ¥åºç±»åä¸è½ä¸ºç©º")] [Range(1, 2, ErrorMessage = "åºå ¥åºç±»åå¼å¿ é¡»æ¯1æ2")] public int InOut { get; set; } /// <summary> /// ä»»å¡å· /// </summary> [JsonPropertyName("taskid")] [Required(ErrorMessage = "ä»»å¡å·ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "ä»»å¡å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string TaskId { get; set; } /// <summary> /// é¢çèªå®ä¹å段1 /// </summary> [JsonPropertyName("define1")] [StringLength(50, ErrorMessage = "èªå®ä¹å段1é¿åº¦ä¸è½è¶ è¿50个å符")] public string Define1 { get; set; } /// <summary> /// é¢çèªå®ä¹å段2 /// </summary> [JsonPropertyName("define2")] [StringLength(50, ErrorMessage = "èªå®ä¹å段2é¿åº¦ä¸è½è¶ è¿50个å符")] public string Define2 { get; set; } /// <summary> /// è¯·æ±æ¶é´ /// </summary> [JsonPropertyName("reqtime")] [Required(ErrorMessage = "è¯·æ±æ¶é´ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "è¯·æ±æ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string ReqTime { get; set; } } /// <summary> /// åºåºå®æåé¦ /// </summary> public class OutTaskCompleteDto { /// <summary> /// ä»»å¡å· /// </summary> [JsonPropertyName("taskid")] [Required(ErrorMessage = "ä»»å¡å·ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "ä»»å¡å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string TaskId { get; set; } /// <summary> /// åºåºå£ç¼å· /// </summary> [JsonPropertyName("devid")] [Required(ErrorMessage = "åºåºå£ç¼å·ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "åºåºå£ç¼å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string DevId { get; set; } /// <summary> /// é¢çèªå®ä¹å段1 /// </summary> [JsonPropertyName("define1")] [StringLength(50, ErrorMessage = "èªå®ä¹å段1é¿åº¦ä¸è½è¶ è¿50个å符")] public string? Define1 { get; set; } /// <summary> /// é¢çèªå®ä¹å段2 /// </summary> [JsonPropertyName("define2")] [StringLength(50, ErrorMessage = "èªå®ä¹å段2é¿åº¦ä¸è½è¶ è¿50个å符")] public string? Define2 { get; set; } /// <summary> /// è¯·æ±æ¶é´ /// </summary> [JsonPropertyName("reqtime")] [Required(ErrorMessage = "è¯·æ±æ¶é´ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "è¯·æ±æ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string ReqTime { get; set; } } /// <summary> /// åæ¾è´§å®æè¯·æ±æ¨¡å /// </summary> public class TaskCompleteDto { /// <summary> /// 设å¤ID /// </summary> [JsonPropertyName("devid")] [Required(ErrorMessage = "设å¤IDä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "设å¤IDé¿åº¦ä¸è½è¶ è¿50个å符")] public string DevId { get; set; } /// <summary> /// åºå ¥åºç±»å 1-å ¥åºï¼2-åºåº /// </summary> [JsonPropertyName("inout")] [Required(ErrorMessage = "åºå ¥åºç±»åä¸è½ä¸ºç©º")] [Range(1, 2, ErrorMessage = "åºå ¥åºç±»åå¼å¿ é¡»æ¯1æ2")] public int InOut { get; set; } /// <summary> /// ä»»å¡å· /// </summary> [JsonPropertyName("taskid")] [Required(ErrorMessage = "ä»»å¡å·ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "ä»»å¡å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string TaskId { get; set; } /// <summary> /// é¢çèªå®ä¹å段1 /// </summary> [JsonPropertyName("define1")] [StringLength(50, ErrorMessage = "èªå®ä¹å段1é¿åº¦ä¸è½è¶ è¿50个å符")] public string? Define1 { get; set; } /// <summary> /// é¢çèªå®ä¹å段2 /// </summary> [JsonPropertyName("define2")] [StringLength(50, ErrorMessage = "èªå®ä¹å段2é¿åº¦ä¸è½è¶ è¿50个å符")] public string? Define2 { get; set; } /// <summary> /// è¯·æ±æ¶é´ /// </summary> [JsonPropertyName("reqtime")] [Required(ErrorMessage = "è¯·æ±æ¶é´ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "è¯·æ±æ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string ReqTime { get; set; } } /// <summary> /// ä»»å¡åæ¶æ°æ®ä¼ è¾å¯¹è±¡ /// </summary> public class TaskCancelDto { /// <summary> /// ä»»å¡å· /// </summary> [JsonPropertyName("taskid")] [Required(ErrorMessage = "ä»»å¡å·ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "ä»»å¡å·é¿åº¦ä¸è½è¶ è¿50个å符")] public string TaskId { get; set; } /// <summary> /// é¢çèªå®ä¹å段1 /// </summary> [JsonPropertyName("define1")] [StringLength(50, ErrorMessage = "èªå®ä¹å段1é¿åº¦ä¸è½è¶ è¿50个å符")] public string? Define1 { get; set; } /// <summary> /// é¢çèªå®ä¹å段2 /// </summary> [JsonPropertyName("define2")] [StringLength(50, ErrorMessage = "èªå®ä¹å段2é¿åº¦ä¸è½è¶ è¿50个å符")] public string? Define2 { get; set; } /// <summary> /// è¯·æ±æ¶é´ /// </summary> [JsonPropertyName("reqtime")] [Required(ErrorMessage = "è¯·æ±æ¶é´ä¸è½ä¸ºç©º")] [StringLength(50, ErrorMessage = "è¯·æ±æ¶é´é¿åº¦ä¸è½è¶ è¿50个å符")] public string ReqTime { get; set; } } } Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -154,5 +154,49 @@ /// <param name="stock"></param> /// <returns></returns> Task<WebResponseContent> CreateRobotChangePalletTaskAsync(StockDTO stock); #region æå·åºä»»å¡æ¨¡å /// <summary> /// åºå ¥åºç³è¯· /// </summary> /// <param name="applyInOutDto">请æ±åæ°</param> /// <returns></returns> public Task<AGVResponse> ApplyInOutAsync(ApplyInOutDto applyInOutDto); /// <summary> /// æå¨åºåºå®æåé¦ç»AGV /// </summary> /// <param name="outTaskCompleteDto">请æ±åæ°</param> /// <returns></returns> public Task<WebResponseContent> OutTaskComplete(OutTaskCompleteDto outTaskCompleteDto); /// <summary> /// ä»»å¡å®ææ¥å£ /// </summary> /// <param name="wCSTask"></param> /// <returns></returns> //public Task<WebResponseContent> TaskCompleted(WCSTaskDTO wCSTask); /// <summary> /// ä»»å¡åæ¶ /// </summary> /// <param name="taskCancelDto">请æ±åæ°</param> /// <returns></returns> public Task<AGVResponse> TaskCancelAsync(TaskCancelDto taskCancelDto); /// <summary> /// åæ¾è´§å®æ /// </summary> /// <param name="taskCompleteDto">请æ±åæ°</param> /// <returns></returns> public Task<AGVResponse> TaskCompleteAsync(TaskCompleteDto taskCompleteDto); /// <summary> /// è¾é线ç³è¯·è¿å ¥ /// </summary> /// <param name="applyEnterDto">请æ±åæ°</param> /// <returns></returns> public Task<AGVResponse> ApplyEnterAsync(ApplyEnterDto applyEnterDto); #endregion æå·åºä»»å¡æ¨¡å } } Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -2,14 +2,17 @@ using MapsterMapper; using Microsoft.Extensions.Configuration; using SqlSugar; using System.DirectoryServices.Protocols; using System.Text.Json; using WIDESEA_Common.LocationEnum; using WIDESEA_Common.StockEnum; using WIDESEA_Common.TaskEnum; using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Core; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_DTO.GradingMachine; using WIDESEA_DTO.MES; @@ -33,6 +36,7 @@ private readonly IMesService _mesService; private readonly ITask_HtyService _task_HtyService; private readonly IStockInfo_HtyService _stockInfo_HtyService; private readonly IUnitOfWorkManage _unitOfWorkManage; public IRepository<Dt_Task> Repository => BaseDal; @@ -55,7 +59,8 @@ RoundRobinService roundRobinService, IMesService mesService, ITask_HtyService task_HtyService, IStockInfo_HtyService stockInfo_HtyService) : base(BaseDal) IStockInfo_HtyService stockInfo_HtyService, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) { _mapper = mapper; _stockInfoService = stockInfoService; @@ -66,6 +71,7 @@ _mesService = mesService; _task_HtyService = task_HtyService; _stockInfo_HtyService = stockInfo_HtyService; _unitOfWorkManage = unitOfWorkManage; } #region WCSé»è¾å¤ç @@ -222,6 +228,12 @@ var stockInfo = await _stockInfoService.GetStockInfoAsync(taskDto.PalletCode); if (stockInfo == null) return WebResponseContent.Instance.Error("æªæ¾å°å¯¹åºåºåä¿¡æ¯"); // 夿æ¯ä¸æ¯æå·åºä»»å¡ //if (taskDto.WarehouseId == (int)WarehouseEnum.FJ1 || taskDto.WarehouseId == (int)WarehouseEnum.ZJ1) //{ // return WebResponseContent.Instance.OK(); //} return await ExecuteWithinTransactionAsync(async () => { WebResponseContent content = new WebResponseContent(); @@ -278,6 +290,18 @@ var stockInfo = await _stockInfoService.GetStockInfoAsync(taskDto.PalletCode); if (stockInfo == null) return WebResponseContent.Instance.Error("æªæ¾å°å¯¹åºåºåä¿¡æ¯"); // 夿æ¯ä¸æ¯æå·åºä»»å¡ if (taskDto.WarehouseId == (int)WarehouseEnum.FJ1 || taskDto.WarehouseId == (int)WarehouseEnum.ZJ1) { OutTaskCompleteDto outTaskCompleteDto = new OutTaskCompleteDto() { TaskId = task.OrderNo, DevId = task.TargetAddress, ReqTime = DateTime.Now.ToString() }; return await OutTaskComplete(outTaskCompleteDto); } WebResponseContent content = new WebResponseContent(); return await ExecuteWithinTransactionAsync(async () => @@ -1096,5 +1120,401 @@ } #endregion åå®¹ææ¥å£ #region æå·åºä»»å¡æ¨¡å public string AGV_OutTaskComplete = WIDESEA_Core.Helper.AppSettings.Configuration["AGV_OutTaskComplete"]; // 䏿¥AGVåºåºè¾éçº¿å®æ public string WCS_ReceiveTask = WIDESEA_Core.Helper.AppSettings.Configuration["WCS_ReceiveTask"]; // WMSè¾é线任å¡ä¸å /// <summary> /// åºå ¥åºç³è¯· /// </summary> /// <param name="applyInOutDto">请æ±åæ°</param> /// <returns></returns> public async Task<AGVResponse> ApplyInOutAsync(ApplyInOutDto applyInOutDto) { AGVResponse aGVResponse = new AGVResponse(); try { // åæ°éªè¯ if (applyInOutDto == null) return aGVResponse.Error("请æ±åæ°ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(applyInOutDto.TrayNumber)) return aGVResponse.Error("æçå·ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(applyInOutDto.TaskId)) return aGVResponse.Error("ä»»å¡å·ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(applyInOutDto.MaterialType)) return aGVResponse.Error("ç©æç±»åä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(applyInOutDto.MaterialName)) return aGVResponse.Error("ç©ææè¿°ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(applyInOutDto.ReqTime)) return aGVResponse.Error("è¯·æ±æ¶é´ä¸è½ä¸ºç©º"); if (applyInOutDto.Floor != 1 && applyInOutDto.Floor != 2) return aGVResponse.Error($"æ¥¼å±æ®µé误ï¼å¿ 须为1(æ¨¡åæ®µ)æ2(å·ç»æ®µ)ï¼å½åå¼ï¼{applyInOutDto.Floor}"); if (applyInOutDto.YinYang != 1 && applyInOutDto.YinYang != 2) return aGVResponse.Error($"é´é³æé误ï¼å¿ 须为1(é´æ)æ2(鳿)ï¼å½åå¼ï¼{applyInOutDto.YinYang}"); if (applyInOutDto.InOut != 1 && applyInOutDto.InOut != 2) return aGVResponse.Error($"åºå ¥åºç±»åé误ï¼å¿ 须为1(å ¥åº)æ2(åºåº)ï¼å½åå¼ï¼{applyInOutDto.InOut}"); if (applyInOutDto.InOut == 1) // å ¥åº { if (applyInOutDto.Width == null || applyInOutDto.Width <= 0) return aGVResponse.Error("å ¥åºæ¶å®½åº¦ä¸è½ä¸ºç©ºä¸å¿ 须大äº0"); if (string.IsNullOrWhiteSpace(applyInOutDto.Group)) return aGVResponse.Error("å ¥åºæ¶æ´æç»å«ä¸è½ä¸ºç©º"); } // æ£æ¥ä»»å¡æ¯å¦å·²åå¨ var existingTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == applyInOutDto.TrayNumber); if (existingTask != null) return aGVResponse.Error($"WMSå·²æå½åä»»å¡ï¼ä¸å¯éå¤ä¸åï¼ä»»å¡å·ï¼{applyInOutDto.TaskId}"); // åå»ºä»»å¡ Dt_Task task = new Dt_Task { OrderNo = applyInOutDto.TaskId, // 使ç¨AGVçä»»å¡å· PalletCode = applyInOutDto.TrayNumber, PalletType = applyInOutDto.Floor, //WarehouseId = applyInOutDto.YinYang, Grade = 1, Creater = "AGV", CreateDate = DateTime.Now, Remark = $"ç©æç±»åï¼{applyInOutDto.MaterialType}ï¼ç©ææè¿°ï¼{applyInOutDto.MaterialName}" }; // æ ¹æ®é´æ/é³æè®¾ç½®å··éåç«å° if (applyInOutDto.YinYang == 1) // é´æ { // è´§ç©å°è¾¾ååé è´§ç©ä½ task.Roadway = WarehouseEnum.FJ1.ToString(); task.WarehouseId = (int)WarehouseEnum.FJ1; task.SourceAddress = applyInOutDto.InOut == 1 ? "D10010" : "D10020"; // å ¥åºå£/åºåºå£ task.NextAddress = "D10080"; // é´æå ¬å ±åºåºå£ task.TargetAddress = "é´æå·åº"; } else if (applyInOutDto.YinYang == 2) // 鳿 { task.Roadway = WarehouseEnum.ZJ1.ToString(); task.WarehouseId = (int)WarehouseEnum.ZJ1; task.SourceAddress = applyInOutDto.InOut == 1 ? "D10100" : "D10090"; // å ¥åºå£/åºåºå£ task.NextAddress = "D10160"; // é³æå ¬å ±åºåºå£ task.TargetAddress = "æ£æå·åº"; } // æ ¹æ®åºå ¥åºç±»åè®¾ç½®ç®æ å°å if (applyInOutDto.InOut == 1) // å ¥åº { var stockInfo = await _stockInfoService.GetStockInfoAsync(applyInOutDto.TrayNumber); if (stockInfo != null) return aGVResponse.Error($"å½åæç{applyInOutDto.TrayNumber}å·²ç»å ¥åºäº"); task.TaskType = (int)TaskInboundTypeEnum.Inbound; task.TaskStatus = (int)TaskInStatusEnum.InNew; task.CurrentAddress = task.SourceAddress; // å½åå¨å ¥åºå£ // ä¿åä»»å¡ var result = await BaseDal.AddDataAsync(task); } else // åºåº { // 夿æ¯å¦ç§»åº task.TaskType = (int)TaskOutboundTypeEnum.Outbound; task.TaskStatus = (int)TaskOutStatusEnum.OutNew; task.CurrentAddress = task.SourceAddress; // å½åå¨å ¥åºå£ // æ¥æ¾åºå var stockInfo = await _stockInfoService.GetStockInfoAsync(applyInOutDto.TrayNumber); if (stockInfo == null) return aGVResponse.Error($"æªæ¾å°æç{applyInOutDto.TrayNumber}çåºåä¿¡æ¯"); // éªè¯åºåæå±æ¯å¦æ£ç¡® if (stockInfo.WarehouseId != applyInOutDto.YinYang) return aGVResponse.Error($"æç{applyInOutDto.TrayNumber}ä¸å±äºå½å{(applyInOutDto.YinYang == 1 ? "é´æ" : "鳿")}"); if (stockInfo.StockStatus != (int)StockStatusEmun.å ¥åºå®æ) return aGVResponse.Error($"æç{applyInOutDto.TrayNumber}æ£å¨ç§»å¨ä¸ï¼è¯·ç¨åï¼"); task.SourceAddress = stockInfo.LocationCode; // æºå°åä¸ºè´§ä½ task.CurrentAddress = stockInfo.LocationCode; // å½åä½ç½®å¨è´§ä½ task.TargetAddress = applyInOutDto.YinYang == 1 ? "D10020" : "D10090"; // ç®æ å°å为åºåºå£ // ä¿åä»»å¡ var result = await BaseDal.AddDataAsync(task); // 夿æ¯å¦ç§»åº //var transferTask = await _locationInfoService.TransferCheckAsync(result); } // æå»ºååºæ°æ® AGVDataDto aGVDataDto = new AGVDataDto { DevId = applyInOutDto.InOut == 1 ? task.SourceAddress : task.TargetAddress, TrayNumber = task.PalletCode, Group = applyInOutDto.Group, Width = applyInOutDto.Width ?? 0, LabelNumber = applyInOutDto.LabelNumber, ProductNo = applyInOutDto.ProductNo, ProductName = applyInOutDto.ProductName, Quantity = applyInOutDto.Quantity, UomCode = applyInOutDto.UomCode, ProductType = applyInOutDto.ProductType, Equipment = applyInOutDto.Equipment, ProductionDate = applyInOutDto.ProductionDate, LowerLimitTime = applyInOutDto.LowerLimitTime, WarningTime = applyInOutDto.WarningTime, OverdueTime = applyInOutDto.OverdueTime }; return aGVResponse.OK(aGVDataDto); } catch (Exception ex) { return aGVResponse.Error($"WMSä»»å¡å建æ¥å£é误: {ex.Message}"); } } /// <summary> /// æå¨åºåºå®æåé¦ç»AGV /// </summary> /// <param name="outTaskCompleteDto">请æ±åæ°</param> /// <returns></returns> public async Task<WebResponseContent> OutTaskComplete(OutTaskCompleteDto outTaskCompleteDto) { WebResponseContent webResponse = new WebResponseContent(); try { if (outTaskCompleteDto == null) return webResponse.Error("请æ±åæ°ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(outTaskCompleteDto.TaskId)) return webResponse.Error("ä»»å¡å·ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(outTaskCompleteDto.DevId)) return webResponse.Error("åºåºå£ç¼å·ä¸è½ä¸ºç©º"); var task = await BaseDal.QueryFirstAsync(x => x.OrderNo == outTaskCompleteDto.TaskId); if (task == null) return webResponse.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); outTaskCompleteDto.ReqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var httpResponse = _httpClientHelper.Post<AGVResponse>(AGV_OutTaskComplete, JsonSerializer.Serialize(outTaskCompleteDto)).Data; // 夿è¿ç¨æ¥å£è¿åæ¯å¦æå if (httpResponse != null && httpResponse.Data != null) { AGVResponse agvResponse = httpResponse; // æ ¹æ®codeåæ®µå¤æï¼code为true表示æå if (agvResponse.Code == true) { var stockInfo = await _stockInfoService.GetStockInfoAsync(task.PalletCode); if (stockInfo == null) return webResponse.Error($"æªæ¾å°æç{task.PalletCode}çåºåä¿¡æ¯"); var locationInfo = await _locationInfoService.GetLocationInfoAsync(stockInfo.LocationCode); if (locationInfo == null) return webResponse.Error($"æªæ¾å°æç{stockInfo.LocationCode}çè´§ä½ä¿¡æ¯"); if (stockInfo.StockStatus != (int)StockStatusEmun.åºåºéå® || locationInfo.LocationStatus != (int)LocationStatusEnum.InStockLock) { return webResponse.Error($"å½ååºå{stockInfo.StockStatus}æè è´§ä½{locationInfo.LocationStatus}ç¶æä¿¡æ¯é误"); } locationInfo.LocationStatus = (int)LocationStatusEnum.Free; _unitOfWorkManage.BeginTran(); BaseDal.DeleteData(task); _locationInfoService.UpdateData(locationInfo); _stockInfoService.DeleteData(stockInfo); _unitOfWorkManage.CommitTran(); return webResponse.OK(agvResponse.Msg); } else { // 失败ï¼è¿åAGVè¿åçéè¯¯ä¿¡æ¯ return webResponse.Error(string.IsNullOrWhiteSpace(agvResponse.Msg) ? "AGVæ¥å£è°ç¨å¤±è´¥" : agvResponse.Msg); } } else { // HTTPè¯·æ±æ¬èº«å¤±è´¥ return webResponse.Error(httpResponse?.Msg ?? "AGVæ¥å£è°ç¨å¼å¸¸"); } } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return webResponse.Error($"WMSä»»å¡å®ææ¥å£é误ï¼{ex.Message}"); } } ///// <summary> ///// ä»»å¡å®ææ¥å£ ///// </summary> ///// <param name="wCSTask"></param> ///// <returns></returns> //public async Task<WebResponseContent> TaskCompleted(WCSTaskDTO wCSTask) //{ // WebResponseContent webResponse = new WebResponseContent(); // try // { // Dt_Task task = await BaseDal.QueryFirstAsync(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode); // if (task == null) return webResponse.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); // // åºåºå®æåé¦ // OutTaskCompleteDto outTaskCompleteDto = new OutTaskCompleteDto() // { // TaskId = task.OrderNo, // DevId = task.TargetAddress, // ReqTime = DateTime.Now.ToString() // }; // return await OutTaskComplete(outTaskCompleteDto); // } // catch (Exception ex) // { // return webResponse.Error($"WMSä»»å¡å®ææ¥å£é误ï¼{ex.Message}"); // } //} /// <summary> /// è¾é线ç³è¯·è¿å ¥ /// </summary> /// <param name="applyEnterDto">请æ±åæ°</param> /// <returns></returns> public async Task<AGVResponse> ApplyEnterAsync(ApplyEnterDto applyEnterDto) { AGVResponse aGVResponse = new AGVResponse(); try { // åæ°éªè¯ if (applyEnterDto == null) return aGVResponse.Error("请æ±åæ°ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(applyEnterDto.DevId)) return aGVResponse.Error("设å¤ç¼å·ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(applyEnterDto.TaskId)) return aGVResponse.Error("ä»»å¡å·ä¸è½ä¸ºç©º"); if (applyEnterDto.InOut != 1 && applyEnterDto.InOut != 2) return aGVResponse.Error($"åºå ¥åºç±»åé误ï¼å¿ 须为1(å ¥åº)æ2(åºåº)ï¼å½åå¼ï¼{applyEnterDto.InOut}"); // æ¥è¯¢ä»»å¡æ¯å¦åå¨ var task = await BaseDal.QueryFirstAsync(x => x.OrderNo == applyEnterDto.TaskId); if (task == null) return aGVResponse.Error($"æªæ¾å°ä»»å¡ä¿¡æ¯ï¼ä»»å¡å·ï¼{applyEnterDto.TaskId}"); if (applyEnterDto.InOut == 1 && task.TaskType == (int)TaskInboundTypeEnum.Inbound && task.TaskStatus == (int)TaskInStatusEnum.InNew) { aGVResponse.OK(); } else if(applyEnterDto.InOut == 2 && task.TaskType == (int)TaskOutboundTypeEnum.Outbound && task.TaskStatus == (int)TaskStatusEnum.Line_Finish) { aGVResponse.OK(); } return aGVResponse.Error($"è¾é线{applyEnterDto.DevId}å½åç¹å¿ï¼è¯·ç¨åéè¯"); // Dt_Task.SourceAddress询é®wcsç«å°1-é´æå ¥å£å«D10010åD10020ï¼2-鳿D10090åD10100æ¯å¦æè´§ç© //var httpResponse = _httpClientHelper.Post<WebResponseContent>("http://127.0.0.1:9999/api/Task/ApplyInOut", JsonSerializer.Serialize(task)).Data; //if (httpResponse != null && httpResponse.Status == true) //{ // _unitOfWorkManage.BeginTran(); // task.TaskStatus = (int)TaskStatusEnum.AGV_Executing; // await BaseDal.UpdateDataAsync(task); // _unitOfWorkManage.CommitTran(); // return aGVResponse.OK(); //} //else //{ // return aGVResponse.Error($"ç«å°{task.SourceAddress}å·²ç»è½½è´§"); //} } catch (Exception ex) { //_unitOfWorkManage.RollbackTran(); return aGVResponse.Error($"WMSè¾é线ç³è¯·æ¥å£é误ï¼{ex.Message}"); } } /// <summary> /// åæ¾è´§å®æ /// </summary> /// <param name="taskCompleteDto">请æ±åæ°</param> /// <returns></returns> public async Task<AGVResponse> TaskCompleteAsync(TaskCompleteDto taskCompleteDto) { AGVResponse aGVResponse = new AGVResponse(); try { if (taskCompleteDto == null) return aGVResponse.Error("请æ±åæ°ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(taskCompleteDto.TaskId)) return aGVResponse.Error("ä»»å¡å·ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(taskCompleteDto.DevId)) return aGVResponse.Error("设å¤ç¼å·ä¸è½ä¸ºç©º"); if (taskCompleteDto.InOut != 1 && taskCompleteDto.InOut != 2) return aGVResponse.Error($"åºå ¥åºç±»åé误ï¼å¿ 须为1(å ¥åº)æ2(åºåº)ï¼å½åå¼ï¼{taskCompleteDto.InOut}"); var task = await BaseDal.QueryFirstAsync(x => x.OrderNo == taskCompleteDto.TaskId); if (task == null) return aGVResponse.Error($"æªæ¾å°ä»»å¡ä¿¡æ¯ï¼ä»»å¡å·ï¼{taskCompleteDto.TaskId}"); if (taskCompleteDto.InOut == 2) { var stockInfo = await _stockInfoService.GetStockInfoAsync(task.PalletCode); if (stockInfo == null) return aGVResponse.Error($"æªæ¾å°æç{task.PalletCode}çåºåä¿¡æ¯"); var locationInfo = await _locationInfoService.GetLocationInfoAsync(stockInfo.LocationCode); if (locationInfo == null) return aGVResponse.Error($"æªæ¾å°æç{stockInfo.LocationCode}çè´§ä½ä¿¡æ¯"); if (stockInfo.StockStatus != (int)StockStatusEmun.åºåºéå® || locationInfo.LocationStatus != (int)LocationStatusEnum.InStockLock) { return aGVResponse.Error($"å½ååºå{stockInfo.StockStatus}æè è´§ä½{locationInfo.LocationStatus}ç¶æä¿¡æ¯é误"); } locationInfo.LocationStatus = (int)LocationStatusEnum.Free; task.TaskStatus = (int)TaskOutStatusEnum.OutFinish; _unitOfWorkManage.BeginTran(); _stockInfoService.DeleteData(stockInfo); await _locationInfoService.UpdateLocationInfoAsync(locationInfo); BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); _unitOfWorkManage.CommitTran(); } else { //æ¥æ¾å¯ç¨è´§ä½ var availableLocation = await _locationInfoService.GetLocationInfo(task.Roadway); if (availableLocation == null) return aGVResponse.Error("æ å¯ç¨çå ¥åºè´§ä½"); task.TargetAddress = availableLocation.LocationCode; // éç¥WCSå ¥åº var wcsTaskDto = _mapper.Map<WCSTaskDTO>(task); var httpResponse = _httpClientHelper.Post<WebResponseContent>(WCS_ReceiveTask, JsonSerializer.Serialize(wcsTaskDto)); if (httpResponse == null) return aGVResponse.Error("ä¸åWCS失败"); task.TaskStatus = (int)TaskStatusEnum.Line_Executing; task.Dispatchertime = DateTime.Now; var locationInfo = await _locationInfoService.GetLocationInfoAsync(task.TargetAddress); if (locationInfo == null) return aGVResponse.Error($"æªæ¾å°æç{task.TargetAddress}çè´§ä½ä¿¡æ¯"); if (locationInfo.LocationStatus != (int)LocationStatusEnum.InStock) { return aGVResponse.Error($"å½åè´§ä½{locationInfo.LocationStatus}ç¶æä¿¡æ¯é误"); } Dt_StockInfo dt_Stock = new Dt_StockInfo() { PalletCode = task.PalletCode, StockStatus = (int)StockStatusEmun.å ¥åºç¡®è®¤, LocationCode = locationInfo.LocationCode, WarehouseId = task.WarehouseId, Creater = "AGV", CreateDate = DateTime.Now }; locationInfo.LocationStatus = (int)LocationStatusEnum.FreeLock; _unitOfWorkManage.BeginTran(); BaseDal.UpdateData(task); _locationInfoService.UpdateData(locationInfo); _stockInfoService.AddData(dt_Stock); _unitOfWorkManage.CommitTran(); } return aGVResponse.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return aGVResponse.Error($"WMSåæ¾è´§å®ææ¥å£é误ï¼{ex.Message}"); } } /// <summary> /// ä»»å¡åæ¶ /// </summary> /// <param name="taskCancelDto">请æ±åæ°</param> /// <returns></returns> public async Task<AGVResponse> TaskCancelAsync(TaskCancelDto taskCancelDto) { AGVResponse aGVResponse = new AGVResponse(); try { if (taskCancelDto == null) return aGVResponse.Error("请æ±åæ°ä¸è½ä¸ºç©º"); if (string.IsNullOrWhiteSpace(taskCancelDto.TaskId)) return aGVResponse.Error("ä»»å¡å·ä¸è½ä¸ºç©º"); var task = await BaseDal.QueryFirstAsync(x => x.OrderNo == taskCancelDto.TaskId); // 没æä»»å¡å¼ºå¶åæ¶ if (task == null) return aGVResponse.OK(); if (task.TaskStatus == (int)TaskInStatusEnum.InNew) { task.TaskStatus = (int)TaskInStatusEnum.InCancel; // å ¥åºä»»å¡ç´æ¥å é¤ _unitOfWorkManage.BeginTran(); BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); _unitOfWorkManage.CommitTran(); return aGVResponse.OK(); } else if(task.TaskStatus == (int)TaskOutStatusEnum.OutNew) { // åºåºä»»å¡æ¢å¤åºå var stockInfo = await _stockInfoService.GetStockInfoAsync(task.PalletCode); if (stockInfo == null) return aGVResponse.Error($"æªæ¾å°æç{task.PalletCode}çåºåä¿¡æ¯"); var locationInfo = await _locationInfoService.GetLocationInfoAsync(stockInfo.LocationCode); if (locationInfo == null) return aGVResponse.Error($"æªæ¾å°æç{stockInfo.LocationCode}çè´§ä½ä¿¡æ¯"); if (stockInfo.StockStatus != (int)StockStatusEmun.åºåºéå® || locationInfo.LocationStatus != (int)LocationStatusEnum.InStockLock) { return aGVResponse.Error($"å½ååºå{stockInfo.StockStatus}æè è´§ä½{locationInfo.LocationStatus}ç¶æä¿¡æ¯é误"); } stockInfo.StockStatus = (int)StockStatusEmun.å ¥åºå®æ; locationInfo.LocationStatus = (int)LocationStatusEnum.InStock; task.TaskStatus = (int)TaskOutStatusEnum.OutCancel; _unitOfWorkManage.BeginTran(); _locationInfoService.UpdateData(locationInfo); _stockInfoService.UpdateData(stockInfo); BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); _unitOfWorkManage.CommitTran(); return aGVResponse.OK(); } return aGVResponse.Error("ä»»å¡å·²ç»å¨æ§è¡ä¸ï¼ä¸å¯åæ¶"); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return aGVResponse.Error($"WMSä»»å¡åæ¶æ¥å£é误ï¼{ex.Message}"); } } #endregion æå·åºä»»å¡æ¨¡å } } Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.DirectoryServices.Protocols; using WIDESEA_Common.CommonEnum; using WIDESEA_Core; using WIDESEA_Core.BaseController; @@ -198,5 +199,71 @@ { return await Service.GetPalletCodeCellAsync(input); } #region æå·åºä»»å¡æ¨¡å /// <summary> /// åºå ¥åºç³è¯· /// </summary> /// <param name="applyInOutDto">请æ±åæ°</param> /// <returns></returns> [HttpPost("ApplyInOut"), AllowAnonymous] public async Task<AGVResponse> ApplyInOutAsync([FromBody] ApplyInOutDto applyInOutDto) { return await Service.ApplyInOutAsync(applyInOutDto); } /// <summary> /// æå¨åºåºå®æåé¦ç»AGV /// </summary> /// <param name="outTaskCompleteDto">请æ±åæ°</param> /// <returns></returns> [HttpPost, Route("OutTaskComplete"), AllowAnonymous] public async Task<WebResponseContent> OutTaskComplete([FromBody] OutTaskCompleteDto outTaskCompleteDto) { return await Service.OutTaskComplete(outTaskCompleteDto); } ///// <summary> ///// ä»»å¡å®æ ///// </summary> ///// <param name="wCSTask">请æ±åæ°</param> ///// <returns></returns> //[HttpPost, Route("TaskCompleted"), AllowAnonymous] //public async Task<WebResponseContent?> TaskCompleted([FromBody] WCSTaskDTO wCSTask) //{ // return await Service.TaskCompleted(wCSTask); //} /// <summary> /// è¾é线ç³è¯·è¿å ¥ /// </summary> /// <param name="applyEnterDto">请æ±åæ°</param> /// <returns></returns> [HttpPost("ApplyEnter"), AllowAnonymous] public async Task<AGVResponse?> ApplyEnterAsync([FromBody] ApplyEnterDto applyEnterDto) { return await Service.ApplyEnterAsync(applyEnterDto); } /// <summary> /// åæ¾è´§å®æ /// </summary> /// <param name="taskCompleteDto">请æ±åæ°</param> /// <returns></returns> [HttpPost("TaskComplete"), AllowAnonymous] public async Task<AGVResponse?> TaskCompleteAsync([FromBody] TaskCompleteDto taskCompleteDto) { return await Service.TaskCompleteAsync(taskCompleteDto); } /// <summary> /// ä»»å¡åæ¶ /// </summary> /// <param name="taskCancelDto">请æ±åæ°</param> /// <returns></returns> [HttpPost("TaskCancel"), AllowAnonymous] public async Task<AGVResponse?> TaskCancelAsync([FromBody] TaskCancelDto taskCancelDto) { return await Service.TaskCancelAsync(taskCancelDto); } #endregion æå·åºä»»å¡æ¨¡å } } Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -35,6 +35,7 @@ //è¿æ¥å符串 //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_ShanMei;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_ShanMei;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=WMS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //æ§WMSæ°æ®åºè¿æ¥ //"TeConnectionString": "Data Source=10.30.4.92;Initial Catalog=TeChuang;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", @@ -72,5 +73,7 @@ "MES": { "BaseUrl": "http://localhost:5000", "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjMwMTcyNzM5Mzk5NzYxOTIwIiwibmFtZSI6IlBBQ0voo4XphY3lt6XkvY0wMSIsIkZhY3RvcnlJZCI6IjEyMzQ1NiIsIlNpdGVJZCI6IjEyMzQ1NiIsIkNvZGUiOiJYWExQQUNLMDRBRTAzMiIsIm5iZiI6MTcwNDE4NzY5MCwiZXhwIjoyMTQ1NjkxNjkwLCJpc3MiOiJodHRwczovL3d3dy5oeW1zb24uY29tIiwiYXVkIjoiaHR0cHM6Ly93d3cuaHltc29uLmNvbSJ9.An1BE7UgfcSP--LtTOmmmWVE2RQFPDahLkDg1xy5KqY" } }, "AGV_OutTaskComplete": "http://localhost:9999/OutTaskComplete", // 䏿¥AGVåºåºè¾éçº¿å®æ "WCS_ReceiveTask": "http://localhost:9292/api/Task/ReceiveTask" // WMSè¾é线任å¡ä¸å }