using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SqlSugar; using WIDESEA_Common.CommonEnum; using WIDESEA_Common.MaterielEnum; using WIDESEA_Common.OrderEnum; using WIDESEA_Core; using WIDESEA_Core.Attributes; using WIDESEA_Core.Helper; using WIDESEA_DTO; using WIDESEA_DTO.Basic; using WIDESEA_DTO.ERP; using WIDESEA_External.ERPService; using WIDESEA_IBasicRepository; using WIDESEA_IInboundRepository; using WIDESEA_IInboundService; using WIDESEA_Model.Models; namespace WIDESEA_WMSServer.Controllers.ERP { [Route("api/Erp")] [ApiController] public class ErpController : ControllerBase { private readonly IPurchaseOrderRepository _purchaseOrderRepository; private readonly IPurchaseOrderService _purchaseOrderService; private readonly ISupplierInfoRepository _supplierInfoRepository; private readonly IMaterielInfoRepository _materielInfoRepository; public ErpController(IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderService purchaseOrderService, ISupplierInfoRepository supplierInfoRepository, IMaterielInfoRepository materielInfoRepository) { _purchaseOrderRepository = purchaseOrderRepository; _purchaseOrderService = purchaseOrderService; _supplierInfoRepository = supplierInfoRepository; _materielInfoRepository = materielInfoRepository; } [HttpPost, Route("ReceivePurchaseOrder"), AllowAnonymous, MethodParamsValidate] public WebResponseContent ReceivePurchaseOrder([FromBody] Dt_PurchaseOrder model) { try { _purchaseOrderRepository.AddData(model, x => x.Details); foreach (var item in model.Details) { Dt_ReceiveOrder receiveOrder = new Dt_ReceiveOrder() { ReceiveOrderStatus = InOrderStatusEnum.未开始.ObjToInt(), WarehouseId = item.WarehouseId, SuppliersId = model.SupplierCode, ReceiveOrderType = InOrderTypeEnum.Purchase.ObjToInt(), ReceiveDate = DateTime.Now, }; } return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } [HttpPost, Route("ReceivePurchaseOrderSingle"), AllowAnonymous, MethodParamsValidate] public WebResponseContent ReceivePurchaseOrderSingle(PurchaseOrderModel model) { return _purchaseOrderService.ReceivePurchaseOrderSingle(model); } [HttpPost, Route("ReceiveSupplier"), AllowAnonymous, MethodParamsValidate] public WebResponseContent ReceiveSupplier(SupplierDTO model) { try { if (model.OperateType == "0") { Dt_SupplierInfo supplierInfo = new Dt_SupplierInfo() { Status = 1, SupplierCode = model.Code, SupplierName = model.Name, SupplierShortName = model.ShortName }; _supplierInfoRepository.AddData(supplierInfo); } else if (model.OperateType == "1") { Dt_SupplierInfo supplierInfo = _supplierInfoRepository.QueryFirst(x => x.SupplierCode == model.Code); if (supplierInfo == null) { return WebResponseContent.Instance.Error($"未找到该供应商信息"); } supplierInfo.Status = 1; supplierInfo.SupplierCode = model.Code; supplierInfo.SupplierName = model.Name; supplierInfo.SupplierShortName = model.ShortName; _supplierInfoRepository.UpdateData(supplierInfo); } else if (model.OperateType == "2") { Dt_SupplierInfo supplierInfo = _supplierInfoRepository.QueryFirst(x => x.SupplierCode == model.Code); if (supplierInfo == null) { return WebResponseContent.Instance.Error($"未找到该供应商信息"); } _supplierInfoRepository.DeleteData(supplierInfo); } return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } [HttpPost, Route("ReceiveMaterial"), AllowAnonymous, MethodParamsValidate] public WebResponseContent ReceiveMaterial(MaterielInfoDTO model) { try { if (model.OperateType == 0) { Dt_MaterielInfo materielInfo = new Dt_MaterielInfo() { IsCheck = (WhetherEnum)model.IsCheck, MaterielCode = model.Code, MaterielInvOrgId = model.InvOrgId, MaterielLength = model.Length, MaterielModel = model.Model, MaterielName = model.Name, MaterielSize = model.Size, MaterielSourceType = (MaterielSourceTypeEnum)model.ItemSourceType, MaterielSpec = "model.", MaterielState = (EnableEnum)model.State, MaterielThickness = model.Thickness, MaterielType = (MaterielTypeEnum)model.ItemType, MaterielUnit = model.Unit, MaterielVersion = model.MaterialVersion, MaterielWide = model.Wide, WarehouseId = model.WaId, }; _materielInfoRepository.AddData(materielInfo); } else if (model.OperateType == 1) { Dt_MaterielInfo materielInfo = _materielInfoRepository.QueryFirst(x => x.MaterielCode == model.Code); if (materielInfo == null) { return WebResponseContent.Instance.Error($"未找到物料信息"); } materielInfo.IsCheck = (WhetherEnum)model.IsCheck; materielInfo.MaterielCode = model.Code; materielInfo.MaterielInvOrgId = model.InvOrgId; materielInfo.MaterielLength = model.Length; materielInfo.MaterielModel = model.Model; materielInfo.MaterielName = model.Name; materielInfo.MaterielSize = model.Size; materielInfo.MaterielSourceType = (MaterielSourceTypeEnum)model.ItemSourceType; materielInfo.MaterielSpec = model.StandType; materielInfo.MaterielState = (EnableEnum)model.State; materielInfo.MaterielThickness = model.Thickness; materielInfo.MaterielType = (MaterielTypeEnum)model.ItemType; materielInfo.MaterielUnit = model.Unit; materielInfo.MaterielVersion = model.MaterialVersion; materielInfo.MaterielWide = model.Wide; materielInfo.WarehouseId = model.WaId; _materielInfoRepository.UpdateData(materielInfo); } else if (model.OperateType == 2) { Dt_MaterielInfo materielInfo = _materielInfoRepository.QueryFirst(x => x.MaterielCode == model.Code); if (materielInfo == null) { return WebResponseContent.Instance.Error($"未找到物料信息"); } _materielInfoRepository.DeleteData(materielInfo); } return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } public WebResponseContent ReceiveOutOrder(ErpOutOrderDTO erpOutOrder) { try { return WebResponseContent.Instance.OK(); } catch(Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } } }