package com.bjpowernode.workbench.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.bjpowernode.entity.Page;
import com.bjpowernode.entity.R;
import com.bjpowernode.enums.State;
import com.bjpowernode.settings.service.ActivityService;
import com.bjpowernode.utils.DateTimeUtils;
import com.bjpowernode.utils.IdUtils;
import com.bjpowernode.utils.JwtUtils;
import com.bjpowernode.workbench.domain.Activity;
import com.bjpowernode.workbench.domain.ActivityRemark;
import lombok.RequiredArgsConstructor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/workbench/activity")
@RequiredArgsConstructor
public class ActivityController {
private final JwtUtils jwtUtils;
@Reference(interfaceClass = ActivityService.class,version = "1.0.0",check = false)
private ActivityService activityService;
@GetMapping("/page")
public Page<Activity> page(@RequestParam("pageNo")Integer pageNo,
@RequestParam("pageSize")Integer pageSize,
@RequestParam(value = "name",required = false)String name,
@RequestParam(value = "owner",required = false)String owner,
@RequestParam(value = "startDate",required = false)String startDate,
@RequestParam(value = "endDate",required = false)String endDate
){
//封装返回值结果并返回
return activityService.page(
pageNo ,
pageSize,
name,
owner,
startDate,
endDate
);
}
@PostMapping
public R<Boolean> saveActivity(@RequestBody Activity activity){
return R.ok(
activityService.save(
activity.setId(IdUtils.getId())
.setCreateBy(jwtUtils.getName())
.setCreateTime(DateTimeUtils.getTime19())
.setEditBy(jwtUtils.getName())
.setEditTime(DateTimeUtils.getTime19())
.setIsDelete("0")
),
State.SAVE_ERROR
);
}
@GetMapping("/{activityId}")
public R<Activity> getActivity(@PathVariable("activityId")String activityId){
return R.ok(
activityService.getActivityById(activityId)
);
}
@PutMapping
public R<Boolean> updateActivity(@RequestBody Activity activity){
return R.ok(
activityService.update(
activity.setEditBy(jwtUtils.getName())
.setEditTime(DateTimeUtils.getTime19())
),
State.UPDATE_ERROR
);
}
@DeleteMapping("/list")
public R<Boolean> deleteActivityList(@RequestBody List<String> ids){
return R.ok(
activityService.deleteList(ids,jwtUtils.getName(),DateTimeUtils.getTime19()),
State.DELETE_ERROR
);
}
@PostMapping("/import")
public R<Boolean> importActivity(@RequestParam("activityFile")MultipartFile activityFile) throws IOException {
//获取文件后缀名
String suffix = activityFile.getOriginalFilename().substring(
activityFile.getOriginalFilename().lastIndexOf(".")
);
//生成新的文件名称 = 文件上传路径/日期/文件名称.后缀名
String url = "F:\\code\\crm\\settings\\src\\main\\resources\\datadir"
+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + "/"
+ UUID.randomUUID().toString() + suffix;
//判断路径是否存在
if (!new File(url).exists())
//路径不存在
new File(url).mkdirs();
//文件上传操作
activityFile.transferTo(
new File(url)
);
//批量导入操作
//从文件上传的路径,读取成为输入流对象
InputStream in = new FileInputStream(url);
//基于输入流对象,创建工作簿对象
Workbook workbook = null;
if (suffix.contains("xls"))
//低版本
workbook = new HSSFWorkbook(in);
else
//高版本
workbook = new XSSFWorkbook(in);
//读取页码对象
Sheet sheet = workbook.getSheetAt(0);
//读取行对象,第一行是表头数据
//获取最后的行号
int lastRowNum = sheet.getLastRowNum();
//获取所有者 创建人 创建时间
String owner = jwtUtils.getOwner();
String createBy = jwtUtils.getName();
String time = DateTimeUtils.getTime19();
//封装集合
List<Activity> activityList = new ArrayList<>();
//遍历最后的行号
for (int i = 0; i < lastRowNum; i++) {
//跳过第一行表头数据
Row row = sheet.getRow(i + 1);
String name = row.getCell(0).getStringCellValue();
String startDate = row.getCell(1).getStringCellValue();
String endDate = row.getCell(2).getStringCellValue();
String cost = row.getCell(3).getStringCellValue();
String description = row.getCell(4).getStringCellValue();
//封装市场活动对象
activityList.add(
Activity.builder()
.id(IdUtils.getId())
.owner(owner)
.name(name)
.startDate(startDate)
.endDate(endDate)
.cost(cost)
.description(description)
.createTime(time)
.createBy(createBy)
.editTime(time)
.editBy(createBy)
.isDelete("0")
//
.build()
);
}
//批量插入操作
return R.ok(
activityService.saveActivityList(activityList),
State.SAVE_ERROR
);
}
@GetMapping("/export")
public void exportActivity(@RequestParam ("Authorization")String token,
@RequestParam(value = "ids",required = false)List<String> ids,
HttpServletResponse response){
//校验token的合法性
if (!JwtUtils.checkToken(token))
throw new RuntimeException(State.TOKEN_FAILED.getMsg());
//System.out.println("令牌校验通过");
//批量导出操作
//将数据从数据库中查询出来,根据ids(动态sql)
List<Activity> activityList = activityService.getActivityListById(ids);
if (CollectionUtils.isEmpty(activityList))
throw new RuntimeException(State.QUERY_ERROR.getMsg());
//创建工作簿对象
Workbook workbook = new HSSFWorkbook();
//创建页码对象
Sheet sheet = workbook.createShe
没有合适的资源?快使用搜索试试~ 我知道了~
基于Dubbo的CRM系统
共127个文件
java:39个
html:28个
js:18个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 4 浏览量
2023-11-16
11:24:34
上传
评论
收藏 1.67MB ZIP 举报
温馨提示
基于Dubbo的CRM系统
资源推荐
资源详情
资源评论
收起资源包目录
基于Dubbo的CRM系统 (127个子文件)
bootstrap.min.css 111KB
bootstrap-theme.min.css 19KB
bootstrap-datetimepicker.min.css 11KB
zTreeStyle.css 6KB
jquery.bs_pagination.min.css 285B
glyphicons-halflings-regular.eot 20KB
zTreeStandard.gif 5KB
loading.gif 381B
line_conn.gif 45B
index.html 21KB
detail.html 20KB
detail.html 19KB
index.html 18KB
index.html 16KB
detail.html 15KB
detail.html 15KB
index.html 13KB
save.html 11KB
index.html 10KB
detail.html 10KB
index.html 8KB
index.html 7KB
index.html 7KB
convert.html 6KB
login.html 4KB
index.html 3KB
save.html 3KB
edit.html 3KB
edit.html 3KB
save.html 2KB
index.html 2KB
index.html 2KB
index.html 1KB
index.html 488B
index.html 187B
index.html 0B
index.html 0B
ActivityController.java 12KB
DictionaryServiceImpl.java 5KB
UserController.java 5KB
JwtUtils.java 4KB
ActivityServiceImpl.java 4KB
UserServiceImpl.java 3KB
DictionaryController.java 2KB
InterceptorConfig.java 2KB
CustomExceptionHandlerResolver.java 2KB
State.java 2KB
ClueController.java 1KB
Page.java 1KB
CheckTokenInterceptor.java 1KB
ActivityMapper.java 1KB
R.java 1KB
ActivityService.java 922B
Clue.java 916B
DictionaryTypeMapper.java 843B
DictionaryService.java 727B
Activity.java 715B
User.java 712B
ClueServiceImpl.java 647B
LoadCacheConfig.java 641B
ActivityRemark.java 588B
DictionaryValueMapper.java 584B
ActivityRemarkMapper.java 575B
WorkbenchApplication.java 537B
SettingsApplication.java 535B
DictionaryVale.java 487B
DictionaryType.java 455B
LoginResult.java 429B
WebApplication.java 411B
UserMapper.java 369B
UserService.java 310B
DateTimeUtils.java 278B
IdUtils.java 185B
TokenFaildException.java 176B
ClueService.java 157B
ClueMapper.java 149B
IMG_7114.JPG 636KB
1.jpg 400KB
2.jpg 107KB
echarts.min.js 610KB
jquery-1.11.1-min.js 94KB
bootstrap-datetimepicker.js 68KB
jquery.ztree.all.min.js 62KB
bootstrap.min.js 34KB
activity.js 14KB
axios.min.js 14KB
clue.js 11KB
jquery.bs_pagination.min.js 10KB
transaction.js 9KB
base.js 9KB
bootstrap3-typeahead.min.js 8KB
dictionary.js 7KB
api.js 5KB
user.js 2KB
bootstrap-datetimepicker.zh-CN.js 813B
en.js 608B
npm.js 484B
home.png 38KB
zTreeStandard.png 11KB
user-thumbnail.png 3KB
共 127 条
- 1
- 2
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6705
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功