package org.jeecg.modules.eam.controller;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.parser.Feature;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.system.base.controller.JeecgController;
|
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.util.TranslateDictTextUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.modules.eam.dto.EamEquipmentDto;
|
import org.jeecg.modules.eam.entity.EamEquipment;
|
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
|
import org.jeecg.modules.eam.request.EamEquipmentQuery;
|
import org.jeecg.modules.eam.service.IEamEquipmentExtendService;
|
import org.jeecg.modules.eam.service.IEamEquipmentService;
|
import org.jeecg.modules.eam.vo.EamEquipmentTree;
|
import org.jeecg.modules.eam.vo.EquipmentSearchResult;
|
import org.jeecg.modules.system.entity.BaseFactory;
|
import org.jeecg.modules.system.entity.EamBaseRepairDepart;
|
import org.jeecg.modules.system.service.IBaseFactoryService;
|
import org.jeecg.modules.system.service.IEamBaseRepairDepartService;
|
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.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Description: 设备台账
|
* @Author: jeecg-boot
|
* @Date: 2025-03-19
|
* @Version: V1.0
|
*/
|
@Slf4j
|
@Api(tags = "设备台账")
|
@RestController
|
@RequestMapping("/eam/equipment")
|
public class EamEquipmentController extends JeecgController<EamEquipment, IEamEquipmentService> {
|
@Autowired
|
private IEamEquipmentService eamEquipmentService;
|
|
@Autowired
|
private IEamEquipmentExtendService eamEquipmentExtendService;
|
|
// @Autowired
|
// private IMdcEquipmentService mdcEquipmentService;
|
|
@Autowired
|
private ObjectMapper objectMapper;
|
@Autowired
|
private TranslateDictTextUtils translateDictTextUtils;
|
@Autowired
|
private IBaseFactoryService baseFactoryService;
|
@Autowired
|
private IEamBaseRepairDepartService eamBaseRepairDepartService;
|
/**
|
* 分页列表查询
|
*
|
* @param eamEquipment
|
* @param pageNo
|
* @param pageSize
|
* @return
|
*/
|
// @AutoLog(value = "设备台账-分页列表查询")
|
@ApiOperation(value = "设备台账-分页列表查询", notes = "设备台账-分页列表查询")
|
@GetMapping(value = "/list")
|
public Result<?> queryPageList(EamEquipmentQuery eamEquipment,
|
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
// QueryWrapper<EamEquipment> queryWrapper = QueryGenerator.initQueryWrapper(eamEquipment, req.getParameterMap());
|
IPage<EamEquipment> page = new Page<>(pageNo, pageSize);
|
IPage<EamEquipment> pageList = eamEquipmentService.queryPageList(page, eamEquipment);
|
return Result.OK(pageList);
|
}
|
|
/**
|
* 添加
|
*
|
* @param eamEquipment
|
* @return
|
*/
|
// @AutoLog(value = "设备台账-添加")
|
@ApiOperation(value = "设备台账-添加", notes = "设备台账-添加")
|
@PostMapping(value = "/add")
|
public Result<?> add(@RequestBody EamEquipment eamEquipment) {
|
EamEquipment entity = eamEquipmentService.saveEquipment(eamEquipment);
|
if (entity == null) {
|
return Result.OK("添加失败!");
|
}
|
//调用mdcEquipment插入MDC设备
|
// if (CommonConstant.DEFAULT_1.equals(eamEquipment.getMdcFlag())) {
|
//插入MDC设备
|
// MdcEquipment mdcEquipment = new MdcEquipment();
|
// mdcEquipment.setEquipmentId(entity.getEquipmentCode());
|
// mdcEquipment.setEquipmentType(entity.getDeviceType());
|
// mdcEquipment.setEquipmentName(entity.getEquipmentName());
|
// mdcEquipmentService.addNewEquipmentFromEam(mdcEquipment, eamEquipment.getOrgId());
|
// }
|
return Result.OK("添加成功!");
|
}
|
|
/**
|
* 编辑
|
*
|
* @param eamEquipment
|
* @return
|
*/
|
@ApiOperation(value = "设备台账-编辑", notes = "设备台账-编辑")
|
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
public Result<?> edit(@RequestBody EamEquipment eamEquipment) {
|
eamEquipmentService.updateEquipment(eamEquipment);
|
return Result.OK("编辑成功!");
|
}
|
|
/**
|
* 通过id删除
|
*
|
* @param id
|
* @return
|
*/
|
@ApiOperation(value = "设备台账-通过id删除", notes = "设备台账-通过id删除")
|
@DeleteMapping(value = "/delete")
|
public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
|
EamEquipment entity = eamEquipmentService.getById(id);
|
if (entity != null) {
|
entity.setDelFlag(CommonConstant.DEL_FLAG_1);
|
eamEquipmentService.updateById(entity);
|
}
|
return Result.OK("删除成功!");
|
}
|
|
/**
|
* 批量删除
|
*
|
* @param ids
|
* @return
|
*/
|
@ApiOperation(value = "设备台账-批量删除", notes = "设备台账-批量删除")
|
@DeleteMapping(value = "/deleteBatch")
|
public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
List<String> list = Arrays.asList(ids.split(","));
|
list.forEach(id -> {
|
EamEquipment entity = eamEquipmentService.getById(id);
|
if (entity != null) {
|
entity.setDelFlag(CommonConstant.DEL_FLAG_1);
|
eamEquipmentService.updateById(entity);
|
}
|
});
|
return Result.OK("批量删除成功!");
|
}
|
|
/**
|
* 通过id查询
|
*
|
* @param id
|
* @return
|
*/
|
@ApiOperation(value = "设备台账-通过id查询", notes = "设备台账-通过id查询")
|
@GetMapping(value = "/queryById")
|
public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
|
EamEquipment eamEquipment = eamEquipmentService.getById(id);
|
if (eamEquipment == null) {
|
return Result.error("未找到对应数据");
|
}
|
EamEquipmentExtend extend = eamEquipmentExtendService.getById(id);
|
if(extend != null){
|
eamEquipment.setRepairStatus(extend.getRepairStatus());
|
eamEquipment.setMaintenanceStatus(extend.getMaintenanceStatus());
|
}
|
try {
|
String json = objectMapper.writeValueAsString(eamEquipment);
|
JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
|
translateDictTextUtils.translateField("createBy", eamEquipment.getCreateBy(), item, "sys_user,realname,username");
|
translateDictTextUtils.translateField("updateBy", eamEquipment.getUpdateBy(), item, "sys_user,realname,username");
|
// translateDictTextUtils.translateField("technologyStatus", eamEquipment.getTechnologyStatus(), item, "technology_status");
|
// translateDictTextUtils.translateField("orgId", eamEquipment.getOrgId(), item, "mdc_production,production_name,id");
|
// translateDictTextUtils.translateField("equipmentManager", eamEquipment.getEquipmentManager(), item, "sys_user,realname,username");
|
translateDictTextUtils.translateField("equipmentCategory", eamEquipment.getEquipmentCategory(), item, "equipment_category");
|
translateDictTextUtils.translateField("assetStatus", eamEquipment.getAssetStatus(), item, "asset_status");
|
translateDictTextUtils.translateField("repairStatus", eamEquipment.getRepairStatus(), item, "equipment_repair_status");
|
translateDictTextUtils.translateField("maintenanceStatus", eamEquipment.getMaintenanceStatus(), item, "equipment_maintenance_status");
|
return Result.OK(item);
|
} catch (JsonProcessingException e) {
|
return Result.error("数据转译失败!");
|
}
|
}
|
|
/**
|
* 导出excel
|
* @param eamEquipment
|
*/
|
@RequestMapping(value = "/exportXls")
|
public ModelAndView exportXls(HttpServletRequest request,EamEquipmentQuery eamEquipment) {
|
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
List<EamEquipment> equipmentList=eamEquipmentService.exportList(eamEquipment);
|
List<EamEquipmentDto> eamEquipmentDtos=new ArrayList<>();
|
String selections = request.getParameter("selections");
|
if (oConvertUtils.isNotEmpty(selections)) {
|
List<String> selectionList = Arrays.asList(selections.split(","));
|
equipmentList = equipmentList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
|
}
|
equipmentList.forEach(item -> {
|
EamEquipmentDto eamEquipmentDto = new EamEquipmentDto();
|
BeanUtils.copyProperties(item,eamEquipmentDto);
|
if (eamEquipmentDto.getFactoryOrgCode().length()==12){
|
eamEquipmentDto.setFactoryOrgCode(
|
baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getZxfactoryOrgCode())
|
+"/"+baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getGqfactoryOrgCode())+"/"+
|
baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getFactoryOrgCode()));
|
}else {
|
eamEquipmentDto.setFactoryOrgCode(
|
baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getZxfactoryOrgCode())
|
+"/"+ baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getFactoryOrgCode()));
|
}
|
if (eamEquipmentDto.getEquipmentWeight()!=null){
|
eamEquipmentDto.setEquipmentWeightStr(eamEquipmentDto.getEquipmentWeight().toEngineeringString());
|
}
|
eamEquipmentDtos.add(eamEquipmentDto);
|
});
|
// Step.3 AutoPoi 导出Excel
|
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
mv.addObject(NormalExcelConstants.FILE_NAME, "设备台账"); //此处设置的filename无效 ,前端会重更新设置一下
|
mv.addObject(NormalExcelConstants.CLASS, EamEquipmentDto.class);
|
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("设备台账" + "报表", "导出人:" + sysUser.getRealname(), "设备台账"));
|
mv.addObject(NormalExcelConstants.DATA_LIST, eamEquipmentDtos);
|
return mv;
|
|
}
|
|
/**
|
* 通过excel导入数据
|
*
|
* @param request
|
* @param response
|
* @return
|
*/
|
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
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);
|
params.setStartSheetIndex(0);
|
params.setSheetNum(1);
|
try {
|
List<EamEquipment> list = ExcelImportUtil.importExcel(file.getInputStream(), EamEquipment.class, params);
|
//update-begin-author:taoyan date:20190528 for:批量插入数据
|
long start = System.currentTimeMillis();
|
// service.saveBatch(list);
|
StringBuilder sb = new StringBuilder();
|
for (EamEquipment eamEquipment : list) {
|
//必填字段校验
|
if (StringUtils.isBlank(eamEquipment.getEquipmentCode()) || StringUtils.isBlank(eamEquipment.getEquipmentName())) {
|
sb.append(String.format("设备编码[%s]或设备名称[%s]为空,无法导入\n\n", eamEquipment.getEquipmentCode(), eamEquipment.getEquipmentName()));
|
continue;
|
}
|
if (StringUtils.isBlank(eamEquipment.getEquipmentCategory())) {
|
sb.append(String.format("设备编码[%s]设备分类为空,无法导入\n\n", eamEquipment.getEquipmentCode()));
|
continue;
|
}
|
EamEquipment one = eamEquipmentService.getOne(new LambdaQueryWrapper<EamEquipment>().eq(EamEquipment::getEquipmentCode, eamEquipment.getEquipmentCode()).eq(EamEquipment::getDelFlag, CommonConstant.DEL_FLAG_0));
|
if (one != null) {
|
sb.append(String.format("设备编码[%s]已存在,无法重复导入\n\r", eamEquipment.getEquipmentCode()));
|
continue;
|
}
|
BaseFactory baseFactory=baseFactoryService.searchCenterByKeyWord(eamEquipment.getFactoryOrgCode());
|
if(baseFactory==null){
|
sb.append(String.format("EAM中心信息[%s]不存在,无法导入\n\r", eamEquipment.getFactoryOrgCode()));
|
continue;
|
}else {
|
eamEquipment.setFactoryOrgCode(baseFactory.getOrgCode());
|
}
|
EamBaseRepairDepart eamBaseRepairDepart=eamBaseRepairDepartService.searchCenterByKeyWord(eamEquipment.getRepairDepartOrgCode());
|
if(eamBaseRepairDepart==null){
|
sb.append(String.format("维修班组信息[%s]不存在,无法导入\n\r", eamEquipment.getRepairDepartOrgCode()));
|
continue;
|
}else {
|
eamEquipment.setRepairDepartOrgCode(eamBaseRepairDepart.getOrgCode());
|
}
|
EamEquipment equipment = eamEquipmentService.saveEquipment(eamEquipment);
|
if (equipment == null) {
|
//保存失败,跳过本次循环
|
sb.append(String.format("设备编码[%s]保存失败,无法导入\n\r", eamEquipment.getEquipmentCode()));
|
continue;
|
}
|
EamEquipmentExtend eamEquipmentExtend=new EamEquipmentExtend();
|
BeanUtils.copyProperties(eamEquipmentExtend,equipment);
|
eamEquipmentExtendService.save(eamEquipmentExtend);
|
}
|
log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
|
//update-end-author:taoyan date:20190528 for:批量插入数据
|
if (sb.length() > 0) {
|
return Result.ok(sb.toString());
|
}
|
return Result.ok("文件导入成功!数据行数:" + list.size());
|
} catch (Exception e) {
|
//update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
|
String msg = e.getMessage();
|
log.error(msg, e);
|
if (msg != null && msg.indexOf("Duplicate entry") >= 0) {
|
return Result.error("文件导入失败:有重复数据!");
|
} else {
|
return Result.error("文件导入失败:" + e.getMessage());
|
}
|
//update-end-author:taoyan date:20211124 for: 导入数据重复增加提示
|
} finally {
|
try {
|
file.getInputStream().close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
return Result.error("文件导入失败!");
|
}
|
|
@ApiOperation(value = "设备表-通过车间ids获取设备树", notes = "设备表-通过车间ids获取设备树")
|
@GetMapping(value = "/loadTreeListByProductionIds")
|
public Result<List<EamEquipmentTree>> loadTreeListByProductionIds(@RequestParam(name = "ids", required = true) String ids) {
|
Result<List<EamEquipmentTree>> result = new Result<>();
|
try {
|
List<EamEquipmentTree> mdcEquipmentTreeList = eamEquipmentService.loadTreeListByProductionIds(ids);
|
result.setSuccess(true);
|
result.setResult(mdcEquipmentTreeList);
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
}
|
return result;
|
}
|
|
@ApiOperation(value = "设备表-通过EAM中心ids获取设备树", notes = "设备表-通过EAM中心ids获取设备树")
|
@GetMapping(value = "/loadTreeListByEamCenterIds")
|
public Result<List<EamEquipmentTree>> loadTreeListByEamCenterIds(@RequestParam(name = "ids", required = true) String ids) {
|
Result<List<EamEquipmentTree>> result = new Result<>();
|
try {
|
List<EamEquipmentTree> mdcEquipmentTreeList = eamEquipmentService.loadTreeListByEamCenterIds(ids);
|
result.setSuccess(true);
|
result.setResult(mdcEquipmentTreeList);
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
}
|
return result;
|
}
|
|
/**
|
* 检索设备
|
* @param keyword 查询关键词 设备编号,设备名称模糊匹配
|
* @param pageSize 一次返回多少记录
|
* @param id 设备主键
|
* @return
|
*/
|
@ApiOperation(value = "设备表-异步加载设备列表", notes = "设备表-异步加载设备列表")
|
@GetMapping(value = "/asyncLoadEquipment")
|
public Result<?> asyncLoadEquipment(@RequestParam(name="keyword",required = false) String keyword,
|
@RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize,
|
@RequestParam(name="id",required = false) String id,
|
@RequestParam(name="factoryOrgCode",required = false) String factoryOrgCode) {
|
List<EquipmentSearchResult> resultList = eamEquipmentService.asyncLoadEquipment(keyword, pageSize, id, factoryOrgCode);
|
List<JSONObject> items = new ArrayList<>();
|
try {
|
for(EquipmentSearchResult vo : resultList) {
|
String json = objectMapper.writeValueAsString(vo);
|
JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
|
translateDictTextUtils.translateField("factoryOrgCode", vo.getFactoryOrgCode(), item, "eam_base_factory,factory_name,org_code");
|
items.add(item);
|
}
|
return Result.OK(items);
|
}catch (Exception e) {
|
return Result.error("数据转译失败!");
|
}
|
}
|
|
}
|