1
Huangxiaoqiang-03
2024-10-23 c05003c73bbe527478bccc55efe25c19068b6f50
1
已删除9个文件
已修改26个文件
已添加16个文件
已重命名1个文件
1077 ■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceInfo.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/18868982-b034-467b-8435-c66e181e1f8b.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1abe9649-fb25-4398-9e24-b4ac1e6dab06.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/29b80993-5f2f-4105-84fe-f842cfdb3cd5.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/882415c3-1a90-4a52-810f-4d72d250cc16.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/88a80046-55e1-415d-90b6-d311138ea206.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8cf517ec-1cf8-421f-a81d-060a1c174e1a.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9619e111-5f4d-4a9e-be92-1f83ff1f4c3e.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b10cf6b0-c2bb-4c3d-ba2c-41b340cd834d.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/df097475-a21c-477f-bae8-fdcb85add7c1.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/CachePoint.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/router/viewGird.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/basic/areaInfo.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/basic/cachePoint.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/record/locationStatusChangeRecord.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/record/stockQuantityChangeRecord.vue 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0411b122-4aac-4e05-87bf-b24318b57075.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/31942420-eefc-4133-80d7-b56436c46904.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3d90a9b2-baa2-48c6-95e6-a364aa3c89e1.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/44ea72ad-ffb7-4b5b-85e0-241240f07f30.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/738d6968-0808-4920-a274-cb39619f82a4.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/86da0ee4-06d1-42f2-a5bf-e1a405be4a6d.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/96826077-2dcc-4819-9493-76e6f8cc4f44.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9eee2df4-daff-4226-a579-ad61ef88678a.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a8b12b1d-7deb-4fb2-9be1-8c358e147412.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/ddd95cc1-aa8d-43ca-a1cd-af308e641ed7.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WIDESEA_BasicService.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail_Hty.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail_Hty.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoRepository/TaskRepository.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/CachePointController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceInfo.vue
@@ -94,6 +94,7 @@
      deviceCode: "",
      deviceType: "",
      deviceStatus: "",
      createDate:"",
    });
    const searchFormOptions = ref([
      [
@@ -111,6 +112,10 @@
          type: "select",
          dataKey: "deviceStatus",
          data: [],
        },{
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        },
      ],
    ]);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/18868982-b034-467b-8435-c66e181e1f8b.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1abe9649-fb25-4398-9e24-b4ac1e6dab06.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/29b80993-5f2f-4105-84fe-f842cfdb3cd5.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/882415c3-1a90-4a52-810f-4d72d250cc16.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/88a80046-55e1-415d-90b6-d311138ea206.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8cf517ec-1cf8-421f-a81d-060a1c174e1a.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9619e111-5f4d-4a9e-be92-1f83ff1f4c3e.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b10cf6b0-c2bb-4c3d-ba2c-41b340cd834d.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/df097475-a21c-477f-bae8-fdcb85add7c1.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
