| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452 |
- package com.jeesite.modules.mes.web;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.node.ArrayNode;
- import com.fasterxml.jackson.databind.node.ObjectNode;
- import com.jeesite.common.collect.ListUtils;
- import com.jeesite.common.collect.MapUtils;
- import com.jeesite.common.config.Global;
- import com.jeesite.common.entity.Page;
- import com.jeesite.common.lang.DateUtils;
- import com.jeesite.common.mybatis.mapper.query.QueryType;
- import com.jeesite.common.utils.excel.ExcelExport;
- import com.jeesite.common.utils.excel.annotation.ExcelField.Type;
- import com.jeesite.common.web.BaseController;
- import com.jeesite.modules.mes.entity.MesDeviceFault;
- import com.jeesite.modules.mes.entity.MesDeviceFaultCate;
- import com.jeesite.modules.mes.entity.MesDeviceFaultMaintain;
- import com.jeesite.modules.mes.entity.MesDeviceOee;
- import com.jeesite.modules.mes.resp.CommonResp;
- import com.jeesite.modules.mes.service.MesDeviceFaultCateService;
- import com.jeesite.modules.mes.service.MesDeviceFaultMaintainService;
- import com.jeesite.modules.mes.service.MesDeviceFaultService;
- import com.jeesite.modules.mes.service.MesDeviceOeeService;
- import com.jeesite.modules.mes.util.CommonUitl;
- import org.apache.shiro.authz.annotation.RequiresPermissions;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.multipart.MultipartFile;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.time.Duration;
- import java.time.Instant;
- import java.time.LocalDateTime;
- import java.time.ZoneId;
- import java.util.*;
- /**
- * 设备故障记录Controller
- * @author hzd
- * @version 2024-07-23
- */
- @Controller
- @RequestMapping(value = "${adminPath}/mes/mesDeviceFault")
- public class MesDeviceFaultController extends BaseController {
- @Autowired
- private MesDeviceFaultService mesDeviceFaultService;
- @Autowired
- private MesDeviceFaultCateService mesDeviceFaultCateService;
- @Autowired
- private MesDeviceFaultMaintainService mesDeviceFaultMaintainService;
- @Autowired
- private MesDeviceOeeService mesDeviceOeeService;
-
- /**
- * 获取数据
- */
- @ModelAttribute
- public MesDeviceFault get(String id, boolean isNewRecord) {
- return mesDeviceFaultService.get(id, isNewRecord);
- }
-
- /**
- * 查询列表
- */
- @RequiresPermissions("mes:mesDeviceFault:view")
- @RequestMapping(value = {"list", ""})
- public String list(MesDeviceFault mesDeviceFault, Model model) {
- model.addAttribute("mesDeviceFault", mesDeviceFault);
- MesDeviceFaultCate mesDeviceFaultCate = new MesDeviceFaultCate();
- mesDeviceFaultCate.setStatus("0");
- model.addAttribute("mesDeviceFaultCate", mesDeviceFaultCateService.findList(mesDeviceFaultCate));
- MesDeviceFaultMaintain mesDeviceFaultMaintain = new MesDeviceFaultMaintain();
- mesDeviceFaultMaintain.setStatus("0");
- model.addAttribute("mesDeviceFaultMaintain", mesDeviceFaultMaintainService.findList(mesDeviceFaultMaintain));
- return "modules/mes/mesDeviceFaultList";
- }
-
- /**
- * 查询列表数据
- */
- @RequiresPermissions("mes:mesDeviceFault:view")
- @RequestMapping(value = "listData")
- @ResponseBody
- public Page<MesDeviceFault> listData(MesDeviceFault mesDeviceFault, HttpServletRequest request, HttpServletResponse response) {
- mesDeviceFault.setPage(new Page<>(request, response));
- Page<MesDeviceFault> page = mesDeviceFaultService.findPage(mesDeviceFault);
- return page;
- }
- /**
- * 查看编辑表单
- */
- @RequiresPermissions("mes:mesDeviceFault:view")
- @RequestMapping(value = "form")
- public String form(MesDeviceFault mesDeviceFault, Model model) {
- model.addAttribute("mesDeviceFault", mesDeviceFault);
- MesDeviceFaultCate mesDeviceFaultCate = new MesDeviceFaultCate();
- mesDeviceFaultCate.setStatus("0");
- model.addAttribute("mesDeviceFaultCate", mesDeviceFaultCateService.findList(mesDeviceFaultCate));
- MesDeviceFaultMaintain mesDeviceFaultMaintain = new MesDeviceFaultMaintain();
- mesDeviceFaultMaintain.setStatus("0");
- model.addAttribute("mesDeviceFaultMaintain", mesDeviceFaultMaintainService.findList(mesDeviceFaultMaintain));
- return "modules/mes/mesDeviceFaultForm";
- }
- @RequiresPermissions("mes:mesDeviceFault:view")
- @RequestMapping(value = "tj")
- public String tj(MesDeviceFault mesDeviceFault, Model model) {
- model.addAttribute("mesDeviceFault", mesDeviceFault);
- MesDeviceFaultCate mesDeviceFaultCate = new MesDeviceFaultCate();
- mesDeviceFaultCate.setStatus("0");
- model.addAttribute("mesDeviceFaultCate", mesDeviceFaultCateService.findList(mesDeviceFaultCate));
- MesDeviceFaultMaintain mesDeviceFaultMaintain = new MesDeviceFaultMaintain();
- mesDeviceFaultMaintain.setStatus("0");
- model.addAttribute("mesDeviceFaultMaintain", mesDeviceFaultMaintainService.findList(mesDeviceFaultMaintain));
- MesDeviceOee mesDeviceOee = new MesDeviceOee();
- mesDeviceOee.setStatus("0");
- model.addAttribute("mesDeviceOee", mesDeviceOeeService.findList(mesDeviceOee));
- return "modules/mes/mesDeviceFaultTj";
- }
- @RequiresPermissions("mes:mesDeviceFault:view")
- @RequestMapping(value = "tj2")
- public String tj2(MesDeviceFault mesDeviceFault, Model model) {
- model.addAttribute("mesDeviceFault", mesDeviceFault);
- MesDeviceFaultCate mesDeviceFaultCate = new MesDeviceFaultCate();
- mesDeviceFaultCate.setStatus("0");
- model.addAttribute("mesDeviceFaultCate", mesDeviceFaultCateService.findList(mesDeviceFaultCate));
- MesDeviceFaultMaintain mesDeviceFaultMaintain = new MesDeviceFaultMaintain();
- mesDeviceFaultMaintain.setStatus("0");
- model.addAttribute("mesDeviceFaultMaintain", mesDeviceFaultMaintainService.findList(mesDeviceFaultMaintain));
- return "modules/mes/mesDeviceFaultTj2";
- }
- @RequestMapping(value = "tjData1")
- @ResponseBody
- public CommonResp tjData1(MesDeviceFault mesDeviceFault) {
- CommonResp<Map<String, Object>> resp = new CommonResp<>();
- Map<String, Object> map = MapUtils.newHashMap();
- mesDeviceFault.setStatus("0");
- MesDeviceFaultCate mesDeviceFaultCate2 = new MesDeviceFaultCate();
- mesDeviceFaultCate2.setStatus("0");
- List<MesDeviceFaultCate> cates = mesDeviceFaultCateService.findList(mesDeviceFaultCate2);
- List<Map> lists = new ArrayList<>();
- for (MesDeviceFaultCate mesDeviceFaultCate:cates){
- Map<String, Object> map2 = MapUtils.newHashMap();
- map2.put("name",mesDeviceFaultCate.getTitle());
- mesDeviceFault.setCateId(mesDeviceFaultCate.getId());
- Long jpp1 = mesDeviceFaultService.findCount(mesDeviceFault);
- map2.put("value",jpp1);
- lists.add(map2);
- }
- map.put("lists",lists);
- resp.setData(map);
- resp.setResult(Global.TRUE);
- return resp;
- }
- @RequestMapping(value = "tjData2")
- @ResponseBody
- public CommonResp tjData2(MesDeviceFault mesDeviceFault) {
- CommonResp<Map<String, Object>> resp = new CommonResp<>();
- Map<String, Object> map = MapUtils.newHashMap();
- mesDeviceFault.setStatus("0");
- MesDeviceFaultCate mesDeviceFaultCate2 = new MesDeviceFaultCate();
- mesDeviceFaultCate2.setStatus("0");
- List<MesDeviceFaultCate> cates = mesDeviceFaultCateService.findList(mesDeviceFaultCate2);
- List<Map<String, String>> list1 = new ArrayList<>();
- Map<String, String> map21 = MapUtils.newHashMap();
- map21.put("id","1");
- map21.put("title","A");
- list1.add(map21);
- Map<String, String> map211 = MapUtils.newHashMap();
- map211.put("id","2");
- map211.put("title","B");
- list1.add(map211);
- Map<String, String> map22 = MapUtils.newHashMap();
- map22.put("id","3");
- map22.put("title","C");
- list1.add(map22);
- Map<String, String> map23 = MapUtils.newHashMap();
- map23.put("id","4");
- map23.put("title","D");
- list1.add(map23);
- List<Map> lists = new ArrayList<>();
- for (Map<String, String> map3:list1){
- Map<String, Object> map4 = MapUtils.newHashMap();
- map4.put("name",map3.get("title"));
- mesDeviceFault.setLevel(map3.get("id"));
- Long jpp1 = mesDeviceFaultService.findCount(mesDeviceFault);
- map4.put("value",jpp1);
- lists.add(map4);
- }
- map.put("lists",lists);
- resp.setData(map);
- resp.setResult(Global.TRUE);
- return resp;
- }
- @RequestMapping(value = "tjData3")
- @ResponseBody
- public CommonResp tjData3(MesDeviceFault mesDeviceFault) {
- CommonResp<Map<String, Object>> resp = new CommonResp<>();
- Map<String, Object> map = MapUtils.newHashMap();
- mesDeviceFault.setStatus("0");
- List<String> days = CommonUitl.getBeforeDays(30);
- Collections.sort(days);
- List<Long> pNums = new ArrayList<>();
- for(String day:days){
- String csdate = day + " 00:00:00";
- String cedate = day + " 23:59:59";
- mesDeviceFault.setStartDate_gte(CommonUitl.String2Date(csdate));
- mesDeviceFault.setStartDate_lte(CommonUitl.String2Date(cedate));
- Long jpp1 = mesDeviceFaultService.findCount(mesDeviceFault);
- pNums.add(jpp1);
- }
- map.put("days",days);
- map.put("lists",pNums);
- resp.setData(map);
- resp.setResult(Global.TRUE);
- return resp;
- }
- @RequestMapping(value = "tjData4")
- @ResponseBody
- public CommonResp tjData4(MesDeviceFault mesDeviceFault) {
- CommonResp<Map<String, Object>> resp = new CommonResp<>();
- Map<String, Object> map = MapUtils.newHashMap();
- mesDeviceFault.setStatus("0");
- List<String> days = CommonUitl.getBeforeDays(30);
- Collections.sort(days);
- List<Integer> pNums = new ArrayList<>();
- for(String day:days){
- String csdate = day + " 00:00:00";
- String cedate = day + " 23:59:59";
- mesDeviceFault.setStartDate_gte(CommonUitl.String2Date(csdate));
- mesDeviceFault.setStartDate_lte(CommonUitl.String2Date(cedate));
- List<MesDeviceFault> mdfs = mesDeviceFaultService.findList(mesDeviceFault);
- Integer mins = 0;
- for (MesDeviceFault mesDeviceFault1:mdfs){
- mins += mesDeviceFault1.getDuration();
- }
- pNums.add(mins);
- }
- map.put("days",days);
- map.put("lists",pNums);
- resp.setData(map);
- resp.setResult(Global.TRUE);
- return resp;
- }
- //mtbf mttr
- @RequestMapping(value = "tjData6")
- @ResponseBody
- public CommonResp tjData6(MesDeviceFault mesDeviceFault) {
- CommonResp<HashMap<String, List<Object>>> resp = new CommonResp<>();
- Date startDate = mesDeviceFault.getStartDate();
- Date endDate = mesDeviceFault.getEndDate();
- if (startDate == null && endDate == null) {
- LocalDateTime now = LocalDateTime.now().withMinute(0).withSecond(0).withNano(0);
- endDate = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());
- startDate = Date.from(now.minusDays(7).atZone(ZoneId.systemDefault()).toInstant());
- } else if (startDate == null || endDate == null) {
- resp.setResult(Global.FALSE);
- resp.setMessage("开始时间和结束时间必须同时填写!");
- return resp;
- }
- MesDeviceFaultMaintain mesDeviceFaultMaintain = new MesDeviceFaultMaintain();
- mesDeviceFaultMaintain.setId(mesDeviceFault.getMaintainId());
- List<MesDeviceFaultMaintain> list = mesDeviceFaultMaintainService.findList(mesDeviceFaultMaintain);
- // Initialize JSON objects
- ObjectMapper mapper = new ObjectMapper();
- ObjectNode chartData = mapper.createObjectNode();
- ArrayNode xAxisData = mapper.createArrayNode();
- ArrayNode legendData = mapper.createArrayNode();
- ArrayNode seriesData = mapper.createArrayNode();
- legendData.add("mttr");
- legendData.add("mtbf");
- List<Double> mttrList = new ArrayList<>();
- List<Double> mtbfList = new ArrayList<>();
- for (MesDeviceFaultMaintain deviceFaultMaintain : list) {
- String id = deviceFaultMaintain.getId();
- MesDeviceFault mesDeviceFault1 = new MesDeviceFault();
- mesDeviceFault1.setMaintainId(id);
- mesDeviceFault1.getSqlMap().getWhere().and("a.start_date", QueryType.GTE, startDate);
- mesDeviceFault1.getSqlMap().getWhere().and("a.end_date", QueryType.LTE, endDate);
- List<MesDeviceFault> mesDeviceFaults = mesDeviceFaultService.findList(mesDeviceFault1);
- // Calculate MTTR
- int hour = 0;
- for (MesDeviceFault deviceFault : mesDeviceFaults) {
- Integer duration = deviceFault.getDuration();
- hour += duration / 60;
- }
- double mttr = (double) hour / mesDeviceFaults.size();
- mttrList.add(mttr);
- // Calculate MTBF
- Instant startInstant = startDate.toInstant();
- Instant endInstant = endDate.toInstant();
- double hours = Duration.between(startInstant, endInstant).toMillis() / (1000.0 * 60 * 60);
- double hourAll = hours * mesDeviceFaults.size();
- double mtbf = hourAll / mesDeviceFaults.size();
- mtbfList.add(mtbf);
- xAxisData.add(deviceFaultMaintain.getTitle());
- }
- // Create series data
- ObjectNode mttrSeries = mapper.createObjectNode();
- mttrSeries.put("name", "mttr");
- mttrSeries.set("data", mapper.valueToTree(mttrList));
- seriesData.add(mttrSeries);
- ObjectNode mtbfSeries = mapper.createObjectNode();
- mtbfSeries.put("name", "mtbf");
- mtbfSeries.set("data", mapper.valueToTree(mtbfList));
- seriesData.add(mtbfSeries);
- // Add all data to the root JSON object
- chartData.put("title", "Fault Analysis");
- chartData.set("xAxisData", xAxisData);
- chartData.set("legendData", legendData);
- chartData.set("seriesData", seriesData);
- HashMap<String, List<Object>> dataMap = new HashMap<>();
- dataMap.put("xAxisData", mapper.convertValue(xAxisData, List.class));
- dataMap.put("legendData", mapper.convertValue(legendData, List.class));
- dataMap.put("seriesData", mapper.convertValue(seriesData, List.class));
- System.out.println(dataMap.toString());
- resp.setData(dataMap);
- resp.setResult(Global.TRUE);
- return resp;
- }
- /**
- * 保存数据
- */
- @RequiresPermissions("mes:mesDeviceFault:edit")
- @PostMapping(value = "save")
- @ResponseBody
- public String save(@Validated MesDeviceFault mesDeviceFault) {
- if(mesDeviceFault.getStartDate() != null && mesDeviceFault.getEndDate() != null){
- if(mesDeviceFault.getStartDate().getTime() >= mesDeviceFault.getEndDate().getTime()){
- return renderResult(Global.FALSE, text("结束时间必须大于开始时间!"));
- }
- Integer interval = Math.round((mesDeviceFault.getEndDate().getTime() - mesDeviceFault.getStartDate().getTime())/60000);
- logger.info("duration:"+interval);
- mesDeviceFault.setDuration(interval);
- }else{
- mesDeviceFault.setDuration(0);
- }
- mesDeviceFaultService.save(mesDeviceFault);
- return renderResult(Global.TRUE, text("保存设备故障记录成功!"));
- }
- /**
- * 导出数据
- */
- @RequiresPermissions("mes:mesDeviceFault:view")
- @RequestMapping(value = "exportData")
- public void exportData(MesDeviceFault mesDeviceFault, HttpServletResponse response) {
- List<MesDeviceFault> list = mesDeviceFaultService.findList(mesDeviceFault);
- String fileName = "设备故障记录" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
- try(ExcelExport ee = new ExcelExport("设备故障记录", MesDeviceFault.class)){
- ee.setDataList(list).write(response, fileName);
- }
- }
- /**
- * 下载模板
- */
- @RequiresPermissions("mes:mesDeviceFault:view")
- @RequestMapping(value = "importTemplate")
- public void importTemplate(HttpServletResponse response) {
- MesDeviceFault mesDeviceFault = new MesDeviceFault();
- List<MesDeviceFault> list = ListUtils.newArrayList(mesDeviceFault);
- String fileName = "设备故障记录模板.xlsx";
- try(ExcelExport ee = new ExcelExport("设备故障记录", MesDeviceFault.class, Type.IMPORT)){
- ee.setDataList(list).write(response, fileName);
- }
- }
- /**
- * 导入数据
- */
- @ResponseBody
- @RequiresPermissions("mes:mesDeviceFault:edit")
- @PostMapping(value = "importData")
- public String importData(MultipartFile file) {
- try {
- String message = mesDeviceFaultService.importData(file);
- return renderResult(Global.TRUE, "posfull:"+message);
- } catch (Exception ex) {
- return renderResult(Global.FALSE, "posfull:"+ex.getMessage());
- }
- }
-
- /**
- * 删除数据
- */
- @RequiresPermissions("mes:mesDeviceFault:edit")
- @RequestMapping(value = "delete")
- @ResponseBody
- public String delete(MesDeviceFault mesDeviceFault) {
- mesDeviceFaultService.delete(mesDeviceFault);
- return renderResult(Global.TRUE, text("删除设备故障记录成功!"));
- }
-
- }
|