|  |  | 
 |  |  | using WIDESEA_DTO.Basic; | 
 |  |  | using WIDESEA_DTO.ERP; | 
 |  |  | using WIDESEA_External.ERPService; | 
 |  |  | using WIDESEA_External.Model; | 
 |  |  | using WIDESEA_IBasicRepository; | 
 |  |  | using WIDESEA_IBasicService; | 
 |  |  | using WIDESEA_IInboundRepository; | 
 |  |  | using WIDESEA_IInboundService; | 
 |  |  | using WIDESEA_InboundService; | 
 |  |  | using WIDESEA_IOutboundService; | 
 |  |  | using WIDESEA_Model.Models; | 
 |  |  | using static WIDESEA_DTO.ErpResponseContent; | 
 |  |  |  | 
 |  |  | namespace WIDESEA_WMSServer.Controllers.ERP | 
 |  |  | { | 
 |  |  |     /// <summary> | 
 |  |  |     /// ERPæ¥å£ | 
 |  |  |     /// </summary> | 
 |  |  |     [Route("api/Erp")] | 
 |  |  |     [ApiController] | 
 |  |  |     public class ErpController : ControllerBase | 
 |  |  |     { | 
 |  |  |         private readonly IPurchaseOrderRepository _purchaseOrderRepository; | 
 |  |  |         private readonly IPurchaseOrderService _purchaseOrderService; | 
 |  |  |         private readonly ISupplierInfoRepository _supplierInfoRepository; | 
 |  |  |         private readonly IMaterielInfoRepository _materielInfoRepository; | 
 |  |  |         private readonly IBasicService _basicService; | 
 |  |  |         private readonly IOutboundService _outboundService; | 
 |  |  |         private readonly IInboundService _inboundService; | 
 |  |  |         private readonly IInvokeERPService _invokeERPService; | 
 |  |  |  | 
 |  |  |         public ErpController(IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderService purchaseOrderService, ISupplierInfoRepository supplierInfoRepository, IMaterielInfoRepository materielInfoRepository) | 
 |  |  |         public ErpController(IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, | 
 |  |  |             IInvokeERPService invokeERPService) | 
 |  |  |         { | 
 |  |  |             _purchaseOrderRepository = purchaseOrderRepository; | 
 |  |  |             _purchaseOrderService = purchaseOrderService; | 
 |  |  |             _supplierInfoRepository = supplierInfoRepository; | 
 |  |  |             _materielInfoRepository = materielInfoRepository; | 
 |  |  |             _basicService = basicService; | 
 |  |  |             _outboundService = outboundService; | 
 |  |  |             _inboundService = inboundService; | 
 |  |  |             _invokeERPService = invokeERPService; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ¥æ¶ERPéè´åä¿¡æ¯ | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="model"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         [HttpPost, Route("ReceivePurchaseOrder"), AllowAnonymous, MethodParamsValidate] | 
 |  |  |         public WebResponseContent ReceivePurchaseOrder([FromBody] Dt_PurchaseOrder model) | 
 |  |  |         public ErpResponseContent ReceivePurchaseOrder([FromBody] Root<PurchaseOrderModel> 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); | 
 |  |  |             } | 
 |  |  |             WebResponseContent content = _inboundService.PurchaseOrderService.ReceivePurchaseOrder(model.Content); | 
 |  |  |             if (content.Status) return Instance.OK(); | 
 |  |  |             else return Instance.Error(content.Message); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         [HttpPost, Route("ReceivePurchaseOrderSingle"), AllowAnonymous, MethodParamsValidate] | 
 |  |  |         public WebResponseContent ReceivePurchaseOrderSingle(PurchaseOrderModel model) | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ¥æ¶ERPä»åºåå·¥åè´¨æ£åå·¥æ°æ® | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="model"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         [HttpPost, Route("ReceiveUser"), AllowAnonymous, MethodParamsValidate] | 
 |  |  |         public ErpResponseContent ReceiveUser([FromBody] Root<UserInfoDTO> model) | 
 |  |  |         { | 
 |  |  |             return _purchaseOrderService.ReceivePurchaseOrderSingle(model); | 
 |  |  |             WebResponseContent content = _basicService.UserInfoService.ReceiveUser(model.Content); | 
 |  |  |             if (content.Status) return Instance.OK(); | 
 |  |  |             else return Instance.Error(content.Message); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ¥æ¶ERPä¾åºåä¿¡æ¯ | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="model"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         [HttpPost, Route("ReceiveSupplier"), AllowAnonymous, MethodParamsValidate] | 
 |  |  |         public WebResponseContent ReceiveSupplier(SupplierDTO model) | 
 |  |  |         public ErpResponseContent ReceiveSupplier([FromBody] Root<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); | 
 |  |  |             } | 
 |  |  |             WebResponseContent content = _basicService.SupplierInfoService.ReceiveSupplier(model.Content); | 
 |  |  |             if (content.Status) return Instance.OK(); | 
 |  |  |             else return Instance.Error(content.Message); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ¥æ¶ERPç©æä¿¡æ¯ | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="model"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         [HttpPost, Route("ReceiveMaterial"), AllowAnonymous, MethodParamsValidate] | 
 |  |  |         public WebResponseContent ReceiveMaterial(MaterielInfoDTO model) | 
 |  |  |         public ErpResponseContent ReceiveMaterial([FromBody] Root<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); | 
 |  |  |             } | 
 |  |  |             WebResponseContent content = _basicService.MaterielInfoService.ReceiveMaterial(model.Content); | 
 |  |  |             if (content.Status) return Instance.OK(); | 
 |  |  |             else return Instance.Error(content.Message); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public WebResponseContent ReceiveOutOrder(ErpOutOrderDTO erpOutOrder) | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ¥æ¶ERP客æ·ä¿¡æ¯ | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="model"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         [HttpPost, Route("ReceiveCustomer"), AllowAnonymous, MethodParamsValidate] | 
 |  |  |         public ErpResponseContent ReceiveCustomer([FromBody] Root<CustomerInfoDTO> model) | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 return WebResponseContent.Instance.OK(); | 
 |  |  |             } | 
 |  |  |             catch(Exception ex) | 
 |  |  |             { | 
 |  |  |                 return WebResponseContent.Instance.Error(ex.Message); | 
 |  |  |             } | 
 |  |  |             WebResponseContent content = _basicService.CustomerInfoService.ReceiveCustomer(model.Content); | 
 |  |  |             if (content.Status) return Instance.OK(); | 
 |  |  |             else return Instance.Error(content.Message); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ¥æ¶ERPåºåºåä¿¡æ¯ | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="erpOutOrder"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         [HttpPost, Route("ReceiveOutOrder"), AllowAnonymous, MethodParamsValidate] | 
 |  |  |         public ErpResponseContent ReceiveOutOrder([FromBody] Root<ErpOutOrderDTO> erpOutOrder) | 
 |  |  |         { | 
 |  |  |             WebResponseContent content = _outboundService.OutboundOrderService.ReceiveOutOrder(erpOutOrder.Content); | 
 |  |  |             if (content.Status) return Instance.OK(); | 
 |  |  |             else return Instance.Error(content.Message); | 
 |  |  |         } | 
 |  |  |         /// <summary> | 
 |  |  |         /// æ¨éERPåºåº | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="erpOutOrder"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         [HttpPost, Route("InvokeOutStandardsApi"), AllowAnonymous] | 
 |  |  |         public string InvokeOutStandardsApi([FromBody] ERPIssueModel issueModel) | 
 |  |  |         { | 
 |  |  |             return _invokeERPService.InvokeOutStandardsApi(issueModel); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |