当前位置:网站首页>实现导入市场活动:
实现导入市场活动:
2022-07-30 02:03:00 【猫的幻想曲】
导入市场活动:


js截取字符串:
str.substr(startIndex,length)
str.substr(startIndex) //从下标为startIndex的字符开始截取,截取到字符串的最后
str.substring(startIndex,endIndex)
Mapper:
<insert id="insertActivityByList" parameterType="com.bjpowernode.crm.workbench.domain.Activity">
insert into tbl_activity(id, owner, name, start_date, end_date, cost, description, create_time, create_by)
values
<foreach collection="list" item="obj" separator=",">
(#{obj.id},#{obj.owner},#{obj.name},#{obj.startDate},#{obj.endDate},#{obj.cost},#{obj.description},#{obj.createTime},#{obj.createBy})
</foreach>
</insert>Controller:
@RequestMapping("/workbench/activity/importActivity.do")
@ResponseBody
public Object importActivity(MultipartFile activityFile,String userName,HttpSession session){
System.out.println("UserName"+userName);
User user = (User) session.getAttribute(Contants.SESSION_USER);
ReturnObject returnObject = new ReturnObject();
try {
//把excel文件写到磁盘目录中
/*String originalFilename = activityFile.getOriginalFilename();
File file = new File("E:\\java\\SSM\\test",originalFilename);
activityFile.transferTo(file);*/
//解析excel文件,获取文件内容,并且封装成activityList对象
//根据excel文件生成HSSFWorkbook对象,封装excel文件的所有信息
// InputStream is = new FileInputStream("E:\\java\\SSM\\" +originalFilename);
//优化:直接内存到内存
InputStream is = activityFile.getInputStream();
HSSFWorkbook wb = new HSSFWorkbook(is);
//根据wb获取HSSFSheet对象,封装了一页的所有信息
HSSFSheet sheet = wb.getSheetAt(0);//也得下表,从0开始
//根据sheet获取HSSFRow对象,封装了一行的所有信息
HSSFRow row = null;
HSSFCell cell =null;
Activity activity=null;
List<Activity> activityList = new ArrayList<>();
for(int i = 1;i<=sheet.getLastRowNum();i++){//sheet.getLastRowNum()最后一行的下标
row = sheet.getRow(i);//行下标
activity = new Activity();
activity.setId(UUIDUtils.getUUID());
activity.setOwner(user.getId());
activity.setCreateTime(DateUtils.formatDateTime(new Date()));
activity.setCreateBy(user.getId());
for(int j = 0;j<row.getLastCellNum();j++){//row.getLastCellNum()最后一列的下标+1
//根据row获取HSSFCell对象,封装了一列的所有信息
cell = row.getCell(j);//列的下标
//获取列中的数据
String cellValue=HSSFUtils.getCellValueForStr(cell);
if(j==0){
activity.setName(cellValue);
}else if(j==1){
activity.setStartDate(cellValue);
}else if(j==2){
activity.setEndDate(cellValue);
}else if(j==3){
activity.setCost(cellValue);
}else if(j==4){
activity.setDescription(cellValue);
}
}
//每一行中所有列都封装完成之后,把activity保存到list中
activityList.add(activity);
}
//调用service方法,保存市场活动
int ret = activityService.saveCreateActivityByList(activityList);
returnObject.setCode(Contants.RETURN_OBJECT_CODE_SUCCESS);
returnObject.setRetData(ret);
} catch (Exception e) {
e.printStackTrace();
returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
returnObject.setMessage("系统忙,请稍后......");
}
return returnObject;
}首页:
//给导入按钮添加单击事件:
$("#importActivityBtn").click(function () {
//收集参数
var activityFileName=$("#activityFile").val();
var suffix = activityFileName.substr(activityFileName.lastIndexOf(".")+1).toLocaleLowerCase();
if(suffix!="xls"){
alert("只支持xls文件");
return;
}
var activityFile = $("#activityFile")[0].files[0];
if(activityFile.size>5*1024*1024){
alert("文件大小不超过5MB");
return;
}
//FormData是ajax提供的接口,可以模拟键值对向后台提交参数
//FormData最大的优势是不但能提交文本数据,还能提交二进制数据
var formData = new FormData();
formData.append("activityFile",activityFile);
formData.append("userName","张三");
//发送请求
$.ajax({
url:'workbench/activity/importActivity.do',
data:formData,
processData:false,//设置ajax向后台提交参数之前,是否把参数统一转换成字符串:默认为true
contentType:false,//设置ajax向后台提交参数之前,是否把参数统一按urlencoded编码:默认true
type:'post',
dataType:'json',
success:function (data) {
if(data.code=="1"){
//提示成功导入记录条数
alert("成功导入"+data+"条记录");
//关闭模态窗口
$("#importActivityModal").modal("hide");
//刷新市场活动列表,显示第一页数据,保持每页显示条数不变
queryActivityByConditionForPage(1,$("#demo_pag1").bs_pagination('getOption','rowsPerPage'));
}else{
//提示信息
alert(data.message);
//模态窗口不关闭
$("#importActivityModal").modal("show");
}
}
});
});边栏推荐
- my creative day
- The role of interface testing
- sublime 背景透明度以及列编辑
- Push the image to the Alibaba Cloud private warehouse
- 综合设计一个OPPO页面--返回顶部使用--使用链接的锚点a+id
- 【MySQL必知必会】 范式 | ER模型
- LeetCode Question of the Day (874. Walking Robot Simulation)
- 「MySQL」- 基础增删改查
- [机缘参悟-53]:《素书》-2-俊、豪、杰[正道章第二]
- What to test for app testing
猜你喜欢

LeetCode 2352. 相等行列对

ButtonStyle, MaterialStateProperty learned by flutter

Leetcode70. 爬楼梯

记一次搭建conda虚拟环境

win11 自带远程桌面使用(包含非局域网使用以及win11升级为专业版)

What to test for app testing

解决:npm ERR code ELIFECYCLE npm ERR errno 1(安装脚手架过程中,在npm run dev 时发生错误)

flutter学习之widget的显示和隐藏

短期风电预测(Matlab代码实现)

解决:Error while adding the mapper ‘interface to configuration. Error parsing Mapper XML
随机推荐
快速入门jsp
AI落地难?云原生助力企业快速应用机器学习 MLOps
Teach you how to achieve a flowing gradient border
综合设计一个OPPO页面--返回顶部使用--使用链接的锚点a+id
my creative day
绘图问题记录
表达式计算器 ExpressionRunner
uni-app如何配置APP自定义顶部标题栏
Leetcode70. 爬楼梯
Object.freeze() learning
binary search tree
LeetCode Question of the Day (874. Walking Robot Simulation)
go bidirectional streaming mode
Oracle数据库表空间整理回收与释放操作
Tcp ip
App测试需要测什么
Drawing Problem Log
Push the image to the Alibaba Cloud private warehouse
jar包解压后再打包为jar
Implementation of Portable VR in Unity