二十五:修改交易

news2024/11/23 2:02:17

1.功能需求

点击交易的复选框,然后点击修改按钮。进行数据的页面填充

 

1.流程图

 

1.代码实现

TranMapper

    /**
     * 根据id查询交易
     */
    Tran selectTranDetailFortranId(String tranId);
    <!-- Tran selectTranDetailFortranId(String tranId);-->
    <select id="selectTranDetailFortranId" resultMap="BaseResultMap">
        select t.id,t.owner,t.money,t.name,t.expected_date,c.name as customer_id,t.stage,t.type,t.source,t.activity_id,t.contacts_id,t.description,t.contact_summary,t.next_contact_time
        from tbl_tran t
        left join tbl_customer c on t.customer_id = c.id
        where t.id=#{tranId}
    </select>

TranService

	/**
	 * 交易:根据id查询
	 */
	Tran queryTranDetailFortranId(String tranId);

	@Override
	public Tran queryTranDetailFortranId(String tranId) {
		return tranMapper.selectTranDetailFortranId(tranId);
	}

TranController

	/**
	 * 修改交易·:加载信息
	 */
	@RequestMapping("/workbench/transaction/searchTranForId.do")
	public String searchTranForId(HttpServletRequest request,String tranId){
		// 调用service加载下拉数据
		Tran tran = tranService.queryTranDetailFortranId(tranId);
		Activity activity = activityService.queryActivityForDetail(tran.getActivityId());
		Contacts contacts = contactsService.queryContactsById(tran.getContactsId());
		List<User> userList = userService.queryAllUsers();
		List<DicValue> sourceList = dicValueService.queryDicValueByTypeCode("source");
		List<DicValue> stageList = dicValueService.queryDicValueByTypeCode("stage");
		List<DicValue> typeList = dicValueService.queryDicValueByTypeCode("transactionType");
		// 保存在请求域中
		request.setAttribute("userList", userList);
		request.setAttribute("sourceList", sourceList);
		request.setAttribute("stageList", stageList);
		request.setAttribute("typeList", typeList);
		request.setAttribute("tran", tran);
		request.setAttribute("activity", activity);
		request.setAttribute("contacts", contacts);
		return "workbench/transaction/edit";
	}

前端edit.jsp 进行填充

		<script type="text/javascript">
			// 初始化参数
			$("#edit-id").val('${tran.id}');
			$("#edit-transactionOwner").val('${tran.owner}');
			$("#edit-amountOfMoney").val('${tran.money}');
			$("#edit-transactionName").val('${tran.name}');
			$("#edit-expectedClosingDate").val('${tran.expectedDate}');
			$("#edit-accountName").val('${tran.customerId}');
			$("#edit-transactionStage").val('${tran.stage}');
			$("#edit-transactionType").val('${tran.type}');
			$("#edit-clueSource").val('${tran.source}');
			$("#edit-activitySrc").val('${activity.name}');
			$("#activityId").val('${tran.activityId}');
			$("#edit-contactsName").val('${contacts.fullname}');
			$("#contactsId").val('${tran.contactsId}');
			$("#edit-describe").val('${tran.description}');
			$("#edit-contactSummary").val('${tran.contactSummary}');
			$("#edit-nextContactTime").val('${tran.nextContactTime}');
		</script>

2.功能需求

填写修改表单后,进行表单非空验证,实现交易修改。如果阶段进行了变更,则插入交易阶段历史的表格里面。

2.流程图

2.代码实现

tranMapper

    /**
     * 根据id更新
     */
    int updateTranDetailFortranId(Tran tran);
    <!--  int updateTranDetailFortranId(Map<String,Object>map);-->
    <update id="updateTranDetailFortranId">
        update tbl_tran
        set owner = #{owner,jdbcType=CHAR},
            money = #{money,jdbcType=VARCHAR},
            name = #{name,jdbcType=VARCHAR},
            expected_date = #{expectedDate,jdbcType=CHAR},
            customer_id = #{customerId,jdbcType=CHAR},
            stage = #{stage,jdbcType=VARCHAR},
            type = #{type,jdbcType=VARCHAR},
            source = #{source,jdbcType=VARCHAR},
            activity_id = #{activityId,jdbcType=CHAR},
            contacts_id = #{contactsId,jdbcType=CHAR},
            edit_by = #{editBy,jdbcType=VARCHAR},
            edit_time = #{editTime,jdbcType=CHAR},
            description = #{description,jdbcType=VARCHAR},
            contact_summary = #{contactSummary,jdbcType=VARCHAR},
            next_contact_time = #{nextContactTime,jdbcType=CHAR}
        where id = #{id,jdbcType=CHAR}
    </update>

tranService

	/**
	 * 交易:根据id修改
	 */
	int editTranDetailFortranId(Map<String,Object>map);
	@Override
	public int editTranDetailFortranId(Map<String, Object> map) {
		Tran tran = new Tran();
		User user = (User) map.get(Contants.SESSION_USER);
		tran.setId((String) map.get("id"));
		tran.setOwner((String) map.get("owner"));
		tran.setMoney((String) map.get("money"));
		tran.setName((String) map.get("name"));
		tran.setExpectedDate((String) map.get("expectedDate"));
		tran.setStage((String) map.get("stage"));
		tran.setType((String) map.get("type"));
		tran.setSource((String) map.get("source"));
		tran.setActivityId((String) map.get("activityId"));
		tran.setContactsId((String) map.get("contactsId"));
		tran.setEditBy(user.getId());
		tran.setEditTime(DateUtils.formateDateTime(new Date()));
		tran.setDescription((String) map.get("description"));
		tran.setContactSummary((String) map.get("contactSummary"));
		tran.setNextContactTime((String) map.get("nextContactTime"));
		// 查找setCustomerId
		String customerId = customerMapper.selectCustomerForNameToCustomerId((String) map.get("customerName"));
		if (customerId == null || "".equals(customerId)) {
			// 没有此客户,需要添加
			Customer customer = new Customer();
			customer.setId(UUIDUtils.getUUID());
			customer.setName((String) map.get("customerName"));
			customer.setCreateBy(user.getId());
			customer.setCreateTime(DateUtils.formateDateTime(new Date()));
			customer.setContactSummary(tran.getContactSummary());
			customer.setNextContactTime(tran.getNextContactTime());
			customer.setDescription(tran.getDescription());
			// 保存客户
			customerMapper.insertCustomer(customer);
			tran.setCustomerId(customer.getId());
		} else {
			// 有这个客户 直接存放查询出的id
			tran.setCustomerId(customerId);
		}
		// 查询阶段是否存在
		Map<String, Object> tranHistoryMap = new HashMap<>();
		tranHistoryMap.put("stage", tran.getStage());
		tranHistoryMap.put("tranId", tran.getId());
		TranHistory retTran = tranHistoryMapper.selectTranHistoryByStageAndTranId(tranHistoryMap);
		// 此阶段不存在,那么创建记录
		if (retTran == null || "".equals(retTran)) {
			TranHistory tranHistory = new TranHistory();
			tranHistory.setId(UUIDUtils.getUUID());
			tranHistory.setStage(tran.getStage());
			tranHistory.setMoney(tran.getMoney());
			tranHistory.setExpectedDate(tran.getExpectedDate());
			tranHistory.setCreateTime(DateUtils.formateDateTime(new Date()));
			tranHistory.setCreateBy(user.getId());
			tranHistory.setTranId(tran.getId());
			tranHistoryMapper.insert(tranHistory);
		}
		return tranMapper.updateTranDetailFortranId(tran);
	}

tranController

	/**
	 * 修改交易·:保存信息
	 */
	@RequestMapping("/workbench/transaction/EidtTranForId.do")
	public @ResponseBody Object editTran(HttpSession session,String id,String owner,String money,String name,String expectedDate,String customerName,String stage,String type,String source,String activityId,String contactsId,String description,String contactSummary,String nextContactTime){
		// 封装参数
		Map<String,Object> map = new HashMap<>();
		User user = (User) session.getAttribute(Contants.SESSION_USER);
		map.put("id",id);
		map.put("owner",owner);
		map.put("money",money);
		map.put("name",name);
		map.put("expectedDate",expectedDate);
		map.put("customerName",customerName);
		map.put("stage",stage);
		map.put("type",type);
		map.put("source",source);
		map.put("activityId",activityId);
		map.put("contactsId",contactsId);
		map.put("description",description);
		map.put("contactSummary",contactSummary);
		map.put("nextContactTime",nextContactTime);
		map.put("nextContactTime",nextContactTime);
		map.put(Contants.SESSION_USER,user);
		// 调用service,实现交易修改
		ReturnObject returnObject = new ReturnObject();
		try {
			int ret = tranService.editTranDetailFortranId(map);
			if (ret > 0) {
				//成功
				returnObject.setCode(Contants.RETURN_OBJECT_CODE_SUCCESS);
			} else {
				//失败
				returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
				returnObject.setMessage("系统错误,稍后再试");
			}
		} catch (Exception e) {
			e.printStackTrace();
			//失败
			returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
			returnObject.setMessage("系统错误,稍后再试");
		}
		return returnObject;

	}

edit.jsp

			$("#saveEidtTranBtn").click(function () {
				// 收集参数
				var owner = $("#edit-transactionOwner").val();
				var money = $.trim($("#edit-amountOfMoney").val());
				var name = $.trim($("#edit-transactionName").val());
				var expectedDate = $("#edit-expectedClosingDate").val();
				var customerName = $.trim($("#edit-accountName").val());
				var stage = $("#edit-transactionStage").val();
				var type = $("#edit-transactionType").val();
				var contactsId = $("#contactsId").val();
				var source = $("#edit-clueSource").val();
				var activityId = $("#activityId").val();
				var description = $.trim($("#edit-describe").val());
				var contactSummary = $.trim($("#edit-contactSummary").val());
				var nextContactTime = $("#edit-nextContactTime").val();
				var id = $("#edit-id").val();

				// 表单验证
				if (owner == "") {
					alert("所有者不能为空");
					return;
				}
				if (name == "") {
					alert("名称不能为空");
					return;
				}
				if (expectedDate == "") {
					alert("预计成交日期不能为空");
					return;
				}
				if (customerName == "") {
					alert("客户名称不能为空");
					return;
				}
				if (stage == "") {
					alert("阶段不能为空");
					return;
				}
				// 正则表达式验证成本:金额只能为非负整数
				var regExp = /^(([1-9]\d*)|0)$/;
				if (!regExp.test(money)) {
					alert("金额要大于0");
					return;
				}
				// 发送请求
				$.ajax({
					url: 'workbench/transaction/EidtTranForId.do',
					data: {
						owner: owner,
						money: money,
						name: name,
						expectedDate: expectedDate,
						customerName: customerName,
						stage: stage,
						type: type,
						contactsId: contactsId,
						source: source,
						activityId: activityId,
						description: description,
						contactSummary: contactSummary,
						nextContactTime: nextContactTime,
						id:id
					},
					type: 'post',
					dataType: 'json',
					success: function (data) {
						if (data.code == "1") {
							// 成功跳转
							window.location.href = 'workbench/transaction/index.do';
						} else {
							alert(data.message);
						}
					}
				});
			});

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

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

相关文章

项目集战略一致性

项目集战略一致性是识别项目集输出和成果&#xff0c;以便与组织的目标和目的保持一致的绩效领域。 本章内容包括&#xff1a; 1 项目集商业论证 2 项目集章程 3 项目集路线图 4 环境评估 5 项目集风险管理战略 项目集应与组织战略保持一致&#xff0c;并促进组织效益的实现。为…

【博客系统】页面设计(附完整源码)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、页面介绍 二、预期效果 1、博客列表页效…

刚面试了一位5年的Android开发,一问三不知,他还反怼我...

最近帮部门主管面试了很多人&#xff0c;从简历上看这些人的工作年限都不短&#xff0c;但做的都是一些传统的项目&#xff0c;想做现在大环境越来越难&#xff0c;大家找工作都不容易&#xff0c;就打算见一见。 在沟通中发现&#xff0c;由于年限不小&#xff0c;他们的定位…

十、Feign客户端

目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Contro…

ES基础知识总结含SQL、DSL、GOLANG

一、简介 Elasticsearch是一个基于Lucene的全文搜索和分析引擎&#xff0c;Lucene Core是一个完全用Java编写的高性能、全功能搜索引擎库。 它可以快速地存储、实时搜索和分析大量数据。 它可以扩展到上百台服务器&#xff0c;处理PB级数据。PB 2^50 Byte&#xff0c; 在数…

联通数科面试准备

Spring中Bean的生命周期 Spring Bean的生命周期全过程分为5个阶段&#xff0c;创建前准备阶段、创建实例阶段、依赖注入阶段和容器缓存阶段以及销毁实例阶段。 阶段1&#xff1a;创建前准备阶段这个阶段主要是在开始Bean加载之前&#xff0c;从Spring上下文中去获取相关的配置…

如何使用Alchemy开发NFT智能合约(ERC721)

&#x1f978; 本教程翻译自官网&#xff1a;[https://docs.alchemy.com/docs](https://docs.alchemy.com/docs)。对部分内容进行了修改。教程中所有实例经过本人实践&#xff0c;代码可见&#xff1a;https://github.com/ChuXiaoYi/web3Study 使用Solidity开发智能合约并在区块…

2022 第十三届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解

2022 第十三届蓝桥杯大赛软件赛决赛, 国赛&#xff0c;C/C 大学B组题解 文章目录 第1题 —— 2022 &#xff08;5分&#xff09;第2题 —— 钟表 &#xff08;5分&#xff09;第3题 —— 卡牌 &#xff08;10分&#xff09;第4题 —— 最大数字 &#xff08;10分&#xff09;第…

bbys_tu_2016

1,三连 思路&#xff1a;栈溢出 2&#xff0c;IDA分析 利用函数&#xff1a; 思路:ret2text 偏移&#xff1a;24 3&#xff0c;payload from pwn import * context.log_level"debug"rremote(node4.buuoj.cn,29195)flag 0x804856Dpayload 24 * a p32(flag) r.se…

Unittest单元测试框架之unittest构建测试套件

构建测试套件 在实际项目中&#xff0c;随着项目进度的开展&#xff0c;测试类会越来越多&#xff0c;可是直到现在我 们还只会一个一个的单独运行测试类&#xff0c;这在实际项目实践中肯定是不可行的&#xff0c;在 unittest中可以通过测试套件来解决该问题。 测试套件&…

七、Zookeeper注册中心

目录 1、下载Zookeeper的服务jar包 2、下载好jar包后解压放到合适的目录&#xff08;目录最好不要有中文及空格&#xff09; 3、进入解压后的conf目录&#xff0c;复制zoo_sample.cfg文件并重命名为zoo.cfg&#xff0c;修改zoo.cfg文件内容如下 4、运行bin目录下的zkServer…

split,paste,eval命令及正则表达式

一、split命令 将 linux 下的一个大文件拆分成若干小文件 1.语法格式 格式&#xff1a;split 选项 参数 原始文件 拆分后文件名前缀 常用选项: -l&#xff1a;以行数拆分 -b&#xff1a;以大小拆分 2.命令演示 2.1选项 -l &#xff1a;以行数分隔 cat -n anaconda-ks.cfg…

Windows系统安装好MongoDB后运行方法

文章目录 1、先找到安装MongoDB的文件位置的bin文件夹&#xff1a;2、找到data/db文件夹位置&#xff08;如果data文件夹中没有db文件夹需要创建一个&#xff09;&#xff1a;3、在刚刚打开的cmd窗口中运行以下命令&#xff1a;4、再另外从bin文件夹位置开一个cmd窗口&#xff…

图书管理系统(Java简单版)(完整代码+详解)

目录 详解&#xff1a; BookList类&#xff1a; InOperation接口 User类&#xff08;父类&#xff09; 和 Main类&#xff08;这俩要一起看&#xff09; 完整代码 book包 Book类 BookList类 operation包 AddBook类 BorrowBook类 DeleteBook类 FindBook类 Pr…

ESP32 FreeRTOS学习总结

2023.5.11 1.Task 创建任务常用API&#xff1a; 任务函数描述xTaskCreate()使用动态的方法创建一个任务xTaskCreatePinnedToCore指定任务的运行核心(最后一个参数)vTaskDelete(NULL)删除当前任务 BaseType_t xTaskCreate(TaskFunction_t pxTaskCode, // 任…

【HBase】架构

文章目录 整体架构Master负载均衡器元数据管理器预写日志处理器 Region ServerZookeeperHDFS Master架构Meta 表格 RegionServer 架构MemStoreWALBlockCache 读写流程HFile结构写流程读操作 整体架构 Master 实现类为 HMaster。 负责监控集群中所有的 RegionServer 实例。 &…

在Fedora-Workstation-Live-x86_64-36-1.5中使用佳能喷墨打印机ip2780

在Fedora-Workstation-Live-x86_64-36-1.5中使用佳能喷墨打印机ip2780 操作系统是64位的Fedora-Workstation-Live-x86_64-36-1.5.iso&#xff0c;实物打印机是佳能ip2780&#xff0c;USB接口 应用程序——其它——设置——打印机——解锁——输入root密码——将打印机USB插入电…

Redis数据结构——动态字符串、Dict、ZipList

一、Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存在很多问题&#xff1a; 获取字符串长度…

智慧产业城彰显中国智造魅力,中联重科踏出“走上去”的关键一步

5月11日至14日&#xff0c;中联重科在长沙举行了“科技献礼新时代”系列活动。 借着活动&#xff0c;松果财经实地探访了全球规模最大、品种最全的工程机械产业基地&#xff0c;领略了前沿技术赋能先进制造的魅力。 作为湖南省“一号工程”和“十大重点项目之首”&#xff0c…

好家伙,又一份牛逼笔记面世了...

最近网传的一些裁员的消息&#xff0c;搞的人心惶惶。已经拿到大厂offer的码友来问我&#xff1a;大厂还能去&#xff0c;去了会不会被裁。 还在学习的网友来问我&#xff1a;现在还要冲互联网么&#xff1f; 我是认为大家不用恐慌吧&#xff0c;该看啥看啥&#xff0c;该学啥…