@@ -12,6 +12,8 @@
    public interface ISys_MenuService : IService<Sys_Menu>
    {
        object GetCurrentMenuActionList();
        object GetMenuActionList(int roleId);
        List<Sys_Menu> GetUserMenuList(int roleId);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
@@ -20,6 +20,7 @@
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Caches;
using WIDESEAWCS_QuartzJob.DeviceEnum;
namespace WIDESEAWCS_WCSServer.Controllers.System
{
@@ -106,8 +107,8 @@
                        {
                            Type type = typeof(IDevice);
                            var basePath = AppContext.BaseDirectory;
                            string path = Path.Combine(basePath, Assembly.GetExecutingAssembly().GetName().Name);
                            Assembly assembly = Assembly.LoadFrom(path);
                            //string path = Path.Combine("", Assembly.GetAssembly(type).GetName());
                            Assembly assembly = Assembly.GetAssembly(type);
                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
                            List<object> data = new List<object>();
                            foreach (var deviceType in types)
@@ -146,12 +147,12 @@
                    case "deviceStatus":
                        {
                            List<object> data = new List<object>();
                            Type type = Type.GetType("WIDESEAWCS_QuartzJob.DeviceEnum.DeviceStatusEnum");
                            Type type = typeof(DeviceStatusEnum);
                            List<int> enums = Enum.GetValues(type).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = type.GetField((item).ToString());
                                FieldInfo? fieldInfo = type.GetField(((DeviceStatusEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs
@@ -43,7 +43,7 @@
builder.Services.AddAllOptionRegister();//读取配置文件
builder.Services.AddMemoryCacheSetup();//缓存
builder.Services.AddSqlsugarSetup();//SqlSugar å¯åŠ¨æœåŠ¡
builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
//builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
builder.Services.AddDbSetup();//Db å¯åŠ¨æœåŠ¡
builder.Services.AddScoped<QuartzJobCreateDataTabel>();
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs
@@ -10,15 +10,20 @@
using WIDESEAWCS_ISystemRepository;
using WIDESEAWCS_Core.BaseRepository;
using System.Net;
using WIDESEAWCS_Core.Caches;
namespace WIDESEAWCS_SystemServices
{
    public class Sys_UserService : ServiceBase<Sys_User, ISys_UserRepository>, ISys_UserService
    {
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage) : base(repository)
        private readonly ICacheService _cacheService;
        private readonly ISys_MenuService _menuService;
        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService) : base(repository)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _cacheService = cacheService;
            _menuService = menuService;
        }
        public WebResponseContent Login(LoginInfo loginInfo)
@@ -44,6 +49,16 @@
                UserInfo user = BaseDal.GetUserInfo(loginInfo.UserName, loginInfo.Password);
                if (user != null)
                {
                    object obj = _menuService.GetMenuActionList(user.RoleId);
                    if (obj is not IEnumerable<object> list)
                    {
                        return WebResponseContent.Instance.Error("无登录权限");
                    }
                    if (!list.Any())
                    {
                        return WebResponseContent.Instance.Error("无登录权限");
                    }
                    string token = JwtHelper.IssueJwt(new TokenModelJwt()
                    {
                        UserId = user.UserId,
@@ -52,6 +67,8 @@
                        TenantId = user.TenantId,
                    });
                    _cacheService.AddOrUpdate(user.UserId.ToString(), token);
                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl });
                }
                else
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/basic/CachePoint.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: '',
    gridFooter: '',
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelFooter: ''
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      let enableBtn = this.buttons.find(x => x.value == 'Enable');
      if (enableBtn) {
        enableBtn.onClick = function () {
          this.$message.success('自定义按钮点击事件');
        }
      }
      let disableBtn = this.buttons.find(x => x.value == 'Disable');
      if (disableBtn) {
        disableBtn.onClick = function () {
          this.$message.success('自定义按钮点击事件');
        }
      }
    },
    onInited() {
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      //this.detailOptions.columns.forEach(column=>{ });
    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false,则不会执行查询
      return true;
    },
    searchAfter(result) {
      //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
      return true;
    },
    addBefore(formData) {
      //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
      return true;
    },
    updateBefore(formData) {
      //编辑保存前formData为对象,包括明细表、删除行的Id
      return true;
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
      //(1)判断是编辑还是新建操作: this.currentAction=='Add';
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段='xxx';
      //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看:console.log(this.editFormOptions)
    }
  }
};
export default extension;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/router/viewGird.js
@@ -45,7 +45,13 @@
    path: '/materielInfo',
    name: 'materielInfo',
    component: () => import('@/views/basic/materielInfo.vue')
  }, {
  },
  {
    path: '/cachePoint',
    name: 'cachePoint',
    component: () => import('@/views/basic/cachePoint.vue')
  },
  {
    path: '/roadwayInfo',
    name: 'roadwayInfo',
    component: () => import('@/views/basic/roadwayInfo.vue')
@@ -90,6 +96,14 @@
    path: '/stockView',
    name: 'stockView',
    component: () => import('@/views/stock/stockView.vue')
  },{
    path: '/StockQuantityChangeRecord',
    name: 'StockQuantityChangeRecord',
    component: () => import('@/views/record/stockQuantityChangeRecord.vue')
  },{
    path: '/locationStatusChangeRecord',
    name: 'locationStatusChangeRecord',
    component: () => import('@/views/record/locationStatusChangeRecord.vue')
  }]
export default viewgird
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/basic/areaInfo.vue
@@ -29,8 +29,7 @@
    const editFormFields = ref({
      areaCode: "",
      areaName: "",
      areaType: "",
      areaStatus: "",
      warehouseId: "",
      areaDes: "",
    });
@@ -60,6 +59,14 @@
          title: "区域描述",
          field: "areaDes",
          type: "textarea",
        },{ title: "区域状态", field: "areaStatus" ,type: "select",dataKey: "enableEnum",data: [],},
      ],
      [
      {
          title: "区域类型",
          required: true,
          field: "areaType",
          type: "int",
        },
      ],
    ]);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/basic/cachePoint.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,206 @@
<template>
  <view-grid
    ref="grid"
    :columns="columns"
    :detail="detail"
    :editFormFields="editFormFields"
    :editFormOptions="editFormOptions"
    :searchFormFields="searchFormFields"
    :searchFormOptions="searchFormOptions"
    :table="table"
    :extend="extend"
  >
  </view-grid>
</template>
    <script>
