采购申请单明细账/汇总账页面编写

news2024/11/16 3:43:09

业务需求和功能

1、功能:编写采购申请页面和采购申请管理页面。在申请单界面添加常用的查询条件,如单品、申请单等。在采购申请管理页面以单品维度去展示采购申请单的汇总信息,添加一个默认查询时间为7天,并对查询出来的不同状态申请单的做数量的自动汇总。
2、具体实现:编写两个订单的实体类,并通过@IOC注解将实体类交给系统容器管理,。在service层中编写业务逻辑,html做页面的静态页面,c#做动态界面与后端进行交互,。
3、特殊说明:为了页面美观,做了以下两点优化。使用内置标签函数如@Columns,绑定app页面中的表头,使得打开页面默认展示表头。并对后端查询到的特殊数据做客户端转换,方便客户观看。如申请单的状态,后端查到的是10,前端需要显示状态为编辑中。
在这里插入图片描述

具体代码实现

创建html作为采购申请明细账的静态界面

下面是具体代码:

**<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="../../common/common.css" rel="stylesheet" type="text/css" />
    <link href="../../common/tabs.css" rel="stylesheet" type="text/css" />
    <link href="../../common/listview.css" rel="stylesheet" type="text/css" />
    <style>
        .with_label > text:first-child {
            width: 6em;
        }
        .more_search > popup .with_label > text:first-child {
            width: 7em!important;
        }
        #purchase_collect_detail [qp="provider_id"] {
            behavior: transform!important;
        }
        td[hf="onway_count"] {
            assigned!: self.title="采购量-采购到货量-采购已入库量(小于0则为0)";
        }
        td[hf="stockin_no_num"] {
            assigned!: self.title="采购量-采购已入库量(小于0则为0)";
        }
        td[hf="stockin_no_amount"] {
            assigned!: self.title="总金额-入库金额";
        }
    </style>
</head>
<body>
    <!-- 注解:这是一个图片元素,用于显示采购统计详情的帮助 -->
    <img help="statistics_purchaseDetail" />
    
    <div class="flat_bar">
        <!-- 注解:这是一个具有类名 "flat_bar" 的 div 元素 -->
        <div persist="purchase_collect_detail">
            <!-- 注解:这是一个持久化的 div 元素,用于采购信息的收集 -->
            <div class="search_bar">
                <!-- 注解:这是一个搜索栏,包含了多个搜索条件 -->
                <div class="with_label">申请单状态
                    <widget type="select-dropdown" fixedrows="2" qp="status" defval="-1">
                        <!-- 注解:这是一个下拉框部件,用于选择申请单状态 -->
                        <option value="-1" selected>全部</option>
                        <option value="30">待审核</option>
                        <option value="35">待财审</option>
                        <option value="40">已审核</option>
                        <option value="90">已完成</option>
                    </widget>
                </div>
                <!-- ... 其他搜索条件的注解 ... -->
                <btn id="btn_search">搜索</btn>
                <!-- 注解:这是一个按钮,用于触发搜索操作 -->
            </div>
        </div>
    </div>
    
    <div class="hori expand">
        <!-- 注解:这是一个水平扩展的 div 元素 -->
        <table id="goods_sell_list" 
            row_template=".temp > tr"
            fixedrows="1"
            fixedlayout
            class="listview expand"
            next_page_btn="#btn_next_page"
            prev_page_btn="#btn_prev_page"
            first_page_btn="#btn_first_page"
            last_page_btn="#btn_last_page"
            refresh_btn="#btn_refresh"
            select_all_btn="#btn_sel_all"
            rselect_btn="#btn_rev_sel"
            total_count="#total_count"
            total_page="#total_page"
            current_page="#current_page"
            selected_count="#selected_count"
            total="sum(num),sum(arrive_num),sum(to_purchase_num),sum(onway_count),sum(amount),sum(stockin_num),sum(stockin_amount),sum(stockin_no_num),sum(stockin_no_amount),sum(invoice_num),sum(invoice_amount),sum(confirm_num),sum(stockin_num_amount),sum(price_amount),sum(arrive_more_num)">
        </table>
    </div>
    <!-- ... 其他注解 ... -->
</body>
</html>
**

需要注意上面中的两个按钮功能:
1、btn_search

 <btn id="btn_search">搜索</btn>
这是一个按钮,点击可触发搜索操作 ,与c#中的点击事件方法调用交互。
点击搜索按钮触发该标记下方的void OnClickSearch()回调函数。
[Click("#btn search")]
void OnClickSearch()

2、flat_bar
可以后期查询中获取页面输入信息作为搜索条件。下面是c#中使用的代码:

当前实例对象中匹配选择器"flat bar"的元素转为后续查询的参数
var queryParams = this.ToQueryParam(",flat_bar");

C#创建采购申请单明细的交互窗口

该窗口中包括页面的初始化,时间的回调函数调用、还有加载数据库的缓存配置信息,在此处没有用到。下面定义了一个简单的交互窗口,通过点击事件调用后端的statistic,Purchasestatistic,purchaseApplyDetail方法,将查询结果绑定到页面的表格元素 #goods sell list 中,并可能进行分页显示。需要注意的是#goods sell list相当于一个标签,需要提前在html文件中定义好表格元素。

[Window(Title="采购申请单明细账", View="statistic/sta_purchase/purchase_apply_detail.html", Style=Style.WS_VISIBLE|Style.WS_CHILD|Style.WS_CLIPCHILDREN, Width=960, Height=640)]
	public class PurchaseApplyDetailWindow : BaseWindow<Object>
	{
		Dictionary<string, string> custHeaders=null;

		public PurchaseApplyDetailWindow()
		{

		}

		// OnLoad() 方法在窗口加载完成后被调用,可以用来执行一些初始化操作或加载数据。
		protected override void OnLoad()
		{
			// 在窗口加载完成后,加载表头
			custHeaders = ControlUtils.LoadCustomPropName(this, CustomAttrType.PURCHASE_GOODS_PROP, "prop", "");
			Q("#goods_sell_list").Xcall("attach2", "statistic.PurchaseStatistic.purchaseApplyDetail", custHeaders);
		}

		// 搜索按钮被点击时的回调函数
		[Click("#btn_search")]
		void OnClickSearch()
		{
			// 当前实例对象中匹配选择器".flat_bar"的元素转换为查询参数形式。
			var queryParams = this.ToQueryParam(".flat_bar");
			Q("#goods_sell_list").DbPageBind2("statistic.PurchaseStatistic.purchaseApplyDetail", custHeaders, queryParams);
		}
	}

需要注意,每次在加载新页面的时候,都需要先运行onload方法加载一些初始的配置。如这里通过 .Xcall 函数获取函数中定义的表头元素,并将其绑定在页面元素#goods_sell_list中。

java创建Java实体类,并交给系统容器中管理

@IoC
public class PurchaseApplyEntry
{@Inject
	PurchaseApplyService purchaseApplyService;/**
	 * 查询采购申请单明细
	 */
	@Export
	@Columns("(purchase_apply_no,申请单号)(status,状态)(creator_id,申请人)(warehouse_id,仓库)(main_remark,主单备注)(expected_time,期望到货时间)(modified,修改时间)(created,创建时间)(goods_name,货品名称)(goods_no,货品编号)(short_name,货品简称)(spec_name,规格名称)(spec_no,商家编码)(provider_id,供应商)(num,申请采购数量)(ref_num,已引用数量)(detail_remark,明细备注)")
	@BindAttributes("rec_id,brand_id,class_id,apply_id")
	@Transforms("(status,purchaseapply_status)(num,goods_count)(ref_num,goods_count)")
	@ServerTransforms("warehouse_name(warehouse_id<),employee_name(creator_id<),provider_name(provider_id<),goods_brand(brand_id<),goods_class(class_id<)")
	public Response queryApplyDetail(Session session, Map<String, Object> params, Pager pager) throws SQLException
	{
		return purchaseApplyService.queryApplyDetail(session, params, pager);
	}

这是一个 Java 类。它使用了一些注解,如 @IoC 和 @Inject,这表明它可能与一个依赖注入框架(如Spring)相关联,用于管理对象之间的依赖关系和实例化。以下是这个类的一些关键部分和功能的解释:

1、@IoC注解: 这个注解通常用于表示该类是一个由依赖注入容器管理的组件,容器会负责实例化和维护该类的对象。
2、@Inject’注解: 这是一种依赖注入的注解,用于注入PurchaseApplyService’类的实例到purchaseApplyService'字段中。
3、queryApplyDetai方法: 这个方法用于查询采购申请单明细。它接受一个会话(Session) 对象、参数(params) 和一个分页器 (Pager) 作为输入,并返回一个Response’对象。具体的功能包括:
	3.1、使用@Export注解定义了查询返回的列,以及这些列在查询结果中的显示名使用~@BindAttributes*注解定义了一些属性,如 rec_id’、brand_idclass_idapply_id'
	
	3.2、使用@Transforms注解定义了一些列的转换,将查询结果中的列进行重命名或转换成其他列。
	
	3.3、使用ServerTransforms注解定义了一些服务端转换,可能用于获取与仓库、创建者、供应商、品牌等相关的信息。
	
	3.4、调用purchaseApplyService.queryApplyDetail’方法,将输入的参数传递给该方法然后返回方法的结果。

设计采购申请单明细表service层的页面逻辑

public Response queryApplyDetail(Session session, Map<String, Object> params, Pager pager) throws SQLException
	{
		DbSession db = session.db(false);

		Where where = new Where(params, session)
		{
			{
				equal("warehouse_id", "pa.warehouse_id");
				equal("purchase_apply_no", "pa.purchase_apply_no");
				equal("spec_no", "gs.spec_no");
				equal("goods_no", "gg.goods_no");
				equal("creator_id", "pa.creator_id");
				like("remark", "pad.remark");
				equal("provider_id", "pad.provider_id");
				in("status", "pa.status");
				condition("pad.real_num > pad.ref_num");
			}
		}.orderBy("pad.apply_id");

		Table table = new Table("purchase_apply_detail pad", "pad.rec_id", where)
		{
			{
				innerJoin("purchase_apply pa", "pa.rec_id = pad.apply_id", "pa.,pad.");
				innerJoin("goods_spec gs", "gs.spec_id = pad.spec_id", "gs.,gg.");
				innerJoin("goods_goods gg", "gg.goods_id = gs.goods_id", "gg.");
			}
		}
		.extraJoin("purchase_apply pa", "pa.rec_id = pad.apply_id")
		.extraJoin("goods_spec gs", "gs.spec_id = pad.spec_id")
		.extraJoin("goods_goods gg", "gg.goods_id = gs.goods_id");

		String fields = "pad.rec_id, pa.rec_id AS apply_id, pa.purchase_apply_no, pa.status, pa.creator_id, pa.warehouse_id, pa.remark AS main_remark, pa.expected_time, pa.modified, pa.created, "
				+ " gg.goods_name, gg.goods_no, gg.short_name, gg.class_id, gg.brand_id, gs.spec_name, gs.spec_no, pad.num, pad.ref_num, pad.remark AS detail_remark, pad.provider_id";

		table.setOutputFields(fields);

		return SqlUtils.pageQuery(db, pager, table, where);
	}

此处需要注意,我们使用了inner join来根据页面填写的信息过滤所需要的采购申请单明细。使用了extra Join作为外连接,来补充展示除了采购申请表明细中的别的信息,如商品id。下图是整个表的关系图
在这里插入图片描述
下图为分别输入单品id和货品id的结果。可以看到,如果添加了单品信息,因为该信息在pad表中能找到,所以在innerjoin中就不会进行对gg和gs的连表。如果添加了商品查询条件,就会触发gg和gs的连表。
在这里插入图片描述在这里插入图片描述
以上采购申请单明细账任务结束。

第二个功能:采购申请单汇总账编写

功能说明:编写采购申请单汇总页面,用于展示以单品为维度的汇总信息
要求:
编写采购申请单汇总账页面
具备针对申请单、货品、单品的常用查询条件,可参考采购申请单管理页面
具备创建时间搜索条件,默认值设置为最近7天
具备申请数量汇总,已引用量汇总,编辑中数量汇总,待确认数量汇总,单据数量汇总列

汇总账c#代码

[Window(Title="采购申请单汇总账", View="statistic/sta_purchase/purchase_apply_collect.html", Style=Style.WS_VISIBLE|Style.WS_CHILD|Style.WS_CLIPCHILDREN, Width=960, Height=640)]
	public class PurchaseApplyCollectWindow : BaseWindow<Object>
	{
		Dictionary<string, string> custHeaders=null;

		public PurchaseApplyCollectWindow()
		{

		}

