package org.jeecg.modules.eam.controller;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.jeecg.dingtalk.api.user.vo.User;
|
import com.jeecg.dingtalk.api.user.vo.UserRole;
|
import org.jeecg.common.api.dto.message.MessageDTO;
|
import org.jeecg.common.system.api.ISysBaseAPI;
|
import org.jeecg.common.system.query.QueryGenerator;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import lombok.extern.slf4j.Slf4j;
|
import org.jeecg.common.system.base.controller.JeecgController;
|
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.modules.eam.entity.*;
|
import org.jeecg.modules.eam.service.*;
|
import org.jeecg.modules.eam.vo.ButtonVo;
|
import org.jeecg.modules.system.entity.*;
|
import org.jeecg.modules.system.service.*;
|
import org.jetbrains.annotations.NotNull;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import java.time.LocalDate;
|
import java.time.ZoneId;
|
import java.util.*;
|
|
import org.jeecg.common.util.oConvertUtils;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
import org.apache.shiro.SecurityUtils;
|
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
import org.jeecgframework.poi.excel.entity.ExportParams;
|
import org.jeecgframework.poi.excel.entity.ImportParams;
|
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
import java.io.IOException;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Description: 设备ABC评价
|
* @Author: jeecg-boot
|
* @Date: 2023-11-21
|
* @Version: V1.0
|
*/
|
@Api(tags="设备ABC评价")
|
@RestController
|
@RequestMapping("/eam/stream")
|
@Slf4j
|
public class StreamController extends JeecgController<Stream, IStreamService> {
|
|
@Autowired
|
private IStreamService streamService;
|
|
@Autowired
|
private IStreamOperationService streamOperationService;
|
|
@Autowired
|
private IABCAssessmentService aBCAssessmentService;
|
|
@Autowired
|
private ISysUserRoleService userRoleService;
|
|
@Autowired
|
private ISysRoleService roleService;
|
|
@Autowired
|
private ISysDictService sysDictService;
|
|
@Autowired
|
private ISysDictItemService sysDictItemService;
|
|
@Autowired
|
private ISysBaseAPI sysBaseAPI;
|
|
@Autowired
|
private ISysUserService userService;
|
|
@Autowired
|
private IEamEquipmentService equipmentService;
|
|
@Autowired
|
private IdentityService sysIdentityService;
|
|
@Autowired
|
private IEquipmentMaintenancePlanDetailService planDetailService;
|
|
@Autowired
|
private IEquipmentMaintenancePlanService planService;
|
|
@Autowired
|
private IMaintenanceStandardService maintenanceStandardService;
|
@Autowired
|
private IEquipmentUpdateInfoService updateInfoService;
|
|
|
|
|
|
|
/*---------------------------------主表处理-begin-------------------------------------*/
|
|
/**
|
* 分页列表查询
|
* @param stream
|
* @param pageNo
|
* @param pageSize
|
* @param req
|
* @return
|
*/
|
//@AutoLog(value = "设备ABC评价-分页列表查询")
|
@ApiOperation(value="设备ABC评价-分页列表查询", notes="设备ABC评价-分页列表查询")
|
@GetMapping(value = "/list")
|
public Result<IPage<Stream>> queryPageList(Stream stream,
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
HttpServletRequest req) {
|
LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
SysUser sysUser = userService.getById(user.getId());
|
if(StringUtils.isNotBlank(sysUser.getAreaId())){
|
stream.setAreaId(sysUser.getAreaId());
|
}
|
QueryWrapper<Stream> queryWrapper = QueryGenerator.initQueryWrapper(stream, req.getParameterMap());
|
Page<Stream> page = new Page<Stream>(pageNo, pageSize);
|
IPage<Stream> pageList = streamService.myPage(page, stream);
|
return Result.OK(pageList);
|
}
|
|
/**
|
* 添加
|
* @param stream
|
* @return
|
*/
|
@AutoLog(value = "设备ABC评价-添加")
|
@ApiOperation(value="设备ABC评价-添加", notes="设备ABC评价-添加")
|
//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_stream:add")
|
@PostMapping(value = "/add")
|
@Transactional(rollbackFor = {Exception.class})
|
public Result<String> add(@RequestBody Stream stream) {
|
LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
stream.setStatus("create");
|
stream.setCreateBy(user.getId());
|
stream.setType("ABC");
|
streamService.save(stream);
|
List<ABCAssessment> abcAssessmentList = stream.getAssessmentList();
|
for(ABCAssessment abcAssessment:abcAssessmentList){
|
Equipment equipment = equipmentService.getById(abcAssessment.getEquipmentId());
|
boolean isD = "D".equals(abcAssessment.getFinalStandard());
|
boolean a = StringUtils.isNotBlank(equipment.getStandardA())&&StringUtils.isNotBlank(abcAssessment.getStandardA())&&equipment.getStandardA().equals(abcAssessment.getStandardA());
|
boolean b = StringUtils.isNotBlank(equipment.getStandardB())&&StringUtils.isNotBlank(abcAssessment.getStandardB())&&equipment.getStandardB().equals(abcAssessment.getStandardB());
|
boolean c = StringUtils.isNotBlank(equipment.getStandardC())&&StringUtils.isNotBlank(abcAssessment.getStandardC())&&equipment.getStandardC().equals(abcAssessment.getStandardC());
|
boolean d = StringUtils.isNotBlank(equipment.getStandardD())&&StringUtils.isNotBlank(abcAssessment.getStandardD())&&equipment.getStandardD().equals(abcAssessment.getStandardD());
|
boolean e = StringUtils.isNotBlank(equipment.getStandardE())&&StringUtils.isNotBlank(abcAssessment.getStandardE())&&equipment.getStandardE().equals(abcAssessment.getStandardE());
|
boolean f = StringUtils.isNotBlank(equipment.getStandardF())&&StringUtils.isNotBlank(abcAssessment.getStandardF())&&equipment.getStandardF().equals(abcAssessment.getStandardF());
|
if(isD&&a&&b&&c&&d&&e&&f){
|
abcAssessment.setStandardA(null);
|
abcAssessment.setStandardB(null);
|
abcAssessment.setStandardC(null);
|
abcAssessment.setStandardD(null);
|
abcAssessment.setStandardE(null);
|
abcAssessment.setStandardF(null);
|
}
|
abcAssessment.setStreamId(stream.getId());
|
}
|
aBCAssessmentService.saveBatch(abcAssessmentList);
|
return Result.OK("添加成功!");
|
}
|
|
/**
|
* 编辑
|
* @param stream
|
* @return
|
*/
|
@AutoLog(value = "设备ABC评价-编辑")
|
@ApiOperation(value="设备ABC评价-编辑", notes="设备ABC评价-编辑")
|
@Transactional(rollbackFor = {Exception.class})
|
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
public Result<String> edit(@RequestBody Stream stream) {
|
LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
aBCAssessmentService.remove(new QueryWrapper<ABCAssessment>().eq("stream_id",stream.getId()));
|
stream.setUpdateBy(user.getId());
|
streamService.updateById(stream);
|
List<ABCAssessment> abcAssessmentList = stream.getAssessmentList();
|
for(ABCAssessment abcAssessment:abcAssessmentList){
|
abcAssessment.setStreamId(stream.getId());
|
}
|
aBCAssessmentService.saveBatch(abcAssessmentList);
|
return Result.OK("编辑成功!");
|
}
|
|
/**
|
* 通过id删除
|
* @param id
|
* @return
|
*/
|
@AutoLog(value = "设备ABC评价-通过id删除")
|
@ApiOperation(value="设备ABC评价-通过id删除", notes="设备ABC评价-通过id删除")
|
//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_stream:delete")
|
@DeleteMapping(value = "/delete")
|
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
aBCAssessmentService.remove(new QueryWrapper<ABCAssessment>().eq("stream_id",id));
|
streamService.delMain(id);
|
return Result.OK("删除成功!");
|
}
|
|
/**
|
* 批量删除
|
* @param ids
|
* @return
|
*/
|
@AutoLog(value = "设备ABC评价-批量删除")
|
@ApiOperation(value="设备ABC评价-批量删除", notes="设备ABC评价-批量删除")
|
//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_stream:deleteBatch")
|
@DeleteMapping(value = "/deleteBatch")
|
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
this.streamService.delBatchMain(Arrays.asList(ids.split(",")));
|
return Result.OK("批量删除成功!");
|
}
|
|
/**
|
* 导出
|
* @return
|
*/
|
//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_stream:exportXls")
|
@RequestMapping(value = "/exportXls")
|
public ModelAndView exportXls(HttpServletRequest request, Stream stream) {
|
return super.exportXls(request, stream, Stream.class, "设备ABC评价");
|
}
|
|
/**
|
* 导入
|
* @return
|
*/
|
//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_stream:importExcel")
|
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
return super.importExcel(request, response, Stream.class);
|
}
|
/*---------------------------------主表处理-end-------------------------------------*/
|
|
|
/*--------------------------------子表处理-操作记录-begin----------------------------------------------*/
|
/**
|
* 通过主表ID查询
|
* @return
|
*/
|
//@AutoLog(value = "操作记录-通过主表ID查询")
|
@ApiOperation(value="操作记录-通过主表ID查询", notes="操作记录-通过主表ID查询")
|
@GetMapping(value = "/listStreamOperationByMainId")
|
public Result<IPage<StreamOperation>> listStreamOperationByMainId(StreamOperation streamOperation,
|
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
HttpServletRequest req) {
|
QueryWrapper<StreamOperation> queryWrapper = QueryGenerator.initQueryWrapper(streamOperation, req.getParameterMap());
|
Page<StreamOperation> page = new Page<StreamOperation>(pageNo, pageSize);
|
IPage<StreamOperation> pageList = streamOperationService.page(page, queryWrapper);
|
return Result.OK(pageList);
|
}
|
|
/**
|
* 添加
|
* @param streamOperation
|
* @return
|
*/
|
@AutoLog(value = "操作记录-添加")
|
@ApiOperation(value="操作记录-添加", notes="操作记录-添加")
|
@PostMapping(value = "/addStreamOperation")
|
public Result<String> addStreamOperation(@RequestBody StreamOperation streamOperation) {
|
streamOperationService.save(streamOperation);
|
return Result.OK("添加成功!");
|
}
|
|
/**
|
* 编辑
|
* @param streamOperation
|
* @return
|
*/
|
@AutoLog(value = "操作记录-编辑")
|
@ApiOperation(value="操作记录-编辑", notes="操作记录-编辑")
|
@RequestMapping(value = "/editStreamOperation", method = {RequestMethod.PUT,RequestMethod.POST})
|
public Result<String> editStreamOperation(@RequestBody StreamOperation streamOperation) {
|
streamOperationService.updateById(streamOperation);
|
return Result.OK("编辑成功!");
|
}
|
|
/**
|
* 通过id删除
|
* @param id
|
* @return
|
*/
|
@AutoLog(value = "操作记录-通过id删除")
|
@ApiOperation(value="操作记录-通过id删除", notes="操作记录-通过id删除")
|
@DeleteMapping(value = "/deleteStreamOperation")
|
public Result<String> deleteStreamOperation(@RequestParam(name="id",required=true) String id) {
|
streamOperationService.removeById(id);
|
return Result.OK("删除成功!");
|
}
|
|
/**
|
* 批量删除
|
* @param ids
|
* @return
|
*/
|
@AutoLog(value = "操作记录-批量删除")
|
@ApiOperation(value="操作记录-批量删除", notes="操作记录-批量删除")
|
@DeleteMapping(value = "/deleteBatchStreamOperation")
|
public Result<String> deleteBatchStreamOperation(@RequestParam(name="ids",required=true) String ids) {
|
this.streamOperationService.removeByIds(Arrays.asList(ids.split(",")));
|
return Result.OK("批量删除成功!");
|
}
|
|
/**
|
* 导出
|
* @return
|
*/
|
@RequestMapping(value = "/exportStreamOperation")
|
public ModelAndView exportStreamOperation(HttpServletRequest request, StreamOperation streamOperation) {
|
// Step.1 组装查询条件
|
QueryWrapper<StreamOperation> queryWrapper = QueryGenerator.initQueryWrapper(streamOperation, request.getParameterMap());
|
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
// Step.2 获取导出数据
|
List<StreamOperation> pageList = streamOperationService.list(queryWrapper);
|
List<StreamOperation> exportList = null;
|
|
// 过滤选中数据
|
String selections = request.getParameter("selections");
|
if (oConvertUtils.isNotEmpty(selections)) {
|
List<String> selectionList = Arrays.asList(selections.split(","));
|
exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
|
} else {
|
exportList = pageList;
|
}
|
|
// Step.3 AutoPoi 导出Excel
|
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
//此处设置的filename无效,前端会重更新设置一下
|
mv.addObject(NormalExcelConstants.FILE_NAME, "操作记录");
|
mv.addObject(NormalExcelConstants.CLASS, StreamOperation.class);
|
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("操作记录报表", "导出人:" + sysUser.getRealname(), "操作记录"));
|
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
|
return mv;
|
}
|
|
/**
|
* 导入
|
* @return
|
*/
|
@RequestMapping(value = "/importStreamOperation/{mainId}")
|
public Result<?> importStreamOperation(HttpServletRequest request, HttpServletResponse response, @PathVariable("mainId") String mainId) {
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
// 获取上传文件对象
|
MultipartFile file = entity.getValue();
|
ImportParams params = new ImportParams();
|
params.setTitleRows(2);
|
params.setHeadRows(1);
|
params.setNeedSave(true);
|
try {
|
List<StreamOperation> list = ExcelImportUtil.importExcel(file.getInputStream(), StreamOperation.class, params);
|
for (StreamOperation temp : list) {
|
temp.setStreamId(mainId);
|
}
|
long start = System.currentTimeMillis();
|
streamOperationService.saveBatch(list);
|
log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
|
return Result.OK("文件导入成功!数据行数:" + list.size());
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
return Result.error("文件导入失败:" + e.getMessage());
|
} finally {
|
try {
|
file.getInputStream().close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
return Result.error("文件导入失败!");
|
}
|
|
/*--------------------------------子表处理-操作记录-end----------------------------------------------*/
|
|
/*--------------------------------子表处理-ABC评分-begin----------------------------------------------*/
|
/**
|
* 通过主表ID查询
|
* @return
|
*/
|
//@AutoLog(value = "ABC评分-通过主表ID查询")
|
@ApiOperation(value="ABC评分-通过主表ID查询", notes="ABC评分-通过主表ID查询")
|
@GetMapping(value = "/listABCAssessmentByMainId")
|
public Result<IPage<ABCAssessment>> listABCAssessmentByMainId(ABCAssessment aBCAssessment,
|
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
HttpServletRequest req) {
|
QueryWrapper<ABCAssessment> queryWrapper = QueryGenerator.initQueryWrapper(aBCAssessment, req.getParameterMap());
|
Page<ABCAssessment> page = new Page<ABCAssessment>(pageNo, pageSize);
|
IPage<ABCAssessment> pageList = aBCAssessmentService.myPage(page, aBCAssessment.getStreamId());
|
return Result.OK(pageList);
|
}
|
|
/**
|
* 添加
|
* @param aBCAssessment
|
* @return
|
*/
|
@AutoLog(value = "ABC评分-添加")
|
@ApiOperation(value="ABC评分-添加", notes="ABC评分-添加")
|
@PostMapping(value = "/addABCAssessment")
|
public Result<String> addABCAssessment(@RequestBody ABCAssessment aBCAssessment) {
|
aBCAssessmentService.save(aBCAssessment);
|
return Result.OK("添加成功!");
|
}
|
|
/**
|
* 编辑
|
* @param aBCAssessment
|
* @return
|
*/
|
@AutoLog(value = "ABC评分-编辑")
|
@ApiOperation(value="ABC评分-编辑", notes="ABC评分-编辑")
|
@RequestMapping(value = "/editABCAssessment", method = {RequestMethod.PUT,RequestMethod.POST})
|
public Result<String> editABCAssessment(@RequestBody ABCAssessment aBCAssessment) {
|
aBCAssessmentService.updateById(aBCAssessment);
|
return Result.OK("编辑成功!");
|
}
|
|
/**
|
* 通过id删除
|
* @param id
|
* @return
|
*/
|
@AutoLog(value = "ABC评分-通过id删除")
|
@ApiOperation(value="ABC评分-通过id删除", notes="ABC评分-通过id删除")
|
@DeleteMapping(value = "/deleteABCAssessment")
|
public Result<String> deleteABCAssessment(@RequestParam(name="id",required=true) String id) {
|
aBCAssessmentService.removeById(id);
|
return Result.OK("删除成功!");
|
}
|
|
/**
|
* 批量删除
|
* @param ids
|
* @return
|
*/
|
@AutoLog(value = "ABC评分-批量删除")
|
@ApiOperation(value="ABC评分-批量删除", notes="ABC评分-批量删除")
|
@DeleteMapping(value = "/deleteBatchABCAssessment")
|
public Result<String> deleteBatchABCAssessment(@RequestParam(name="ids",required=true) String ids) {
|
this.aBCAssessmentService.removeByIds(Arrays.asList(ids.split(",")));
|
return Result.OK("批量删除成功!");
|
}
|
|
/**
|
* 导出
|
* @return
|
*/
|
@RequestMapping(value = "/exportABCAssessment")
|
public ModelAndView exportABCAssessment(HttpServletRequest request, ABCAssessment aBCAssessment) {
|
// Step.1 组装查询条件
|
QueryWrapper<ABCAssessment> queryWrapper = QueryGenerator.initQueryWrapper(aBCAssessment, request.getParameterMap());
|
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
// Step.2 获取导出数据
|
List<ABCAssessment> pageList = aBCAssessmentService.list(queryWrapper);
|
List<ABCAssessment> exportList = null;
|
|
// 过滤选中数据
|
String selections = request.getParameter("selections");
|
if (oConvertUtils.isNotEmpty(selections)) {
|
List<String> selectionList = Arrays.asList(selections.split(","));
|
exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
|
} else {
|
exportList = pageList;
|
}
|
|
// Step.3 AutoPoi 导出Excel
|
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
//此处设置的filename无效,前端会重更新设置一下
|
mv.addObject(NormalExcelConstants.FILE_NAME, "ABC评分");
|
mv.addObject(NormalExcelConstants.CLASS, ABCAssessment.class);
|
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("ABC评分报表", "导出人:" + sysUser.getRealname(), "ABC评分"));
|
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
|
return mv;
|
}
|
|
/**
|
* 导入
|
* @return
|
*/
|
@RequestMapping(value = "/importABCAssessment/{mainId}")
|
public Result<?> importABCAssessment(HttpServletRequest request, HttpServletResponse response, @PathVariable("mainId") String mainId) {
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
// 获取上传文件对象
|
MultipartFile file = entity.getValue();
|
ImportParams params = new ImportParams();
|
params.setTitleRows(2);
|
params.setHeadRows(1);
|
params.setNeedSave(true);
|
try {
|
List<ABCAssessment> list = ExcelImportUtil.importExcel(file.getInputStream(), ABCAssessment.class, params);
|
for (ABCAssessment temp : list) {
|
temp.setStreamId(mainId);
|
}
|
long start = System.currentTimeMillis();
|
aBCAssessmentService.saveBatch(list);
|
log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
|
return Result.OK("文件导入成功!数据行数:" + list.size());
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
return Result.error("文件导入失败:" + e.getMessage());
|
} finally {
|
try {
|
file.getInputStream().close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
return Result.error("文件导入失败!");
|
}
|
|
/*--------------------------------子表处理-ABC评分-end----------------------------------------------*/
|
|
/**
|
* 通过id查询
|
*
|
* @param id
|
* @return
|
*/
|
//@AutoLog(value = "ABC评价通过主表ID查询")
|
@ApiOperation(value="ABC评价主表ID查询", notes="ABC评价-通主表ID查询")
|
@GetMapping(value = "/queryABCAssessmentByMainId")
|
public Result<List<ABCAssessment>> queryABCAssessmentListByMainId(@RequestParam(name="id",required=true) String id) {
|
List<ABCAssessment> aBCAssessmentList = aBCAssessmentService.selectByMainId(id);
|
return Result.OK(aBCAssessmentList);
|
}
|
@GetMapping("getPreInfo")
|
public Result<Map<String,Object>> getPreInfo(){
|
Map<String,Object> map = new HashMap<>(3);
|
LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
SysDict roleNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","abc_stream_node_role"),false);
|
SysDict nodeOperation = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node_operation"),false);
|
SysDict operation = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_operation"),false);
|
if(ObjectUtils.isNotNull(roleNode)){
|
List<SysDictItem> roleNodeItems = sysDictItemService.selectItemsByMainId(roleNode.getId());
|
List<String> roleCodes = roleNodeItems.stream().map(SysDictItem::getItemText).collect(Collectors.toList());
|
if(ObjectUtils.isNotNull(nodeOperation)){
|
List<SysDictItem> nodeOperationItems = sysDictItemService.selectItemsByMainId(nodeOperation.getId());
|
List<SysUserRole> userRoles = userRoleService.list(new QueryWrapper<SysUserRole>().eq("user_id",user.getId()));
|
List<String> roleIds = userRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
|
List<SysRole> roles = roleService.list(new QueryWrapper<SysRole>().in("id",roleIds).in("role_code",roleCodes));
|
if(roles.size()==1){
|
for(SysDictItem roleNodeItem:roleNodeItems){
|
if(roles.get(0).getRoleCode().equals(roleNodeItem.getItemText())){
|
for(SysDictItem nodeOperationItem:nodeOperationItems){
|
if(roleNodeItem.getItemValue().equals(nodeOperationItem.getItemValue())){
|
if(ObjectUtils.isNotNull(operation)){
|
List<String> buttonValues = Arrays.asList(nodeOperationItem.getItemText().split(","));
|
List<SysDictItem> operations = sysDictItemService.selectItemsByMainId(operation.getId());
|
List<ButtonVo> buttons = new ArrayList<>();
|
for(String value:buttonValues){
|
for(SysDictItem name:operations){
|
|
if(name.getItemValue().equals(value)){
|
ButtonVo button = new ButtonVo();
|
button.setName(name.getItemText());
|
button.setValue(value);
|
buttons.add(button);
|
}
|
}
|
}
|
map.put("buttons",buttons);
|
map.put("nodeValue",nodeOperationItem.getItemValue());
|
map.put("nodeSort",roleNodeItem.getSortOrder());
|
map.put("msg","ok");
|
return Result.OK(map);
|
}
|
|
}
|
}
|
}
|
}
|
}
|
}
|
|
}
|
map.put("msg","该用户无签审角色");
|
return Result.OK(map);
|
}
|
@PostMapping("next")
|
@Transactional(rollbackFor = {Exception.class})
|
public Result<?> handleNext(@RequestBody ButtonVo buttonVo){
|
LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
List<StreamOperation> streamOperations = streamOperationService.list(new QueryWrapper<StreamOperation>().eq("stream_id",buttonVo.getStreamId()).orderByDesc("sort"));
|
SysDict streamNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node"),false);
|
if(ObjectUtils.isNotNull(streamNode)){
|
List<SysDictItem> nodes = sysDictItemService.selectItemsByMainId(streamNode.getId());
|
if(buttonVo.getNodeSort()+1==nodes.size()){
|
List<ABCAssessment> abcAssessments = aBCAssessmentService.selectByMainId(buttonVo.getStreamId());
|
EquipmentMaintenancePlan plan = new EquipmentMaintenancePlan();
|
UUID uuid = UUID.randomUUID();
|
long mostSignificantBits = uuid.getMostSignificantBits();
|
long leastSignificantBits = uuid.getLeastSignificantBits();
|
|
// 将最高位和最低位取出,然后合并为一个long类型的值
|
long combinedBits = mostSignificantBits ^ leastSignificantBits;
|
|
// 将合并后的long值转换为16进制字符串
|
String hexString = Long.toHexString(combinedBits);
|
String planNum = sysIdentityService.getNumByTypeAndLength("MaintenancePlan",4);
|
plan.setId(hexString);
|
plan.setNum(planNum);
|
plan.setType("3");
|
plan.setStatus("created");
|
plan.setCreateReason("因ABC标识从B或C变更为A而导致下次三保时间过期,就这些设备生成的临时保养计划");
|
List<EquipmentMaintenancePlanDetail> details = new ArrayList<>();
|
for(ABCAssessment abcAssessment:abcAssessments){
|
Equipment equipment = equipmentService.getById(abcAssessment.getEquipmentId());
|
String oldStandard = abcAssessment.getOldStandard();
|
String newStandard = abcAssessment.getFinalStandard();
|
LocalDate currentDate = LocalDate.now();
|
|
// 将当前日期加一天
|
LocalDate nextDay = currentDate.plusDays(1);
|
LocalDate nextMonth = currentDate.plusMonths(1);
|
|
// 将LocalDate转换为Date
|
Date currentDateAsDate = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
Date nextDayAsDate =Date.from(nextDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
Date nextMonthAsDate = Date.from(nextMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
Date needingDate = equipment.getNextThirdMaintenanceTime();
|
Boolean a = StringUtils.isNotBlank(oldStandard)&&(oldStandard.equals("B")||oldStandard.equals("C"));
|
Boolean b = StringUtils.isNotBlank(newStandard)&&newStandard.equals("A");;
|
Boolean c = ObjectUtils.isNotNull(needingDate)&&needingDate.compareTo(currentDateAsDate)<0;
|
if(a&&b&&c){
|
EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail = new EquipmentMaintenancePlanDetail();
|
equipmentMaintenancePlanDetail.setPlanId(hexString);
|
equipmentMaintenancePlanDetail.setEquipmentId(equipment.getId());
|
equipmentMaintenancePlanDetail.setPlanStartTime(nextDayAsDate);
|
equipmentMaintenancePlanDetail.setPlanEndTime(nextMonthAsDate);
|
MaintenanceStandard maintenanceStandard = maintenanceStandardService.getOne(new QueryWrapper<MaintenanceStandard>()
|
.eq("equipment_id",equipment.getId())
|
.eq("maintenance_type","3")
|
.eq("version_status","2")
|
.eq("del_flag",0),false);
|
if(ObjectUtils.isNotNull(maintenanceStandard)){
|
equipmentMaintenancePlanDetail.setStandardId(maintenanceStandard.getId());
|
details.add(equipmentMaintenancePlanDetail);
|
}
|
}
|
equipment.setEquipmentImportanceId(abcAssessment.getFinalStandard());
|
equipment.setStandardA(abcAssessment.getStandardA());
|
equipment.setStandardB(abcAssessment.getStandardB());
|
equipment.setStandardC(abcAssessment.getStandardC());
|
equipment.setStandardD(abcAssessment.getStandardD());
|
equipment.setStandardE(abcAssessment.getStandardE());
|
equipment.setStandardF(abcAssessment.getStandardF());
|
equipmentService.updateById(equipment);
|
EquipmentUpdateInfo equipmentUpdateInfo = new EquipmentUpdateInfo();
|
equipmentUpdateInfo.setOldAbcTag(oldStandard);
|
equipmentUpdateInfo.setNewAbcTag(newStandard);
|
equipmentUpdateInfo.setEquipmentId(equipment.getId());
|
equipmentUpdateInfo.setUpdatePerson(user.getId());
|
equipmentUpdateInfo.setUpdateType("ABC");
|
equipmentUpdateInfo.setUpdateDate(currentDateAsDate);
|
updateInfoService.save(equipmentUpdateInfo);
|
|
}
|
if(details.size()>0){
|
planService.save(plan);
|
planDetailService.saveBatch(details);
|
}
|
}
|
|
SysDictItem nextStreamNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",streamNode.getId()).eq("sort_order",buttonVo.getNodeSort()+1),false);
|
return getResult(buttonVo, user, streamOperations, nextStreamNodeItem);
|
}
|
return Result.error("签审流系统出现错误,请联系管理员");
|
}
|
|
@NotNull
|
private Result<?> getResult(@RequestBody ButtonVo buttonVo, LoginUser user, List<StreamOperation> streamOperations, SysDictItem nextStreamNodeItem) {
|
SysDict roleNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","abc_stream_node_role"),false);
|
SysDictItem roleNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",roleNode.getId()).eq("item_value",nextStreamNodeItem.getItemValue()));
|
SysRole nextRole = roleService.getOne(new QueryWrapper<SysRole>().eq("role_code",roleNodeItem.getItemText()));
|
return getResult(buttonVo, user, streamOperations, nextStreamNodeItem,nextRole);
|
}
|
|
@NotNull
|
private Result<?> getResult(@RequestBody ButtonVo buttonVo, LoginUser user, List<StreamOperation> streamOperations, SysDictItem nextStreamNodeItem,SysRole role) {
|
if(ObjectUtils.isNotNull(nextStreamNodeItem)){
|
Stream stream = streamService.getById(buttonVo.getStreamId());
|
stream.setStatus(nextStreamNodeItem.getItemValue());
|
streamService.updateById(stream);
|
StreamOperation streamOperation = new StreamOperation();
|
streamOperation.setOperation(buttonVo.getValue());
|
streamOperation.setStreamId(stream.getId());
|
streamOperation.setOperationNode(buttonVo.getNode());
|
streamOperation.setUserId(user.getId());
|
streamOperation.setCreateTime(new Date());
|
streamOperation.setRemark(buttonVo.getRemark());
|
if(streamOperations.size()==0){
|
streamOperation.setSort(0);
|
}
|
else {
|
streamOperation.setSort(streamOperations.get(0).getSort()+1);
|
streamOperation.setSourceId(streamOperations.get(0).getId());
|
}
|
streamOperationService.save(streamOperation);
|
List<String> userIds = userRoleService.list(new QueryWrapper<SysUserRole>().eq("role_id",role.getId())).stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
for(String uId:userIds){
|
SysUser toU = userService.getById(uId);
|
String msg = "单据号为"+stream.getNum()+"的ABC标识变更单需要确认";
|
MessageDTO messageDTO = new MessageDTO();
|
messageDTO.setTitle("ABC标识变更");
|
messageDTO.setContent(msg);
|
messageDTO.setCategory("ABC变更");
|
messageDTO.setFromUser(user.getUsername());
|
messageDTO.setToUser(toU.getUsername());
|
sysBaseAPI.sendSysAnnouncement(messageDTO);
|
}
|
return Result.OK("操作成功");
|
}else {
|
return Result.error("签审流系统出现错误,请联系管理员");
|
}
|
}
|
|
@PostMapping("last")
|
@Transactional(rollbackFor = {Exception.class})
|
public Result<?> handleLast(@RequestBody ButtonVo buttonVo){
|
LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
List<StreamOperation> streamOperations = streamOperationService.list(new QueryWrapper<StreamOperation>().eq("stream_id",buttonVo.getStreamId()).orderByDesc("sort"));
|
SysDict streamNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node"),false);
|
if(ObjectUtils.isNotNull(streamNode)){
|
SysDictItem nextStreamNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",streamNode.getId()).eq("sort_order",buttonVo.getNodeSort()-1),false);
|
return getResult(buttonVo, user, streamOperations, nextStreamNodeItem);
|
}
|
return Result.error("签审流系统出现错误,请联系管理员");
|
}
|
|
|
}
|