Просмотр исходного кода

更新库存管理相关功能和数据结构

- 修改 `BaseWarehouse.cs` 中 `TypeNum` 属性为 `int` 类型。
- `BillLog` 类继承自 `BaseModel`。
- 在 `BaseInvService.cs` 中新增 `GetList` 和 `GetQueryable` 方法,更新 `UpdateStockState` 方法。
- 新增多个枚举获取方法,如 `TaskBusTypeList` 和 `LocationStateList`。
- 修改 `WareCellService.cs` 中 `UpdateCellState` 方法的参数类型。
- 在 `InventorysController.cs` 中新增 `SetGrpForm` 方法。
- 在 `ReportController.cs` 中新增多个报表相关方法。
- 更新 `Index.cshtml` 中输入框的占位符文本。
- 更新 `Index.js` 中选择框的 API 端点。
- 在 `BillInvNowDto.cs` 中新增多个属性以支持新数据结构。
- 在 `BillLogService.cs` 中新增日志记录功能。
- 在 `ErrorDisposeController.cs` 中新增异常处理功能。
- 更新 `BaseInvService.cs` 中的 `ChangeSetGrp` 方法以支持新业务逻辑。
林豪 左 8 месяцев назад
Родитель
Сommit
3921830734

+ 530 - 0
WMS.BZModels/Dto/KLHC/BillInvDtos/BillInvNowDto.cs

@@ -0,0 +1,530 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WMS.BZModels.Dto.KLHC.BillInvDtos
+{
+    public class BillInvNowDto
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 仓库id
+        /// </summary>
+        public string WarehouseId { get; set; }
+
+        /// <summary>
+        /// 仓库id
+        /// </summary>
+        public string WarehouseName { get; set; }
+
+        public string WarehouseCode { get; set; }
+        public int WarehouseTypeNum { get; set; }
+
+        /// <summary>
+        /// 组盘组id
+        /// </summary>
+        public string ContGrpId { get; set; }
+
+        /// <summary>
+        /// 载具编号
+        /// </summary>
+        public string ContGrpBarCode { get; set; }
+
+        /// <summary>
+        /// 库存类型(1物料盘2空盘)
+        /// </summary>
+        public int ContGrpType { get; set; }
+
+        public string ContGrpTypeName
+        {
+            get
+            {
+                return ((ContGrpType)ContGrpType).GetDescription();
+            }
+        }
+
+        /// <summary>
+        /// 箱条码
+        /// </summary>
+        public string BoxBarCode { get; set; }
+
+        /// <summary>
+        /// bom单号
+        /// </summary>
+        public string BomDocsNo { get; set; }
+
+        /// <summary>
+        /// bom物料id
+        /// </summary>
+        public string BomMatId { get; set; }
+
+        /// <summary>
+        /// bom物料编码
+        /// </summary>
+        public string BomMatCode { get; set; }
+
+        /// <summary>
+        /// bom物料名称
+        /// </summary>
+        public string BomMatName { get; set; }
+
+        /// <summary>
+        /// 垛型id
+        /// </summary>
+        public string BomSetId { get; set; }
+
+        /// <summary>
+        /// 库存执行状态
+        /// </summary>
+        public string ExecStateCode { get; set; }
+
+        /// <summary>
+        /// 执行单号
+        /// </summary>
+        public string ExecDocsNo { get; set; }
+
+        /// <summary>
+        /// 执行单行号
+        /// </summary>
+        public string ExecDocsRowNo { get; set; }
+
+        /// <summary>
+        /// 执行单类型
+        /// </summary>
+        public string ExecDocsTypeCode { get; set; }
+
+        /// <summary>
+        /// 出入类型
+        /// </summary>
+        public int InvInOut { get; set; }
+
+        /// <summary>
+        /// 执行人
+        /// </summary>
+        public string ExecWho { get; set; }
+
+        /// <summary>
+        /// 执行时间
+        /// </summary>
+        public DateTime ExecTime { get; set; }
+
+        /// <summary>
+        /// 行
+        /// </summary>
+        public int PutRow { get; set; }
+
+        /// <summary>
+        /// 列
+        /// </summary>
+        public int PutCol { get; set; }
+
+        /// <summary>
+        /// 层
+        /// </summary>
+        public int PutLayer { get; set; }
+
+        /// <summary>
+        /// 库存编码
+        /// </summary>
+        public string InvBarCode { get; set; }
+
+        /// <summary>
+        /// 库存状态
+        /// </summary>
+        public string InvStateCode { get; set; }
+
+        public string InvStateName
+        {
+            get
+            {
+                if (Enum.TryParse(typeof(InvState), InvStateCode, out var result))
+                {
+                    return ((InvState)result).GetDescription();
+                }
+                return "";
+            }
+        }
+
+        /// <summary>
+        /// 入库单号
+        /// </summary>
+        public string InDocsNo { get; set; }
+
+        /// <summary>
+        /// 入库单行号
+        /// </summary>
+        public string InDocsRowNo { get; set; }
+
+        /// <summary>
+        /// 供应商编码
+        /// </summary>
+        public string SuppCode { get; set; }
+
+        /// <summary>
+        /// 供应商名称
+        /// </summary>
+        public string SuppName { get; set; }
+
+        /// <summary>
+        /// 客户
+        /// </summary>
+        public string CustCode { get; set; }
+
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public string CustName { get; set; }
+
+        /// <summary>
+        /// 物料id
+        /// </summary>
+        public string MatId { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+
+        /// <summary>
+        /// 物料名称
+        /// </summary>
+        public string MatName { get; set; }
+
+        /// <summary>
+        /// 总重量
+        /// </summary>
+        public decimal TolWQty { get; set; }
+
+        /// <summary>
+        /// 净重
+        /// </summary>
+        public decimal NetWQty { get; set; }
+
+        /// <summary>
+        /// 皮重
+        /// </summary>
+        public decimal TareWQty { get; set; }
+
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public decimal LengthQty { get; set; }
+
+        /// <summary>
+        /// 碳当量
+        /// </summary>
+        public decimal CaQty { get; set; }
+
+        /// <summary>
+        /// 焊点数量
+        /// </summary>
+        public decimal SolderQty { get; set; }
+
+        /// <summary>
+        /// ContUsageQty
+        /// </summary>
+        public int ContUsageQty { get; set; }
+
+        /// <summary>
+        /// 批号
+        /// </summary>
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 生产时间
+        /// </summary>
+        public DateTime ProductTime { get; set; }
+
+        /// <summary>
+        /// 首次入库时间
+        /// </summary>
+        public DateTime OneInTime { get; set; }
+
+        /// <summary>
+        /// 盘条条码
+        /// </summary>
+        public string RodBarCode { get; set; }
+
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string HWBarCode { get; set; }
+
+        /// <summary>
+        /// RFID编号
+        /// </summary>
+        public string RFIDBarCode { get; set; }
+
+        /// <summary>
+        /// CLBarCode
+        /// </summary>
+        public string CLBarCode { get; set; }
+
+        /// <summary>
+        /// 工字轮类型
+        /// </summary>
+        public string HWTypeCode { get; set; }
+
+        /// <summary>
+        /// 炉号
+        /// </summary>
+        public string BoilerNo { get; set; }
+
+        /// <summary>
+        /// 包号
+        /// </summary>
+        public string PackNo { get; set; }
+
+        /// <summary>
+        /// 牌号
+        /// </summary>
+        public string BrandNo { get; set; }
+
+        /// <summary>
+        /// 执行标准
+        /// </summary>
+        public string ExecStd { get; set; }
+
+        /// <summary>
+        /// 许可证号
+        /// </summary>
+        public string LicenceCode { get; set; }
+
+        /// <summary>
+        /// 改手盘标记
+        /// </summary>
+        public bool IsSurplus { get; set; }
+
+        /// <summary>
+        /// 返工标记
+        /// </summary>
+        public bool IsRework { get; set; }
+
+        /// <summary>
+        /// 是否黑盘
+        /// </summary>
+        public bool IsBlack { get; set; }
+
+        /// <summary>
+        /// 是否芯股
+        /// </summary>
+        public bool IsCore { get; set; }
+
+        /// <summary>
+        /// 快投标记
+        /// </summary>
+        public bool IsFast { get; set; }
+
+        /// <summary>
+        /// 是否异常
+        /// </summary>
+        public bool IsFail { get; set; }
+
+        /// <summary>
+        /// 异常原因
+        /// </summary>
+        public string FailReason { get; set; }
+
+        /// <summary>
+        /// 钢丝类型编码
+        /// </summary>
+        public string SilkTypeCode { get; set; }
+
+        /// <summary>
+        /// 等级
+        /// </summary>
+        public string Grade { get; set; }
+
+        /// <summary>
+        /// 是否退料
+        /// </summary>
+        public bool IsBack { get; set; }
+
+        /// <summary>
+        /// 退料原因
+        /// </summary>
+        public string BackReason { get; set; }
+
+        /// <summary>
+        /// 是否扭转检测
+        /// </summary>
+        public bool IsTorsChk { get; set; }
+
+        /// <summary>
+        /// 扭转次数
+        /// </summary>
+        public int TorsChkQty { get; set; }
+
+        /// <summary>
+        /// 扭转检测时间
+        /// </summary>
+        public DateTime TorsChkTime { get; set; }
+
+        /// <summary>
+        /// 扭转检测结果值
+        /// </summary>
+        public decimal? TorsChkValue { get; set; }
+
+        /// <summary>
+        /// 扭转检测设备号
+        /// </summary>
+        public string TorsChkMachCode { get; set; }
+
+        /// <summary>
+        /// 工序订单号
+        /// </summary>
+        public string ProcessDocsCode { get; set; }
+
+        /// <summary>
+        /// 生产机台号
+        /// </summary>
+        public string ProductMachCode { get; set; }
+
+        /// <summary>
+        /// ProductLineNo
+        /// </summary>
+        public string ProductLineNo { get; set; }
+
+        /// <summary>
+        /// Remark
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// Default1
+        /// </summary>
+        public string Default1 { get; set; }
+
+        /// <summary>
+        /// Default2
+        /// </summary>
+        public string Default2 { get; set; }
+
+        /// <summary>
+        /// Default3
+        /// </summary>
+        public string Default3 { get; set; }
+
+        /// <summary>
+        /// AddWho
+        /// </summary>
+        public string AddWho { get; set; }
+
+        /// <summary>
+        /// AddTime
+        /// </summary>
+        public DateTime AddTime { get; set; }
+
+        /// <summary>
+        /// EditWho
+        /// </summary>
+        public string EditWho { get; set; }
+
+        /// <summary>
+        /// EditTime
+        /// </summary>
+        public DateTime EditTime { get; set; }
+
+        /// <summary>
+        /// 尺寸
+        /// </summary>
+        public int Size { get; set; }
+
+        /// <summary>
+        /// Memo
+        /// </summary>
+        public string Memo { get; set; }
+
+        /// <summary>
+        /// 巷道
+        /// </summary>
+        public int Tunnel { get; set; }
+
+        /// <summary>
+        /// 货位号
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 货位状态
+        /// </summary>
+        public int CellState { get; set; }
+
+        public int SideNum { get; set; }
+        public string SetGrpCode { get; set; }
+
+        public bool? Secondary { get; set; }
+    }
+
+    public class BillInvNowQueryDto : PagerInfo
+    {
+        public string WarehouseId { get; set; }
+        public string Id { get; set; }
+        public string Name { get; set; }
+
+        public string MatCode { get; set; }
+        public string MatName { get; set; }
+        public string RFIDBarCode { get; set; }
+        public string InvBarCode { get; set; }
+
+        /// <summary>
+        /// 组盘组id
+        /// </summary>
+        public string ContGrpId { get; set; }
+
+        public string EquContGrpId { get; set; }
+
+        public string PutRow { get; set; }
+        public string PutCol { get; set; }
+        public string PutLayer { get; set; }
+        public DateTime? OneInTimeBegin { get; set; }
+        public DateTime? OneInTimeEnd { get; set; }
+        public DateTime? ProductTimeBegin { get; set; }
+        public DateTime? ProductTimeEnd { get; set; }
+        public string Grade { get; set; }
+
+        /// <summary>
+        /// 巷道
+        /// </summary>
+        public string Tunnel { get; set; }
+
+        /// <summary>
+        /// 货位号
+        /// </summary>
+        public string Code { get; set; }
+
+        public string ContGrpType { get; set; }
+        public string InvStateCode { get; set; }
+
+        public string IsSurplus { get; set; }
+        public string IsRework { get; set; }
+        public string IsFast { get; set; }
+        public string IsFail { get; set; }
+        public string IsBack { get; set; }
+        public string ExecStateCode { get; set; }
+
+        public int SideNum { get; set; }
+        public string SetGrpCode { get; set; }
+        public bool? Secondary { get; set; }
+
+        public string HWBarCode { get; set; }
+        public string ContGrpBarCode { get; set; }
+        public string BomMatCode { get; set; }
+        public string IsManualOut { get; set; }
+    }
+
+    public class ChangeSetGrpModel
+    {
+        public string WarehouseId { get; set; }
+
+        public string SetGrp { get; set; }
+
+        public string NewSetGrp { get; set; }
+    }
+}

