using Microsoft.AspNetCore.Mvc; using ZR.Admin.WebApi.Extensions; using ZR.Admin.WebApi.Filters; using ZR.Model.MES.wms; using ZR.Model.MES.wms.Dto; using ZR.Service.mes.wms.IService; //创建时间:2024-03-18 namespace ZR.Admin.WebApi.Controllers { /// /// 出货单(物料+客户) /// // [Verify] [Route("mes/wm/WmOutOrder")] public class WmOutOrderController : BaseController { /// /// 出货单(物料+客户)接口 /// private readonly IWmOutOrderService _WmOutOrderService; public WmOutOrderController(IWmOutOrderService WmOutOrderService) { _WmOutOrderService = WmOutOrderService; } /// /// 查询出货单(物料+客户)列表 /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "business:wmoutorder:list")] public IActionResult QueryWmOutOrder([FromQuery] WmOutOrderQueryDto parm) { var response = _WmOutOrderService.GetList(parm); return SUCCESS(response); } /// /// 查询出货单(物料+客户)详情 /// /// /// [HttpGet("{ShipmentNum}")] [ActionPermissionFilter(Permission = "business:wmoutorder:query")] public IActionResult GetWmOutOrder(string ShipmentNum) { var response = _WmOutOrderService.GetInfo(ShipmentNum); return SUCCESS(response); } /// /// 添加出货单(物料+客户) /// /// [HttpPost] [ActionPermissionFilter(Permission = "business:wmoutorder:add")] [Log(Title = "出货单(物料+客户)", BusinessType = BusinessType.INSERT)] public IActionResult AddWmOutOrder([FromBody] WmOutOrder_materialDto parm) { if (parm == null) { return SUCCESS(null); } var modal = parm.ToCreate(HttpContext); var response = _WmOutOrderService.AddWmOutOrder(modal); if(response == null) { return ToResponse(new ApiResult(500, "数据存在异常请检查", "数据存在异常请检查")); } return SUCCESS(response); } /// /// 更新出货单(物料+客户) /// /// [HttpPut] [ActionPermissionFilter(Permission = "business:wmoutorder:edit")] [Log(Title = "出货单(物料+客户)", BusinessType = BusinessType.UPDATE)] public IActionResult UpdateWmOutOrder([FromBody] WmOutOrderDto parm) { var modal = parm.Adapt().ToUpdate(HttpContext); var response = _WmOutOrderService.UpdateWmOutOrder(modal); return ToResponse(response); } /// /// 删除出货单(物料+客户) /// /// [HttpDelete("{ids}")] [ActionPermissionFilter(Permission = "business:wmoutorder:delete")] [Log(Title = "出货单(物料+客户)", BusinessType = BusinessType.DELETE)] public IActionResult DeleteWmOutOrder(string ids) { if (string.IsNullOrEmpty(ids)) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } var response = _WmOutOrderService.Delete(ids.Split(",")); // 删除外键 物料清单 _WmOutOrderService.Delete_fk_matrial(ids.Split(",")); return ToResponse(response); } /// /// 获取客户信息 /// /// [HttpGet("getcustom_list")] public IActionResult GetWmOutOrder() { List customs = _WmOutOrderService.GetCustominfo(); return SUCCESS(customs); } /// /// 查询物料记录表列表 /// /// /// [HttpGet("getmaterial_list")] public IActionResult QueryWmMaterial([FromQuery] WmMaterialQueryDto parm) { var response = _WmOutOrderService.GetmaterialList(parm); return SUCCESS(response); } /// /// 生成出货单的物料信息 /// /// [HttpGet("getoutorder_matrials")] public IActionResult Queryoutoder_matrials(string shipment_num) { if (shipment_num == null) { return SUCCESS(null); } List data = _WmOutOrderService.Queryoutoder_matrials(shipment_num); return SUCCESS(data); } /// /// 8.1根据出库单生成出库计划 /// /// /// [HttpGet("generate_outorderplan")] public IActionResult Generate_outorderplan(string shipment_num) { if (shipment_num == null) { return SUCCESS(null); } // TODO 1.返回值修改为 对象 返回是否可生成计划,计划结果:{canPlan:true,resultList:[]} // XXX 无计划返回空即可 List WmOutOrderPlanList = _WmOutOrderService.Generate_outorderplan(shipment_num); return SUCCESS(WmOutOrderPlanList); } /// /// 8.2 持久化存储出库单的出库计划 /// /// /// [HttpGet("persistenceOutorderplan")] public IActionResult PersistenceOutorderplan(string shipment_num) { if (shipment_num == null) { return SUCCESS(null); } int result= _WmOutOrderService.PersistenceOutorderplan(shipment_num); return SUCCESS(result); } /// /// 8.3 获取出库单的持久化存储出库计划 /// /// /// [HttpGet("getOutOrderplan")] public IActionResult getOutOrderplan(string shipment_num) { if (shipment_num == null) { return SUCCESS(null); } int result = _WmOutOrderService.PersistenceOutorderplan(shipment_num); return SUCCESS(result); } /// /// 8.4 获取出库单的已出货物 /// /// /// [HttpGet("getOutOrderOutProduction")] public IActionResult getOutOrderOutProduction(string shipment_num) { if (shipment_num == null) { return SUCCESS(null); } int result = _WmOutOrderService.PersistenceOutorderplan(shipment_num); return SUCCESS(result); } /// /// 5 成品出库 /// /// /// /// /// [HttpPost("doMaterialOut")] public IActionResult DoMaterialOut([FromBody] WmDoMaterialOut_Dto doMaterialOut) { if (doMaterialOut == null || doMaterialOut.ShipmentNum == null) { return SUCCESS(null); } (int, int) data = _WmOutOrderService.DoMaterialOut(doMaterialOut, "HttpContext.GetName()"); return SUCCESS(data); } /// /// 6 出库单完成 /// /// /// [HttpGet("over_outorderplan")] public IActionResult OverOutorderplan(string shipmentNum) { if (shipmentNum == null) { return SUCCESS(null); } bool status = _WmOutOrderService.OverOutorderplan(shipmentNum); return SUCCESS(status); } /// /// 7 检查是否可出库 /// /// 扫码结果 /// 出库单号 /// [HttpGet("checkProductionOut")] public IActionResult CheckProductionOut( string partnumber,string production_packcode = "", string shipment_num = "") { if(string.IsNullOrEmpty(partnumber)) { return ToResponse(new ApiResult(200, "请选择物料号", false)); } string msg = ""; msg = _WmOutOrderService.CheckProductionOut(partnumber, production_packcode, shipment_num); if(msg !="ok") { return ToResponse(new ApiResult(200, msg, false)); } else { return ToResponse(new ApiResult(200, msg, true)); } } } }