import extend from "@/extension/basic/CachePoint.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const table = ref({
      key: "id",
      footer: "Foots",
      cnName: "缓存点",
      name: "CachePoint",
      url: "/CachePoint/",
      sortName: "id",
    });
    const editFormFields = ref({
      areaId: "",
      pointCode: "",
      pointStatus: "",
      enableStatus: "",
      pointType: "",
      row: "",
      column: "",
      depth: "",
    });
    const editFormOptions = ref([
      [
        {title: "区域主键",required: true,field: "areaId",type: "string",},
        {title: "缓存点编号",required: true,field: "pointCode",type: "string",},
        {title: "缓存点状态",field: "pointStatus",type: "select",dataKey: "locationStatusEnum",data: [],},
        {title: "是否禁用",field: "enableStatus",type: "select",dataKey: "enableEnum",data: [],},
      ],[
        { title: "行", field: "row", type: "string" },
        { title: "列", field: "column", type: "string" },
        { title: "深度", field: "depth", type: "string" },
        { title: "缓存点类型", field: "pointType", type: "string"},
      ],
    ]);
    const searchFormFields = ref({
      areaId: "",
      pointCode: "",
      pointStatus: "",
      enableStatus: "",
      pointType: "",
      row: "",
      column: "",
      depth: "",
    });
    const searchFormOptions = ref([
    [
        {title: "区域主键",field: "areaId",type: "string",},
        {title: "缓存点编号",field: "pointCode",type: "string",},
        {title: "缓存点状态",field: "pointStatus",type: "select",dataKey: "locationStatusEnum",data: [],},
        {title: "是否禁用",field: "enableStatus",type: "select",dataKey: "enableEnum",data: [],},
      ],[
        { title: "行", field: "row", type: "string" },
        { title: "列", field: "column", type: "string" },
        { title: "深度", field: "depth", type: "string" },
        { title: "缓存点类型", field: "pointType", type: "string"},
      ],
    ]);
    const columns = ref([
      {
        field: "id",
        title: "Id",
        type: "int",
        width: 90,
        hidden: true,
        readonly: true,
        require: true,
        align: "left",
      },
      {
        field: "areaId",
        title: "区域主键",
        type: "int",
        width: 90,
        align: "left",
      },
      {
        field: "pointCode",
        title: "缓存点编号",
        type: "string",
        width: 150,
        align: "left",
      },
      {
        field: "pointStatus",
        title: "缓存点状态",
        type: "string",
        width: 90,
        align: "left",
        bind: { key: "locationStatusEnum", data: [] },
      },
      {
        field: "enableStatus",
        title: "是否禁用",
        type: "decimal",
        width: 90,
        align: "left",
        bind: { key: "enableEnum", data: [] },
      },
      {
        field: "row",
        title: "行",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "column",
        title: "列",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "depth",
        title: "深度",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "pointType",
        title: "缓存点类型",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "Remark",
        title: "备注",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        width: 160,
        align: "left",
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改时间",
        type: "datetime",
        width: 160,
        align: "left",
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
        width: 100,
        align: "left",
      },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
      table: "",
      columns: [],
      sortName: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/record/locationStatusChangeRecord.vue
@@ -85,15 +85,15 @@
        ],
      ]);
      const searchFormFields = ref({
        deviceCode: "",
        deviceType: "",
        deviceStatus: "",
        locationCode: "",
        orderNo: "",
        taskNum: "",
      });
      const searchFormOptions = ref([
        [
          { title: "设备编号", field: "deviceCode" },
          { title: "设备类型", field: "deviceType" },
          { title: "设备状态", field: "deviceStatus" },
          { title: "货位号", field: "locationCode" },
          { title: "单据编号", field: "orderNo" },
          { title: "任务号", field: "taskNum" },
        ],
      ]);
      const columns = ref([
@@ -127,6 +127,7 @@
          type: "string",
          width: 150,
          align: "left",
          bind: { key: "locationStatusEnum", data: [] },
        },
        {
          field: "afterStatus",
@@ -134,6 +135,15 @@
          type: "decimal",
          width: 90,
          align: "left",
          bind: { key: "locationStatusEnum", data: [] },
        },
        {
          field: "changeType",
          title: "变动类型",
          type: "string",
          width: 90,
          align: "left",
          bind: { key: "stockChangeType", data: [] },
        },
        {
          field: "orderId",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/record/stockQuantityChangeRecord.vue
@@ -27,73 +27,21 @@
        sortName: "id",
      });
      const editFormFields = ref({
        deviceCode: "",
        deviceName: "",
        deviceType: "",
        deviceStatus: "",
        deviceIp: "",
        devicePort: "",
        devicePlcType: "",
        deviceRemark: "",
      });
      const editFormOptions = ref([
        [
          {
            title: "设备编号",
            required: true,
            field: "deviceCode",
            type: "string",
          },
          {
            title: "设备名称",
            required: true,
            field: "deviceName",
            type: "string",
          },
          {
            title: "设备类型",
            required: true,
            field: "deviceType",
            type: "string",
          },
          {
            title: "设备状态",
            required: true,
            field: "deviceStatus",
            type: "string",
          },
        ],
        [
          { title: "设备IP", required: true, field: "deviceIp", type: "string" },
          {
            title: "设备端口",
            required: true,
            field: "devicePort",
            type: "string",
          },
          {
            title: "PLC类型",
            required: true,
            field: "devicePlcType",
            type: "string",
          },
          {
            title: "备注",
            field: "deviceRemark",
            type: "string",
          },
        ],
      ]);
      const searchFormFields = ref({
        deviceCode: "",
        deviceType: "",
        deviceStatus: "",
        palleCode: "",
        materielCode: "",
        orderNo: "",
      });
      const searchFormOptions = ref([
        [
          { title: "设备编号", field: "deviceCode" },
          { title: "设备类型", field: "deviceType" },
          { title: "设备状态", field: "deviceStatus" },
          { title: "托盘号", field: "palleCode" },
          { title: "物料编号", field: "materielCode" },
          { title: "单据编号", field: "orderNo" },
        ],
      ]);
      const columns = ref([
@@ -183,6 +131,7 @@
          type: "int",
          width: 120,
          align: "left",
          bind: { key: "stockChangeType", data: [] },
        },
        {
          field: "changeQuantity",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue
@@ -1,16 +1,7 @@
<template>
    <view-grid
      ref="grid"
      :columns="columns"
      :detail="detail"
      :editFormFields="editFormFields"
      :editFormOptions="editFormOptions"
      :searchFormFields="searchFormFields"
      :searchFormOptions="searchFormOptions"
      :table="table"
      :extend="extend"
    >
  <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
    :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
    :table="table" :extend="extend">
    </view-grid>
  </template>
    <script>
@@ -39,61 +30,42 @@
      const editFormOptions = ref([
        [
          {
            title: "设备编号",
          title: "物料编号",
            required: true,
            field: "deviceCode",
          field: "materielCode",
            type: "string",
          },
          {
            title: "设备名称",
          title: "单据编号",
            required: true,
            field: "deviceName",
          field: "materielName",
            type: "string",
          },
          {
            title: "设备类型",
          title: "批次号",
            required: true,
            field: "deviceType",
          field: "orderNo",
            type: "string",
          },
          {
            title: "设备状态",
          title: "序列号",
            required: true,
            field: "deviceStatus",
          field: "serialNumber",
            type: "string",
          },
        ],
        [
          { title: "设备IP", required: true, field: "deviceIp", type: "string" },
          {
            title: "设备端口",
            required: true,
            field: "devicePort",
            type: "string",
          },
          {
            title: "PLC类型",
            required: true,
            field: "devicePlcType",
            type: "string",
          },
          {
            title: "备注",
            field: "deviceRemark",
            type: "string",
          },
        ],
      ]);
      const searchFormFields = ref({
        deviceCode: "",
        deviceType: "",
        deviceStatus: "",
      materielCode: "",
      materielName: "",
      orderNo: "",
      });
      const searchFormOptions = ref([
        [
          { title: "设备编号", field: "deviceCode" },
          { title: "设备类型", field: "deviceType" },
          { title: "设备状态", field: "deviceStatus" },
        { title: "物料编号", field: "materielCode" },
        { title: "物料名称", field: "materielName" },
        { title: "单据编号", field: "orderNo" },
        ],
      ]);
      const columns = ref([
@@ -169,6 +141,7 @@
          type: "string",
          width: 120,
          align: "left",
        bind: { key: "outStockStatus", data: [] },
        },
        {
          field: "creater",
@@ -225,4 +198,3 @@
    },
  });
  </script>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue
@@ -207,6 +207,13 @@
        align: "left",
      },
      {
        field: "operateType",
        title: "备注",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0411b122-4aac-4e05-87bf-b24318b57075.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/31942420-eefc-4133-80d7-b56436c46904.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3d90a9b2-baa2-48c6-95e6-a364aa3c89e1.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/44ea72ad-ffb7-4b5b-85e0-241240f07f30.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/738d6968-0808-4920-a274-cb39619f82a4.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/86da0ee4-06d1-42f2-a5bf-e1a405be4a6d.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/96826077-2dcc-4819-9493-76e6f8cc4f44.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9eee2df4-daff-4226-a579-ad61ef88678a.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a8b12b1d-7deb-4fb2-9be1-8c358e147412.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/ddd95cc1-aa8d-43ca-a1cd-af308e641ed7.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs
@@ -1,16 +1,19 @@
using SqlSugar;
using AutoMapper;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Basic;
using WIDESEA_IBasicRepository;
using WIDESEA_IRecordService;
using WIDESEA_IBasicService;
using WIDESEA_Model.Models;
@@ -18,7 +21,12 @@
{
    public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
    {
        private readonly IRecordService _recordService;
        public LocationInfoService(ILocationInfoRepository BaseDal, IBasicRepository basicRepository, IRecordService recordService) : base(BaseDal)
        {
            _basicRepository = basicRepository;
            _recordService = recordService;
        }
        private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
        {
            { nameof(Dt_LocationInfo.Depth), OrderByType.Desc },
@@ -59,6 +67,10 @@
            }
            return null;
        }
        public virtual Dt_LocationInfo? AssignLocation(string RoadwayNo)
        {
            return StoredAssignLocation(RoadwayNo);
        }
        private Dt_LocationInfo EmptyAssignLocation(string roadway)
@@ -111,5 +123,130 @@
        {
            return BaseDal.QueryFirst(x => x.RoadwayNo == locationInfo.RoadwayNo && x.Column == locationInfo.Column && x.Layer == locationInfo.Layer && x.Depth != locationInfo.Depth && x.Row != locationInfo.Row && (SqlFunc.Abs(x.Row - locationInfo.Row) == 1));
        }
        public void UpdateLocationLock(Dt_LocationInfo locationInfo, int? TaskNum)
        {
            try
            {
                if (locationInfo.Depth == 2)
                {
                    Dt_LocationInfo dt_LocationInfo = null;
                    int beforeStatus = 0;
                    if (locationInfo.Row == 1 || locationInfo.Row == 5)
                    {
                        dt_LocationInfo = BaseDal.QueryFirst(x => x.Row == locationInfo.Row + 1 && x.Layer == locationInfo.Layer && x.Column == locationInfo.Column && x.RoadwayNo == locationInfo.RoadwayNo);
                        beforeStatus = dt_LocationInfo.LocationStatus;
                        if (dt_LocationInfo != null && dt_LocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt())
                        {
                            dt_LocationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
                            BaseDal.UpdateData(dt_LocationInfo);
                        }
                    }
                    else if (locationInfo.Row == 4 || locationInfo.Row == 8)
                    {
                        dt_LocationInfo = BaseDal.QueryFirst(x => x.Row == locationInfo.Row + 1 && x.Layer == locationInfo.Layer && x.Column == locationInfo.Column && x.RoadwayNo == locationInfo.RoadwayNo);
                        beforeStatus = dt_LocationInfo.LocationStatus;
                        if (dt_LocationInfo != null && dt_LocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt())
                        {
                            dt_LocationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
                            BaseDal.UpdateData(dt_LocationInfo);
                        }
                    }
                    _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Lock.ObjToInt(), "", TaskNum);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void UpdateLocationFree(Dt_LocationInfo locationInfo, int? TaskNum)
        {
            try
            {
                if (locationInfo.Depth == 2)
                {
                    Dt_LocationInfo dt_LocationInfo = null;
                    int beforeStatus = 0;
                    if (locationInfo.Row == 1 || locationInfo.Row == 5)
                    {
                        dt_LocationInfo = BaseDal.QueryFirst(x => x.Row == locationInfo.Row + 1 && x.Layer == locationInfo.Layer && x.Column == locationInfo.Column && x.RoadwayNo == locationInfo.RoadwayNo);
                        beforeStatus = dt_LocationInfo.LocationStatus;
                        if (dt_LocationInfo != null && dt_LocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt())
                        {
                            dt_LocationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                            BaseDal.UpdateData(dt_LocationInfo);
                        }
                    }
                    else if (locationInfo.Row == 4 || locationInfo.Row == 8)
                    {
                        dt_LocationInfo = BaseDal.QueryFirst(x => x.Row == locationInfo.Row + 1 && x.Layer == locationInfo.Layer && x.Column == locationInfo.Column && x.RoadwayNo == locationInfo.RoadwayNo);
                        beforeStatus = dt_LocationInfo.LocationStatus;
                        if (dt_LocationInfo != null && dt_LocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt())
                        {
                            dt_LocationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                            BaseDal.UpdateData(dt_LocationInfo);
                        }
                    }
                    _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(dt_LocationInfo, beforeStatus, StockChangeType.Lock.ObjToInt(), "", TaskNum);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public Dt_LocationInfo isDepth(Dt_LocationInfo locationInfo)
        {
            if (locationInfo.Depth == 2)
            {
                if (locationInfo.Row == 1 || locationInfo.Row == 5)
                {
                    Dt_LocationInfo dt_LocationInfo = BaseDal.QueryFirst(x => x.Row == locationInfo.Row + 1 && x.Layer == locationInfo.Layer && x.Column == locationInfo.Column && x.RoadwayNo == locationInfo.RoadwayNo);
                    if (dt_LocationInfo != null&& dt_LocationInfo.LocationStatus==LocationStatusEnum.InStock.ObjToInt())
                    {
                        return dt_LocationInfo;
                    }
                }
                else if (locationInfo.Row == 4 || locationInfo.Row == 8)
                {
                    Dt_LocationInfo dt_LocationInfo = BaseDal.QueryFirst(x => x.Row == locationInfo.Row + 1 && x.Layer == locationInfo.Layer && x.Column == locationInfo.Column && x.RoadwayNo == locationInfo.RoadwayNo);
                    if (dt_LocationInfo != null && dt_LocationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                    {
                        return dt_LocationInfo;
                    }
                }
            }
            return null;
        }
        public void RelocationLock(Dt_LocationInfo locationInfo, Dt_LocationInfo locationInfos,int TaskNum)
        {
            int beforeStatus = locationInfo.LocationStatus;
            int beforeStatu = locationInfos.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
            locationInfos.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
            BaseDal.UpdateData(locationInfo);
            BaseDal.UpdateData(locationInfos);
            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Relocation.ObjToInt(), "", TaskNum);
            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, beforeStatu, StockChangeType.Relocation.ObjToInt(), "", TaskNum);
        }
        public void RelocationFree(Dt_LocationInfo locationInfo, Dt_LocationInfo locationInfos, int TaskNum)
        {
            int beforeStatus = locationInfo.LocationStatus;
            int beforeStatu = locationInfos.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
            locationInfos.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
            BaseDal.UpdateData(locationInfo);
            BaseDal.UpdateData(locationInfos);
            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Relocation.ObjToInt(), "", TaskNum);
            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, beforeStatu, StockChangeType.Relocation.ObjToInt(), "", TaskNum);
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WIDESEA_BasicService.csproj
@@ -8,6 +8,7 @@
  <ItemGroup>
    <ProjectReference Include="..\WIDESEA_IBasicService\WIDESEA_IBasicService.csproj" />
    <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
  </ItemGroup>
</Project>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs
@@ -30,9 +30,15 @@
        [Description("有货")]
        InStock = 2,
        /// <summary>
        /// ç©ºæ‰˜é”å®š
        /// </summary>
        [Description("空托锁定")]
        PalletLock = 98,
        /// <summary>
        /// ç©ºæ‰˜ç›˜
        /// </summary>
        [Description("空托盘")]
        Pallet = 99
    }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs
@@ -12,20 +12,32 @@
        /// <summary>
        /// ç»„盘
        /// </summary>
        [Description("")]
        [Description("组盘")]
        MaterielGroup,
        /// <summary>
        /// å…¥åº“
        /// </summary>
        [Description("")]
        [Description("入库")]
        Inbound,
        /// <summary>
        /// å‡ºåº“
        /// </summary>
        [Description("")]
        [Description("出库")]
        Outbound,
        /// <summary>
        /// ç§»åº“
        /// </summary>
        [Description("移库")]
        Relocation,
        /// <summary>
        /// å…¥åº“锁定
        /// </summary>
        [Description("锁定")]
        Lock,
    }
    /// <summary>
@@ -56,6 +68,9 @@
        [Description("出库完成")]
        å‡ºåº“完成 = 8,
        [Description("移库锁定")]
        ç§»åº“锁定 = 9,
    }
    public enum OutStockStatus
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs
@@ -155,10 +155,16 @@
        InException = 299,
        /// <summary>
        /// æ–°å»ºç§»åº“库任务
        /// æ–°å»ºç§»åº“任务
        /// </summary>
        [Description("新建移库库任务")]
        RelocationNew = 300
        [Description("新建移库任务")]
        RelocationNew = 300,
        /// <summary>
        /// ç§»åº“任务完成
        /// </summary>
        [Description("移库任务完成")]
        RelocationFinish = 310,
    }
    #endregion å…¥åº“任务状态
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
@@ -20,6 +20,12 @@
        Dt_LocationInfo AdjacentDepthLocation(string locationCode);
        Dt_LocationInfo? AssignLocation(string stationCode, int inboundType);
        Dt_LocationInfo? AssignLocation(string RoadwayNo);
        void UpdateLocationLock(Dt_LocationInfo locationInfo,int? taskNum);
        void UpdateLocationFree(Dt_LocationInfo locationInfo, int? taskNum);
        Dt_LocationInfo isDepth(Dt_LocationInfo locationInfo);
        void RelocationLock(Dt_LocationInfo locationInfo, Dt_LocationInfo locationInfos,int TaskNum);
        void RelocationFree(Dt_LocationInfo locationInfo, Dt_LocationInfo locationInfos, int TaskNum);
        WebResponseContent LocationEnableStatus(int[] keys);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs
@@ -30,7 +30,7 @@
        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "区域状态")]
        public int AreaStatus { get; set; }
        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "区域描述")]
        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "区域描述")]
        public string AreaDes { get; set; }
        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "备注")]
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail_Hty.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
{
    [SugarTable(nameof(Dt_InboundOrderDetail_Hty), "入库单明细")]
    public class Dt_InboundOrderDetail_Hty : BaseEntity
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id {  get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "入库单主键")]
        public int OrderId { get; set; }
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "物料编号")]
        public string MaterielCode {  get; set; }
        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "物料名称")]
        public string MaterielName { get; set; }
        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "批次号")]
        public string BatchNo {  get; set; }
        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "单据数量")]
        public decimal OrderQuantity {  get; set; }
        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "组盘数量", DefaultValue = "0")]
        public decimal ReceiptQuantity {  get; set; }
        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "上架数量", DefaultValue = "0")]
        public decimal OverInQuantity {  get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "订单明细状态")]
        public int OrderDetailStatus {  get; set; }
        [SugarColumn(IsNullable = true, ColumnDescription = "备注")]
        public string Remark {  get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
{
    [SugarTable(nameof(Dt_InboundOrder_Hty), "入库单")]
    public class Dt_InboundOrder_Hty : BaseEntity
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        [CodeRule(WIDESEA_Core.Enums.RuleCode.InboundOrderRule)]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "单据编号")]
        public string OrderNo { get; set; }
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "上游单据编号")]
        public string UpperOrderNo { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "单据类型")]
        public int OrderType { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "单据状态")]
        public int OrderStatus { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "创建方式")]
        public int CreateType { get; set; }
        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "备注")]
        public string Remark { get; set; }
        [Navigate(NavigateType.OneToMany, nameof(Dt_InboundOrderDetail_Hty.OrderId), nameof(Id))]
        public List<Dt_InboundOrderDetail_Hty> Details { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail_Hty.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
{
    [SugarTable(nameof(Dt_OutboundOrderDetail_Hty), "出库单明细")]
    public class Dt_OutboundOrderDetail_Hty : BaseEntity
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "出库单主键")]
        public int OrderId { get; set; }
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "物料编号")]
        public string MaterielCode { get; set; }
        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "物料名称")]
        public string MaterielName { get; set; }
        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "批次号")]
        public string BatchNo { get; set; }
        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "单据数量")]
        public decimal OrderQuantity { get; set; }
        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "锁定数量", DefaultValue = "0")]
        public decimal LockQuantity { get; set; }
        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "已出数量", DefaultValue = "0")]
        public decimal OverOutQuantity { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "订单明细状态")]
        public int OrderDetailStatus { get; set; }
        [SugarColumn(IsNullable = true, ColumnDescription = "备注")]
        public string Remark { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
{
    [SugarTable(nameof(Dt_OutboundOrder_Hty), "出库单")]
    public class Dt_OutboundOrder_Hty : BaseEntity
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        [CodeRule(WIDESEA_Core.Enums.RuleCode.OutboundOrderRule)]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "单据编号", IsOnlyIgnoreUpdate = true)]
        public string OrderNo { get; set; }
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "上游单据编号", IsOnlyIgnoreUpdate = true)]
        public string UpperOrderNo { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "单据类型", IsOnlyIgnoreUpdate = true)]
        public int OrderType { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "单据状态")]
        public int OrderStatus { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "创建方式", IsOnlyIgnoreUpdate = true)]
        public int CreateType { get; set; }
        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "备注")]
        public string Remark { get; set; }
        [Navigate(NavigateType.OneToMany, nameof(Dt_OutboundOrderDetail_Hty.OrderId), nameof(Id))]
        public List<Dt_OutboundOrderDetail_Hty> Details { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs
@@ -95,7 +95,7 @@
        public string NextAddress { get; set; }
        /// <summary>
        /// å¼‚常信息
        /// å•据编号
        /// </summary>
        [ImporterHeader(Name = "单据编号")]
        [ExporterHeader(DisplayName = "单据编号")]
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs
@@ -44,14 +44,6 @@
            if (stockInfo.Id == 0)
            {
                BaseDal.Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
                //stockQuantityChangeRecords = _mapper.Map<List<Dt_StockQuantityChangeRecord>>(stockInfo.Details);
                //stockQuantityChangeRecords.ForEach(x =>
                //{
                //    x.PalleCode = stockInfo.PalletCode;
                //    x.BeforeQuantity = 0;
                //    x.ChangeQuantity = x.AfterQuantity - x.BeforeQuantity;
                //    x.ChangeType = StockChangeType.MaterielGroup.ObjToInt();
                //});
                details = stockInfo.Details;
            }
            else
@@ -67,19 +59,7 @@
                }
                //stockQuantityChangeRecords = _mapper.Map<List<Dt_StockQuantityChangeRecord>>(stockInfo.Details);
                //int index = 0;
                //stockQuantityChangeRecords.ForEach(x =>
                //{
                //    x.PalleCode = stockInfo.PalletCode;
                //    x.BeforeQuantity = 0;
                //    x.ChangeQuantity = x.AfterQuantity - x.BeforeQuantity;
                //    x.ChangeType = StockChangeType.MaterielGroup.ObjToInt();
                //    x.StockDetailId =
                //    index++;
                //});
            }
            //_stockQuantityChangeRecordRepository.AddData(stockQuantityChangeRecords);
            stockInfo.Details = details;
            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) + beforeQuantity, StockChangeType.MaterielGroup);
        }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs
@@ -532,6 +532,54 @@
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
                    case "stockChangeType":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(StockChangeType);
                            List<int> enums = Enum.GetValues(typeof(StockChangeType)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(StockChangeType).GetField(((StockChangeType)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
                                    data.Add(new { key = item.ToString(), value = description.Description });
                                }
                                else
                                {
                                    data.Add(new { key = item.ToString(), value = item.ToString() });
                                }
                                index++;
                            }
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
                    case "outStockStatus":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(OutStockStatus);
                            List<int> enums = Enum.GetValues(typeof(OutStockStatus)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(OutStockStatus).GetField(((OutStockStatus)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
                                    data.Add(new { key = item.ToString(), value = description.Description });
                                }
                                else
                                {
                                    data.Add(new { key = item.ToString(), value = item.ToString() });
                                }
                                index++;
                            }
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
                }
                return result;
            }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoRepository/TaskRepository.cs
@@ -36,7 +36,8 @@
        public int GetTaskNum(string sequenceName)
        {
            return Db.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceName}").ObjToInt();
            //return Db.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceName}").ObjToInt();
            return Db.Ado.GetScalar($"SELECT NEXT VALUE FOR GetTaskNum").ObjToInt();
        }
        public override int AddData(Dt_Task entity)
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -8,6 +8,7 @@
using WIDESEA_Core;
using WIDESEA_Model.Models;
using WIDESEA_Core.Helper;
using Microsoft.Extensions.Logging;
namespace WIDESEA_TaskInfoService
{
@@ -100,6 +101,7 @@
            try
            {
                Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(stationCode, taskType);
                //Dt_LocationInfo dt_LocationInfo = null;
                if (locationInfo != null)
                {
                    Dt_Task task = new()
@@ -121,6 +123,8 @@
                    if (isUpdateStock)
                    {
                        locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
                        _basicService.LocationInfoService.UpdateLocationLock(locationInfo,task.TaskNum);
                        if (stockInfo != null && stockInfo.Details != null && stockInfo.Details.Count > 0)
                        {
                            orderNo = stockInfo.Details.FirstOrDefault()?.OrderNo ?? "";
@@ -134,6 +138,7 @@
                        }
                    }
                    _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                    //_basicService.LocationInfoService.Repository.UpdateData(dt_LocationInfo);
                    _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), orderNo, task.TaskNum);
                    return content = WebResponseContent.Instance.OK();
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -148,6 +148,10 @@
            try
            {
                _unitOfWorkManage.BeginTran();
                //判断移库
                /*List<Dt_Task> RelocationTasks = */
                RelocationTask(tasks);
                //BaseDal.AddData(RelocationTasks);
                BaseDal.AddData(tasks);
                if (stockInfos != null && outboundOrderDetails != null && outStockLockInfos != null && locationInfos != null)
@@ -182,6 +186,73 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// ç§»åº“任务
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public WebResponseContent RelocationTask(List<Dt_Task> task)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                for (int i = 0; i < task.Count; i++)
                {
                    Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task[i].SourceAddress && x.RoadwayNo == task[i].Roadway);
                    if (locationInfo != null)
                    {
                        Dt_LocationInfo location = _basicService.LocationInfoService.isDepth(locationInfo);
                        if (location != null)
                        {
                            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == location.LocationCode);
                            if (stockInfo != null && location.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                            {
                                Dt_LocationInfo? locationInfos = _basicService.LocationInfoService.AssignLocation(location.RoadwayNo);
                                if(locationInfos != null)
                                {
                                    Dt_Task tasks = new()
                                    {
                                        CurrentAddress = location.LocationCode,
                                        Grade = 0,
                                        PalletCode = stockInfo.PalletCode,
                                        NextAddress = locationInfos.LocationCode,
                                        Roadway = location.RoadwayNo,
                                        SourceAddress = location.LocationCode,
                                        TargetAddress = locationInfos.LocationCode,
                                        TaskStatus = InTaskStatusEnum.RelocationNew.ObjToInt(),
                                        TaskType = TaskTypeEnum.Relocation.ObjToInt(),
                                        TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
                                    };
                                    BaseDal.AddData(tasks);
                                    stockInfo.StockStatus = StockStatusEmun.移库锁定.ObjToInt();
                                    _stockService.StockInfoService.UpdateData(stockInfo);
                                    _basicService.LocationInfoService.RelocationLock(location, locationInfos,tasks.TaskNum);
                                }
                                else
                                {
                                    return content = WebResponseContent.Instance.Error("未找到可分配货位");
                                }
                            }
                            else
                            {
                                return content = WebResponseContent.Instance.Error("未找到库存信息");
                            }
                        }
                    }
                    else
                    {
                        return content = WebResponseContent.Instance.Error("任务信息异常");
                    }
                }
            }
            catch (Exception ex)
            {
                return content = WebResponseContent.Instance.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
@@ -270,11 +341,17 @@
                    TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
                    TaskType = TaskTypeEnum.PalletOutbound.ObjToInt(),
                };
                int beforeStatus = locationInfo.LocationStatus;
                _unitOfWorkManage.BeginTran();
                stockInfo.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
                locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
                BaseDal.AddData(task);
                _stockService.StockInfoService.UpdateData(stockInfo);
                _basicService.LocationInfoService.UpdateLocationLock(locationInfo, task.TaskNum);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Relocation.ObjToInt(), "", task.TaskNum);
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
            }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -61,10 +61,11 @@
        private readonly IRecordService _recordService;
        private readonly IStockService _stockService;
        private readonly ITask_HtyService _taskHtyService;
        private readonly ILocationInfoService _locationInfoService;
        public ITaskRepository Repository => BaseDal;
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
@@ -74,6 +75,7 @@
            _recordService = recordService;
            _stockService = stockService;
            _taskHtyService = taskHtyService;
            _locationInfoService = locationInfoService;
        }
        /// <summary>
@@ -110,6 +112,8 @@
        public WebResponseContent InboundTaskCompleted(Dt_Task task)
        {
            decimal beforeQuantity = 0;
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
            Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
@@ -119,15 +123,18 @@
            stockInfo.LocationCode = locationInfo.LocationCode;
            stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
            _stockService.StockInfoService.Repository.UpdateData(stockInfo);
            beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
            int beforeStatus = locationInfo.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
            //BaseDal.DeleteData(task);
            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) + beforeQuantity, StockChangeType.Inbound);
            return WebResponseContent.Instance.OK();
        }
@@ -153,6 +160,7 @@
            int beforeStatus = locationInfo.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
@@ -203,6 +211,7 @@
            int beforeStatus = locationInfo.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
@@ -225,6 +234,7 @@
            int beforeStatus = locationInfo.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
@@ -234,5 +244,30 @@
            return WebResponseContent.Instance.OK();
        }
        public WebResponseContent RelocationTaskCompleted(Dt_Task task)
        {
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
            Dt_LocationInfo locationStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
            Dt_LocationInfo locationEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
            CheckCompleted(stockInfo, locationStart);
            stockInfo.LocationCode = locationEnd.LocationCode;
            stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
            _stockService.StockInfoService.Repository.UpdateData(stockInfo);
            //locationStart.LocationStatus = LocationStatusEnum.Free.ObjToInt();
            _basicService.LocationInfoService.RelocationFree(locationStart, locationEnd, task.TaskNum);
            //_basicService.LocationInfoService.Repository.UpdateData(locationStart);
            task.TaskStatus = InTaskStatusEnum.RelocationFinish.ObjToInt();
            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
            return WebResponseContent.Instance.OK();
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/CachePointController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core.BaseController;
using WIDESEA_IBasicService;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers.Basic
{
    [Route("api/CachePoint")]
    [ApiController]
    public class CachePointController : ApiBaseController<ICachePointService, Dt_CachePoint>
    {
        public CachePointController(ICachePointService service) : base(service)
        {
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -6,7 +6,7 @@
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun",
  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus",
  "AllowedHosts": "*",
  "ConnectionStringsEncryption": false,
  "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true