近期基于WTM框架开发了一套采购数据分析与预警系统,前端用的是框架Vue模板。
框架上手成本很低,按官网文档快速创建一个项目:
「链接」
快速创建Vue+Net6前后分离项目
项目创建完成后,正常情况下用VS打开直接F5即可运行。
WTM的代码生成可以用来解决一些基础数据管理功能,比如供应商基本信息管理、预警规则配置、同步日志、预警接收人配置等增删改查,其它功能主要是定制化开发。
项目需求主要有三大模块:
一、数据抽取与清洗
二、数据查询与分析
三、数据预警与消息提醒
数据抽取和消息发送使用了WtmJob来处理,注意Wtm的Job需要放在Web层,我之前放在ViewModel层怎么都跑不起来,看了源码后才知道是从反射中获取当前启动目录的程序集。
其它模块我比较喜欢面向接口开发,基本都是一个接口(IXxxxxService、一个或多个实现,然后添加到IOC容器,在Controller中注入即可使用。
关于前后端的配置
appsettings.json
IsQuickDebug:是否为开发模式,在部署到生产时一定要关掉,否则影响权限管理
/ClientApp/.../config/index.ts是前端的配置文件
development:默认为true,如果要在本地调试权限管理,必须关掉
开发过程中遇到的问题总结
问题1:Mac环境下F5运行报错:
ERR_OSSL_EVP_UNSUPPORTED
Error: error:0308010C:digital envelope routines::unsupported
解决方法:修改package.json,添加 NODE_ENV=development NODE_OPTIONS=--openssl-legacy-provider,如下图
问题2:自定义接口方法名导致前端请求报无权限访问
如下图所示,HttpGet中我一开始是用的别名,前端调用接口用的也是别名,在开发模式下一切正常请求。发布到生产后,在菜单编辑-》添加动作-》角色管理-》分配权限后产生的地址是以真实方法名为主,导致我所有请求接口都是无权限访问。。。
解决办法:修改所有Controller中的接口名称,去掉Async后缀、HttpGet中使用[action]
以上就是在使用WTM框架时遇到的问题及解决方法,经过2周的开发,系统顺利开发完成并上线,来看下效果图:
下钻
下钻
系统分四层进行数据展现:
第一层:数据总览
第二层:按维度分析:类型、方式、部门、供应商等
第三层:项目列表
第四层:项目详情
系统亮点与价值
1、实现了数据层层下钻
2、实现供应商关系图谱
3、每月发送采购分析报告给业务部门,提示采购风险
--------------
关于杭州易步数字科技:
使用最新、最稳定的技术,为客户提供专业的软件定制化开发和服务。
专注一件事,做好每件事!
联系我,获取更多解决方案