+ 1 - 1
WMS.BZModels/Models/KLHC/BaseWarehouse.cs

@@ -31,7 +31,7 @@ namespace WMS.BZModels.Models.KLHC
         ///  类型
         /// </summary>
         [SugarColumn(IsNullable = false)]
-        public FjLocationType TypeNum { get; set; }
+        public int TypeNum { get; set; }
 
         /// <summary>
         ///  ConfigId

+ 1 - 1
WMS.BZModels/Models/KLHC/BillLog.cs

@@ -7,7 +7,7 @@ namespace WMS.BZModels.Models.KLHC
     /// </summary>
     [Tenant("klhc")]
     [SugarTable("Bill_Log")]
-    public partial class BillLog
+    public partial class BillLog : BaseModel
     {
         /// <summary>
         /// TypeNum

+ 16 - 11
WMS.BZServices/FJ/BaseInvService.cs

@@ -30,12 +30,14 @@ namespace WMS.BZServices.FJ
 
             return list;
         }
+
         public IList<BillInvNowDto> GetList(BillInvNowQueryDto billInvNowQueryDto)
         {
             ISugarQueryable<BillInvNowDto> sugarQueryable = GetQueryable(billInvNowQueryDto);
             var list = sugarQueryable.ToList();
             return list;
         }
+
         private ISugarQueryable<BillInvNowDto> GetQueryable(BillInvNowQueryDto billInvNowQueryDto)
         {
             var predicate = Expressionable.Create<BillInvnow, BaseWarecell, BaseWarehouse>();
@@ -75,16 +77,14 @@ namespace WMS.BZServices.FJ
             predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ContGrpBarCode), (billInvnow, warecell, warehouse) => billInvnow.ContGrpBarCode.Contains(billInvNowQueryDto.ContGrpBarCode));
             predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.BomMatCode), (billInvnow, warecell, warehouse) => billInvnow.BomMatCode.Equals(billInvNowQueryDto.BomMatCode));
 
-            
             if (!string.IsNullOrEmpty(billInvNowQueryDto?.InvStateCode))
             {
                 var enums = (InvState)Enum.ToObject(typeof(InvState), Convert.ToInt32(billInvNowQueryDto?.InvStateCode));
                 predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.InvStateCode), (billInvnow, warecell, warehouse) => billInvnow.InvStateCode.Equals(enums.ToString()));
             }
-            if (!string.IsNullOrEmpty(billInvNowQueryDto.IsManualOut) && billInvNowQueryDto.IsManualOut=="1")
+            if (!string.IsNullOrEmpty(billInvNowQueryDto.IsManualOut) && billInvNowQueryDto.IsManualOut == "1")
             {
-                predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.IsManualOut=="1", (billInvnow, warecell, warehouse) => SqlFunc.Subqueryable<BaseWarehouse>().Where(s => s.Id == billInvnow.WarehouseId && s.TypeNum == 1).Any());
-
+                predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.IsManualOut == "1", (billInvnow, warecell, warehouse) => SqlFunc.Subqueryable<BaseWarehouse>().Where(s => s.Id == billInvnow.WarehouseId && s.TypeNum == 1).Any());
             }
             var sugarQueryable = _billInvnowrepository.Context.Queryable<BillInvnow, BaseWarecell, BaseWarehouse>((billInvnow, warecell, warehouse) => new object[] {
                 JoinType.Left,billInvnow.ContGrpId == warecell.ContGrpId && billInvnow.WarehouseId ==warecell.WarehouseId  ,  JoinType.Left, billInvnow.WarehouseId==warehouse.Id
@@ -94,8 +94,8 @@ namespace WMS.BZServices.FJ
                   Id = billInvnow.Id.ToString(),
                   WarehouseId = billInvnow.WarehouseId.ToString(),
                   WarehouseName = warehouse.Name,
-                  WarehouseTypeNum=warehouse.TypeNum,
-                  WarehouseCode=warehouse.Code,
+                  WarehouseTypeNum = warehouse.TypeNum,
+                  WarehouseCode = warehouse.Code,
                   ContGrpId = billInvnow.ContGrpId.ToString(),
                   ContGrpBarCode = billInvnow.ContGrpBarCode,
                   ContGrpType = (int)billInvnow.ContGrpType,
@@ -210,9 +210,9 @@ namespace WMS.BZServices.FJ
             _billInvnowrepository.UpdateModelColumns(p => new BillInvnow
             {
                 SetGrpCode = entity.NewSetGrp
-
             }, predicate.ToExpression());
         }
+
         public void UpdateStockState(string Code, int Status, string userId)
         {
             var stock = _billInvnowrepository.GetFirst(p => p.ContGrpBarCode == Code);
@@ -257,7 +257,7 @@ namespace WMS.BZServices.FJ
                 {
                     _billInvnowrepository.Deleteable().Where(it => it.Id == item.Id).ExecuteCommand();
                 }
-            });               
+            });
         }
 
         public List<EnumEntity> InvStateList()
@@ -274,22 +274,27 @@ namespace WMS.BZServices.FJ
         {
             return BZModels.Extensions.EnumToList<TaskType>();
         }
+
         public List<EnumEntity2> TaskBusTypeList()
         {
             return BZModels.Extensions.EnumToListDesc<TaskBusType>();
         }
+
         public List<EnumEntity> AGVTaskTypeList()
         {
             return BZModels.Extensions.EnumToList<AGVTaskType>();
         }
+
         public List<EnumEntity> FackbeekTypeList()
         {
             return BZModels.Extensions.EnumToList<FackbeekType>();
         }
+
         public List<EnumEntity> AGVTaskStatus()
         {
             return BZModels.Extensions.EnumToList<AGVTaskStatus>();
         }
+
         public List<EnumEntity> ContGrpTypeList()
         {
             return BZModels.Extensions.EnumToList<ContGrpType>();
@@ -304,15 +309,15 @@ namespace WMS.BZServices.FJ
         {
             return BZModels.Extensions.EnumToList<DocState>();
         }
+
         public List<EnumEntity> LocationStateList()
         {
             return BZModels.Extensions.EnumToList<LocationState>();
         }
+
         public List<EnumEntity> AutoManualOutTypeList()
         {
             return BZModels.Extensions.EnumToList<AutoManualOutType>();
         }
     }
-
-
-}
+}

+ 313 - 0
WMS.BZServices/KLHC/BaseInvService.cs

@@ -0,0 +1,313 @@
+using SqlSugar;
+using WMS.BZModels;
+using WMS.Info;
+using WMS.BZSqlSugar;
+using WMS.BZModels.Models.KLHC;
+using System.Diagnostics;
+using Mapster;
+using System;
+using WMS.BZModels.Dto.KLHC.BillInvDtos;
+
+namespace WMS.BZServices.KLHC
+{
+    public class BaseInvService
+    {
+        private readonly Repository<BillInvnow> _billInvnowrepository;
+        private readonly Repository<BillInvflow> _billInvflowrepository;
+        private readonly BillLogService _billLogService;
+
+        public BaseInvService(Repository<BillInvnow> billInvnowrepository, BillLogService billLogService, Repository<BillInvflow> billInvflowrepository)
+        {
+            _billInvnowrepository = billInvnowrepository;
+            _billLogService = billLogService;
+            _billInvflowrepository = billInvflowrepository;
+        }
+
+        public PagedInfo<BillInvNowDto> GetPageList(Pagination pagination, BillInvNowQueryDto billInvNowQueryDto)
+        {
+            ISugarQueryable<BillInvNowDto> sugarQueryable = GetQueryable(billInvNowQueryDto);
+            var list = sugarQueryable.ToPage(pagination);
+
+            return list;
+        }
+
+        public IList<BillInvNowDto> GetList(BillInvNowQueryDto billInvNowQueryDto)
+        {
+            ISugarQueryable<BillInvNowDto> sugarQueryable = GetQueryable(billInvNowQueryDto);
+            var list = sugarQueryable.ToList();
+            return list;
+        }
+
+        private ISugarQueryable<BillInvNowDto> GetQueryable(BillInvNowQueryDto billInvNowQueryDto)
+        {
+            var predicate = Expressionable.Create<BillInvnow, BaseWarecell, BaseWarehouse>();
+
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.KeyWord), (billInvnow, warecell, warehouse) => billInvnow.RFIDBarCode.Contains(billInvNowQueryDto.KeyWord) || billInvnow.ContGrpBarCode.Contains(billInvNowQueryDto.KeyWord) || billInvnow.MatCode.Contains(billInvNowQueryDto.KeyWord) || billInvnow.MatName.Contains(billInvNowQueryDto.KeyWord) || billInvnow.InvBarCode.Contains(billInvNowQueryDto.KeyWord));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Id), (billInvnow, warecell, warehouse) => billInvnow.Id.ToString().Contains(billInvNowQueryDto.Id));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.WarehouseId), (billInvnow, warecell, warehouse) => billInvnow.WarehouseId.ToString().Contains(billInvNowQueryDto.WarehouseId));
+
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ContGrpId), (billInvnow, warecell, warehouse) => billInvnow.ContGrpId.ToString().Contains(billInvNowQueryDto.ContGrpId));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.EquContGrpId), (billInvnow, warecell, warehouse) => billInvnow.ContGrpId.ToString().Equals(billInvNowQueryDto.EquContGrpId));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.MatCode), (billInvnow, warecell, warehouse) => billInvnow.MatCode.Equals(billInvNowQueryDto.MatCode));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.MatName), (billInvnow, warecell, warehouse) => billInvnow.MatName.Equals(billInvNowQueryDto.MatName));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.RFIDBarCode), (billInvnow, warecell, warehouse) => billInvnow.RFIDBarCode.Contains(billInvNowQueryDto.RFIDBarCode));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.InvBarCode), (billInvnow, warecell, warehouse) => billInvnow.InvBarCode.Contains(billInvNowQueryDto.InvBarCode));
+
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.PutRow), (billInvnow, warecell, warehouse) => billInvnow.PutRow.Equals(billInvNowQueryDto.PutRow));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.PutCol), (billInvnow, warecell, warehouse) => billInvnow.PutCol.Equals(billInvNowQueryDto.PutCol));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.PutLayer), (billInvnow, warecell, warehouse) => billInvnow.PutLayer.Equals(billInvNowQueryDto.PutLayer));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Grade), (billInvnow, warecell, warehouse) => billInvnow.Grade.Contains(billInvNowQueryDto.Grade));
+            predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.OneInTimeBegin.HasValue, (billInvnow, warecell, warehouse) => billInvnow.OneInTime >= billInvNowQueryDto.OneInTimeBegin);
+            predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.OneInTimeEnd.HasValue, (billInvnow, warecell, warehouse) => billInvnow.OneInTime <= billInvNowQueryDto.OneInTimeEnd);
+            predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.ProductTimeBegin.HasValue, (billInvnow, warecell, warehouse) => billInvnow.ProductTime >= billInvNowQueryDto.ProductTimeBegin);
+            predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.ProductTimeEnd.HasValue, (billInvnow, warecell, warehouse) => billInvnow.ProductTime <= billInvNowQueryDto.ProductTimeEnd);
+
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Tunnel), (billInvnow, warecell, warehouse) => warecell.Tunnel.Equals(billInvNowQueryDto.Tunnel));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Code), (billInvnow, warecell, warehouse) => warecell.Code.Contains(billInvNowQueryDto.Code));
+
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsSurplus), (billInvnow, warecell, warehouse) => billInvnow.IsSurplus.Equals(billInvNowQueryDto.IsSurplus));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsRework), (billInvnow, warecell, warehouse) => billInvnow.IsRework.Equals(billInvNowQueryDto.IsRework));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsFail), (billInvnow, warecell, warehouse) => billInvnow.IsFail.Equals(billInvNowQueryDto.IsFail));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsFast), (billInvnow, warecell, warehouse) => billInvnow.IsFast.Equals(billInvNowQueryDto.IsFast));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsBack), (billInvnow, warecell, warehouse) => billInvnow.IsBack.Equals(billInvNowQueryDto.IsBack));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ExecStateCode), (billInvnow, warecell, warehouse) => billInvnow.ExecStateCode.Equals(billInvNowQueryDto.ExecStateCode));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.SetGrpCode), (billInvnow, warecell, warehouse) => billInvnow.SetGrpCode.Equals(billInvNowQueryDto.SetGrpCode));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ContGrpType), (billInvnow, warecell, warehouse) => billInvnow.ContGrpType.Equals(billInvNowQueryDto.ContGrpType));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.HWBarCode), (billInvnow, warecell, warehouse) => billInvnow.HWBarCode.Contains(billInvNowQueryDto.HWBarCode));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ContGrpBarCode), (billInvnow, warecell, warehouse) => billInvnow.ContGrpBarCode.Contains(billInvNowQueryDto.ContGrpBarCode));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.BomMatCode), (billInvnow, warecell, warehouse) => billInvnow.BomMatCode.Equals(billInvNowQueryDto.BomMatCode));
+
+            if (!string.IsNullOrEmpty(billInvNowQueryDto?.InvStateCode))
+            {
+                var enums = (InvState)Enum.ToObject(typeof(InvState), Convert.ToInt32(billInvNowQueryDto?.InvStateCode));
+                predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.InvStateCode), (billInvnow, warecell, warehouse) => billInvnow.InvStateCode.Equals(enums.ToString()));
+            }
+            if (!string.IsNullOrEmpty(billInvNowQueryDto.IsManualOut) && billInvNowQueryDto.IsManualOut == "1")
+            {
+                predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.IsManualOut == "1", (billInvnow, warecell, warehouse) => SqlFunc.Subqueryable<BaseWarehouse>().Where(s => s.Id == billInvnow.WarehouseId && s.TypeNum == 1).Any());
+            }
+            var sugarQueryable = _billInvnowrepository.Context.Queryable<BillInvnow, BaseWarecell, BaseWarehouse>((billInvnow, warecell, warehouse) => new object[] {
+                JoinType.Left,billInvnow.ContGrpId == warecell.ContGrpId && billInvnow.WarehouseId ==warecell.WarehouseId  ,  JoinType.Left, billInvnow.WarehouseId==warehouse.Id
+            ,  JoinType.Left, warecell.WarehouseId==warehouse.Id}).Where(predicate.ToExpression())
+              .Select((billInvnow, warecell, warehouse) => new BillInvNowDto
+              {
+                  Id = billInvnow.Id.ToString(),
+                  WarehouseId = billInvnow.WarehouseId.ToString(),
+                  WarehouseName = warehouse.Name,
+                  WarehouseTypeNum = warehouse.TypeNum,
+                  WarehouseCode = warehouse.Code,
+                  ContGrpId = billInvnow.ContGrpId.ToString(),
+                  ContGrpBarCode = billInvnow.ContGrpBarCode,
+                  ContGrpType = (int)billInvnow.ContGrpType,
+                  BoxBarCode = billInvnow.BoxBarCode,
+                  BomDocsNo = billInvnow.BomDocsNo,
+                  BomMatId = billInvnow.BomMatId.ToString(),
+                  BomMatCode = billInvnow.BomMatCode,
+                  BomMatName = billInvnow.BomMatName,
+                  BomSetId = billInvnow.BomSetId.ToString(),
+                  ExecStateCode = billInvnow.ExecStateCode,
+                  InvStateCode = billInvnow.InvStateCode,
+                  ExecDocsNo = billInvnow.ExecDocsNo,
+                  ExecDocsRowNo = billInvnow.ExecDocsRowNo,
+                  ExecDocsTypeCode = billInvnow.ExecDocsTypeCode,
+                  InvInOut = (int)billInvnow.InvInOut,
+                  ExecWho = billInvnow.ExecWho,
+                  ExecTime = billInvnow.ExecTime,
+                  PutRow = billInvnow.PutRow,
+                  PutCol = billInvnow.PutCol,
+                  PutLayer = billInvnow.PutLayer,
+                  InvBarCode = billInvnow.InvBarCode,
+                  InDocsNo = billInvnow.InDocsNo,
+                  InDocsRowNo = billInvnow.InDocsRowNo,
+                  SuppCode = billInvnow.SuppCode,
+                  SuppName = billInvnow.SuppName,
+                  CustCode = billInvnow.CustCode,
+                  CustName = billInvnow.CustName,
+                  MatId = billInvnow.MatId.ToString(),
+                  MatCode = billInvnow.MatCode,
+                  MatName = billInvnow.MatName,
+                  TolWQty = billInvnow.TolWQty,
+                  NetWQty = billInvnow.NetWQty,
+                  TareWQty = billInvnow.TareWQty,
+                  LengthQty = billInvnow.LengthQty,
+                  CaQty = billInvnow.CaQty,
+                  SolderQty = billInvnow.SolderQty,
+                  ContUsageQty = billInvnow.ContUsageQty,
+                  BatchNo = billInvnow.BatchNo,
+                  ProductTime = billInvnow.ProductTime,
+                  OneInTime = billInvnow.OneInTime,
+                  RodBarCode = billInvnow.RodBarCode,
+                  HWBarCode = billInvnow.HWBarCode,
+                  RFIDBarCode = billInvnow.RFIDBarCode,
+                  CLBarCode = billInvnow.CLBarCode,
+                  HWTypeCode = billInvnow.HWTypeCode,
+                  BoilerNo = billInvnow.BoilerNo,
+                  PackNo = billInvnow.PackNo,
+                  BrandNo = billInvnow.BrandNo,
+                  ExecStd = billInvnow.ExecStd,
+                  LicenceCode = billInvnow.LicenceCode,
+                  IsSurplus = billInvnow.IsSurplus,
+                  IsRework = billInvnow.IsRework,
+                  IsBlack = billInvnow.IsBlack,
+                  IsCore = billInvnow.IsCore,
+                  IsFast = billInvnow.IsFast,
+                  IsFail = billInvnow.IsFail,
+                  FailReason = billInvnow.FailReason,
+                  SilkTypeCode = billInvnow.SilkTypeCode,
+                  Grade = billInvnow.Grade,
+                  IsBack = billInvnow.IsBack,
+                  BackReason = billInvnow.BackReason,
+                  IsTorsChk = billInvnow.IsTorsChk,
+                  TorsChkQty = billInvnow.TorsChkQty,
+                  TorsChkTime = billInvnow.TorsChkTime,
+                  TorsChkValue = billInvnow.TorsChkValue,
+                  TorsChkMachCode = billInvnow.TorsChkMachCode,
+                  ProcessDocsCode = billInvnow.ProcessDocsCode,
+                  ProductMachCode = billInvnow.ProductMachCode,
+                  ProductLineNo = billInvnow.ProductLineNo,
+                  SetGrpCode = billInvnow.SetGrpCode,
+                  SideNum = billInvnow.SideNum,
+                  AddWho = billInvnow.AddWho,
+                  AddTime = billInvnow.AddTime,
+                  EditWho = billInvnow.EditWho,
+                  EditTime = billInvnow.EditTime,
+                  Size = billInvnow.Size,
+                  Memo = billInvnow.Memo,
+                  Tunnel = warecell.Tunnel,
+                  Code = warecell.Code,
+                  CellState = warecell.IsStop,
+              }).MergeTable();
+            return sugarQueryable;
+        }
+
+        public void ChangeSetGrp(LoginUserInfo loginUser, ChangeSetGrpModel entity)
+        {
+            if (string.IsNullOrWhiteSpace(entity.SetGrp))
+            {
+                throw new ArgumentException("跺型编码不能为空");
+            }
+            if (string.IsNullOrWhiteSpace(entity.NewSetGrp))
+            {
+                throw new ArgumentException("修改的跺型编码不能为空");
+            }
+            if (string.IsNullOrWhiteSpace(entity.WarehouseId))
+            {
+                throw new ArgumentException("仓库不能为空");
+            }
+            var predicate = Expressionable.Create<BillInvnow>();
+            predicate.And(it => it.WarehouseId.ToString().ToUpper() == entity.WarehouseId.ToUpper());
+            predicate.And(it => it.InvStateCode == InvState.InvEcecState_In.ToString());
+            predicate.And(it => it.SetGrpCode == entity.SetGrp);
+
+            var lists = _billInvnowrepository.Queryable().Where(predicate.ToExpression());
+            if (lists == null || !lists.Any())
+            {
+                throw new ArgumentException("没有该跺型的数据。");
+            }
+
+            _billLogService.WriteLog(loginUser, entity, $"跺型由:{entity.SetGrp}改为:{entity.NewSetGrp} ", "WMS.BZServices.FJ.BaseInvService", "ChangeSetGrp", new Stopwatch(), ELogType.Work, null);
+
+            _billInvnowrepository.UpdateModelColumns(p => new BillInvnow
+            {
+                SetGrpCode = entity.NewSetGrp
+            }, predicate.ToExpression());
+        }
+
+        public void UpdateStockState(string Code, int Status, string userId)
+        {
+            var stock = _billInvnowrepository.GetFirst(p => p.ContGrpBarCode == Code);
+            if (stock == null)
+            {
+                throw new ArgumentException("组盘信息不存在!");
+            }
+            var invstatus = ((InvState)Status).ToString();
+            var InvStateCode = invstatus + "";
+            var p = _billInvnowrepository.UpdateSetColumnsTrue(p => new BillInvnow()
+            {
+                InvStateCode = InvStateCode,
+                EditTime = DateTime.Now
+            }, p => p.ContGrpBarCode == stock.ContGrpBarCode);
+            if (!p)
+            {
+                throw new ArgumentException(stock.ContGrpBarCode + "更新失败!");
+            }
+            var flow = stock.Adapt<BillInvflow>();
+            flow.Id = IdFactory.NewId();
+            flow.AddTime = DateTime.Now;
+            flow.EditTime = DateTime.Now;
+            flow.InvStateCode = invstatus;
+            _billInvflowrepository.Insert(flow);
+        }
+
+        public void Deletes(string[] ids, string userId)
+        {
+            if (ids == null || ids.Length == 0)
+            {
+                throw BZSysExCore.ThrowFailException("库存Id不能为空!");
+            }
+            var list = _billInvnowrepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList();
+            if (!list.Any())
+            {
+                throw new ArgumentException("没有选择库存数据!");
+            }
+
+            _billInvnowrepository.UseTranAction(() =>
+            {
+                foreach (var item in list)
+                {
+                    _billInvnowrepository.Deleteable().Where(it => it.Id == item.Id).ExecuteCommand();
+                }
+            });
+        }
+
+        public List<EnumEntity> InvStateList()
+        {
+            return BZModels.Extensions.EnumToList<InvState>();
+        }
+
+        public List<EnumEntity> TaskStatusList()
+        {
+            return BZModels.Extensions.EnumToList<BZModels.TaskStatus>();
+        }
+
+        public List<EnumEntity> TaskTypeList()
+        {
+            return BZModels.Extensions.EnumToList<TaskType>();
+        }
+
+        public List<EnumEntity2> TaskBusTypeList()
+        {
+            return BZModels.Extensions.EnumToListDesc<TaskBusType>();
+        }
+
+        public List<EnumEntity> FackbeekTypeList()
+        {
+            return BZModels.Extensions.EnumToList<FackbeekType>();
+        }
+
+        public List<EnumEntity> ContGrpTypeList()
+        {
+            return BZModels.Extensions.EnumToList<ContGrpType>();
+        }
+
+        public List<EnumEntity> DocTypeList()
+        {
+            return BZModels.Extensions.EnumToList<DocType>();
+        }
+
+        public List<EnumEntity> DocStateList()
+        {
+            return BZModels.Extensions.EnumToList<DocState>();
+        }
+
+        public List<EnumEntity> LocationStateList()
+        {
+            return BZModels.Extensions.EnumToList<LocationState>();
+        }
+
+        public List<EnumEntity> AutoManualOutTypeList()
+        {
+            return BZModels.Extensions.EnumToList<AutoManualOutType>();
+        }
+    }
+}

+ 114 - 0
WMS.BZServices/KLHC/BillLogService.cs

@@ -0,0 +1,114 @@
+using Newtonsoft.Json;
+using System.Diagnostics;
+using System.Text;
+using WMS.BZModels.Models.KLHC;
+using WMS.BZSqlSugar;
+using WMS.Info;
+using WMS.Util;
+
+namespace WMS.BZServices.KLHC
+{
+    public class BillLogService
+    {
+        private readonly Repository<BillLog> _billLogRepository;
+
+        public BillLogService(Repository<BillLog> billLogRepository)
+        {
+            _billLogRepository = billLogRepository;
+        }
+
+        public void WriteLog(BZBLLExecInfo BLLExec, ELogType eLogType)
+        {
+            try
+            {
+                BillLog log = new BillLog();
+                log.RunMs = (int)CommonUtil.TimerEnd(BLLExec.RunWatch);
+                log.LogTime = DateTime.Now;
+                log.AppTypeNum = 0;
+                log.TypeNum = (int)eLogType;
+                if (BLLExec.Ex == null)
+                {
+                    log.ContentText = string.IsNullOrWhiteSpace(BLLExec.BLLObj.SuccessMsg) ? "操作成功。" : BLLExec.BLLObj.SuccessMsg;
+                    log.IsSucc = 1;
+                }
+                else
+                {
+                    log.ContentText = BLLExec.Ex.Message;
+                    log.IsSucc = 0;
+                }
+                if (BLLExec.BLLObj != null)
+                {
+                    log.AppTypeNum = (int)BLLExec.BLLObj.LoginUser.AppType;
+                    log.Method = BZBLLCore.GetBLLClassNo(BLLExec.BLLObj);
+                    log.MethodText = BLLExec.BLLObj.BLLDesc;
+                    StringBuilder sb = new StringBuilder();
+                    sb.Append("---------------------------------------请求数据-----------------------------------------------------------------");
+                    sb.AppendLine(BLLExec.BLLObj.InJsonData);
+                    if (BLLExec.Ex != null)
+                    {
+                        sb.AppendLine("----------------------------------------异常数据----------------------------------------------------------------");
+                        sb.AppendLine(BLLExec.Ex.ToString());
+                        sb.AppendLine("----------------------------------------异常内部数据----------------------------------------------------------------");
+                        if (BLLExec.Ex.InnerException == null)
+                        {
+                            sb.AppendLine(string.Format("Message:{0}  Source:{1}  StackTrace:{2} ", BLLExec.Ex.Message, BLLExec.Ex.Source, BLLExec.Ex.StackTrace));
+                        }
+                        else
+                        {
+                            sb.AppendLine(string.Format("Message:{0}  Source:{1}  StackTrace:{2} ", BLLExec.Ex.InnerException.Message, BLLExec.Ex.InnerException.Source, BLLExec.Ex.InnerException.StackTrace));
+                        }
+                    }
+                    log.ParamJson = sb.ToString();
+                    log.Ip = BLLExec.BLLObj.LoginUser.IPAddress;
+                    log.LogWho = BLLExec.BLLObj.LoginUser.UserNo;
+                    //log. = BLLExec.BLLObj.LoginUser.AppDeviceNo;
+                }
+                _billLogRepository.Insert(log);
+            }
+            catch (Exception ex)
+            {
+                LogFactory.GetLogger("WMS.Core.SysLogCore.WriteLog").Error(ex.ToString());
+            }
+        }
+
+        public void WriteLog(LoginUserInfo LoginUser, dynamic JsonData, string ContentText, string ClassNo, string ClassDesc, Stopwatch ts, ELogType eLogType, Exception ex = null)
+        {
+            try
+            {
+                string injson = JsonData == null ? "" : JsonConvert.SerializeObject(JsonData);
+                BillLog log = new BillLog();
+
+                log.RunMs = (int)CommonUtil.TimerEnd(ts);
+                log.LogTime = DateTime.Now;
+                log.AppTypeNum = (int)LoginUser.AppType;
+                log.TypeNum = (int)eLogType;
+                if (!string.IsNullOrWhiteSpace(ContentText))
+                {
+                    log.ContentText = ContentText;
+                }
+                else
+                {
+                    log.ContentText = ex == null ? "操作成功。" : ex.Message;
+                }
+
+                log.IsSucc = ex == null ? 1 : 0;
+                log.Ip = LoginUser.IPAddress;
+                log.Method = ClassNo;
+                log.MethodText = ClassDesc;
+                //log.F_APPDEVICENO = LoginUser.AppDeviceNo;
+                log.LogWho = LoginUser.UserNo;
+                log.AddWho = LoginUser.UserNo;
+                log.AddTime = DateTime.Now;
+                log.EditTime = DateTime.Now;
+                log.EditWho = LoginUser.UserNo;
+                log.ParamJson = injson;
+                _billLogRepository.Insert(log);
+            }
+            catch (Exception e)
+            {
+                CommonUtil.TimerEnd(ts);
+                LogFactory.GetLogger("WMS.BZServices.PT.BillLogService.WriteLog").Error(e.ToString());
+            }
+        }
+    }
+}

+ 8 - 6
WMS.BZServices/KLHC/WareCellService.cs

@@ -380,9 +380,9 @@ namespace WMS.BZServices.KLHC
             }
         }
 
-        public void UpdateCellState(string CellCode, int Status, long WarehouseId, string userId)
+        public void UpdateCellState(string CellCode, int Status, LoginUserInfo user)
         {
-            var cell = _warecellRepository.GetFirst(p => p.Code == CellCode && p.WarehouseId == WarehouseId);
+            var cell = _warecellRepository.GetFirst(p => p.Code == CellCode);
             if (cell == null)
             {
                 throw new ArgumentException("货位编码不存在!");
@@ -397,16 +397,18 @@ namespace WMS.BZServices.KLHC
                     ContGrpId = 0,
                     GroupID = 0,
                     XYNO = 0,
-                    EditTime = DateTime.Now
-                }, p => p.Code == CellCode && p.WarehouseId == WarehouseId);
+                    EditTime = DateTime.Now,
+                    EditWho = user.UserName,
+                }, p => p.Code == CellCode);
             }
             else
             {
                 _warecellRepository.UpdateSetColumnsTrue(p => new BaseWarecell()
                 {
                     StateNum = Status,
-                    EditTime = DateTime.Now
-                }, p => p.Code == CellCode && p.WarehouseId == WarehouseId);
+                    EditTime = DateTime.Now,
+                    EditWho = user.UserName
+                }, p => p.Code == CellCode);
             }
         }
 

+ 16 - 19
WMS.BZWeb/Areas/FJManager/Controllers/InventorysController.cs

@@ -23,8 +23,8 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
             baseInvService = bll;
         }
 
-
         #region 视图功能
+
         public IActionResult Index()
         {
             return View();
@@ -32,7 +32,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
         public IActionResult InvManualOut()
         {
-
             ViewBag.FJWMSWebAPIUrl = ConfigHelper.GetConfig().FJWMSWebAPIUrl;
             return View();
         }
@@ -43,12 +42,13 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             return View();
         }
+
         public IActionResult SetGrpForm()
         {
             return View();
         }
-        #endregion
 
+        #endregion 视图功能
 
         public ActionResult GetPageList(string pagination, string queryJson)
         {
@@ -72,7 +72,7 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
         }
 
         [HttpPost]
-        public IActionResult ExportExcel(string fileName,   string queryJson, string exportField)
+        public IActionResult ExportExcel(string fileName, string queryJson, string exportField)
         {
             var query = new BillInvNowQueryDto();
             try
@@ -82,7 +82,7 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                     query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
                 }
             }
-            catch (Exception ex) 
+            catch (Exception ex)
             {
             }
             //设置导出格式
@@ -119,26 +119,23 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             foreach (var columnModel in columnList)
             {
-                
-                    excelconfig.ColumnEntity.Add(new ColumnModel()
-                    {
-                        // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
-                        Column = columnModel.name,
-                        ExcelColumn = columnModel.label,
-                        Alignment = columnModel.align,
-                        Width = columnModel.name.Length
-                    });
-                 
+                excelconfig.ColumnEntity.Add(new ColumnModel()
+                {
+                    // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
+                    Column = columnModel.name,
+                    ExcelColumn = columnModel.label,
+                    Alignment = columnModel.align,
+                    Width = columnModel.name.Length
+                });
             }
             return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
         }
 
-        
-             [HttpPost]
+        [HttpPost]
         public ActionResult ChangeSetGrp(ChangeSetGrpModel Data)
         {
             LoginUserInfo LoginUser = GetLoginUser();
-            baseInvService.ChangeSetGrp(LoginUser,  Data);
+            baseInvService.ChangeSetGrp(LoginUser, Data);
             return Success("保存成功。");
         }
 
@@ -170,4 +167,4 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
             return Success("删除成功。");
         }
     }
-}
+}

+ 8 - 26
WMS.BZWeb/Areas/FJManager/Controllers/ReportController.cs

@@ -26,10 +26,12 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
         }
 
         #region 页面
+
         public IActionResult Index()
         {
             return View();
         }
+
         public IActionResult cellreportIndex()
         {
             return View();
@@ -44,11 +46,14 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
         {
             return View();
         }
+
         public IActionResult MatNameNetWeightReport()
         {
             return View();
         }
-        #endregion
+
+        #endregion 页面
+
         public ActionResult GetPageList(string pagination, string queryJson)
         {
             Pagination paginationobj = InitPagination(pagination);
@@ -70,7 +75,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
             return Success(jsonData);
         }
 
-
         public ActionResult GetLocationUsageReportList()
         {
             var lists = _report.GetLocationUsageReportList();
@@ -104,7 +108,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             lists.Add(new LocationUsageReportViewDto()
             {
-
                 Tunnel = "",
                 WarehouseName = "合计:",
                 AllLocationTotal = lists.Sum(s => s.AllLocationTotal),
@@ -113,7 +116,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                 LockLocation = lists.Sum(s => s.LockLocation),
                 StopLocation = lists.Sum(s => s.StopLocation),
                 MaterilLocation = lists.Sum(s => s.MaterilLocation),
-
             });
             return Success(lists);
         }
@@ -137,6 +139,7 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
             };
             return Success(jsonData);
         }
+
         /// <summary>
         /// 获取货位使用率
         /// </summary>
@@ -160,10 +163,8 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                 records = lists.TotalNum
             };
             return Success(jsonData);
-
         }
 
-
         public ActionResult GetMantuoBarCodeRate(string pagination, string queryJson)
         {
             Pagination paginationobj = InitPagination(pagination);
@@ -181,7 +182,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                 records = lists.TotalNum
             };
             return Success(jsonData);
-
         }
 
         public ActionResult GetMatNameNetWeightCategory(string pagination, string queryJson)
@@ -205,8 +205,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
             return Success(jsonData);
         }
 
-
-
         [HttpPost]
         public IActionResult ExportExcel(string fileName, string queryJson, string exportField)
         {
@@ -255,7 +253,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             foreach (var columnModel in columnList)
             {
-
                 excelconfig.ColumnEntity.Add(new ColumnModel()
                 {
                     // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
@@ -264,12 +261,10 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                     Alignment = columnModel.align,
                     Width = columnModel.name.Length
                 });
-
             }
             return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
         }
 
-
         [HttpPost]
         public IActionResult ExportLocationUsageReportExcel(string fileName, string queryJson, string exportField)
         {
@@ -307,7 +302,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             foreach (var columnModel in columnList)
             {
-
                 excelconfig.ColumnEntity.Add(new ColumnModel()
                 {
                     // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
@@ -316,7 +310,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                     Alignment = columnModel.align,
                     Width = columnModel.name.Length
                 });
-
             }
             return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
         }
@@ -327,7 +320,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
             var query = new BillInvNowQueryDto();
             try
             {
-
                 if (!string.IsNullOrEmpty(queryJson))
                 {
                     query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
@@ -370,7 +362,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             foreach (var columnModel in columnList)
             {
-
                 excelconfig.ColumnEntity.Add(new ColumnModel()
                 {
                     // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
@@ -379,7 +370,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                     Alignment = columnModel.align,
                     Width = columnModel.name.Length
                 });
-
             }
             return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
         }
@@ -432,7 +422,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             foreach (var columnModel in columnList)
             {
-
                 excelconfig.ColumnEntity.Add(new ColumnModel()
                 {
                     // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
@@ -441,7 +430,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                     Alignment = columnModel.align,
                     Width = columnModel.name.Length
                 });
-
             }
             return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
         }
@@ -494,7 +482,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             foreach (var columnModel in columnList)
             {
-
                 excelconfig.ColumnEntity.Add(new ColumnModel()
                 {
                     // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
@@ -503,7 +490,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                     Alignment = columnModel.align,
                     Width = columnModel.name.Length
                 });
-
             }
             return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
         }
@@ -514,7 +500,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
             var query = new MantuoBarCodeRateQueryDto();
             try
             {
-                
                 if (!string.IsNullOrEmpty(queryJson))
                 {
                     query = JsonConvert.DeserializeObject<MantuoBarCodeRateQueryDto>(queryJson);
@@ -557,7 +542,6 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
 
             foreach (var columnModel in columnList)
             {
-
                 excelconfig.ColumnEntity.Add(new ColumnModel()
                 {
                     // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
@@ -566,10 +550,8 @@ namespace WMS.BZWeb.Areas.FJManager.Controllers
                     Alignment = columnModel.align,
                     Width = columnModel.name.Length
                 });
-
             }
             return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
         }
-
     }
-}
+}

+ 4 - 6
WMS.BZWeb/Areas/KLHCManager/Controllers/BaseWareCellController.cs

@@ -112,7 +112,7 @@ namespace WMS.BZWeb.Areas.KLHCManager.Controllers
         }
 
         [HttpPost]
-        public ActionResult UpdateCellState(string CellCode, string Status,string WarehouseId)
+        public ActionResult UpdateCellState(string CellCode, string Status)
         {
             if (string.IsNullOrWhiteSpace(CellCode))
             {
@@ -122,12 +122,10 @@ namespace WMS.BZWeb.Areas.KLHCManager.Controllers
             {
                 return Fail("货位状态值不对!");
             }
-            if (!long.TryParse(WarehouseId,out var warehouID))
-            {
-                return Fail("仓库值不对!");
-            }
+          
             var userid = WebUtil.GetItem("userId");
-            _wareCellService.UpdateCellState(CellCode, status, warehouID, userid?.ToString());
+            LoginUserInfo LoginUser = GetLoginUser();
+            _wareCellService.UpdateCellState(CellCode, status, LoginUser);
             return Success("保存成功。");
         }
 

+ 43 - 0
WMS.BZWeb/Areas/KLHCManager/Controllers/ErrorDisposeController.cs

@@ -0,0 +1,43 @@
+using FreeRedis;
+using MessagePack;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.DependencyInjection;
+using WMS.Util;
+
+namespace WMS.BZWeb.Areas.KLHCManager.Controllers
+{
+    [Area("KLHCManager")]
+    public class ErrorDisposeController : MvcControllerBase
+    {
+        private readonly RedisClient _FJRedis;
+
+        public ErrorDisposeController(IServiceProvider serviceProvider)
+        {
+            var redisDict = serviceProvider.GetRequiredService<Dictionary<string, RedisClient>>();
+            if (redisDict.Any())
+            {
+                _FJRedis = redisDict["FJRedis"];
+                _FJRedis.Serialize = obj => MessagePackSerializer.Serialize(obj);// JsonConvert.SerializeObject(obj);
+                _FJRedis.DeserializeRaw = (bytes, type) => MessagePackSerializer.Deserialize(type, bytes);// JsonConvert.DeserializeObject(json, type);
+            }
+        }
+
+        public IActionResult Index()
+        {
+            ViewBag.FJWMSWebAPIUrl = ConfigHelper.GetConfig().FJWMSWebAPIUrl;
+            return View();
+        }
+
+        public IActionResult IsExceptionAutoIn(string isin)
+        {
+            if (string.IsNullOrWhiteSpace(isin))
+            {
+                return Fail("参数不能为空!");
+            }
+
+            _FJRedis.Set("AutoWarehousedIfError", isin);
+
+            return Success("操作成功。");
+        }
+    }
+}

+ 170 - 0
WMS.BZWeb/Areas/KLHCManager/Controllers/InventorysController.cs

@@ -0,0 +1,170 @@
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using ServiceStack;
+using System.Data;
+using System.Net;
+using System.Web;
+using WMS.BZModels;
+using WMS.BZModels.Dto.KLHC.BillInvDtos;
+using WMS.BZServices.KLHC;
+using WMS.Core;
+using WMS.Info;
+using WMS.Util;
+
+namespace WMS.BZWeb.Areas.KLHCManager.Controllers
+{
+    [Area("KLHCManager")]
+    public class InventorysController : MvcControllerBase
+    {
+        private readonly BaseInvService baseInvService;
+
+        public InventorysController(BaseInvService bll)
+        {
+            baseInvService = bll;
+        }
+
+        #region 视图功能
+
+        public IActionResult Index()
+        {
+            return View();
+        }
+
+        public IActionResult InvManualOut()
+        {
+            ViewBag.FJWMSWebAPIUrl = ConfigHelper.GetConfig().FJWMSWebAPIUrl;
+            return View();
+        }
+
+        public IActionResult Form()
+        {
+            ViewBag.FJWMSWebAPIUrl = ConfigHelper.GetConfig().FJWMSWebAPIUrl;
+
+            return View();
+        }
+
+        public IActionResult SetGrpForm()
+        {
+            return View();
+        }
+
+        #endregion 视图功能
+
+        public ActionResult GetPageList(string pagination, string queryJson)
+        {
+            Pagination paginationobj = InitPagination(pagination);
+            var query = new BillInvNowQueryDto();
+            if (!string.IsNullOrEmpty(queryJson))
+            {
+                query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
+            }
+
+            var lists = baseInvService.GetPageList(paginationobj, query ?? new BillInvNowQueryDto());
+
+            var jsonData = new
+            {
+                rows = lists.Result,
+                total = lists.TotalPage,
+                page = lists.PageIndex,
+                records = lists.TotalNum
+            };
+            return Success(jsonData);
+        }
+
+        [HttpPost]
+        public IActionResult ExportExcel(string fileName, string queryJson, string exportField)
+        {
+            var query = new BillInvNowQueryDto();
+            try
+            {
+                if (!string.IsNullOrEmpty(queryJson))
+                {
+                    query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
+                }
+            }
+            catch (Exception ex)
+            {
+            }
+            //设置导出格式
+            ExcelConfig excelconfig = new ExcelConfig();
+            excelconfig.Title = HttpUtility.UrlDecode(fileName);
+            excelconfig.TitleFont = "微软雅黑";
+            excelconfig.TitlePoint = 15;
+            excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
+            excelconfig.IsAllSizeColumn = true;
+            excelconfig.ColumnEntity = new List<ColumnModel>();
+
+            List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
+            if (columnList.Count == 0)
+            {
+                throw new Exception("未找到表头");
+            }
+            //行数据
+            var lists = baseInvService.GetList(query ?? new BillInvNowQueryDto());
+            var dataJson = JsonConvert.SerializeObject(lists);
+            DataTable rowData = dataJson.ToTable();
+            //写入Excel表头
+            Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
+            if (!string.IsNullOrEmpty(exportField))
+            {
+                string[] exportFields = exportField.Split(',');
+                foreach (var field in exportFields)
+                {
+                    if (!exportFieldMap.ContainsKey(field))
+                    {
+                        exportFieldMap.Add(field, "1");
+                    }
+                }
+            }
+
+            foreach (var columnModel in columnList)
+            {
+                excelconfig.ColumnEntity.Add(new ColumnModel()
+                {
+                    // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
+                    Column = columnModel.name,
+                    ExcelColumn = columnModel.label,
+                    Alignment = columnModel.align,
+                    Width = columnModel.name.Length
+                });
+            }
+            return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
+        }
+
+        [HttpPost]
+        public ActionResult ChangeSetGrp(ChangeSetGrpModel Data)
+        {
+            LoginUserInfo LoginUser = GetLoginUser();
+            baseInvService.ChangeSetGrp(LoginUser, Data);
+            return Success("保存成功。");
+        }
+
+        [HttpPost]
+        public ActionResult UpdateStockState(string Code, string InvStateCode)
+        {
+            if (string.IsNullOrWhiteSpace(Code))
+            {
+                return Fail("条码不能为空!");
+            }
+            if (!int.TryParse(InvStateCode, out var status))
+            {
+                return Fail("状态值不对!");
+            }
+            var userid = WebUtil.GetItem("userId");
+            baseInvService.UpdateStockState(Code, status, userid?.ToString());
+            return Success("保存成功。");
+        }
+
+        [HttpPost]
+        public ActionResult Deletes(string[] keyValue)
+        {
+            if (keyValue == null || keyValue.Length == 0)
+            {
+                return Fail("跺型Id不能为空");
+            }
+            var userid = WebUtil.GetItem("userId");
+            baseInvService.Deletes(keyValue, userid?.ToString());
+            return Success("删除成功。");
+        }
+    }
+}

+ 3 - 26
WMS.BZWeb/Areas/KLHCManager/Views/ErrorDispose/Index.cshtml

@@ -61,27 +61,6 @@
     <div class="lr-layout-center">
         <div class="lr-layout-wrap lr-layout-wrap-notitle" style=" overflow-y:scroll">
             <section class='FlexContainer'>
-                <div>
-                    <section class='ColFlexContainer'>
-                        <div style="margin-top:10px;">
-                            <label class="">
-                                是否启用异常轮自动入库
-                            </label>
-                            <select id="isexception" style="width:160px;" placeholder="是否启用异常轮自动入库" class="form-control lr-select"> 
-                                <option value="">请选择</option>
-                                <option value="0">否</option>
-                                <option value="1">是</option>
-                           </select>
-                        </div>
-                        <div>
-                            <div class="btn-group btn-group-sm">
-                                <a id="lr_exception" class="btn btn-warning"><i class="fa fa-pencil-square-o"></i>&nbsp;确定</a>
-                                <!-- <a id="lr_done" class="btn btn-default"><i class="fa fa-pencil-square-o"></i>&nbsp;完成</a>-->
-                            </div>
-                        </div>
-                    </section>
-
-                </div>
 
                   <div>
                     <section class='ColFlexContainer'>
@@ -94,7 +73,7 @@
                             </div>
                         </div>
                         <div>
-                            <input id="Code" type="text" class="form-control" placeholder="请输入工字轮条码" />
+                            <input id="Code" type="text" class="form-control" placeholder="请输入对应任务的条码" />
                             <div id="InvStateCode" class="form-control" style="width:280px;height:30px;margin-bottom:25px;margin-left:0px;"></div>
                              
                         </div>
@@ -112,14 +91,12 @@
                                 <label class="">
                                     修改货位状态
                                 </label>
-
                             </div>
                         </div>
                         <div>
-                           
                             <input id="CellCode" type="text" class="form-control" placeholder="请输入货位编号" />
                             <div class='FlexContainer'>
-                                <div id="WarehouseId" style="width:139px;height:30px; margin-left:0px;"></div> <div id="Status" class="form-control" style="width:134px;height:30px;margin-bottom:25px;margin-left:-2px;"></div>
+                                 <div id="Status"  style="width:139px;height:30px; margin-left:0px;"></div>
                             </div>
                         </div>
                         <div style="margin-top:15px;">
@@ -139,4 +116,4 @@
 <script>
     var weburl = '@ViewBag.FJWMSWebAPIUrl';
 </script>
-@Html.AppendJsFile("/Areas/FJManager/Views/ErrorDispose/Index.js")
+@Html.AppendJsFile("/Areas/KLHCManager/Views/ErrorDispose/Index.js")

+ 16 - 33
WMS.BZWeb/Areas/KLHCManager/Views/ErrorDispose/Index.js

@@ -17,45 +17,42 @@ var bootstrap = function ($, learun) {
             $('#multiple_condition_query').lrMultipleQuery(function (queryJson) {
                 // 调用后台查询
                 // queryJson 查询条件
-
             }, 250);
             $('#InvStateCode').lrselect({
-                url: top.$.rootUrl + '/FJManager/Enums/GetInvStateList',
+                url: top.$.rootUrl + '/KLHCManager/Enums/GetInvStateList',
                 maxHeight: 180,
                 allowSearch: false
             });
             $('#Status').lrselect({
-                url: top.$.rootUrl + '/FJManager/Enums/GetLocationStateList',
-                maxHeight: 180,
-                allowSearch: false
-            });
-            $('#WarehouseId').lrselect({
-                url: top.$.rootUrl + '/FJManager/BaseWarehouse/GetSelectWarehouseNameList',
+                url: top.$.rootUrl + '/KLHCManager/Enums/GetLocationStateList',
                 maxHeight: 180,
                 allowSearch: false
             });
+            //$('#WarehouseId').lrselect({
+            //    url: top.$.rootUrl + '/KLHCManager/BaseWarehouse/GetSelectWarehouseNameList',
+            //    maxHeight: 180,
+            //    allowSearch: false
+            //});
             $("#lr_exception").on('click', function () {
-                var isexception = $('#isexception').val() ;               
+                var isexception = $('#isexception').val();
                 if (isexception == '') {
                     learun.alert.error('参数不能为空!');
                     return false;
                 }
                 learun.layerConfirm('是否启用异常轮自动入库!', function (res) {
                     if (res) {
-                        learun.httpAsyncPost(top.$.rootUrl + '/FJManager/ErrorDispose/IsExceptionAutoIn', { isin: isexception }, function (data) {
-                            top.layer.close(top.layer.index);  
-                            if (data.IsSucc) {                                                              
-                                learun.alert.info(data.info); 
+                        learun.httpAsyncPost(top.$.rootUrl + '/KLHCManager/ErrorDispose/IsExceptionAutoIn', { isin: isexception }, function (data) {
+                            top.layer.close(top.layer.index);
+                            if (data.IsSucc) {
+                                learun.alert.info(data.info);
                             }
                             else {
-                                learun.alert.error(data.info);   
+                                learun.alert.error(data.info);
                             }
-
                         });
                     }
                 });
-
-            });           
+            });
 
             //修改库存状态信息
             $('#Update_StockState').on('click', function () {
@@ -67,7 +64,7 @@ var bootstrap = function ($, learun) {
                 }
                 learun.layerConfirm('是否确定修改库存状态!', function (res) {
                     if (res) {
-                        learun.httpAsyncPost(top.$.rootUrl + '/FJManager/Inventorys/UpdateStockState', { Code: Code, InvStateCode: InvStateCode }, function (data) {
+                        learun.httpAsyncPost(top.$.rootUrl + '/KLHCManager/Inventorys/UpdateStockState', { Code: Code, InvStateCode: InvStateCode }, function (data) {
                             top.layer.close(top.layer.index);
                             if (data.IsSucc) {
                                 learun.alert.info(data.info);
@@ -75,18 +72,14 @@ var bootstrap = function ($, learun) {
                             else {
                                 learun.alert.error(data.info);
                             }
-
                         });
                     }
                 });
-    
-
             });
             //修改货位状态
             $('#Update_CellState').on('click', function () {
                 var CellCode = $('#CellCode').val().replace(/^[' ' || ' ']*/, '').replace(/[' ' | ' ']*$/, '');
                 var Status = $("#Status").lrselectGet();
-                var WarehouseId = $("#WarehouseId").lrselectGet();
                 if (CellCode.length == 0) {
                     learun.alert.error('货位编码不能为空!');
                     return false;
@@ -95,15 +88,10 @@ var bootstrap = function ($, learun) {
                     learun.alert.error('状态不能为空!');
                     return false;
                 }
-                if (WarehouseId.length == 0) {
-                    learun.alert.error('仓库不能为空!');
-                    return false;
-                }
-                var url = weburl + "api/Hj/UpdateCellState";
 
                 learun.layerConfirm('是否确定修改货位状态!', function (res) {
                     if (res) {
-                        learun.httpAsyncPost(top.$.rootUrl + '/FJManager/BaseWareCell/UpdateCellState', { CellCode: CellCode, Status: Status, WarehouseId: WarehouseId }, function (data) {
+                        learun.httpAsyncPost(top.$.rootUrl + '/KLHCManager/BaseWareCell/UpdateCellState', { CellCode: CellCode, Status: Status }, function (data) {
                             top.layer.close(top.layer.index);
                             if (data.IsSucc) {
                                 learun.alert.info(data.info);
@@ -111,15 +99,10 @@ var bootstrap = function ($, learun) {
                             else {
                                 learun.alert.error(data.info);
                             }
-
                         });
                     }
                 });
-                              
-
             });
-
-            
         },
         search: function (param) {
             $('#gridtable').jfGridSet('reload', param);