当前位置: 首页 > news >正文

【java实现项目库保存删除出资人信息】

java实现项目库保存删除出资人信息

需求:在项目编辑页面删除出资人信息填写删除原因,将项目的主键ID,删除出资人信息,删除原因保存出资人删除表中

实现效果

在这里插入图片描述

实现方式

html

                      <td class="d_bg control-label required">出资人</td><td colspan="5" style="padding: 0px"><table style="width: 100%;"><tr><td class="d_bg control-label control-label center">基金名称</td><td class="d_bg control-label control-label center">认缴金额(万元)</td><td class="d_bg control-label control-label center">持股比例(%)</td><td class="d_bg control-label control-label center">实缴金额(万元)</td><td class="d_bg control-label control-label center">出资方式</td><td class="d_bg control-label control-label center">决策时间</td><td class="d_bg control-label control-label center">交割时间</td><td ng-if="vm.valuaShow" class="d_bg control-label control-label center">估值(万元)</td><td class="d_bg control-label control-label center" style="text-align: center"><label class="icon-plus"style="color: blue; margin-left: 4px;cursor: pointer;cursor: hand;"ng-click="vm.listAdd()"></label></td></tr><tr ng-repeat="citem in vm.entity.cgxmFoundsList  track by $index" class="ng-scope"><td contenteditable-not-use style="width: 12%;" class="text-conent ng-binding no-padding"><input class="span12 ng-pristine ng-untouched ng-pending" type="text" class=""name="vcFoundName{{$index}}" ng-click="vm.queryProject($index)" validator="required"placeholder="" ng-model="citem.vcFoundName" /></td><td contenteditable-not-use style="width: 12%;" class="text-conent ng-binding no-padding"><input class="span12 ng-pristine ng-untouched ng-pending" type="text" class=""name="planMoney{{$index}}" placeholder="" ng-model="citem.planMoney"validator="required,digits"ng-change="vm.planMoneyChanged(citem.planMoney,citem.actlMoney,$index)" /></td><td contenteditable-not-use style="width: 12%;" class="text-conent ng-binding no-padding"><input class="span12 ng-pristine ng-untouched ng-pending" type="text" class=""name="actlMoney{{$index}}" placeholder="" ng-model="citem.actlMoney"validator="required,digits"ng-change="vm.planMoneyChanged(citem.planMoney,citem.actlMoney,$index)" /></td><td contenteditable-not-use style="width: 12%;" class="text-conent ng-binding no-padding"><input class="span12 ng-pristine ng-untouched ng-pending" type="text" class=""name="proportion{{$index}}" placeholder="" ng-model="citem.proportion"validator="required,digits" /></td><td contenteditable-not-use style="width: 12%;" class="text-conent ng-binding no-padding"><input class="span12 ng-pristine ng-untouched ng-pending" type="text" class=""name="investmentMethod{{$index}}" ng-model="citem.investmentMethod"validator="required" /></td><td contenteditable-not-use style="width: 12%;" class="text-conent ng-binding no-padding"><input type="text" class="span12" ng-model="citem.jcDate" readonly autocomplete="off"name="jcDate{{$index}}" date-time format="YYYY-MM-DD" view="date" min-view="date"validator="required" /></td><td contenteditable-not-use style="width: 12%;" class="text-conent ng-binding no-padding"><input type="text" class="span12" ng-model="citem.jgDate" readonly autocomplete="off"name="jgDate{{$index}}" date-time format="YYYY-MM-DD" view="date" min-view="date"validator="required" /></td><td ng-if="vm.valuaShow" contenteditable-not-use style="width: 12%;"class="text-conent ng-binding no-padding"><input class="span12 ng-pristine ng-untouched ng-pending" type="text" class=""name="valuation{{$index}}" placeholder="" ng-model="citem.valuation"validator="required,digits" /></td><td class="td50" style="text-align: center;margin-bottom:0px;vertical-align: middle"><label ng-if="vm.entity.cgxmFoundsList.length > 0" class="icon-trash"style="cursor: pointer;cursor: hand;" ng-click="vm.delListWithReason($index, citem)"></label></td></tr>

js

// 删除出资人记录(带删除原因)
vm.delListWithReason = function (index, item) {Confirm('确认删除这条出资人记录吗?', {title: '删除确认',okText: '确认删除',cancelText: '取消'}).then(function () {// 弹出删除原因输入框ngDialog.open({template: `<div class="ngdialog-message"><h4>请输入删除原因</h4><textarea ng-model="deleteReason" style="width: 100%; height: 100px; margin: 10px 0; padding: 8px; border: 1px solid #ddd; border-radius: 4px;"placeholder="请填写删除原因..."></textarea><div style="text-align: right; margin-top: 10px;"><button class="btn" ng-click="closeThisDialog()">取消</button><button class="btn btn-primary" ng-click="confirmDelete(deleteReason)" ng-disabled="!deleteReason">确认删除</button></div></div>`,plain: true,controller: ['$scope', function($scope) {$scope.deleteReason = '';$scope.confirmDelete = function(reason) {$scope.closeThisDialog(reason);};}]}).closePromise.then(function(data) {if (data.value) {// 保存删除记录到后端vm.saveDeletedRecord(item, data.value, index);}});});
};// 保存删除记录到数据库
vm.saveDeletedRecord = function(item, deleteReason, index) {var deletedRecord = {vcProId: vm.entity.vcId, // 项目IDvcFoundName: item.vcFoundName || '',planMoney: item.planMoney || '',actlMoney: item.actlMoney || '',proportion: item.proportion || '',investmentMethod: item.investmentMethod || '',jcDate: item.jcDate || '',jgDate: item.jgDate || '',valuation: item.valuation || '',deleteReason: deleteReason,deleteTime: new Date(),deleteUser: Authenticate.getUser().userInfo.userName // 获取当前用户};// 调用后端API保存删除记录Restangular.all('profound/saveDeletedFoundRecord').customPOST(deletedRecord).then(function(response) {// 从前端列表中移除vm.entity.cgxmFoundsList.splice(index, 1);toastr.success('删除成功');}).catch(function(error) {toastr.error('删除记录保存失败');console.error('保存删除记录失败:', error);});
};

java

实体类

package com.example.entity;import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;@Entity
@Table(name = "cgxm_founds_del")
public class CgxmFoundsDel {@Id@Column(name = "vc_id", length = 32)private String vcId;@Column(name = "vc_pro_id", length = 255)private String vcProId;@Column(name = "vc_found_name", length = 255)private String vcFoundName;@Column(name = "plan_money", precision = 10, scale = 2)private BigDecimal planMoney;@Column(name = "actl_money", precision = 10, scale = 2)private BigDecimal actlMoney;@Column(name = "proportion", precision = 10, scale = 2)private BigDecimal proportion;@Column(name = "Investment_method", length = 255)private String investmentMethod;@Column(name = "jc_date")@Temporal(TemporalType.TIMESTAMP)private Date jcDate;@Column(name = "jg_date")@Temporal(TemporalType.TIMESTAMP)private Date jgDate;@Column(name = "delete_reason", columnDefinition = "TEXT")private String deleteReason;@Column(name = "delete_time")@Temporal(TemporalType.TIMESTAMP)private Date deleteTime;@Column(name = "delete_user", length = 255)private String deleteUser;// 默认构造方法public CgxmFoundsDel() {}// 带参构造方法public CgxmFoundsDel(String vcProId, String vcFoundName, BigDecimal planMoney, BigDecimal actlMoney, BigDecimal proportion, String investmentMethod, Date jcDate, Date jgDate, String deleteReason, String deleteUser) {this.vcId = generateId();this.vcProId = vcProId;this.vcFoundName = vcFoundName;this.planMoney = planMoney;this.actlMoney = actlMoney;this.proportion = proportion;this.investmentMethod = investmentMethod;this.jcDate = jcDate;this.jgDate = jgDate;this.deleteReason = deleteReason;this.deleteTime = new Date();this.deleteUser = deleteUser;}// 生成ID的方法private String generateId() {return java.util.UUID.randomUUID().toString().replace("-", "").substring(0, 32);}// Getter和Setter方法public String getVcId() { return vcId; }public void setVcId(String vcId) { this.vcId = vcId; }public String getVcProId() { return vcProId; }public void setVcProId(String vcProId) { this.vcProId = vcProId; }public String getVcFoundName() { return vcFoundName; }public void setVcFoundName(String vcFoundName) { this.vcFoundName = vcFoundName; }public BigDecimal getPlanMoney() { return planMoney; }public void setPlanMoney(BigDecimal planMoney) { this.planMoney = planMoney; }public BigDecimal getActlMoney() { return actlMoney; }public void setActlMoney(BigDecimal actlMoney) { this.actlMoney = actlMoney; }public BigDecimal getProportion() { return proportion; }public void setProportion(BigDecimal proportion) { this.proportion = proportion; }public String getInvestmentMethod() { return investmentMethod; }public void setInvestmentMethod(String investmentMethod) { this.investmentMethod = investmentMethod; }public Date getJcDate() { return jcDate; }public void setJcDate(Date jcDate) { this.jcDate = jcDate; }public Date getJgDate() { return jgDate; }public void setJgDate(Date jgDate) { this.jgDate = jgDate; }public String getDeleteReason() { return deleteReason; }public void setDeleteReason(String deleteReason) { this.deleteReason = deleteReason; }public Date getDeleteTime() { return deleteTime; }public void setDeleteTime(Date deleteTime) { this.deleteTime = deleteTime; }public String getDeleteUser() { return deleteUser; }public void setDeleteUser(String deleteUser) { this.deleteUser = deleteUser; }@Overridepublic String toString() {return "CgxmFoundsDel{" +"vcId='" + vcId + '\'' +", vcProId='" + vcProId + '\'' +", vcFoundName='" + vcFoundName + '\'' +", planMoney=" + planMoney +", actlMoney=" + actlMoney +", proportion=" + proportion +", investmentMethod='" + investmentMethod + '\'' +", jcDate=" + jcDate +", jgDate=" + jgDate +", deleteReason='" + deleteReason + '\'' +", deleteTime=" + deleteTime +", deleteUser='" + deleteUser + '\'' +'}';}
}

数据访问层 (Repository)

package com.example.repository;import com.example.entity.CgxmFoundsDel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository
public interface CgxmFoundsDelRepository extends JpaRepository<CgxmFoundsDel, String> {
}

服务层 (Service)

package com.example.service;import com.example.entity.CgxmFoundsDel;
import com.example.repository.CgxmFoundsDelRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;@Service
@Transactional
public class CgxmFoundsDelService {@Autowiredprivate CgxmFoundsDelRepository cgxmFoundsDelRepository;/*** 保存删除的出资人记录*/public CgxmFoundsDel saveDeletedFoundRecord(Map<String, Object> requestData) {try {// 从请求数据中提取字段String projectId = getStringValue(requestData, "projectId");String deleteReason = getStringValue(requestData, "deleteReason");String deleteUser = getStringValue(requestData, "deleteUser");// 提取被删除的记录数据Map<String, Object> deletedRecord = (Map<String, Object>) requestData.get("deletedRecord");// 创建实体对象CgxmFoundsDel delRecord = new CgxmFoundsDel();delRecord.setVcId(generateId());delRecord.setVcProId(projectId);delRecord.setDeleteReason(deleteReason);delRecord.setDeleteTime(new Date());delRecord.setDeleteUser(deleteUser);// 设置基金相关字段if (deletedRecord != null) {delRecord.setVcFoundName(getStringValue(deletedRecord, "vcFoundName"));delRecord.setPlanMoney(getBigDecimalValue(deletedRecord, "planMoney"));delRecord.setActlMoney(getBigDecimalValue(deletedRecord, "actlMoney"));delRecord.setProportion(getBigDecimalValue(deletedRecord, "proportion"));delRecord.setInvestmentMethod(getStringValue(deletedRecord, "investmentMethod"));delRecord.setJcDate(getDateValue(deletedRecord, "jcDate"));delRecord.setJgDate(getDateValue(deletedRecord, "jgDate"));}// 保存到数据库return cgxmFoundsDelRepository.save(delRecord);} catch (Exception e) {throw new RuntimeException("保存删除记录失败: " + e.getMessage(), e);}}/*** 工具方法:生成ID*/private String generateId() {return java.util.UUID.randomUUID().toString().replace("-", "").substring(0, 32);}/*** 工具方法:安全获取字符串值*/private String getStringValue(Map<String, Object> map, String key) {if (map == null || !map.containsKey(key)) {return null;}Object value = map.get(key);return value != null ? value.toString() : null;}/*** 工具方法:安全获取BigDecimal值*/private BigDecimal getBigDecimalValue(Map<String, Object> map, String key) {if (map == null || !map.containsKey(key)) {return null;}Object value = map.get(key);if (value == null) {return null;}try {if (value instanceof BigDecimal) {return (BigDecimal) value;} else if (value instanceof Number) {return BigDecimal.valueOf(((Number) value).doubleValue());} else {return new BigDecimal(value.toString());}} catch (NumberFormatException e) {return null;}}/*** 工具方法:安全获取Date值*/private Date getDateValue(Map<String, Object> map, String key) {if (map == null || !map.containsKey(key)) {return null;}Object value = map.get(key);if (value == null) {return null;}try {if (value instanceof Date) {return (Date) value;} else if (value instanceof String) {// 这里可以根据实际的前端日期格式进行调整// 例如使用 SimpleDateFormat 进行解析return new Date(); // 简化处理,实际项目中需要根据格式解析} else {return null;}} catch (Exception e) {return null;}}
}

控制器层 (Controller)

package com.example.controller;import com.example.entity.CgxmFoundsDel;
import com.example.service.CgxmFoundsDelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.Map;@RestController
@RequestMapping("/profound")
public class ProfoundController {@Autowiredprivate CgxmFoundsDelService cgxmFoundsDelService;/*** 保存删除的出资人记录* POST /profound/saveDeletedFoundRecord*/@PostMapping("/saveDeletedFoundRecord")public ResponseEntity<Map<String, Object>> saveDeletedFoundRecord(@RequestBody Map<String, Object> requestData) {Map<String, Object> response = new HashMap<>();try {// 验证必要参数if (!requestData.containsKey("projectId")) {response.put("success", false);response.put("message", "缺少项目ID参数");return ResponseEntity.badRequest().body(response);}if (!requestData.containsKey("deleteReason")) {response.put("success", false);response.put("message", "缺少删除原因参数");return ResponseEntity.badRequest().body(response);}// 保存删除记录CgxmFoundsDel savedRecord = cgxmFoundsDelService.saveDeletedFoundRecord(requestData);response.put("success", true);response.put("message", "删除记录保存成功");response.put("data", savedRecord);return ResponseEntity.ok(response);} catch (Exception e) {response.put("success", false);response.put("message", "保存失败: " + e.getMessage());return ResponseEntity.badRequest().body(response);}}}

POM依赖

<dependencies><!-- Spring Boot Starter Data JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

写到最后

数据表成功插入,大功告成!
在这里插入图片描述

http://www.dtcms.com/a/424438.html

相关文章:

  • Dubbo源码解读与实战-基础知识(下)
  • html社交网站模板网络认证入口
  • vue自定义数字滚动插件
  • xtuoj 回文串
  • JavaScript中常见关键字了解(不能作为变量名和函数名)
  • 归并排序的三重境界
  • 刷网站软件微信网站建设开发
  • 论坛网站设计wordpress 启动wordpress mu
  • 大数据离线数仓之业务域设计
  • wordpress 主题 建站网站seo 最好
  • 电脑格式化了还能恢复数据吗?硬盘格式化恢复教程分享
  • 网站空间租用多少钱练手网站开发
  • Docker经典安装命令失效排查:Ubuntu/CentOS多系统测试与解决方案
  • 慧知开源重卡充电桩平台建设方案 - 慧知开源充电桩平台(我们是有真实上线案例的)
  • 做教育机构中介网站百度小程序制作网站
  • 软件设计师——03 数据结构(上)
  • 专业定制网站需要什么技能便捷的网站建设
  • 深圳html5网站制作个人网站 商业
  • 为什么建站之前要进行网站策划成都h5模板建站
  • KV cache原理
  • Global cpu Load
  • 【Linux lesson1】初识Linux系统
  • 怎么搭建自己的网站后台ftp服务器
  • 理解Word2Vec
  • 北京网站开发网络公司开平小学学生做平网站
  • 网站开发语言htmlWordPress封面生成
  • 推荐医疗网站建设北京企业网站建设方
  • interface vlanif vlan-id 概念及题目
  • 如何查询网站主机信息网页设计课程报告
  • 济南网站建设 小程序网站公司建设网站价格