You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tobacco/bs-admin/src/main/java/com/bs/ct/controller/CtTaskFeedbackController.java

361 lines
14 KiB

package com.bs.ct.controller;
import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import com.bs.cm.domain.CmAttach;
import com.bs.cm.service.ICmAttachService;
import com.bs.common.core.domain.entity.SysUser;
import com.bs.ct.domain.*;
import com.bs.ct.service.*;
import com.bs.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.bs.common.annotation.Log;
import com.bs.common.core.controller.BaseController;
import com.bs.common.core.domain.AjaxResult;
import com.bs.common.core.page.TableDataInfo;
import com.bs.common.enums.BusinessType;
import com.bs.common.utils.poi.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import cn.hutool.core.lang.Validator;
import javax.annotation.Resource;
/**
* Controller
*
* @author bs
* @date 2025-02-22
*/
@Api(tags = "任务反馈")
@RestController
@RequestMapping("/task/feedback")
public class CtTaskFeedbackController extends BaseController {
@Resource
private ICtTaskFeedbackService ctTaskFeedbackService;
@Resource
private ICtTaskInfoService ctTaskInfoService;
@Autowired
private ISysUserService userService;
@Resource
private ICmAttachService cmAttachService;
@Resource
private ICtTaskTagService ctTaskTagService;
@Resource
private ICtImagesFeedbackRefService ctImagesFeedbackRefService;
@Resource
private ICtGalleryImagesService ctGalleryImagesService;
/**
*
*/
@ApiOperation("分页查询任务反馈列表")
@GetMapping("/pageList")
public TableDataInfo pageList(CtTaskFeedback ctTaskFeedback) {
startPage();
LambdaQueryWrapper<CtTaskFeedback> queryWrapper = new LambdaQueryWrapper();
condition(queryWrapper,ctTaskFeedback);
List<CtTaskFeedback> list = ctTaskFeedbackService.list(queryWrapper);
return getDataTable(list);
}
private void setFile(List<CtTaskFeedback> list) {
for (CtTaskFeedback ctFeedback : list) {
List<CtImagesFeedbackRef> ctImagesFeedbackRefs = ctImagesFeedbackRefService.list(new LambdaQueryWrapper<CtImagesFeedbackRef>()
.eq(CtImagesFeedbackRef::getFeedbackId, ctFeedback.getId()));
if (null != ctImagesFeedbackRefs && ctImagesFeedbackRefs.size() > 0) {
List<Long> imageIds = ctImagesFeedbackRefs.stream()
.map(CtImagesFeedbackRef::getImageId) // 提取 imageId
.collect(Collectors.toList());
List<CtGalleryImages> galleryImages = ctGalleryImagesService.list(new LambdaQueryWrapper<CtGalleryImages>()
.in(CtGalleryImages::getId, imageIds));
List<Long> fileIds = galleryImages.stream()
.map(CtGalleryImages::getFileId)
.collect(Collectors.toList());
List<CmAttach> cmAttachList = cmAttachService.list(new LambdaQueryWrapper<CmAttach>().in(CmAttach::getFileId,fileIds));
ctFeedback.setFile(cmAttachList);
}
}
}
/**
*
*/
@ApiOperation("查询任务反馈列表")
@GetMapping("/list")
public AjaxResult list(CtTaskFeedback ctTaskFeedback) {
LambdaQueryWrapper<CtTaskFeedback> queryWrapper = new LambdaQueryWrapper();
if (-1 == ctTaskFeedback.getTaskTagId()) {
queryWrapper.eq(CtTaskFeedback::getTaskId, ctTaskFeedback.getTaskId())
.eq(CtTaskFeedback::getTaskBranchId,ctTaskFeedback.getTaskBranchId())
.isNull(CtTaskFeedback::getTaskTagId);
} else {
condition(queryWrapper,ctTaskFeedback);
}
List<CtTaskFeedback> list = ctTaskFeedbackService.list(queryWrapper);
setFile(list);
return success(list);
}
/**
*
*/
@ApiOperation("通过标签查询任务反馈列表")
@GetMapping("/listByTag")
public AjaxResult listByTag(CtTaskFeedback ctTaskFeedback) {
Map<String, Object> map = new HashMap<>();
List<CtTaskTag> ctTaskTags = ctTaskTagService.list(new LambdaQueryWrapper<CtTaskTag>().eq(CtTaskTag::getTaskId, ctTaskFeedback.getTaskId()));
List<CtTaskFeedback> ctTaskFeedbacks = ctTaskFeedbackService.list(new LambdaQueryWrapper<CtTaskFeedback>()
.eq(CtTaskFeedback::getTaskId, ctTaskFeedback.getTaskId())
.eq(CtTaskFeedback::getTaskBranchId,ctTaskFeedback.getTaskBranchId())
.isNull(CtTaskFeedback::getTaskTagId));
for (CtTaskTag taskTag : ctTaskTags) {
LambdaQueryWrapper<CtTaskFeedback> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(CtTaskFeedback::getTaskTagId,taskTag.getId());
queryWrapper.eq(CtTaskFeedback::getTaskBranchId,ctTaskFeedback.getTaskBranchId());
List<CtTaskFeedback> list = ctTaskFeedbackService.list(queryWrapper);
setFile(list);
taskTag.setCtTaskFeedbacks(list);
}
map.put("ctTaskTags",ctTaskTags);
map.put("ctTaskFeedbacks",ctTaskFeedbacks);
return success(map);
}
/**
*
*/
@ApiOperation("导出任务反馈列表")
@Log(title = "任务反馈导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, CtTaskFeedback ctTaskFeedback) {
LambdaQueryWrapper<CtTaskFeedback> queryWrapper = new LambdaQueryWrapper();
condition(queryWrapper,ctTaskFeedback);
List<CtTaskFeedback> list = ctTaskFeedbackService.list(queryWrapper);
ExcelUtil<CtTaskFeedback> util = new ExcelUtil<CtTaskFeedback>(CtTaskFeedback. class);
util.exportExcel(response, list, "任务反馈数据");
}
/**
*
*/
@ApiOperation("获取任务反馈详细信息")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(ctTaskFeedbackService.getById(id));
}
/**
*
*/
@ApiOperation("新增任务反馈")
@Log(title = "任务反馈新增", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody CtTaskFeedback ctTaskFeedback) {
updateFile(ctTaskFeedback);
boolean save = ctTaskFeedbackService.save(ctTaskFeedback);
if (save) {
saveRef(ctTaskFeedback);
}
return toAjax(true);
}
private void saveRef(CtTaskFeedback ctTaskFeedback) {
List<Long> imageIds = ctTaskFeedback.getImageIds();
if (null != imageIds && imageIds.size() > 0) {
for (Long imageId : imageIds) {
CtImagesFeedbackRef ctImagesFeedbackRef = new CtImagesFeedbackRef();
ctImagesFeedbackRef.setFeedbackId(ctTaskFeedback.getId());
ctImagesFeedbackRef.setImageId(imageId);
ctImagesFeedbackRefService.save(ctImagesFeedbackRef);
}
}
}
private void updateFile(CtTaskFeedback ctTaskFeedback) {
Long newId = System.currentTimeMillis() + new Random().nextInt(1000);
List<CmAttach> file = ctTaskFeedback.getFile();
if (null != file) {
for (CmAttach cmAttach : file) {
cmAttach.setFileId(String.valueOf(newId));
}
cmAttachService.updateBatchById(file);
ctTaskFeedback.setFileId(newId);
}
}
/**
*
*/
@ApiOperation("修改任务反馈")
@Log(title = "任务反馈修改", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody CtTaskFeedback ctTaskFeedback) {
updateFile(ctTaskFeedback);
saveRef(ctTaskFeedback);
return toAjax(ctTaskFeedbackService.updateById(ctTaskFeedback));
}
/**
*
*/
@ApiOperation("删除任务反馈")
@Log(title = "任务反馈删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable List<Long> ids) {
return toAjax(ctTaskFeedbackService.removeBatchByIds(ids));
}
/**
*
*/
private void condition (LambdaQueryWrapper<CtTaskFeedback> queryWrapper,CtTaskFeedback ctTaskFeedback){
//id
if(Validator.isNotEmpty(ctTaskFeedback.getId())){
queryWrapper.eq(CtTaskFeedback::getId,ctTaskFeedback.getId());
}
//任务id
if(Validator.isNotEmpty(ctTaskFeedback.getTaskId())){
queryWrapper.eq(CtTaskFeedback::getTaskId,ctTaskFeedback.getTaskId());
}
//任务id
if(Validator.isNotEmpty(ctTaskFeedback.getTaskTagId())){
queryWrapper.eq(CtTaskFeedback::getTaskTagId,ctTaskFeedback.getTaskTagId());
}
//机构任务id
if(Validator.isNotEmpty(ctTaskFeedback.getTaskBranchId())){
queryWrapper.eq(CtTaskFeedback::getTaskBranchId,ctTaskFeedback.getTaskBranchId());
}
//机构代码
if(Validator.isNotEmpty(ctTaskFeedback.getBranchCode())){
queryWrapper.eq(CtTaskFeedback::getBranchCode,ctTaskFeedback.getBranchCode());
}
//任务反馈时间
if(Validator.isNotEmpty(ctTaskFeedback.getFeedbackTime())){
queryWrapper.eq(CtTaskFeedback::getFeedbackTime,ctTaskFeedback.getFeedbackTime());
}
//任务完成情况
if(Validator.isNotEmpty(ctTaskFeedback.getTaskDesc())){
queryWrapper.eq(CtTaskFeedback::getTaskDesc,ctTaskFeedback.getTaskDesc());
}
//操作人员工号
if(Validator.isNotEmpty(ctTaskFeedback.getUserId())){
queryWrapper.eq(CtTaskFeedback::getUserId,ctTaskFeedback.getUserId());
}
//操作人员姓名
if(Validator.isNotEmpty(ctTaskFeedback.getUserName())){
queryWrapper.eq(CtTaskFeedback::getUserName,ctTaskFeedback.getUserName());
}
//操作人员部门
if(Validator.isNotEmpty(ctTaskFeedback.getUserDept())){
queryWrapper.eq(CtTaskFeedback::getUserDept,ctTaskFeedback.getUserDept());
}
//是否已拍照留存
if(Validator.isNotEmpty(ctTaskFeedback.getIsPhoto())){
queryWrapper.eq(CtTaskFeedback::getIsPhoto,ctTaskFeedback.getIsPhoto());
}
//附件id
if(Validator.isNotEmpty(ctTaskFeedback.getFileId())){
queryWrapper.eq(CtTaskFeedback::getFileId,ctTaskFeedback.getFileId());
}
//审核人员id
if(Validator.isNotEmpty(ctTaskFeedback.getCheckUserId())){
queryWrapper.eq(CtTaskFeedback::getCheckUserId,ctTaskFeedback.getCheckUserId());
}
//审核人员姓名
if(Validator.isNotEmpty(ctTaskFeedback.getCheckUserName())){
queryWrapper.eq(CtTaskFeedback::getCheckUserName,ctTaskFeedback.getCheckUserName());
}
//审核人员部门
if(Validator.isNotEmpty(ctTaskFeedback.getCheckUserDept())){
queryWrapper.eq(CtTaskFeedback::getCheckUserDept,ctTaskFeedback.getCheckUserDept());
}
//审核时间
if(Validator.isNotEmpty(ctTaskFeedback.getCheckDate())){
queryWrapper.eq(CtTaskFeedback::getCheckDate,ctTaskFeedback.getCheckDate());
}
//审核状态
if(Validator.isNotEmpty(ctTaskFeedback.getStatus())){
queryWrapper.eq(CtTaskFeedback::getStatus,ctTaskFeedback.getStatus());
}
//审核信息
if(Validator.isNotEmpty(ctTaskFeedback.getCheckInfo())){
queryWrapper.eq(CtTaskFeedback::getCheckInfo,ctTaskFeedback.getCheckInfo());
}
//备注
if(Validator.isNotEmpty(ctTaskFeedback.getRemarks())){
queryWrapper.eq(CtTaskFeedback::getRemarks,ctTaskFeedback.getRemarks());
}
//删除标志0代表存在 2代表删除
if(Validator.isNotEmpty(ctTaskFeedback.getDelFlag())){
queryWrapper.eq(CtTaskFeedback::getDelFlag,ctTaskFeedback.getDelFlag());
}
//创建部门
if(Validator.isNotEmpty(ctTaskFeedback.getCreateDept())){
queryWrapper.eq(CtTaskFeedback::getCreateDept,ctTaskFeedback.getCreateDept());
}
//创建人
if(Validator.isNotEmpty(ctTaskFeedback.getCreateBy())){
queryWrapper.eq(CtTaskFeedback::getCreateBy,ctTaskFeedback.getCreateBy());
}
//创建时间
if(Validator.isNotEmpty(ctTaskFeedback.getCreateTime())){
queryWrapper.eq(CtTaskFeedback::getCreateTime,ctTaskFeedback.getCreateTime());
}
//修改人
if(Validator.isNotEmpty(ctTaskFeedback.getUpdateBy())){
queryWrapper.eq(CtTaskFeedback::getUpdateBy,ctTaskFeedback.getUpdateBy());
}
//修改时间
if(Validator.isNotEmpty(ctTaskFeedback.getUpdateTime())){
queryWrapper.eq(CtTaskFeedback::getUpdateTime,ctTaskFeedback.getUpdateTime());
}
//租户ID
if(Validator.isNotEmpty(ctTaskFeedback.getTenantId())){
queryWrapper.eq(CtTaskFeedback::getTenantId,ctTaskFeedback.getTenantId());
}
}
}