		// OnLoad() 方法在窗口加载完成后被调用,可以用来执行一些初始化操作或加载数据。
		protected override void OnLoad()
		{

			// 将建单日期初始化为当日
			DateTime currDate = DateTime.Now;

			DateTime preDate = currDate.Subtract(TimeSpan.FromDays(7));
				
			var fromDate = preDate.ToString("yyyy-MM-dd hh:mm:ss");
			var endDate = currDate.ToString("yyyy-MM-dd hh:mm:ss");

			Q("#start_date").SetValue(fromDate);

			Q("#end_date").SetValue(endDate);


			// 在窗口加载完成后,加载表头
			custHeaders = ControlUtils.LoadCustomPropName(this, CustomAttrType.PURCHASE_GOODS_PROP, "prop", "");
			Q("#goods_sell_list").Xcall("attach2", "statistic.PurchaseStatistic.purchaseApplyCollectBySpec", custHeaders);
		}

		// 搜索按钮被单击时的回调函数
		[Click("#btn_search")]
		void OnClickSearch()
		{
			// 当前实例对象中匹配选择器".flat_bar"的元素转换为查询参数形式。
			var queryParams = this.ToQueryParam(".flat_bar");
			Q("#goods_sell_list").DbPageBind2("statistic.PurchaseStatistic.purchaseApplyCollectBySpec", custHeaders, queryParams);
		}
			
	}

解释:
1、OnLoad() 方法在窗口加载完成后被调用,可以用来执行一些初始化操作或加载数据(这里设置页面属性的开始时间为距今天7天以前,结束时间为当前时间)
2、在窗口加载完成后,加载表头。通过Xcall绑定后端statistic.PurchaseStatistic.purchaseApplyCollectBySpec方法定义的表头
3、设计搜索按钮被单击时的回调函数。当前实例对象中匹配选择器".flat_bar"的元素转换为查询参数形式,通过DbPageBind2将其传入到purchaseApplyCollectBySpec方法中,并将结果保存在页面元素#goods_sell_list中

汇总账java代码

@Export
	@Columns("(spec_name, 单品名称)(spec_code, 规格码)(spec_no, 商家编码)(goods_no, 货品编号)(goods_name, 货品名称)(sum_num, 申请数量)(ref_sum_num, 引用数量)(editing_num, 编辑中数量)(noConfirm_num, 待确认数量)(apply_num, 单据数量)(class_name, 分类)(brand_name, 品牌)")
	@Transforms("(sum_num,goods_count)(ref_sum_num,goods_count)(noConfirm_num,goods_count)(editing_num,goods_count)")
	@ServerTransforms("goods_class(class_id+class_name),goods_brand(brand_id+brand_name)")
	public Response purchaseApplyCollectBySpec(Session session, Map<String, Object> params, Pager pager)
			throws SQLException, AppException
	{
		return purchaseStatisticService.purchaseApplyCollect(session, params, pager);
	}

public Response purchaseApplyCollect(Session session, Map<String, Object> params, Pager pager) throws SQLException
	{
		DbSession db = session.db(false);

		Where where = new Where(params, session)
		{
			{
				// 根据申请单号搜索
				equal("purchase_apply_no", "pa.purchase_apply_no");
				// 根据申请单状态搜索
				equal("status", "pa.status");
				// 根据货品编号搜索
				equal("goods_no", "gg.goods_no");
				// 根据单品编号搜索
				equal("spec_id", "pad.spec_id");
				// 根据申请人ID搜索
				equal("creator_id", "pa.creator_id");
				// 根据商家编码搜索
				equal("spec_no", "gs.spec_no");
				// 根据货品简称搜索(考虑需求。考虑是否需要模糊查询)
				equal("short_name", "gg.short_name");
				// 根据单品名称搜索
				equal("spec_name", "gs.spec_name");
				// 根据期望到货日期搜索
				dateBetween("excepted_begin", "excepted_end", "pa.expected_time");
				// 根据申请日期搜索
				dateBetween("create_begin", "create_end", "pad.created");
				// 根据仓库搜索
				equal("warehouse_id", "pa.warehouse_id");
			}
		}.groupBy("pad.spec_id").orderBy("pad.spec_id");

		String innerFields = "pad.spec_id,IFNULL(SUM( pad.num ),0) AS sum_num, IFNULL(SUM( pad.ref_num ),0) AS ref_sum_num, sum(if(pa.status='10', pad.num, 0)) as editing_num, sum(if(pa.status='20',pad.num, 0)) as noConfirm_num, count(*) as apply_num";

		// 没有用的表不要连接
		Table table = new Table("purchase_apply_detail pad", innerFields, where)
		{
			{
				innerJoin("purchase_apply pa", "pad.apply_id = pa.rec_id", true);
				innerJoin("goods_spec gs", "pad.spec_id = gs.spec_id", "gs.,gg.");
				innerJoin("goods_goods gg", "gs.goods_id = gg.goods_id", "gg.");
			}
		}.extraJoin("goods_spec gs", "tmp.spec_id = gs.spec_id")
				.extraJoin("goods_goods gg", "gs.goods_id = gg.goods_id");

		// 返回的列中,第一个要是能唯一标识一条记录的列
		String fields = "gs.spec_id, gs.goods_id, gs.spec_no , gs.spec_code , gs.provider_id , gs.barcode , gs.spec_name , gs.wms_process_mask , gs.is_not_need_examine , gs.goods_label, gs.prop1,  gs.prop2," + "gg.goods_type , gg.goods_no , gg.goods_name , gg.short_name , gg.alias , gg.spec_count , gg.class_id , gg.brand_id,";
		fields += "sum_num, ref_sum_num, editing_num, noConfirm_num, apply_num";
		table.setOutputFields(fields);

		return SqlUtils.pageQuery(db, pager, table, where);
	}

总的来说,这个就是根据输入条件信息,对数据库做一个查询操作,并通过pageQuery函数分页展示结果

至此,两个界面的创建任务完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1152436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【设计模式三原则】

设计模式三原则 单一职责原则开放封闭原则依赖倒转原则里氏代换原则 我们在进行程序设计的时候&#xff0c;要尽可能地保证程序的可扩展性、可维护性和可读性&#xff0c;所以需要使用一些设计模式&#xff0c;这些设计模式都遵循了以下三个原则&#xff0c;下面来依次为大家介…

目标检测算法-SSD

1. SSD介绍 计算机确定图像中一个物体的位置需要四个参数&#xff1a;中心点的x轴、y轴坐标、框的高和宽。 当一张图片被传入SSD的网络中时&#xff0c;图片首先会被调整为300*300的大小。为了防止失真&#xff0c;其会在图片的边缘加上灰条。 之后SSD会将这种图片分为六种不…

IR2104/IR2184电机方案选择

供电越大Rdson越小 D3要用快恢复或者超快恢复不要用肖特基 上图有自举电容的取值公式&#xff0c;自举电容不能用电解电容&#xff0c;最好使用C0G因为它在不停的充放电 C31必须大于10倍C28

基于探路者算法的无人机航迹规划-附代码

基于探路者算法的无人机航迹规划 文章目录 基于探路者算法的无人机航迹规划1.探路者搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用探路者算法来优化无人机航迹规划。 1.探路者…

LeetCode 2742.给墙壁刷油漆

思路 dp(u,count)为当前再考虑下标为1-u的墙面&#xff0c;并且还有count免费工次的最小代价 主要是递归边界的选择&#xff1a; u1<count return 0; if(u-1&&count<0)return 0x3f3f3f3f; if(u-1&&count0)retrun 0; 这三个可以合并成 if(u<count) …

k8s基本操作命令

目录 1、//查看资源对象简写 2、//查看集群信息 3、//配置kubectl自动补全 4、//node节点查看日志 5、//查看 master 节点状态 6、//查看命令空间 7、//查看default命名空间的所有资源 8、//创建命名空间app 9、//删除命名空间app 10、//在命名空间kube-public 创建…

量子计算与量子密码(入门级-少图版)

量子计算与量子密码 写在最前面一些可能带来的有趣的知识和潜在的收获 1、Introduction导言四个特性不确定性&#xff08;自由意志论&#xff09;Indeterminism不确定性Uncertainty叠加原理(线性)superposition (linearity)纠缠entanglement 虚数的常见基本运算欧拉公式&#x…

指针运算笔试题解析(2)

指针运算笔试题解析 题目一解析 题目二解析 压轴题&#xff08;困难&#xff09;解析 题目一 #include <stdio.h> int main() {int aa[2][5] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int *ptr1 (int *)(&aa 1);int *ptr2 (int *)(*(aa 1));printf( "%d&#x…

学习笔记二十五:持久化存储

这里写目录标题 在k8s中为什么要做持久化存储查看k8s支持哪些存储常用的如下&#xff1a;使用存储卷&#xff0c;需要经历如下步骤 k8s持久化存储&#xff1a;emptyDirk8s持久化存储&#xff1a;hostPathhostpath存储卷缺点 k8s持久化存储&#xff1a;nfs搭建nfs服务k8snode2和…

Vue+Echarts 图表 x轴y轴添加单位字段

需求 代码 两个选择其中一个即可&#xff0c;Y轴也是如此设置 xAxis:{name: 月,// 这个设置只在末尾添加单位axisLabel: {formatter: {value}月 // 在每个x轴坐标都添加了单位} }yAxis:{name: 月,// 这个设置只在末尾添加单位axisLabel: {formatter: {value}月 // 在每个x轴坐…

这个提示词,别人不说,自己绝对想不到

AGI火了一年了&#xff0c;不知道大家的热情还在不在&#xff0c;还有没有在跟进相关的知识&#xff0c;技术&#xff0c;工具与最佳实践。对于我&#xff0c;Claude已经是常驻电脑右下角。 很多朋友问我&#xff0c;说哪些岗位会被颠覆掉&#xff0c;哪些人会被淘汰&#xff0…

【Redis】高并发分布式结构服务器

文章目录 服务端高并发分布式结构名词基本概念评价指标1.单机架构缺点 2.应用数据分离架构应用服务集群架构读写分离/主从分离架构引入缓存-冷热分离架构分库分表&#xff08;垂直分库&#xff09;业务拆分⸺微服务 总结 服务端高并发分布式结构 名词基本概念 应⽤&#xff0…

Mac电脑Android Studio和VS Code配置Flutter开发环境(图文超详细)

一、安装Android Studio 官网地址&#xff1a; https://developer.android.google.cn/ 历史版本下载地址&#xff1a; https://developer.android.com/studio/archive?hlzh-cn 二、安装Xcode 到App Store下载安装最新版本&#xff0c;如果MacOS更新不到13.0以上就无法安装…

Ajax学习笔记第5天

无论做什么&#xff0c;都请记得那是为自己而做&#xff0c;那就毫无怨言&#xff01; 【1. 跨域】 1.什么是跨域 跨域是指浏览器不能执行其他网站的脚本。它是浏览器同源策略造成的&#xff0c;是浏览器对JS实施的安全限制。 2.常见的跨域场景 3.什么事同源策略 &#xff…

python + requests接口自动化测试详解

框架详细教程前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行的接口测试&#xff0c;后来&#xff0c;组内有人讲原先web自动化的测试框架移驾成接口的自动化框架&…

电子学会C/C++编程等级考试2023年05月(六级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:字符串插入 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的’\0’。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。 时间限制:1000 …

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测(自注意力机制)

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09; 目录 分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09;分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Mat…

Jmeter(十八):硬件性能监控指标详解

硬件性能监控指标 一、性能监控初步介绍 性能测试的主要目标 1.在当前的服务器配置情况&#xff0c;最大的用户数 2.平均响应时间ART&#xff0c;找出时间较长的业务 3.每秒事务数TPS&#xff0c;服务器的处理能力 性能测试涉及的内容 1.客户端性能测试&#xff1a;web前…

Xcode15 模拟器 Rosetta 模式

打开Xcode15的方式其实没有Rosetta 选项了&#xff0c;但是可以跑Xcode默认Rosetta 模拟器。在xcode中如下方式打开&#xff1a; Product -> Destination -> Destination Architectures -> 打开Show Rosetta Destinations 然后用这些带Rosetta的模拟器运行&#xff1…

嵌入式应用选择正确的系统设计方法:第一部分

现代嵌入式开发设计的功能规格丰富&#xff0c;并且必须在成本&#xff0c;性能等方面遵守多项其他要求&#xff0c;因此它们本质上是复杂的。因此&#xff0c;在设计大型系统时&#xff0c;我们需要方法和框架来帮助指导我们的决策。 在这个由三部分组成的系列的第一部分中&a…