wangxinhui
9 天以前 3571d8b2231e06e46774af86be502014d6974e1d
优化ERP接收单据逻辑,一期领料变更逻辑修改
已添加3个文件
已修改14个文件
338 ■■■■ 文件已修改
项目代码/BigScreen/src/views/index.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPH.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_BasicService/Base/MaterielInfoService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_BasicService/SupplierInfoService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_External/Model/BSTProInResponse.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_InboundService/InboundOrderService.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ReturnOutOrder.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutLineViewService.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/变更管理/龙利得项目需求变更确认书-20260323 .doc 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/变更管理/龙利得项目需求变更确认书-20260327.doc 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/变更管理/龙利得项目需求变更确认书-20260401.doc 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/变更管理/龙利得项目需求变更确认书-20260402.doc 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/BigScreen/src/views/index.vue
@@ -173,10 +173,13 @@
                    // 1. æŒ‰çº¸å·æ¡ç åˆ†ç»„
                    const groupedData = {};
                    res.data.data.forEach((x) => {
                        console.log(x);
                        if (x.taskNum) {
                        if (!groupedData[x.palletCode]) {
                            groupedData[x.palletCode] = [];
                        }
                        groupedData[x.palletCode].push(x);
                        }
                    });
                    
                    // 2. å¤„理数据:将每组相同纸卷条码的记录合并为一条
@@ -196,7 +199,6 @@
                                uniquePalletCodes.add(item.palletCode);
                            }
                        });
                        this.showMsg = uniquePalletCodes.size;
                        
                        // ç›´æŽ¥å¤„理每条记录,不进行分组
                        group.forEach((item) => {
@@ -216,26 +218,26 @@
                        
                        // åˆ›å»ºåˆå¹¶åŽçš„单条记录
                        var item = [
                            '<span style="color:#FF4500; font-size:85px;">' + palletCode + '</span>',
                            '<span style="color:#FF4500; font-size:90px;">' + palletCode + '</span>',
                            //'<span style="color:#FF4500; font-size:55px;">' + orderNos + '</span>',
                            '<span style="color:#FF4500; font-size:85px;">' + firstItem.materielCode + '</span>',
                            '<span style="color:#FF4500; font-size:85px;">' + machineLastChar + '</span>',
                            '<span style="color:#FF4500; font-size:85px;">' + materialWide + '</span>',
                            '<span style="color:#FF4500; font-size:85px;;">' + originalQuantity + '</span>',
                            '<span style="color:#FF4500; font-size:85px;">' + parseInt(totalOrderQuantity) + '</span>',
                            '<span style="color:#FF4500; font-size:90px;">' + firstItem.materielCode + '</span>',
                            '<span style="color:#FF4500; font-size:90px;">' + machineLastChar + '</span>',
                            '<span style="color:#FF4500; font-size:90px;">' + materialWide + '</span>',
                            '<span style="color:#FF4500; font-size:90px;;">' + originalQuantity + '</span>',
                            '<span style="color:#FF4500; font-size:90px;">' + parseInt(totalOrderQuantity) + '</span>',
                        ];
                        arr.push(item);
                    });
                    if (this.IsDetail) {
                        this.config = {
                            header: [
                            '<span style="font-size:63px;">纸卷条码</span>',
                            '<span style="font-size:68px;">纸卷条码</span>',
                            //'<span style="font-size:50px;">工单号</span>',
                            '<span style="font-size:63px;">代码</span>',
                            '<span style="font-size:63px;">上机位</span>',
                            '<span style="font-size:63px;">宽幅</span>',
                            '<span style="font-size:63px;">纸卷长</span>',
                            '<span style="font-size:63px;">需用纸长</span>'
                            '<span style="font-size:68px;">代码</span>',
                            '<span style="font-size:68px;">上机位</span>',
                            '<span style="font-size:68px;">宽幅</span>',
                            '<span style="font-size:68px;">纸卷长</span>',
                            '<span style="font-size:68px;">需用纸长</span>'
                            ],
                            data: arr,
                            headerHeight: 60,
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs
@@ -41,7 +41,6 @@
            _stationMangerRepository = stationMangerRepository;
            _unitOfWorkManage = unitOfWorkManage;
        }
        private static object lock_reqPackTask = new object();
        /// <summary>
        /// åˆ†é…ç åž›ä»»åŠ¡
        /// </summary>
@@ -49,8 +48,6 @@
        /// <param name="deviceCode"></param>
        /// <returns></returns>
        public WebResponseContent ReqPackTask(string barCode,string deviceCode)
        {
            lock (lock_reqPackTask)
            {
                WebResponseContent content = new WebResponseContent();
                try
@@ -149,7 +146,6 @@
                    content.Error(ex.Message);
                }
                return content;
            }
        }
        /// <summary>
        /// ç åž›ç»“托并上传码垛工位码垛明细数据
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -103,6 +103,17 @@
            }
        }
        private readonly static object lockerCompleted = new object();
        public override WebResponseContent DeleteData(object[] keys)
        {
            int[] intKeys = keys.Select(x => Convert.ToInt32(x)).ToArray();
            List<Dt_Task> tasks = BaseDal.QueryData(x=> intKeys.Contains(x.TaskId));
            foreach (var task in tasks)
            {
                task.TaskState = TaskStatusEnum.Cancel.ObjToInt();
                BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
            }
            return WebResponseContent.Instance.OK();
        }
        /// <summary>
        /// ä»»åŠ¡å®Œæˆ
        /// </summary>
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPH.cs
@@ -158,6 +158,7 @@
                                                            }
                                                            #endregion
                                                        }
                                                        Thread.Sleep(200);
                                                    }
                                                }
                                                else
