123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using WCS.Core.DbHelper;
- using WCS.Entity;
- using WCS.Entity.Protocol;
- using WCS.WebApi.WMS;
- using WCS.WebApi.WMS.Response;
- namespace WCS.WebApi
- {
- [ApiController]
- [Route("[controller]/[action]")]
- public class WCSApi : ControllerBase
- {
- [HttpPost]
- public WcsContractApiResponse I_WMS_CreateTasks(List<PushCreateWcsTaskRequest> list)
- {
- var res = new WcsContractApiResponse();
- try
- {
- Db.Do(db =>
- {
- foreach (var obj in list)
- {
- if (obj.TaskType == "3")//移库任务
- {
- var wmstaskid = int.Parse(obj.WMSTaskNo);
- if (db.Default.Queryable<WCS_TASK>().Any(v => v.WMSTASK == wmstaskid))
- throw new Exception("任务号" + wmstaskid + "重复下发");
- var scid = int.Parse(obj.SRMNo.Last().ToString());
- var tunnel = "TY" + obj.StartTunnel;
- var task = new WCS_TASK
- {
- TYPE = TaskType.移库,
- STATUS = WCS.Entity.TaskStatus.新建,
- DEVICE = "SRM" + obj.SRMNo.Last(),
- BARCODE = obj.PalletCode,
- ADDRFROM = obj.StartLocation,
- ADDRTO = obj.EndLocation,
- UPDATETIME = DateTime.Now,
- UPDATEUSER = "WMS",
- TUNNEL = tunnel,
- WMSTASK = int.Parse(obj.WMSTaskNo),
- TaskGroupKey = obj.TaskGroupKey
- };
- db.Default.Insertable(task).ExecuteCommand();
- }
- else if (obj.TaskType == "2")
- { //出库任务
- var wmstaskid = int.Parse(obj.WMSTaskNo);
- if (db.Default.Queryable<WCS_TASK>().Any(v => v.WMSTASK == wmstaskid))
- throw new Exception("任务号" + wmstaskid + "重复下发");
- var tunnel = "TY" + obj.SRMNo.Last();
- var task = new WCS_TASK
- {
- TYPE = TaskType.出库,
- STATUS = WCS.Entity.TaskStatus.新建,
- DEVICE = "SRM" + obj.SRMNo.Last(),
- BARCODE = obj.PalletCode,
- ADDRFROM = string.Format("{0}-{1}-{2}", obj.StartRow, obj.StartCol, obj.StartLayer),
- ADDRTO = obj.EndLocation,
- UPDATETIME = DateTime.Now,
- UPDATEUSER = "WMS",
- TUNNEL = tunnel,
- WMSTASK = int.Parse(obj.WMSTaskNo),
- ADDRNEXT = obj.EndLocation,
- Length = obj.Length,
- MaterialCode = obj.MaterialCode,
- FLOOR = 1,
- };
- db.Default.Insertable(task).ExecuteCommand();
- }
- else if (obj.TaskType == "1")
- {//入库任务
- var wmstaskid = int.Parse(obj.WMSTaskNo);
- if (db.Default.Queryable<WCS_TASK>().Any(v => v.WMSTASK == wmstaskid))
- throw new Exception("任务号" + wmstaskid + "重复下发");
- if (obj.StartLocation.Contains("_Back_"))
- {//生成AGV入库任务
- var ws = int.Parse(obj.StartLocation.Split('_')[1]);
- var agvtask = new WCS_AGVTask
- {
- AGVStatus = AGVTaskStatus.新建,
- Status = AGVTaskStatus.新建,
- Position = obj.StartLocation,
- TaskType = AGVTaskType.入库,
- CreateTime = DateTime.Now,
- UpdateTime = DateTime.Now,
- Workshop = ws,
- };
- if (ws == 13 || ws == 14)
- {
- agvtask.Station = "2088";
- agvtask.Workshop = 1314;
- }
- else if (ws == 1)
- {
- agvtask.Station = "2122";
- }
- else if (ws == 2)
- agvtask.Station = "2131";
- else if (ws == 3)
- agvtask.Station = "2143";
- db.Default.Insertable(agvtask).ExecuteCommand();
- }
- else
- {
- var task = new WCS_TASK
- {
- TYPE = TaskType.入库,
- STATUS = WCS.Entity.TaskStatus.新建,
- BARCODE = obj.PalletCode,
- ADDRFROM = obj.StartLocation,
- ADDRTO = obj.EndLocation,
- UPDATETIME = DateTime.Now,
- UPDATEUSER = "WMS",
- WMSTASK = int.Parse(obj.WMSTaskNo)
- };
- db.Default.Insertable(task).ExecuteCommand();
- }
- }
- }
- });
- res.ResType = true;
- }
- catch (Exception ex)
- {
- res.ResMessage = ex.GetBaseException().Message;
- }
- return res;
- }
- [HttpPost]
- public WcsContractApiResponse I_WMS_CreateAGVTask(PushCreateAGVTaskRequest obj)
- {
- var res = new WcsContractApiResponse();
- try
- {
- Db.Do(db =>
- {
- if (obj.Type == 1)
- {
- var ws = int.Parse(obj.StartPos.Split('_')[1]);
- var agvtask = new WCS_AGVTask
- {
- AGVStatus = AGVTaskStatus.新建,
- Status = AGVTaskStatus.新建,
- Position = obj.StartPos,
- TaskType = AGVTaskType.入库,
- CreateTime = DateTime.Now,
- UpdateTime = DateTime.Now,
- Workshop = ws,
- };
- if (ws == 13 || ws == 14)
- {
- agvtask.Station = "2088";
- agvtask.Workshop = 1314;
- }
- else if (ws == 1)
- {
- agvtask.Station = "2122";
- }
- else if (ws == 2)
- agvtask.Station = "2131";
- else if (ws == 3)
- agvtask.Station = "2143";
- db.Default.Insertable(agvtask).ExecuteCommand();
- }
- else
- throw new Exception($"类型{obj.Type}不支持");
- });
- res.ResType = true;
- }
- catch (Exception ex)
- {
- res.ResMessage = ex.GetBaseException().Message;
- }
- return res;
- }
- [HttpPost]
- public WcsContractApiResponse I_CancelWCSTaskByCode(string code)
- {
- var res = new WcsContractApiResponse();
- try
- {
- Db.Do(db =>
- {
- var task = db.Default.Queryable<WCS_TASK>().First(v => v.BARCODE == code && v.STATUS < WCS.Entity.TaskStatus.已完成 && v.TYPE == TaskType.组盘);
- if (task == null)
- throw new Exception("WCS任务不存在");
- task.STATUS = WCS.Entity.TaskStatus.已取消;
- task.UPDATETIME = DateTime.Now;
- task.UPDATEUSER = "RF";
- db.Default.Updateable(task).ExecuteCommand();
- });
- res.ResType = true;
- }
- catch (Exception ex)
- {
- res.ResMessage = ex.GetBaseException().Message;
- }
- return res;
- }
- [HttpPost]
- public WcsContractApiResponse I_CancelWCSTaskByID(int wmstaskId)
- {
- var res = new WcsContractApiResponse();
- try
- {
- Db.Do(db =>
- {
- var task = db.Default.Queryable<WCS_TASK>().First(v => v.WMSTASK == wmstaskId);
- if (task == null)
- throw new Exception("WCS任务不存在");
- if (task.STATUS != WCS.Entity.TaskStatus.新建)
- throw new Exception("WCS任务当前状态不允许取消");
- task.STATUS = WCS.Entity.TaskStatus.已取消;
- task.UPDATETIME = DateTime.Now;
- task.UPDATEUSER = "WMS";
- db.Default.Updateable(task).ExecuteCommand();
- if (task.TYPE != TaskType.出库 || task.AGVTASKID <= 0) return;
- var agvtask = db.Default.Queryable<WCS_AGVTask>().InSingle(task.AGVTASKID);
- agvtask.Status = AGVTaskStatus.取消;
- agvtask.UpdateTime = DateTime.Now;
- db.Default.Updateable(agvtask).ExecuteCommand();
- });
- res.ResType = true;
- }
- catch (Exception ex)
- {
- res.ResMessage = ex.GetBaseException().Message;
- }
- return res;
- }
- }
- }
|