From 68b6b248be403bfd684472a4a4876e5d35101e71 Mon Sep 17 00:00:00 2001 From: qushaowei <qushaowei@163.com> Date: 星期二, 17 六月 2025 11:32:59 +0800 Subject: [PATCH] mtbf提交 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfService.java | 23 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Mtbf.java | 116 ++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfMapper.xml | 116 ++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfLogMapper.xml | 5 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfController.java | 200 +++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfLogController.java | 177 ++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/MtbfLog.java | 70 ++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfServiceImpl.java | 204 ++++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfMapper.java | 24 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfLogService.java | 14 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfLogMapper.java | 17 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfLogServiceImpl.java | 19 + 12 files changed, 985 insertions(+), 0 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfController.java new file mode 100644 index 0000000..7d8b6fe --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfController.java @@ -0,0 +1,200 @@ +package org.jeecg.modules.eam.controller; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.DateUtils; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.eam.entity.Mtbf; +import org.jeecg.modules.eam.service.IMtbfService; + +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.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.jeecg.common.system.base.controller.JeecgController; +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 com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: mom_eam_mtbf + * @Author: jeecg-boot + * @Date: 2025-06-12 + * @Version: V1.0 + */ +@Api(tags="mom_eam_mtbf") +@RestController +@RequestMapping("/eam/mtbf") +@Slf4j +public class MtbfController extends JeecgController<Mtbf, IMtbfService> { + @Autowired + private IMtbfService mtbfService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mtbf + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "mom_eam_mtbf-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="mom_eam_mtbf-鍒嗛〉鍒楄〃鏌ヨ", notes="mom_eam_mtbf-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<Mtbf>> queryPageList(Mtbf mtbf, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<Mtbf> queryWrapper = QueryGenerator.initQueryWrapper(mtbf, req.getParameterMap()); + Page<Mtbf> page = new Page<Mtbf>(pageNo, pageSize); + IPage<Mtbf> pageList = mtbfService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + @GetMapping("/getMTBF") + public Result<?> getMTBF(@RequestParam("pageNo") Integer pageNo, + @RequestParam("pageSize") Integer pageSize, + @RequestParam Map<String, Object> params) { + String faultStartTime = (String)params.get("faultStartTime"); + String faultEndTime = (String)params.get("faultEndTime"); + if(org.apache.commons.lang3.StringUtils.isBlank(faultStartTime) && StringUtils.isBlank(faultEndTime)){ + Date dayAfter = DateUtils.getDayAfter(new Date(), -6); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));// 璁剧疆鍖椾含鏃跺尯 + params.put("faultStartTime",dateFormat.format(dayAfter)); + + String currentDateStr = DateUtils.getCurrentDateStr(); + params.put("faultEndTime",currentDateStr); + } + IPage<Map<String, Object>> mtbf = mtbfService.getMTBF(pageNo, pageSize, params); + return Result.ok(mtbf); + } + + /** + * 娣诲姞 + * + * @param mtbf + * @return + */ + @AutoLog(value = "mom_eam_mtbf-娣诲姞") + @ApiOperation(value="mom_eam_mtbf-娣诲姞", notes="mom_eam_mtbf-娣诲姞") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody Mtbf mtbf) { + mtbfService.save(mtbf); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param mtbf + * @return + */ + @AutoLog(value = "mom_eam_mtbf-缂栬緫") + @ApiOperation(value="mom_eam_mtbf-缂栬緫", notes="mom_eam_mtbf-缂栬緫") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody Mtbf mtbf) { + mtbfService.updateById(mtbf); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "mom_eam_mtbf-閫氳繃id鍒犻櫎") + @ApiOperation(value="mom_eam_mtbf-閫氳繃id鍒犻櫎", notes="mom_eam_mtbf-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + mtbfService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "mom_eam_mtbf-鎵归噺鍒犻櫎") + @ApiOperation(value="mom_eam_mtbf-鎵归噺鍒犻櫎", notes="mom_eam_mtbf-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.mtbfService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "mom_eam_mtbf-閫氳繃id鏌ヨ") + @ApiOperation(value="mom_eam_mtbf-閫氳繃id鏌ヨ", notes="mom_eam_mtbf-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<Mtbf> queryById(@RequestParam(name="id",required=true) String id) { + Mtbf mtbf = mtbfService.getById(id); + if(mtbf==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(mtbf); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param mtbf + */ + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, Mtbf mtbf) { + return super.exportXls(request, mtbf, Mtbf.class, "mom_eam_mtbf"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("mom_eam_mtbf:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, Mtbf.class); + } + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfLogController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfLogController.java new file mode 100644 index 0000000..3a8ce4b --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MtbfLogController.java @@ -0,0 +1,177 @@ +package org.jeecg.modules.eam.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.eam.entity.MtbfLog; +import org.jeecg.modules.eam.service.IMtbfLogService; + +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.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.jeecg.common.system.base.controller.JeecgController; +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 com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: mom_eam_mtbf_log + * @Author: jeecg-boot + * @Date: 2025-06-17 + * @Version: V1.0 + */ +@Api(tags="mom_eam_mtbf_log") +@RestController +@RequestMapping("/eam/mtbfLog") +@Slf4j +public class MtbfLogController extends JeecgController<MtbfLog, IMtbfLogService> { + @Autowired + private IMtbfLogService mtbfLogService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mtbfLog + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "mom_eam_mtbf_log-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="mom_eam_mtbf_log-鍒嗛〉鍒楄〃鏌ヨ", notes="mom_eam_mtbf_log-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<MtbfLog>> queryPageList(MtbfLog mtbfLog, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<MtbfLog> queryWrapper = QueryGenerator.initQueryWrapper(mtbfLog, req.getParameterMap()); + Page<MtbfLog> page = new Page<MtbfLog>(pageNo, pageSize); + IPage<MtbfLog> pageList = mtbfLogService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param mtbfLog + * @return + */ + @AutoLog(value = "mom_eam_mtbf_log-娣诲姞") + @ApiOperation(value="mom_eam_mtbf_log-娣诲姞", notes="mom_eam_mtbf_log-娣诲姞") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf_log:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody MtbfLog mtbfLog) { + mtbfLogService.save(mtbfLog); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param mtbfLog + * @return + */ + @AutoLog(value = "mom_eam_mtbf_log-缂栬緫") + @ApiOperation(value="mom_eam_mtbf_log-缂栬緫", notes="mom_eam_mtbf_log-缂栬緫") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf_log:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody MtbfLog mtbfLog) { + mtbfLogService.updateById(mtbfLog); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "mom_eam_mtbf_log-閫氳繃id鍒犻櫎") + @ApiOperation(value="mom_eam_mtbf_log-閫氳繃id鍒犻櫎", notes="mom_eam_mtbf_log-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf_log:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + mtbfLogService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "mom_eam_mtbf_log-鎵归噺鍒犻櫎") + @ApiOperation(value="mom_eam_mtbf_log-鎵归噺鍒犻櫎", notes="mom_eam_mtbf_log-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf_log:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.mtbfLogService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "mom_eam_mtbf_log-閫氳繃id鏌ヨ") + @ApiOperation(value="mom_eam_mtbf_log-閫氳繃id鏌ヨ", notes="mom_eam_mtbf_log-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<MtbfLog> queryById(@RequestParam(name="id",required=true) String id) { + MtbfLog mtbfLog = mtbfLogService.getById(id); + if(mtbfLog==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(mtbfLog); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param mtbfLog + */ + //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_mtbf_log:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, MtbfLog mtbfLog) { + return super.exportXls(request, mtbfLog, MtbfLog.class, "mom_eam_mtbf_log"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("mom_eam_mtbf_log:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, MtbfLog.class); + } + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Mtbf.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Mtbf.java new file mode 100644 index 0000000..85ace10 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Mtbf.java @@ -0,0 +1,116 @@ +package org.jeecg.modules.eam.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: mom_eam_mtbf + * @Author: jeecg-boot + * @Date: 2025-06-12 + * @Version: V1.0 + */ +@Data +@TableName("mom_eam_mtbf") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="mom_eam_mtbf瀵硅薄", description="mom_eam_mtbf") +public class Mtbf implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**鏁呴殰鏃堕棿*/ + @Excel(name = "缁熻鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "缁熻鏃堕棿") + private java.util.Date faultData; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @Excel(name = "鍒涘缓鏃堕棿", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date createTime; + + /**鏁呴殰鎶ヤ慨鍗曠紪鍙�*/ + @Excel(name = "鏁呴殰鎶ヤ慨鍗曠紪鍙�", width = 15) + @ApiModelProperty(value = "鏁呴殰鎶ヤ慨鍗曠紪鍙�") + private java.lang.String reportRepairNum; + /**璁惧id*/ + @Excel(name = "璁惧id", width = 15) + @ApiModelProperty(value = "璁惧id") + private java.lang.String equipmentId; + /**鎬诲彲鍒╃敤鏃堕棿*/ + @Excel(name = "鎬诲彲鍒╃敤鏃堕棿", width = 15) + @ApiModelProperty(value = "鎬诲彲鍒╃敤鏃堕棿") + private java.math.BigDecimal totalAvailableTime; + /**鏁呴殰鏃堕暱*/ + @Excel(name = "鏁呴殰鏃堕暱", width = 15) + @ApiModelProperty(value = "鏁呴殰鏃堕暱") + private java.math.BigDecimal faultTime; + /**缁翠慨鏃堕暱*/ + @Excel(name = "缁翠慨鏃堕暱", width = 15) + @ApiModelProperty(value = "缁翠慨鏃堕暱") + private java.math.BigDecimal repairTime; + /**鏃犳晠闅滄椂闀�*/ + @Excel(name = "鏃犳晠闅滄椂闀�", width = 15) + @ApiModelProperty(value = "鏃犳晠闅滄椂闀�") + private java.math.BigDecimal noFaultTime; + + @TableField(exist = false) + private String faultNumber; + @TableField(exist = false) + private String mtbf; + @TableField(exist = false) + private String mttr; + @TableField(exist = false) + private String serviceabilityRate;//瀹屽ソ鐜� + @TableField(exist = false) + private String startRate;//鏁呴殰鐜� + + /**鐘舵�� 1鎶ヤ慨 2缁翠慨 4 瀹屾垚 */ + @TableField(exist = false) + private String Status; + + /**鏁呴殰寮�濮嬫椂闂�*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date faultStartTime; + + /**缁翠慨寮�濮嬫椂闂�*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date repairStartTime; + + /**缁翠慨瀹屾垚鏃堕棿*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date repairEndTime; + + @TableField(exist = false) + private String equipmentNum; + @TableField(exist = false) + private String equipmentName; + @TableField(exist = false) + private String equipmentModel; + @TableField(exist = false) + private String workCenterName; +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/MtbfLog.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/MtbfLog.java new file mode 100644 index 0000000..6672bfc --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/MtbfLog.java @@ -0,0 +1,70 @@ +package org.jeecg.modules.eam.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: mom_eam_mtbf_log + * @Author: jeecg-boot + * @Date: 2025-06-17 + * @Version: V1.0 + */ +@Data +@TableName("mom_eam_mtbf_log") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="mom_eam_mtbf_log瀵硅薄", description="mom_eam_mtbf_log") +public class MtbfLog implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**鎶ヤ慨鍗�*/ + @Excel(name = "鎶ヤ慨鍗�", width = 15) + @ApiModelProperty(value = "鎶ヤ慨鍗�") + private java.lang.String reportRepairNum; + /**璁惧id*/ + @Excel(name = "璁惧id", width = 15) + @ApiModelProperty(value = "璁惧id") + private java.lang.String equipmentId; + /**淇濅慨鏃堕棿*/ + @Excel(name = "淇濅慨鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "淇濅慨鏃堕棿") + private java.util.Date reportTime; + /**缁翠慨鎺ュ崟鏃堕棿*/ + @Excel(name = "缁翠慨鎺ュ崟鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "缁翠慨鎺ュ崟鏃堕棿") + private java.util.Date repairStartTime; + /**缁翠慨瀹屾垚鏃堕棿*/ + @Excel(name = "缁翠慨瀹屾垚鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "缁翠慨瀹屾垚鏃堕棿") + private java.util.Date repairFinishTime; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private java.util.Date createTime; +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfLogMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfLogMapper.java new file mode 100644 index 0000000..bbab2ff --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfLogMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.eam.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.eam.entity.MtbfLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: mom_eam_mtbf_log + * @Author: jeecg-boot + * @Date: 2025-06-17 + * @Version: V1.0 + */ +public interface MtbfLogMapper extends BaseMapper<MtbfLog> { + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfMapper.java new file mode 100644 index 0000000..70370a5 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/MtbfMapper.java @@ -0,0 +1,24 @@ +package org.jeecg.modules.eam.mapper; + +import java.util.List; +import java.util.Map; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.eam.entity.Mtbf; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.eam.model.MaintenanceCycleVo; +import org.jeecg.modules.eam.vo.MtbfVo; + +/** + * @Description: mom_eam_mtbf + * @Author: jeecg-boot + * @Date: 2025-06-12 + * @Version: V1.0 + */ +public interface MtbfMapper extends BaseMapper<Mtbf> { + + List<MtbfVo> getReportRepairTimeList(@Param("yesterday")String yesterday); + + IPage<Map<String, Object>> getMTBF(IPage<Map> pageData, @Param("params") Map<String,Object> params); +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfLogMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfLogMapper.xml new file mode 100644 index 0000000..810d79c --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfLogMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.eam.mapper.MtbfLogMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfMapper.xml new file mode 100644 index 0000000..7f030ff --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/MtbfMapper.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.eam.mapper.MtbfMapper"> + + + <select id="getMTBF" parameterType="Map" resultType="Map"> + select + isnull(qqq.equipmentId,ttt.id) as equipmentId, + isnull(qqq.equipmentNum,ttt.num) as equipmentNum, + isnull(qqq.equipmentName,ttt.name) as equipmentName, + isnull(qqq.equipmentModel,ttt.model) as equipmentModel, + isnull(qqq.workCenterName,ttt1.name) as workCenterName, + isnull(qqq.faultNumber,0) as faultNumber, + isnull(qqq.totalAvailableTime,(datediff( HOUR, #{params.faultStartTime}, #{params.faultEndTime} ) + 24)) as totalAvailableTime, + isnull(qqq.faultTime,0) as faultTime, + isnull(qqq.repairTime,0) as repairTime, + isnull(qqq.noFaultTime,(datediff( HOUR, #{params.faultStartTime}, #{params.faultEndTime} ) + 24)) as noFaultTime, + isnull(qqq.mtbf,0) as mtbf, + isnull(qqq.mttr,0) as mttr, + isnull(qqq.serviceabilityRate,STR( ( 1 * 100 ), 10, 2 ) + '%') as serviceabilityRate, + isnull(qqq.startRate,STR( ( 0 * 100 ), 10, 2 ) + '%') as startRate + from mom_eam_equipment ttt + left join mom_base_area ttt1 ON ttt.work_center_id = ttt1.id + left join ( + SELECT + tt.equipmentId, + tt.equipmentNum, + tt.equipmentName, + tt.equipmentModel, + tt.workCenterName, + COUNT ( tt.equipmentId ) AS faultNumber, + SUM ( totalAvailableTime ) AS totalAvailableTime, + SUM ( faultTime ) AS faultTime, + SUM ( repairTime ) AS repairTime, + SUM ( noFaultTime ) AS noFaultTime, + SUM ( noFaultTime ) / COUNT ( tt.equipmentId ) AS mtbf, + SUM ( repairTime ) / COUNT ( tt.equipmentId ) AS mttr, + STR((SUM ( noFaultTime ) / SUM ( totalAvailableTime ) * 100), 10, 2) + '%' AS serviceabilityRate, + STR((SUM ( faultTime ) / SUM ( totalAvailableTime ) * 100), 10, 2)+ '%' AS startRate + FROM + ( + SELECT + t1.report_repair_num AS reportRepairNum, + t1.equipment_id AS equipmentId, + t2.num AS equipmentNum, + t2.name AS equipmentName, + t2.model AS equipmentModel, + t3.name AS workCenterName, + SUM ( t1.total_available_time ) AS totalAvailableTime, + SUM ( t1.fault_time ) AS faultTime, + SUM ( t1.repair_time ) AS repairTime, + SUM ( t1.no_fault_time ) AS noFaultTime + FROM + mom_eam_mtbf t1 + LEFT JOIN mom_eam_equipment t2 ON t1.equipment_id = t2.id + LEFT JOIN mom_base_area t3 ON t2.work_center_id = t3.id + where 1=1 + <if test="params.equipmentNum != null and params.equipmentNum != ''"> + and t2.num like concat('%',#{params.equipmentNum},'%') + </if> + <if test="params.workCenterId != null and params.workCenterId != ''"> + and t3.id = #{params.workCenterId} + </if> + <if test="params.equipmentImportanceId != null and params.equipmentImportanceId != ''"> + and t2.equipment_importance_id = #{params.equipmentImportanceId} + </if> + <if test="params.specificEquipment != null and params.specificEquipment != ''"> + and t2.specific_equipment = #{params.specificEquipment} + </if> + AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_data, 120 ), 1, 10 ) >= #{params.faultStartTime} + AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_data, 120 ), 1, 10 ) <= #{params.faultEndTime} + GROUP BY + t1.report_repair_num, + t1.equipment_id, + t2.num, + t2.name, + t2.model, + t3.name + ) tt + GROUP BY + tt.equipmentId, + tt.equipmentNum, + tt.equipmentName, + tt.equipmentModel, + tt.workCenterName) qqq on ttt.id = qqq.equipmentId + where 1= 1 and ttt.work_center_id is not null + <if test="params.equipmentNum != null and params.equipmentNum != ''"> + and ttt.num like concat('%',#{params.equipmentNum},'%') + </if> + <if test="params.workCenterId != null and params.workCenterId != ''"> + and ttt1.id = #{params.workCenterId} + </if> + <if test="params.equipmentImportanceId != null and params.equipmentImportanceId != ''"> + and ttt.equipment_importance_id = #{params.equipmentImportanceId} + </if> + <if test="params.specificEquipment != null and params.specificEquipment != ''"> + and ttt.specific_equipment = #{params.specificEquipment} + </if> + </select> + + + <select id="getReportRepairTimeList" resultType="org.jeecg.modules.eam.vo.MtbfVo"> + SELECT + t1.num AS reportRepairNum, + t1.status, + t1.equipment_id AS equipmentId, + t1.fault_time AS faultStartTime, + t2.create_time AS repairStartTime, + t2.actual_end_time AS repairEndTime + FROM + mom_eam_equipment_report_repair t1 + LEFT JOIN mom_eam_repair_order t2 ON t2.report_repair_id = t1.id + WHERE t1.status IN ( '1', '2', '4' ) + AND ( SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t2.actual_end_time, 120 ), 1, 10 ) = #{yesterday} OR t1.status != '4' ) + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfLogService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfLogService.java new file mode 100644 index 0000000..baa061c --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfLogService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.eam.service; + +import org.jeecg.modules.eam.entity.MtbfLog; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: mom_eam_mtbf_log + * @Author: jeecg-boot + * @Date: 2025-06-17 + * @Version: V1.0 + */ +public interface IMtbfLogService extends IService<MtbfLog> { + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfService.java new file mode 100644 index 0000000..7a971a7 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IMtbfService.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.eam.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.jeecg.modules.eam.entity.EquipmentMaintenancePlanDetail; +import org.jeecg.modules.eam.entity.Mtbf; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.eam.vo.MtbfVo; + +import java.util.List; +import java.util.Map; + +/** + * @Description: mom_eam_mtbf + * @Author: jeecg-boot + * @Date: 2025-06-12 + * @Version: V1.0 + */ +public interface IMtbfService extends IService<Mtbf> { + + List<MtbfVo> getReportRepairTimeList(String yesterday); + + IPage<Map<String, Object>> getMTBF(Integer pageNo, Integer pageSize, Map<String, Object> params); +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfLogServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfLogServiceImpl.java new file mode 100644 index 0000000..bd9fa16 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfLogServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.eam.service.impl; + +import org.jeecg.modules.eam.entity.MtbfLog; +import org.jeecg.modules.eam.mapper.MtbfLogMapper; +import org.jeecg.modules.eam.service.IMtbfLogService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: mom_eam_mtbf_log + * @Author: jeecg-boot + * @Date: 2025-06-17 + * @Version: V1.0 + */ +@Service +public class MtbfLogServiceImpl extends ServiceImpl<MtbfLogMapper, MtbfLog> implements IMtbfLogService { + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfServiceImpl.java new file mode 100644 index 0000000..62f3b25 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/MtbfServiceImpl.java @@ -0,0 +1,204 @@ +package org.jeecg.modules.eam.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ctc.wstx.util.DataUtil; +import org.jeecg.common.util.DateUtils; +import org.jeecg.modules.eam.entity.Mtbf; +import org.jeecg.modules.eam.entity.MtbfLog; +import org.jeecg.modules.eam.mapper.MtbfMapper; +import org.jeecg.modules.eam.service.IMtbfLogService; +import org.jeecg.modules.eam.service.IMtbfService; +import org.jeecg.modules.eam.vo.MtbfVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Description: mom_eam_mtbf + * @Author: jeecg-boot + * @Date: 2025-06-12 + * @Version: V1.0 + */ +@Service +public class MtbfServiceImpl extends ServiceImpl<MtbfMapper, Mtbf> implements IMtbfService { + + @Autowired + @Lazy + private IMtbfLogService mtbfLogService; + + @Override + public IPage<Map<String, Object>> getMTBF(Integer pageNo, Integer pageSize, Map<String, Object> params) { + IPage<Map> pageData = new Page<Map>(pageNo, pageSize); + return super.getBaseMapper().getMTBF(pageData, params) ; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List<MtbfVo> getReportRepairTimeList(String yesterday) { + List<MtbfVo> reportRepairTimeList = this.baseMapper.getReportRepairTimeList(yesterday); + for (MtbfVo mtbf : reportRepairTimeList) { + List<MtbfLog> list = mtbfLogService.lambdaQuery().eq(MtbfLog::getReportRepairNum, mtbf.getReportRepairNum()).list(); + if(list.size()>0){ + MtbfLog mtbfLog = list.get(0); + mtbfLog.setReportRepairNum(mtbf.getReportRepairNum()); + mtbfLog.setEquipmentId(mtbf.getEquipmentId()); + mtbfLog.setReportTime(mtbf.getFaultStartTime()); + mtbfLog.setRepairStartTime(mtbf.getRepairStartTime()); + mtbfLog.setRepairFinishTime(mtbf.getRepairEndTime()); + mtbfLogService.updateById(mtbfLog); + }else{ + MtbfLog mtbfLog = new MtbfLog(); + mtbfLog.setReportRepairNum(mtbf.getReportRepairNum()); + mtbfLog.setEquipmentId(mtbf.getEquipmentId()); + mtbfLog.setReportTime(mtbf.getFaultStartTime()); + mtbfLog.setRepairStartTime(mtbf.getRepairStartTime()); + mtbfLog.setRepairFinishTime(mtbf.getRepairEndTime()); + mtbfLog.setCreateTime(new Date()); + mtbfLogService.save(mtbfLog); + } + Date faultStartTime = mtbf.getFaultStartTime();//鏁呴殰寮�濮嬫椂闂� + Date yesterdayData = DateUtils.getDayAfter(new Date(), -1);//鏄ㄥぉ鏃ユ湡 + //鏁呴殰鏃堕棿鏄笉鏄槰澶╁彂鐢熺殑 + boolean f = isSameDate(faultStartTime, yesterdayData); + //璁$畻鏁呴殰鏃堕暱 + Date todayMidnightAsDate = getTodayMidnightAsDate();//浠婃棩鍑屾櫒 + + String status = mtbf.getStatus(); + Mtbf mtbf1 = new Mtbf(); + mtbf1.setReportRepairNum(mtbf.getReportRepairNum()); + mtbf1.setEquipmentId(mtbf.getEquipmentId()); + mtbf1.setFaultData(new Date()); + mtbf1.setCreateTime(new Date()); + mtbf1.setTotalAvailableTime(new BigDecimal(24)); + if("1".equals(status)){//鐘舵��1锛氭姤淇� + //鏁呴殰鎶ヤ慨鏃堕棿鏄槰澶� 鏁呴殰鏃堕棿 = 24 - 鏁呴殰寮�濮嬫椂闂� + if(f){ + //浠婃棩鍑屾櫒 - 鏄ㄦ棩鏁呴殰鍙戠敓鏃堕棿 = 鏁呴殰鏃堕棿 + double faultTime = getPreciseHoursDifference(faultStartTime, todayMidnightAsDate); +// double faultTime = getHoursFromYesterdayMidnightToDate(faultStartTime); + mtbf1.setFaultTime(new BigDecimal(faultTime).setScale(2, RoundingMode.HALF_UP)); + mtbf1.setNoFaultTime((new BigDecimal(24).subtract(new BigDecimal(faultTime))).setScale(2, RoundingMode.HALF_UP)); + }else{ + //鏁呴殰鎶ヤ慨鏃堕棿涓嶆槸鏄ㄥぉ 鏁呴殰鏃堕棿 = 24 + //double faultTime = 24; + mtbf1.setFaultTime(new BigDecimal(24)); + mtbf1.setNoFaultTime(new BigDecimal(0)); + } + mtbf1.setRepairTime(new BigDecimal(0)); + this.save(mtbf1); + }else if("2".equals(status)){//鐘舵��2锛氱淮淇� + Date repairStartTime = mtbf.getRepairStartTime(); + //缁翠慨鏃堕棿鏄笉鏄槰澶╁彂鐢熺殑 + boolean rr = isSameDate(repairStartTime, yesterdayData); + //鏁呴殰鎶ヤ慨鏃堕棿鏄槰澶� 鏁呴殰鏃堕棿 = 24 - 鏁呴殰寮�濮嬫椂闂� + if(f){ + double faultTime = getPreciseHoursDifference(faultStartTime,todayMidnightAsDate); + mtbf1.setFaultTime(new BigDecimal(faultTime).setScale(2, RoundingMode.HALF_UP)); + mtbf1.setNoFaultTime((new BigDecimal(24).subtract(new BigDecimal(faultTime))).setScale(2, RoundingMode.HALF_UP)); + if(repairStartTime == null){ + mtbf1.setRepairTime(new BigDecimal(0)); + }else if(rr){ + double repairTime = getPreciseHoursDifference(repairStartTime, todayMidnightAsDate); + mtbf1.setRepairTime(new BigDecimal(repairTime).setScale(2, RoundingMode.HALF_UP)); + + } + //涓嶅瓨鍦ㄧ淮淇椂闂存槸褰撳ぉ鐨勶紝鍥犱负瀹氭椂浠诲姟鏄粖澶╂墽琛岋紝绠楁槰澶╃殑缁撴灉 +// else{ +// mtbf1.setRepairTime(new BigDecimal(24)); +// } + + }else{ + //鏁呴殰鎶ヤ慨鏃堕棿涓嶆槸鏄ㄥぉ 鏁呴殰鏃堕棿 = 24 + mtbf1.setFaultTime(new BigDecimal(24)); + mtbf1.setNoFaultTime(new BigDecimal(0)); + if(rr){ +// double repairTime = getPreciseHoursDifference(todayMidnightAsDate, repairStartTime); + double repairTime = getHoursFromYesterdayMidnightToDate(repairStartTime); + mtbf1.setRepairTime(new BigDecimal(repairTime).setScale(2, RoundingMode.HALF_UP)); + }else{ + mtbf1.setRepairTime(new BigDecimal(24)); + } + } +// mtbf1.setNoFaultTime(new BigDecimal(0)); + this.save(mtbf1); + }else{//鐘舵��4锛氫慨瀹� + Date repairStartTime = mtbf.getRepairStartTime(); + Date repairEndTime = mtbf.getRepairEndTime(); + if(f){ + double faultTime = getPreciseHoursDifference(faultStartTime,repairEndTime); + double repairTime = getPreciseHoursDifference(repairStartTime,repairEndTime); + mtbf1.setFaultTime(new BigDecimal(faultTime).setScale(2, RoundingMode.HALF_UP)); + mtbf1.setRepairTime(new BigDecimal(repairTime).setScale(2, RoundingMode.HALF_UP)); + mtbf1.setNoFaultTime((new BigDecimal(24).subtract(new BigDecimal(faultTime))).setScale(2, RoundingMode.HALF_UP)); + }else{ + double repairTime = getHoursFromYesterdayMidnightToDate(repairEndTime); + mtbf1.setFaultTime(new BigDecimal(repairTime).setScale(2, RoundingMode.HALF_UP)); + mtbf1.setRepairTime(new BigDecimal(repairTime).setScale(2, RoundingMode.HALF_UP)); + mtbf1.setNoFaultTime((new BigDecimal(24).subtract(new BigDecimal(repairTime))).setScale(2, RoundingMode.HALF_UP)); + } + this.save(mtbf1); + } + } + return reportRepairTimeList; + } + + // 鏂规硶1锛氳绠楁槰澶╁噷鏅ㄥ埌鎸囧畾Date鐨勭簿纭皬鏃舵暟锛堝寘鎷皬鏁伴儴鍒嗭級 + public static double getHoursFromYesterdayMidnightToDate(Date targetDate) { + if (targetDate == null) { + return 0.0; + } + + // 鑾峰彇鏄ㄥぉ鍑屾櫒鐨勬椂闂村苟杞崲涓篋ate + LocalDateTime yesterdayMidnight = LocalDate.now().minusDays(1).atStartOfDay(); + Date yesterdayMidnightDate = Date.from( + yesterdayMidnight.atZone(ZoneId.systemDefault()).toInstant() + ); + + // 璁$畻姣宸� + long diffInMillis = targetDate.getTime() - yesterdayMidnightDate.getTime(); + + // 杞崲涓哄皬鏃讹紙鍖呮嫭灏忔暟閮ㄥ垎锛� + return diffInMillis / (1000.0 * 60 * 60); + } + + + // 璁$畻鍖呭惈灏忔暟閮ㄥ垎鐨勫皬鏃跺樊 + public static double getPreciseHoursDifference(Date startDate, Date endDate) { + long diffInMillis = endDate.getTime() - startDate.getTime(); + return (double) diffInMillis / (1000 * 60 * 60); + } + + // 鑾峰彇浠婂ぉ鍑屾櫒鐨凞ate瀵硅薄 + public static Date getTodayMidnightAsDate() { + LocalDateTime midnight = LocalDate.now().atStartOfDay(); + return Date.from(midnight.atZone(ZoneId.systemDefault()).toInstant()); + } + + public static boolean isSameDate(Date date1, Date date2) { + // 灏咲ate杞崲涓篖ocalDate锛堝彧鍖呭惈骞存湀鏃ワ級 + LocalDate localDate1 = date1.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + LocalDate localDate2 = date2.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + // 鐩存帴姣旇緝涓や釜LocalDate瀵硅薄 + return localDate1.isEqual(localDate2); + } +} -- Gitblit v1.9.3