using AutoMapper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.MaterielEnum; using WIDESEA_Common.OrderEnum; using WIDESEA_Core.BaseServices; using WIDESEA_Core; using WIDESEA_DTO.MES; using WIDESEA_IBasicRepository; using WIDESEA_IInboundRepository; using WIDESEA_IInboundService; using WIDESEA_Model.Models; using WIDESEA_DTO.ERP; using WIDESEA_Core.Helper; using System.Security.Cryptography; namespace WIDESEA_InboundService { public class InboundOrderService : ServiceBase, IInboundOrderService { public IInboundOrderRepository Repository => BaseDal; private readonly IBasicRepository _basicRepository; private readonly IMapper _mapper; public InboundOrderService(IInboundOrderRepository BaseDal, IBasicRepository basicRepository, IMapper mapper) : base(BaseDal) { _basicRepository = basicRepository; _mapper = mapper; } /// /// 添加ERP入库单信息 /// /// public WebResponseContent ReceiveInbound(ERPInboundOrderDTO eRPInboundOrderDTO) { WebResponseContent content=new WebResponseContent(); try { if (eRPInboundOrderDTO == null) { return content.Error("入库信息不能传入为空"); } Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == eRPInboundOrderDTO.WarehouseCode); if (warehouse == null) { return content.Error($"仓库信息不存在{eRPInboundOrderDTO.WarehouseCode}"); } //获取所有物料 List materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == warehouse.WarehouseId && x.MaterielInvOrgId == MaterielInvOrgEnum.新厂.ObjToInt()); //判断是否存在物料 InboundDetailItem? inboundDetailItem = eRPInboundOrderDTO.InboundDetail.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode)); if (inboundDetailItem != null) { return content.Error($"入库条码{nameof(inboundDetailItem.BarCode)}:{inboundDetailItem.BarCode}物料:{inboundDetailItem.MaterialCode}不存在"); } //获取所有采购信息 List inboundOrdersOld = BaseDal.Db.Queryable().Includes(x => x.Details).ToList(); if (eRPInboundOrderDTO.OperateType == 1) { //判断重复插入 Dt_InboundOrder? inboundOrderOld = inboundOrdersOld.FirstOrDefault(x => x.UpperOrderNo == eRPInboundOrderDTO.InboundCode); if (inboundOrderOld != null) { return content.Error($"入库单单号{eRPInboundOrderDTO.InboundCode}信息已存在"); } List inboundOrderDetails = eRPInboundOrderDTO.InboundDetail.Select(x => _mapper.Map(x)).ToList(); Dt_InboundOrder inboundOrder = _mapper.Map(eRPInboundOrderDTO); inboundOrderDetails.ForEach(x => { Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode); x.MaterialName = materielInfo?.MaterielName; x.Unit = materielInfo?.MaterielUnit; }); inboundOrder.Details = inboundOrderDetails; inboundOrder.WarehouseId = warehouse.WarehouseId; //新增 BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); } //else if (eRPPurchaseOrderDTO.OperateType == 2) //{ // //判断是否存在 // Dt_UserInfo? userInfoOld = OlduserInfos.FirstOrDefault(x => x.Code == eRPUserInfoDTO.StaffCode); // if (userInfoOld == null) // { // return content.Error($"更新工号{eRPUserInfoDTO.StaffCode},员工{eRPUserInfoDTO.StaffName}不存在"); // } // Dt_UserInfo userInfo = _mapper.Map(eRPUserInfoDTO); // userInfo.Id = userInfoOld.Id; // Sys_User user = _userRepository.QueryFirst(x => x.UserName == userInfo.Code); // if (userInfoOld == null) // { // return content.Error($"更新工号{eRPUserInfoDTO.StaffCode},员工{eRPUserInfoDTO.StaffName},WMS账号不存在"); // } // user.Enable = (byte)userInfo.State; // user.UserTrueName = userInfo.Name; // //更新 // BaseDal.UpdateData(userInfo); // _userRepository.UpdateData(user); //} //else if (eRPPurchaseOrderDTO.OperateType == 3) //{ // //判断是否存在 // Dt_UserInfo? userInfoOld = OlduserInfos.FirstOrDefault(x => x.Code == eRPUserInfoDTO.StaffCode); // if (userInfoOld == null) // { // return content.Error($"更新工号{eRPUserInfoDTO.StaffCode},员工{eRPUserInfoDTO.StaffName}不存在"); // } // BaseDal.DeleteData(userInfoOld); //} else { return content.Error("未找到操作类型"); } //更新数据 return content.OK("接收成功"); } catch (Exception ex) { content.Error(ex.Message); } return content; } } }