@@ -171,7 +172,7 @@
                                    catch (Exception ex)
                                    {
                                        WriteInfo($"线程 {Thread.CurrentThread.ManagedThreadId}分垛口", $"异常:{ex.Message}");
                                        Thread.Sleep(1500);
                                        Thread.Sleep(3000);
                                        shouldRestart = true;
                                    }
                                }
@@ -236,7 +237,7 @@
                                    catch (Exception ex)
                                    {
                                        WriteInfo($"线程 {Thread.CurrentThread.ManagedThreadId}码垛口", $"异常:{ex.Message}");
                                        Thread.Sleep(1500);
                                        Thread.Sleep(3000);
                                        shouldRestart = true;
                                    }
                                }
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicService/Base/MaterielInfoService.cs
@@ -159,9 +159,7 @@
                    Dt_MaterielInfo materielInfo = _mapper.Map<Dt_MaterielInfo>(eRPMaterialDTO);
                    materielInfo.WarehouseId = warehouse.WarehouseId;
                    materielInfo.Id = ExistMaterial.Id;
                    _unitOfWorkManage.BeginTran();
                    BaseDal.UpdateData(materielInfo);
                    _unitOfWorkManage.CommitTran();
                }
                else if (eRPMaterialDTO.OperateType == 3)
                {
@@ -171,9 +169,7 @@
                    {
                        return content.Error($"更新物料{eRPMaterialDTO.MaterielNo}不存在");
                    }
                    _unitOfWorkManage.BeginTran();
                    BaseDal.DeleteData(ExistMaterial);
                    _unitOfWorkManage.CommitTran();
                }
                else
                {
@@ -184,7 +180,6 @@
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicService/SupplierInfoService.cs
@@ -152,9 +152,7 @@
                    Dt_SupplierInfo supplierInfo = _mapper.Map<Dt_SupplierInfo>(eRPSupplierDTO);
                    supplierInfo.Id = ExistsupplierInfo.Id;
                    //更新
                    _unitOfWorkManage.BeginTran();
                    BaseDal.UpdateData(supplierInfo);
                    _unitOfWorkManage.CommitTran();
                }
                else if (eRPSupplierDTO.OperateType == 3)
                {
@@ -164,9 +162,7 @@
                    {
                        return content.Error($"更新供应商{eRPSupplierDTO.SupplierCode}不存在");
                    }
                    _unitOfWorkManage.BeginTran();
                    BaseDal.DeleteData(ExistsupplierInfo);
                    _unitOfWorkManage.CommitTran();
                }
                else
                {
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_External/Model/BSTProInResponse.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_External.Model
{
    public class ResponseInfo
    {
        /// <summary>
        /// å…¥åº“物料条码总数
        /// </summary>
        public int Total { get; set; }
        /// <summary>
        /// æˆåŠŸæ•°
        /// </summary>
        public int SuccessCount { get; set; }
        /// <summary>
        /// å¤±è´¥æ•°
        /// </summary>
        public int FailCount { get; set; }
        /// <summary>
        /// æè¿°
        /// </summary>
        public string Message { get; set; }
        /// <summary>
        /// å¤±è´¥è¯¦ç»†ä¿¡æ¯
        /// </summary>
        public List<string> FailMessages { get; set; }
        /// <summary>
        /// æè¿°
        /// </summary>
        public string SuccessMsg { get; set; }
    }
    /// <summary>
    /// æˆå“è¿”回信息
    /// </summary>
    public class BSTProInResponse
    {
        /// <summary>
        /// è¿”回码
        /// </summary>
        public int Code { get; set; }
        /// <summary>
        /// æè¿°
        /// </summary>
        public string Message { get; set; }
        /// <summary>
        /// è¯¦ç»†ä¿¡æ¯
        /// </summary>
        public ResponseInfo Data { get; set; }
        /// <summary>
        ///
        /// </summary>
        public long Timestamp { get; set; }
        /// <summary>
        ///
        /// </summary>
        public long RequestTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int ExecuteTime { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_InboundService/InboundOrderService.cs
@@ -43,6 +43,10 @@
                {
                    return content.Error("入库信息不能传入为空");
                }
                if (eRPInboundOrderDTO.InboundDetail == null || eRPInboundOrderDTO.InboundDetail.Count <= 0)
                {
                    return content.Error("入库明细信息不能传入为空");
                }
                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == eRPInboundOrderDTO.WarehouseCode);
                if (warehouse == null)
                {
@@ -79,7 +83,7 @@
                        }
                        if (inboundOrderDetailsOld.FirstOrDefault(t=>t.BarCode==x.BarCode)!=null)
                        {
                            throw new Exception($"入库单{inboundOrder.UpperOrderNo}{x.MaterialCode}条码{x.BarCode}已存在");
                            throw new Exception($"入库单{inboundOrder.UpperOrderNo}条码{x.BarCode}已存在");
                        }
                        x.MaterialName = materielInfo?.MaterielName;
                        x.Unit = materielInfo?.MaterielUnit;
@@ -89,39 +93,57 @@
                    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<Dt_UserInfo>(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 if (eRPInboundOrderDTO.OperateType == 2)
                {
                    //判断是否存在
                    Dt_InboundOrder? inboundOrderOld = inboundOrdersOld.FirstOrDefault(x => x.UpperOrderNo == eRPInboundOrderDTO.InboundCode);
                    if (inboundOrderOld == null)
                    {
                        return content.Error($"入库单单号{eRPInboundOrderDTO.InboundCode}信息不存在");
                    }
                    if (inboundOrderOld.InboundOrderStatus != InOrderStatusEnum.未开始.ObjToInt())
                    {
                        return content.Error($"入库单单号{inboundOrderOld.InboundOrderNo}状态为{(InOrderStatusEnum)inboundOrderOld.InboundOrderStatus}");
                    }
                    List<string> barCodesOld = inboundOrderOld.Details.Select(x => x.BarCode).ToList();
                    List<Dt_InboundOrderDetail> inboundOrderDetails = eRPInboundOrderDTO.InboundDetail.Select(x => _mapper.Map<Dt_InboundOrderDetail>(x)).ToList();
                    Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(eRPInboundOrderDTO);
                    inboundOrderDetails.ForEach(x =>
                    {
                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode);
                        if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString() && x.MaterialThick <= 0)
                        {
                            throw new Exception($"物料{x.MaterialCode}条码{x.BarCode}直径需大于0");
                        }
                        if (inboundOrderDetailsOld.FirstOrDefault(t => t.BarCode == x.BarCode) != null && !barCodesOld.Contains(x.BarCode))
                        {
                            throw new Exception($"入库单{inboundOrder.UpperOrderNo}条码{x.BarCode}已存在");
                        }
                        x.MaterialName = materielInfo?.MaterielName;
                        x.Unit = materielInfo?.MaterielUnit;
                        x.MaterialSpec = materielInfo.MaterielSpec;
                    });
                    inboundOrder.Details = inboundOrderDetails;
                    inboundOrder.WarehouseId = warehouse.WarehouseId;
                    //更新
                    BaseDal.Db.UpdateNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                }
                else if (eRPInboundOrderDTO.OperateType == 3)
                {
                    //判断是否存在
                    Dt_InboundOrder? inboundOrderOld = inboundOrdersOld.FirstOrDefault(x => x.UpperOrderNo == eRPInboundOrderDTO.InboundCode);
                    if (inboundOrderOld == null)
                    {
                        return content.Error($"入库单单号{eRPInboundOrderDTO.InboundCode}信息不存在");
                    }
                    if (inboundOrderOld.InboundOrderStatus != InOrderStatusEnum.未开始.ObjToInt())
                    {
                        return content.Error($"入库单单号{inboundOrderOld.InboundOrderNo}状态为{(InOrderStatusEnum)inboundOrderOld.InboundOrderStatus}");
                    }
                    //删除
                    BaseDal.Db.DeleteNav(inboundOrderOld).Include(x => x.Details).ExecuteCommand();
                }
                else
                {
                    return content.Error("未找到操作类型");
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs
@@ -93,6 +93,10 @@
                {
                    return content.Error("采购信息不能传入为空");
                }
                if (eRPPurchaseOrderDTO.PurchaseInDetail == null || eRPPurchaseOrderDTO.PurchaseInDetail.Count <= 0)
                {
                    return content.Error("采购明细信息不能传入为空");
                }
                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==eRPPurchaseOrderDTO.WarehouseCode);
                if (warehouse==null)
                {
@@ -129,11 +133,15 @@
                    Dt_PurchaseOrder purchaseOrder = _mapper.Map<Dt_PurchaseOrder>(eRPPurchaseOrderDTO);
                    purchaseOrderDetails.ForEach(x =>
                    {
                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode);
                        if (materielInfo != null)
                        if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString() && x.PurchaseDetailThickness <= 0)
                        {
                            throw new Exception($"物料{x.MaterialCode}条码{x.BarCode}直径需大于0");
                        }
                        if (purchaseOrderDetailsOld.FirstOrDefault(t => t.BarCode == x.BarCode) != null)
                        {
                            throw new Exception($"采购单单号{purchaseOrder.PurchaseOrderNo}条码{x.BarCode}已存在");
                        }
                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode);
                        x.MaterielName = materielInfo?.MaterielName;
                        x.Unit = materielInfo?.MaterielUnit;
                        x.MaterielSpec=  materielInfo?.MaterielSpec;
@@ -144,37 +152,57 @@
                    BaseDal.Db.InsertNav(purchaseOrder).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<Dt_UserInfo>(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 if (eRPPurchaseOrderDTO.OperateType == 2)
                {
                    //判断是否存在
                    Dt_PurchaseOrder? purchaseOrderOld = purchaseOrdersOld.FirstOrDefault(x => x.PurchaseOrderNo == eRPPurchaseOrderDTO.PurchaseInCode);
                    if (purchaseOrderOld == null)
                    {
                        return content.Error($"采购单单号{eRPPurchaseOrderDTO.PurchaseInCode}信息不存在");
                    }
                    if (purchaseOrderOld.PurchaseOrderStatus != InOrderStatusEnum.未开始.ObjToInt())
                    {
                        return content.Error($"采购单单号{purchaseOrderOld.PurchaseOrderNo}状态为{(InOrderStatusEnum)purchaseOrderOld.PurchaseOrderStatus}");
                    }
                    List<string> barCodesOld = purchaseOrderOld.Details.Select(x => x.BarCode).ToList();
                    List<Dt_PurchaseOrderDetail> purchaseOrderDetails = eRPPurchaseOrderDTO.PurchaseInDetail.Select(x => _mapper.Map<Dt_PurchaseOrderDetail>(x)).ToList();
                    Dt_PurchaseOrder purchaseOrder = _mapper.Map<Dt_PurchaseOrder>(eRPPurchaseOrderDTO);
                    purchaseOrder.Id = purchaseOrderOld.Id;
                    purchaseOrderDetails.ForEach(x =>
                    {
                        if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString() && x.PurchaseDetailThickness <= 0)
                        {
                            throw new Exception($"物料{x.MaterialCode}条码{x.BarCode}直径需大于0");
                        }
                        if (purchaseOrderDetailsOld.FirstOrDefault(t => t.BarCode == x.BarCode) != null && !barCodesOld.Contains(x.BarCode))
                        {
                            throw new Exception($"采购单单号{purchaseOrder.PurchaseOrderNo}条码{x.BarCode}已存在");
                        }
                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode);
                        x.MaterielName = materielInfo?.MaterielName;
                        x.Unit = materielInfo?.MaterielUnit;
                        x.MaterielSpec = materielInfo?.MaterielSpec;
                    });
                    purchaseOrder.Details = purchaseOrderDetails;
                    purchaseOrder.WarehouseId = warehouse.WarehouseId;
                    //更新
                    BaseDal.Db.UpdateNav(purchaseOrder).Include(x => x.Details).ExecuteCommand();
                }
                else if (eRPPurchaseOrderDTO.OperateType == 3)
                {
                    //判断是否存在
                    Dt_PurchaseOrder? purchaseOrderOld = purchaseOrdersOld.FirstOrDefault(x => x.PurchaseOrderNo == eRPPurchaseOrderDTO.PurchaseInCode);
                    if (purchaseOrderOld == null)
                    {
                        return content.Error($"采购单单号{eRPPurchaseOrderDTO.PurchaseInCode}信息不存在");
                    }
                    if (purchaseOrderOld.PurchaseOrderStatus != InOrderStatusEnum.未开始.ObjToInt())
                    {
                        return content.Error($"采购单单号{purchaseOrderOld.PurchaseOrderNo}状态为{(InOrderStatusEnum)purchaseOrderOld.PurchaseOrderStatus}");
                    }
                    //删除
                    BaseDal.Db.DeleteNav(purchaseOrderOld).Include(x => x.Details).ExecuteCommand();
                }
                else
                {
                    return content.Error("未找到操作类型");
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ReturnOutOrder.cs
@@ -53,7 +53,6 @@
        [SugarColumn(IsNullable = false, ColumnDescription = "退料单入库状态")]
        public int ReturnOrderStatus { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/OutLineViewService.cs
@@ -60,9 +60,28 @@
            try
            {
                //获取当前老厂缓存所有纸卷信息
                List<Dt_OutLineView> outLineViews = BaseDal.QueryData();
                //List<Dt_OutLineView> outLineViews = BaseDal.QueryData();
                //List<Dt_OutLineView> outLineViewsAdd = outStockLockInfos.Select(x => _mapper.Map<Dt_OutLineView>(x)).ToList();
                //BaseDal.AddData(outLineViewsAdd);
                List<Dt_OutLineView> outLineViews = BaseDal.QueryData(x => x.TaskNum != null);
                int? outLineCount = outLineViews?.Select(x => x.PalletCode).Distinct().Count();
                if (outLineViews == null || outLineViews.Count <= 0 || outLineCount <= 2)
                {
                List<Dt_OutLineView> outLineViewsAdd = outStockLockInfos.Select(x => _mapper.Map<Dt_OutLineView>(x)).ToList();
                BaseDal.AddData(outLineViewsAdd);
                }
                else
                {
                    string? code = outLineViews.FirstOrDefault()?.PalletCode;
                    List<Dt_OutLineView> outLineViewsUpdate = outLineViews.Where(x => x.PalletCode == code).ToList();
                    outLineViewsUpdate.ForEach(x =>
                    {
                        x.TaskNum = null;
                    });
                    List<Dt_OutLineView> outLineViewsAdd = outStockLockInfos.Select(x => _mapper.Map<Dt_OutLineView>(x)).ToList();
                    BaseDal.UpdateData(outLineViewsUpdate);
                    BaseDal.AddData(outLineViewsAdd);
                }
                content.OK("成功");
            }
            catch (Exception ex)
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -1073,7 +1073,7 @@
                            }
                            proInUpModel.PB_INV_PRODUCT_IN= pRODUCT_INItems;
                            string request = _invokeERPService.ERPProInUp(proInUpModel) ?? throw new Exception("成品入库接口请求失败");
                            if (!request.Contains("Success"))
                            if (!request.Contains("success"))
                            {
                                throw new Exception($"成品入库失败");
                            }
@@ -2012,7 +2012,6 @@
                {
                    return content.Error("传入信息为空");
                }
                List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData();
                List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
                List<Dt_Task> tasks = new List<Dt_Task>();
@@ -2089,10 +2088,11 @@
                        nameof(StationAreaEnum.一楼印刷) => TaskTypeEnum.PrintYLInbound,
                        nameof(StationAreaEnum.一楼分切) => TaskTypeEnum.PartOffInbound,
                        nameof(StationAreaEnum.一楼纸张淋膜) => TaskTypeEnum.PaperFilmInbound,
                        nameof(StationAreaEnum.一楼无纺淋膜) => TaskTypeEnum.WFBYLInbound,
                        nameof(StationAreaEnum.一楼无纺织布) => TaskTypeEnum.WFBYLInbound,
                        nameof(StationAreaEnum.一楼无纺淋膜) => TaskTypeEnum.WFBLMYLInbound,
                        _ => throw new Exception("未找到对应任务")
                    };
                    if (taskTypeEnum == TaskTypeEnum.WFBYLInbound)
                    if (taskTypeEnum == TaskTypeEnum.WFBYLInbound || taskTypeEnum == TaskTypeEnum.WFBLMYLInbound)
                    {
                        Dt_AGVStationInfo? stationInfo = AssignWFBStation(_AGVStationInfos?.Select(x => x.AGVStationCode).ToList()) ?? throw new Exception("未找到可用无纺布暂存架");
                        newTask.NextAddress = stationInfo.AGVStationCode;
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -1177,6 +1177,7 @@
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
ÏîÄ¿×ÊÁÏ/±ä¸ü¹ÜÀí/ÁúÀûµÃÏîÄ¿ÐèÇó±ä¸üÈ·ÈÏÊé-20260323 .doc
Binary files differ
ÏîÄ¿×ÊÁÏ/±ä¸ü¹ÜÀí/ÁúÀûµÃÏîÄ¿ÐèÇó±ä¸üÈ·ÈÏÊé-20260327.doc
Binary files differ
ÏîÄ¿×ÊÁÏ/±ä¸ü¹ÜÀí/ÁúÀûµÃÏîÄ¿ÐèÇó±ä¸üÈ·ÈÏÊé-20260401.doc
Binary files differ
ÏîÄ¿×ÊÁÏ/±ä¸ü¹ÜÀí/ÁúÀûµÃÏîÄ¿ÐèÇó±ä¸üÈ·ÈÏÊé-20260402.doc
Binary files differ