From e88c6ac544e52359c7eabc94edef7bb1e133c7e2 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期二, 18 三月 2025 16:49:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java | 7 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java | 73 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcPartProcessInfo.java | 71 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java | 18 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java | 47 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml | 30 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java | 100 ++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoVo.java | 20 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml | 31 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java | 9 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java | 52 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java | 9 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java | 12 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcPartProcessInfoVo.java | 20 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java | 246 ++++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java | 13 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcDowntimeDto.java | 16 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml | 51 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java | 25 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcPartProcessInfoController.java | 163 +++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java | 16 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java | 204 ++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeController.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java | 114 ++++ 29 files changed, 1,359 insertions(+), 13 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java index a2a0bdb..83f6f51 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java @@ -602,5 +602,10 @@ */ Integer DOWNTIME_STATUS_0 = 0; Integer DOWNTIME_STATUS_1 = 1; + /** + * 鍋滄満绫诲瀷 0(璁″垝鍋滄満) 1 (闈炶鍒掑仠鏈�) + */ + String CLOSE_TYPE_0 = "0"; + String CLOSE_TYPE_1 = "1"; } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeController.java index c06b553..e3bc683 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeController.java @@ -13,6 +13,7 @@ import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; import org.jeecg.modules.mdc.entity.MdcDowntime; import org.jeecg.modules.mdc.entity.MdcEquipmentOvertime; import org.jeecg.modules.mdc.service.IMdcDowntimeService; @@ -57,8 +58,8 @@ HttpServletRequest req) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); - Page<MdcDowntime> page = new Page<MdcDowntime>(pageNo, pageSize); - IPage<MdcDowntime> pageList = mdcDowntimeService.pageList(userId, page, mdcDowntimeVo, req); + Page<MdcDowntimeDto> page = new Page<MdcDowntimeDto>(pageNo, pageSize); + IPage<MdcDowntimeDto> pageList = mdcDowntimeService.pageList(userId, page, mdcDowntimeVo, req); return Result.OK(pageList); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java new file mode 100644 index 0000000..642d400 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java @@ -0,0 +1,100 @@ +package org.jeecg.modules.mdc.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.entity.MdcOeeInfo; +import org.jeecg.modules.mdc.service.IMdcOeeInfoService; +import org.jeecg.modules.mdc.vo.MdcOeeComputeVo; +import org.jeecg.modules.mdc.vo.MdcOeeInfoVo; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +/** + * @Description: OEE琛� + * @Author: lius + * @Date: 2024-12-12 + */ +@Slf4j +@Api(tags = "OEE琛�") +@RestController +@RequestMapping("/mdc/mdcOeeInfo") +public class MdcOeeInfoController extends JeecgController<MdcOeeInfo, IMdcOeeInfoService> { + + @Resource + private IMdcOeeInfoService mdcOeeInfoService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mdcOeeInfoVo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "OEE琛�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "OEE琛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "OEE琛�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(MdcOeeInfoVo mdcOeeInfoVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + Page<MdcOeeInfo> page = new Page<MdcOeeInfo>(pageNo, pageSize); + IPage<MdcOeeInfo> pageList = mdcOeeInfoService.pageList(userId, page, mdcOeeInfoVo, req); + return Result.OK(pageList); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + @AutoLog(value = "OEE琛�-閫氳繃id鏌ヨ") + @ApiOperation(value = "OEE琛�-閫氳繃id鏌ヨ", notes = "OEE琛�-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { + MdcOeeInfo mdcOeeInfo = mdcOeeInfoService.getById(id); + return Result.OK(mdcOeeInfo); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param mdcOeeInfoVo + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, MdcOeeInfoVo mdcOeeInfoVo) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + return mdcOeeInfoService.exportXls(userId, mdcOeeInfoVo); + } + + /** + * 璁$畻OEE + * + * @return + */ + @AutoLog(value = "OEE琛�-璁$畻OEE") + @ApiOperation(value = "OEE琛�-璁$畻OEE", notes = "OEE琛�-璁$畻OEE") + @PostMapping(value = "/computeOee") + public Result<?> computeOee(@RequestBody MdcOeeComputeVo mdcOeeComputeVo) { + mdcOeeInfoService.computeOee(mdcOeeComputeVo); + return Result.OK("璁$畻鎴愬姛锛�"); + } + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcPartProcessInfoController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcPartProcessInfoController.java new file mode 100644 index 0000000..d0b6413 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcPartProcessInfoController.java @@ -0,0 +1,163 @@ +package org.jeecg.modules.mdc.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.entity.MdcPartProcessInfo; +import org.jeecg.modules.mdc.service.IMdcPartProcessInfoService; +import org.jeecg.modules.mdc.vo.MdcPartProcessInfoVo; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + +/** + * @Description: 闆朵欢鍔犲伐鏁版嵁琛� + * @Author: lius + * @Date: 2024-12-11 + */ +@Slf4j +@Api(tags = "闆朵欢鍔犲伐鏁版嵁琛�") +@RestController +@RequestMapping("/mdc/mdcPartProcessInfo") +public class MdcPartProcessInfoController extends JeecgController<MdcPartProcessInfo, IMdcPartProcessInfoService> { + + @Resource + private IMdcPartProcessInfoService mdcPartProcessInfoService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mdcPartProcessInfo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "闆朵欢鍔犲伐鏁版嵁琛�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "闆朵欢鍔犲伐鏁版嵁琛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "闆朵欢鍔犲伐鏁版嵁琛�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(MdcPartProcessInfoVo mdcPartProcessInfo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + Page<MdcPartProcessInfo> page = new Page<MdcPartProcessInfo>(pageNo, pageSize); + IPage<MdcPartProcessInfo> pageList = mdcPartProcessInfoService.pageList(userId, page, mdcPartProcessInfo, req); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param mdcPartProcessInfo + * @return + */ + @AutoLog(value = "闆朵欢鍔犲伐鏁版嵁琛�-娣诲姞") + @ApiOperation(value = "闆朵欢鍔犲伐鏁版嵁琛�-娣诲姞", notes = "闆朵欢鍔犲伐鏁版嵁琛�-娣诲姞") + @PostMapping(value = "/add") + public Result<?> add(@RequestBody MdcPartProcessInfoVo mdcPartProcessInfo) { + if (StringUtils.isBlank(mdcPartProcessInfo.getEquipmentIds())) { + return Result.error("鏈�夋嫨璁惧锛岃鎺掓煡锛�"); + } + boolean result = mdcPartProcessInfoService.addPartProcess(mdcPartProcessInfo); + if (!result) { + return Result.error("娣诲姞澶辫触锛�"); + } + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param mdcPartProcessInfo + * @return + */ + @AutoLog(value = "闆朵欢鍔犲伐鏁版嵁琛�-缂栬緫") + @ApiOperation(value = "闆朵欢鍔犲伐鏁版嵁琛�-缂栬緫", notes = "闆朵欢鍔犲伐鏁版嵁琛�-缂栬緫") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> edit(@RequestBody MdcPartProcessInfo mdcPartProcessInfo) { + mdcPartProcessInfoService.updateById(mdcPartProcessInfo); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "闆朵欢鍔犲伐鏁版嵁琛�-閫氳繃id鍒犻櫎") + @ApiOperation(value = "闆朵欢鍔犲伐鏁版嵁琛�-閫氳繃id鍒犻櫎", notes = "闆朵欢鍔犲伐鏁版嵁琛�-閫氳繃id鍒犻櫎") + @DeleteMapping(value = "/delete") + public Result<?> delete(@RequestParam(name = "id", required = true) String id) { + mdcPartProcessInfoService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "闆朵欢鍔犲伐鏁版嵁琛�-鎵归噺鍒犻櫎") + @ApiOperation(value = "闆朵欢鍔犲伐鏁版嵁琛�-鎵归噺鍒犻櫎", notes = "闆朵欢鍔犲伐鏁版嵁琛�-鎵归噺鍒犻櫎") + @DeleteMapping(value = "/deleteBatch") + public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.mdcPartProcessInfoService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + @AutoLog(value = "闆朵欢鍔犲伐鏁版嵁琛�-閫氳繃id鏌ヨ") + @ApiOperation(value = "闆朵欢鍔犲伐鏁版嵁琛�-閫氳繃id鏌ヨ", notes = "闆朵欢鍔犲伐鏁版嵁琛�-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { + MdcPartProcessInfo mdcPartProcessInfo = mdcPartProcessInfoService.getById(id); + return Result.OK(mdcPartProcessInfo); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param mdcPartProcessInfo + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, MdcPartProcessInfoVo mdcPartProcessInfo) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + return mdcPartProcessInfoService.exportXls(userId, mdcPartProcessInfo); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, MdcPartProcessInfo.class); + } + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcDowntimeDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcDowntimeDto.java new file mode 100644 index 0000000..08cd980 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcDowntimeDto.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.mdc.dto; + +import lombok.Data; +import org.jeecg.modules.mdc.entity.MdcDowntime; + +/** + * @Author: Lius + * @CreateTime: 2025-03-17 + * @Description: 寰呮満鍋滄満鍘熷洜 + */ +@Data +public class MdcDowntimeDto extends MdcDowntime { + private Integer downtimeType; + private String downtimeDescription; + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java index e08812a..cefff4d 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java @@ -62,7 +62,6 @@ */ @Excel(name = "鍋滄満鍘熷洜id", width = 15) @ApiModelProperty(value = "鍋滄満鍘熷洜id") - @Dict(dictTable = "mdc_downtime_reason",dicCode = "id",dicText = "downtime_type") private String reasonId; /** * 鐘舵�侊紙0鏈笂鎶ワ紝1宸蹭笂鎶ワ級 diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java new file mode 100644 index 0000000..6832055 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java @@ -0,0 +1,114 @@ +package org.jeecg.modules.mdc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.system.base.entity.JeecgEntity; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description: OEE琛� + * @Author: lius + * @Date: 2024-12-12 + */ +@Data +@TableName("mdc_oee_info") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "mdc_oee_info瀵硅薄", description = "OEE琛�") +public class MdcOeeInfo extends JeecgEntity implements Serializable { + + private static final long serialVersionUID = -1029070983514140912L; + + /** + * 璁惧缂栧彿 + */ + @Excel(name = "璁惧缂栧彿", width = 15) + @ApiModelProperty(value = "璁惧缂栧彿") + private String equipmentId; + /** + * 鏃ユ湡 + */ + @Excel(name = "鏃ユ湡", width = 15) + @ApiModelProperty(value = "鏃ユ湡") + private String theDate; + /** + * 宸ヤ綔鏃ュ巻鏃堕棿(min) + */ + @Excel(name = "宸ヤ綔鏃ュ巻鏃堕棿(min)", width = 15) + @ApiModelProperty(value = "宸ヤ綔鏃ュ巻鏃堕棿(min)") + private Integer calendarLong; + /** + * 璁″垝鍋滄満鏃堕棿(min) + */ + @Excel(name = "璁″垝鍋滄満鏃堕棿(min)", width = 15) + @ApiModelProperty(value = "璁″垝鍋滄満鏃堕棿(min)") + private Integer planCloseLong; + /** + * 璐熻嵎鏃堕棿(min) + */ + @Excel(name = "璐熻嵎鏃堕棿(min)", width = 15) + @ApiModelProperty(value = "璐熻嵎鏃堕棿(min)") + private Integer loadLong; + /** + * 闈炶鍒掑仠鏈烘椂闂�(min) + */ + @Excel(name = "闈炶鍒掑仠鏈烘椂闂�(min)", width = 15) + @ApiModelProperty(value = "闈炶鍒掑仠鏈烘椂闂�(min)") + private Integer noplanCloseLong; + /** + * 寮�鍔ㄦ椂闂�(min) + */ + @Excel(name = "寮�鍔ㄦ椂闂�(min)", width = 15) + @ApiModelProperty(value = "寮�鍔ㄦ椂闂�(min)") + private Integer actuateLong; + /** + * 鏃堕棿寮�鍔ㄧ巼 + */ + @Excel(name = "鏃堕棿寮�鍔ㄧ巼", width = 15) + @ApiModelProperty(value = "鏃堕棿寮�鍔ㄧ巼") + private BigDecimal timeActuationRate; + /** + * 鏈夋晥杩愯鏃堕棿 + */ + @Excel(name = "鏈夋晥杩愯鏃堕棿", width = 15) + @ApiModelProperty(value = "鏈夋晥杩愯鏃堕棿") + private Integer effectiveRunLong; + /** + * 鎬ц兘寮�鍔ㄧ巼 + */ + @Excel(name = "鎬ц兘寮�鍔ㄧ巼", width = 15) + @ApiModelProperty(value = "鎬ц兘寮�鍔ㄧ巼") + private BigDecimal performanceRate; + /** + * 鍔犲伐闆朵欢鏁伴噺 + */ + @Excel(name = "鍔犲伐闆朵欢鏁伴噺", width = 15) + @ApiModelProperty(value = "鍔犲伐闆朵欢鏁伴噺") + private Integer processCount; + /** + * 鍚堟牸闆朵欢鏁伴噺 + */ + @Excel(name = "鍚堟牸闆朵欢鏁伴噺", width = 15) + @ApiModelProperty(value = "鍚堟牸闆朵欢鏁伴噺") + private Integer passCount; + /** + * 鍚堟牸鐜� + */ + @Excel(name = "鍚堟牸鐜�", width = 15) + @ApiModelProperty(value = "鍚堟牸鐜�") + private BigDecimal passRate; + /** + * OEE + */ + @Excel(name = "OEE", width = 15) + @ApiModelProperty(value = "OEE") + private BigDecimal oee; + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcPartProcessInfo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcPartProcessInfo.java new file mode 100644 index 0000000..b4792d7 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcPartProcessInfo.java @@ -0,0 +1,71 @@ +package org.jeecg.modules.mdc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.system.base.entity.JeecgEntity; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; + +/** + * @Description: 闆朵欢鍔犲伐鏁版嵁琛� + * @Author: lius + * @Date: 2024-12-11 + */ +@Data +@TableName("mdc_part_process_info") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "mdc_part_process_info瀵硅薄", description = "闆朵欢鍔犲伐鏁版嵁琛�") +public class MdcPartProcessInfo extends JeecgEntity implements Serializable { + + private static final long serialVersionUID = -5287766951707976335L; + + /** + * 鏃ユ湡 + */ + @Excel(name = "鏃ユ湡", width = 15) + @ApiModelProperty(value = "鏃ユ湡") + private String theDate; + /** + * 璁惧缂栧彿 + */ + @Excel(name = "璁惧缂栧彿", width = 20) + @ApiModelProperty(value = "璁惧缂栧彿") + private String equipmentId; + /** + * 闆朵欢鍙� + */ + @Excel(name = "闆朵欢鍙�", width = 20) + @ApiModelProperty(value = "闆朵欢鍙�") + private String partId; + /** + * 鏍囧噯鍔犲伐鏃堕暱锛坢in锛� + */ + @Excel(name = "鏍囧噯鍔犲伐鏃堕暱锛坢in锛�", width = 20) + @ApiModelProperty(value = "鏍囧噯鍔犲伐鏃堕暱锛坢in锛�") + private Integer standardProcessLong; + /** + * 鍔犲伐闆朵欢鏁伴噺 + */ + @Excel(name = "鍔犲伐闆朵欢鏁伴噺", width = 15) + @ApiModelProperty(value = "鍔犲伐闆朵欢鏁伴噺") + private Integer processCount; + /** + * 鍚堟牸闆朵欢鏁伴噺 + */ + @Excel(name = "鍚堟牸闆朵欢鏁伴噺", width = 15) + @ApiModelProperty(value = "鍚堟牸闆朵欢鏁伴噺") + private Integer passCount; + /** + * 鍔犲伐鎬绘椂闀�(min) + */ + @Excel(name = "鍔犲伐鎬绘椂闀�(min)", width = 18) + @ApiModelProperty(value = "鍔犲伐鎬绘椂闀�(min)") + private Integer totalProcessLong; + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java index 59317b9..5446655 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; import org.jeecg.modules.mdc.entity.MdcDowntime; import org.jeecg.modules.mdc.vo.MdcDowntimeVo; + +import java.util.List; /** * @Description: 寰呮満鍋滄満琛� @@ -14,5 +17,7 @@ */ public interface MdcDowntimeMapper extends BaseMapper<MdcDowntime> { - IPage<MdcDowntime> pageList(Page<MdcDowntime> page, @Param("mdcDowntimeVo") MdcDowntimeVo mdcDowntimeVo); + IPage<MdcDowntimeDto> pageList(Page<MdcDowntimeDto> page, @Param("mdcDowntimeVo") MdcDowntimeVo mdcDowntimeVo); + + List<MdcDowntime> findPlanTimeDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate, @Param("closeType") String closeType); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java index c542e18..3815783 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java @@ -16,4 +16,13 @@ * 鑾峰彇璁惧鏈�鏂版棩鏈熺殑杩愯鏁版嵁 */ MdcEquipmentStatisticalInfo getMaxStaticsData(@Param("equipmentId") String equipmentId); + + /** + * 鏌ヨ璁惧杩愯鏃堕棿 + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java new file mode 100644 index 0000000..041a098 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java @@ -0,0 +1,25 @@ +package org.jeecg.modules.mdc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdc.entity.MdcOeeInfo; +import org.jeecg.modules.mdc.vo.MdcOeeInfoVo; + +/** + * @Description: OEE琛� + * @Author: lius + * @Date: 2024-12-12 + */ +public interface MdcOeeInfoMapper extends BaseMapper<MdcOeeInfo> { + + /** + * 鍒嗛〉鍒楄〃 + * + * @param page + * @param mdcOeeInfoVo + * @return + */ + IPage<MdcOeeInfo> pageList(Page<MdcOeeInfo> page, @Param("mdcOeeInfoVo") MdcOeeInfoVo mdcOeeInfoVo); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java new file mode 100644 index 0000000..148619f --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java @@ -0,0 +1,52 @@ +package org.jeecg.modules.mdc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdc.entity.MdcPartProcessInfo; +import org.jeecg.modules.mdc.vo.MdcPartProcessInfoVo; + +/** + * @Description: 闆朵欢鍔犲伐鏁版嵁琛� + * @Author: lius + * @Date: 2024-12-11 + */ +public interface MdcPartProcessInfoMapper extends BaseMapper<MdcPartProcessInfo> { + + /** + * 鍒嗛〉鍒楄〃 + * + * @param page + * @param mdcPartProcessInfo + * @return + */ + IPage<MdcPartProcessInfo> pageList(Page<MdcPartProcessInfo> page, @Param("mdcPartProcessInfo") MdcPartProcessInfoVo mdcPartProcessInfo); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalPassCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml index 3e9cef2..e5adea6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml @@ -2,25 +2,42 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mdc.mapper.MdcDowntimeMapper"> - <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcDowntime"> - SELECT * FROM mdc_downtime + <select id="pageList" resultType="org.jeecg.modules.mdc.dto.MdcDowntimeDto"> + SELECT + t1.* , + t2.downtime_type downtimeType, + t2.downtime_description downtimeDescription + FROM mdc_downtime t1 LEFT JOIN mdc_downtime_reason t2 ON t1.reason_id = t2.id <where> <if test="mdcDowntimeVo.equipmentId != null and mdcDowntimeVo.equipmentId != ''"> - AND equipment_id = #{ mdcDowntimeVo.equipmentId } + AND t1.equipment_id = #{ mdcDowntimeVo.equipmentId } </if> <if test="mdcDowntimeVo.equipmentName != null and mdcDowntimeVo.equipmentName != ''"> - AND equipment_name = #{ mdcDowntimeVo.equipmentName } + AND t1.equipment_name = #{ mdcDowntimeVo.equipmentName } </if> <if test="mdcDowntimeVo.startTime != null and mdcDowntimeVo.startTime != '' and mdcDowntimeVo.endTime != null and mdcDowntimeVo.endTime != ''"> - AND the_date BETWEEN #{ mdcDowntimeVo.startTime } AND #{ mdcDowntimeVo.endTime } + AND t1.the_date BETWEEN #{ mdcDowntimeVo.startTime } AND #{ mdcDowntimeVo.endTime } </if> <if test="mdcDowntimeVo.equipmentIdList != null and mdcDowntimeVo.equipmentIdList.size() > 0 "> - AND equipment_id IN + AND t1.equipment_id IN <foreach collection="mdcDowntimeVo.equipmentIdList" item="equipmentId" index="index" open="(" close=")" separator=","> #{ equipmentId } </foreach> </if> </where> - ORDER BY create_time DESC + ORDER BY t1.create_time DESC + </select> + + <select id="findPlanTimeDuration" resultType="org.jeecg.modules.mdc.entity.MdcDowntime"> + SELECT + t1.* + FROM + mdc_downtime t1 + LEFT JOIN mdc_downtime_reason t2 ON t1.reason_id = t2.id + WHERE + t1.status = 1 + AND t1.equipment_id = #{equipmentId} + AND t2.downtime_type = #{closeType} + AND t1.the_date = #{validDate} </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 155b27e..3029e7d 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -276,6 +276,7 @@ WHERE t1.id = #{ id } </select> + <select id="queryByProductionIdAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> SELECT me.* diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml index 77c17f3..e5d1c6b 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml @@ -7,4 +7,9 @@ <select id="getMaxStaticsData" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo"> SELECT TOP 1 * FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} ORDER BY the_date DESC </select> + + <!--鏌ヨ璁惧杩愯鏃堕棿--> + <select id="selectProcessLong" resultType="java.lang.Integer"> + SELECT TOP 1 process_long FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml new file mode 100644 index 0000000..664b2fa --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml @@ -0,0 +1,30 @@ +<?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.mdc.mapper.MdcOeeInfoMapper"> + + <!--鍒嗛〉鍒楄〃--> + <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcOeeInfo"> + SELECT + * + FROM + mdc_oee_info + <where> + <if test="mdcOeeInfoVo.equipmentId != null and mdcOeeInfoVo.equipmentId != ''"> + AND equipment_id = #{ mdcOeeInfoVo.equipmentId } + </if> + <if test="mdcOeeInfoVo.startTime != null and mdcOeeInfoVo.startTime != ''"> + AND the_date >= #{ mdcOeeInfoVo.startTime } + </if> + <if test="mdcOeeInfoVo.endTime != null and mdcOeeInfoVo.endTime != ''"> + AND the_date <= #{mdcOeeInfoVo.endTime } + </if> + <if test="mdcOeeInfoVo.equipmentIdList != null and mdcOeeInfoVo.equipmentIdList.size() > 0 "> + AND equipment_id IN + <foreach collection="mdcOeeInfoVo.equipmentIdList" item="id" index="index" open="(" close=")" separator=","> + #{ id } + </foreach> + </if> + </where> + ORDER BY the_date DESC, equipment_id ASC + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml new file mode 100644 index 0000000..2f3b308 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml @@ -0,0 +1,51 @@ +<?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.mdc.mapper.MdcPartProcessInfoMapper"> + + <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcPartProcessInfo"> + SELECT + * + FROM + mdc_part_process_info + <where> + <if test="mdcPartProcessInfo.equipmentId != null and mdcPartProcessInfo.equipmentId != ''"> + AND equipment_id = #{ mdcPartProcessInfo.equipmentId } + </if> + <if test="mdcPartProcessInfo.partId != null and mdcPartProcessInfo.partId != ''"> + AND part_id = #{ mdcPartProcessInfo.partId } + </if> + <if test="mdcPartProcessInfo.theDate != null and mdcPartProcessInfo.theDate != ''"> + AND the_date LIKE CONCAT('%',#{ mdcPartProcessInfo.theDate },'%') + </if> + <if test="mdcPartProcessInfo.startTime != null and mdcPartProcessInfo.startTime != ''"> + AND the_date >= #{ mdcPartProcessInfo.startTime } + </if> + <if test="mdcPartProcessInfo.endTime != null and mdcPartProcessInfo.endTime != ''"> + AND the_date <= #{mdcPartProcessInfo.endTime } + </if> + <if test="mdcPartProcessInfo.equipmentIdList != null and mdcPartProcessInfo.equipmentIdList.size() > 0 "> + AND equipment_id IN + <foreach collection="mdcPartProcessInfo.equipmentIdList" item="id" index="index" open="(" close=")" separator=","> + #{ id } + </foreach> + </if> + </where> + ORDER BY the_date DESC, equipment_id ASC + </select> + + <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂�--> + <select id="selectTotalProcessLong" resultType="java.lang.Integer"> + SELECT sum(total_process_long) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> + + <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲�--> + <select id="selectTotalProcessCount" resultType="java.lang.Integer"> + SELECT sum(process_count) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> + + <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲�--> + <select id="selectTotalPassCount" resultType="java.lang.Integer"> + SELECT sum(pass_count) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java index 7e69746..80807ff 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; import org.jeecg.modules.mdc.entity.MdcDowntime; import org.jeecg.modules.mdc.vo.MdcDowntimeVo; @@ -24,5 +25,14 @@ * @param req * @return */ - IPage<MdcDowntime> pageList(String userId, Page<MdcDowntime> page, MdcDowntimeVo mdcDowntimeVo, HttpServletRequest req); + IPage<MdcDowntimeDto> pageList(String userId, Page<MdcDowntimeDto> page, MdcDowntimeVo mdcDowntimeVo, HttpServletRequest req); + + /** + * 鏌ヨ鍋滄満鏃堕暱 + * @param equipmentId + * @param validDate + * @param closeType + * @return + */ + Integer findPlanTimeDuration(String equipmentId, String validDate, String closeType); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java index 51473ea..51d56e6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java @@ -17,4 +17,13 @@ * @param dateTime */ void runningAllEquipmentStatisticalProcess(String dateTime); + + /** + * 鏌ヨ璁惧杩愯鏃堕棿 + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectProcessLong(String equipmentId, String validDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java new file mode 100644 index 0000000..f544260 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java @@ -0,0 +1,47 @@ +package org.jeecg.modules.mdc.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.entity.MdcOeeInfo; +import org.jeecg.modules.mdc.vo.MdcOeeComputeVo; +import org.jeecg.modules.mdc.vo.MdcOeeInfoVo; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + * @Description: OEE琛� + * @Author: lius + * @Date: 2024-12-12 + */ +public interface IMdcOeeInfoService extends IService<MdcOeeInfo> { + + /** + * 鍒嗛〉鍒楄〃 + * + * @param userId + * @param page + * @param mdcOeeInfoVo + * @param req + * @return + */ + IPage<MdcOeeInfo> pageList(String userId, Page<MdcOeeInfo> page, MdcOeeInfoVo mdcOeeInfoVo, HttpServletRequest req); + + /** + * 瀵煎嚭 + * + * @param userId + * @param mdcOeeInfoVo + * @return + */ + ModelAndView exportXls(String userId, MdcOeeInfoVo mdcOeeInfoVo); + + /** + * 璁$畻OEE + * + * @param mdcOeeComputeVo + */ + void computeOee(MdcOeeComputeVo mdcOeeComputeVo); + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java new file mode 100644 index 0000000..ca744d1 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java @@ -0,0 +1,73 @@ +package org.jeecg.modules.mdc.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.entity.MdcPartProcessInfo; +import org.jeecg.modules.mdc.vo.MdcPartProcessInfoVo; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + * @Description: 闆朵欢鍔犲伐鏁版嵁琛� + * @Author: lius + * @Date: 2024-12-11 + */ +public interface IMdcPartProcessInfoService extends IService<MdcPartProcessInfo> { + + /** + * 鍒嗛〉鏌ヨ + * + * @param userId + * @param page + * @param mdcPartProcessInfo + * @param req + * @return + */ + IPage<MdcPartProcessInfo> pageList(String userId, Page<MdcPartProcessInfo> page, MdcPartProcessInfoVo mdcPartProcessInfo, HttpServletRequest req); + + /** + * 娣诲姞 + * + * @param mdcPartProcessInfo + * @return + */ + boolean addPartProcess(MdcPartProcessInfoVo mdcPartProcessInfo); + + /** + * 瀵煎嚭 + * + * @param userId + * @param mdcPartProcessInfo + * @return + */ + ModelAndView exportXls(String userId, MdcPartProcessInfoVo mdcPartProcessInfo); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessLong(String equipmentId, String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessCount(String equipmentId, String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalPassCount(String equipmentId, String validDate); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java index 285bb7c..8826b16 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; import org.jeecg.modules.mdc.entity.MdcDowntime; import org.jeecg.modules.mdc.mapper.MdcDowntimeMapper; import org.jeecg.modules.mdc.service.IMdcDowntimeService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.MdcDowntimeVo; import org.springframework.stereotype.Service; @@ -38,7 +40,7 @@ * @return */ @Override - public IPage<MdcDowntime> pageList(String userId, Page<MdcDowntime> page, MdcDowntimeVo mdcDowntimeVo, HttpServletRequest req) { + public IPage<MdcDowntimeDto> pageList(String userId, Page<MdcDowntimeDto> page, MdcDowntimeVo mdcDowntimeVo, HttpServletRequest req) { // 鑾峰彇璁惧ID鍒楄〃 List<String> equipmentIds = getEquipmentIds(userId, mdcDowntimeVo); @@ -54,6 +56,18 @@ return this.baseMapper.pageList(page, mdcDowntimeVo); } + @Override + public Integer findPlanTimeDuration(String equipmentId, String validDate, String closeType) { + int result = 0; + List<MdcDowntime> mdcDowntimeList = this.baseMapper.findPlanTimeDuration(equipmentId, validDate, closeType); + if (mdcDowntimeList != null && !mdcDowntimeList.isEmpty()) { + for (MdcDowntime mdcDowntime : mdcDowntimeList) { + result = DateUtils.differentMinutes(mdcDowntime.getStartDate(), mdcDowntime.getEndDate()) + result; + } + } + return result; + } + private List<String> getEquipmentIds(String userId, MdcDowntimeVo mdcDowntimeVo) { if (StringUtils.isNotEmpty(mdcDowntimeVo.getEquipmentId())) { return Collections.singletonList(mdcDowntimeVo.getEquipmentId()); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java index 5f89d3e..7bbf531 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java @@ -14,6 +14,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; /** @@ -299,4 +300,21 @@ } return equipmentStatisticalInfos; } + + /** + * 鏌ヨ璁惧杩愯鏃堕棿 + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectProcessLong(String equipmentId, String validDate) { + Integer processLong = this.baseMapper.selectProcessLong(equipmentId, validDate); + if (processLong == null) { + return 0; + } else { + return Integer.parseInt(new BigDecimal(processLong).divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).toString()); + } + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java new file mode 100644 index 0000000..d166372 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java @@ -0,0 +1,246 @@ +package org.jeecg.modules.mdc.service.impl; + +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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.entity.MdcEquipment; +import org.jeecg.modules.mdc.entity.MdcOeeInfo; +import org.jeecg.modules.mdc.mapper.MdcOeeInfoMapper; +import org.jeecg.modules.mdc.service.*; +import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.vo.MdcOeeComputeVo; +import org.jeecg.modules.mdc.vo.MdcOeeInfoVo; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @Description: OEE琛� + * @Author: lius + * @Date: 2024-12-12 + */ +@Service +public class MdcOeeInfoServiceImpl extends ServiceImpl<MdcOeeInfoMapper, MdcOeeInfo> implements IMdcOeeInfoService { + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Resource + private IMdcDowntimeService mdcDowntimeService; + + @Resource + private IMdcPartProcessInfoService mdcPartProcessInfoService; + + @Resource + private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService; + + /** + * 鍒嗛〉鍒楄〃 + * + * @param userId + * @param page + * @param mdcOeeInfoVo + * @param req + * @return + */ + @Override + public IPage<MdcOeeInfo> pageList(String userId, Page<MdcOeeInfo> page, MdcOeeInfoVo mdcOeeInfoVo, HttpServletRequest req) { + List<String> equipmentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(mdcOeeInfoVo.getParentId()) && StringUtils.isEmpty(mdcOeeInfoVo.getEquipmentId())) { + if ("2".equals(mdcOeeInfoVo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcOeeInfoVo.getParentId()); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcOeeInfoVo.getParentId()); + } + } else if (StringUtils.isNotEmpty(mdcOeeInfoVo.getEquipmentId())) { + //鍗曞彴璁惧淇℃伅 + mdcOeeInfoVo.setEquipmentIdList(Collections.singletonList(mdcOeeInfoVo.getEquipmentId())); + } else { + //鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + if ("2".equals(mdcOeeInfoVo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } + } + + if (mdcOeeInfoVo.getEquipmentIdList() == null || mdcOeeInfoVo.getEquipmentIdList().isEmpty()) { + mdcOeeInfoVo.setEquipmentIdList(equipmentIds); + } + + if (mdcOeeInfoVo.getEquipmentIdList() == null || mdcOeeInfoVo.getEquipmentIdList().isEmpty()) { + return null; + } + return this.baseMapper.pageList(page, mdcOeeInfoVo); + } + + /** + * 瀵煎嚭 + * + * @param userId + * @param mdcOeeInfoVo + * @return + */ + @Override + public ModelAndView exportXls(String userId, MdcOeeInfoVo mdcOeeInfoVo) { + LambdaQueryWrapper<MdcOeeInfo> queryWrapper = new LambdaQueryWrapper<>(); + List<String> equipmentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(mdcOeeInfoVo.getParentId()) && StringUtils.isEmpty(mdcOeeInfoVo.getEquipmentId())) { + if ("2".equals(mdcOeeInfoVo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcOeeInfoVo.getParentId()); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcOeeInfoVo.getParentId()); + } + } else if (StringUtils.isNotEmpty(mdcOeeInfoVo.getEquipmentId())) { + //鍗曞彴璁惧淇℃伅 + mdcOeeInfoVo.setEquipmentIdList(Collections.singletonList(mdcOeeInfoVo.getEquipmentId())); + } else { + //鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + if ("2".equals(mdcOeeInfoVo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } + } + + if (mdcOeeInfoVo.getEquipmentIdList() == null || mdcOeeInfoVo.getEquipmentIdList().isEmpty()) { + mdcOeeInfoVo.setEquipmentIdList(equipmentIds); + } + + if (mdcOeeInfoVo.getEquipmentIdList() == null || mdcOeeInfoVo.getEquipmentIdList().isEmpty()) { + return null; + } else { + queryWrapper.in(MdcOeeInfo::getEquipmentId, mdcOeeInfoVo.getEquipmentIdList()); + } + if (StringUtils.isNotEmpty(mdcOeeInfoVo.getEquipmentId())) { + queryWrapper.eq(MdcOeeInfo::getEquipmentId, mdcOeeInfoVo.getEquipmentId()); + } + if (StringUtils.isNotEmpty(mdcOeeInfoVo.getStartTime()) && StringUtils.isNotEmpty(mdcOeeInfoVo.getEndTime())) { + queryWrapper.between(MdcOeeInfo::getTheDate, mdcOeeInfoVo.getStartTime(), mdcOeeInfoVo.getEndTime()); + } + queryWrapper.orderByDesc(MdcOeeInfo::getTheDate).orderByDesc(MdcOeeInfo::getEquipmentId); + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + List<MdcOeeInfo> mdcOeeInfos = this.baseMapper.selectList(queryWrapper); + // 瀵煎嚭鏂囦欢鍚嶇О + mv.addObject(NormalExcelConstants.FILE_NAME, "OEE鏁版嵁鍒楄〃"); + mv.addObject(NormalExcelConstants.CLASS, MdcOeeInfo.class); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("OEE鏁版嵁鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "OEE鏁版嵁")); + //update-end---author:wangshuai ---date:20211227 for锛歔JTC-116]瀵煎嚭浜哄啓姝讳簡------------ + mv.addObject(NormalExcelConstants.DATA_LIST, mdcOeeInfos); + return mv; + } + + /** + * 璁$畻OEE + * + * @param mdcOeeComputeVo + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void computeOee(MdcOeeComputeVo mdcOeeComputeVo) { + List<MdcOeeInfo> result = new ArrayList<>(); + String startDate = mdcOeeComputeVo.getStartDate(); + String endDate = mdcOeeComputeVo.getEndDate(); + List<String> dateList = DateUtils.getDatesStringList(DateUtils.getShortDate(startDate), DateUtils.getShortDate(endDate)); + if (!dateList.isEmpty()) { + //鑾峰彇璁惧鍒楄〃 + List<MdcEquipment> equipmentList = mdcEquipmentService.list(); + + for (String validDate : dateList) { + try { + this.remove(new LambdaQueryWrapper<MdcOeeInfo>().eq(MdcOeeInfo::getTheDate, validDate)); + } catch (Exception e) { + log.error("鍙傛暟鏍煎紡涓嶅", e); + } + for (MdcEquipment mdcEquipment : equipmentList) { + String equipmentId = mdcEquipment.getEquipmentId(); + MdcOeeInfo mdcOeeInfo = new MdcOeeInfo(); + // 璁惧缂栧彿 + mdcOeeInfo.setEquipmentId(equipmentId); + // 璁$畻鏃ユ湡 + mdcOeeInfo.setTheDate(validDate); + // 宸ヤ綔鏃ュ巻鏃堕棿(min) --- 鎸夋瘡澶�24灏忔椂绠� + mdcOeeInfo.setCalendarLong(1440); + // 璁″垝鍋滄満鏃堕棿(min) --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶╂�绘椂闀� + Integer planCloseLong = mdcDowntimeService.findPlanTimeDuration(equipmentId, validDate, CommonConstant.CLOSE_TYPE_0); + mdcOeeInfo.setPlanCloseLong(planCloseLong); + // 璐熻嵎鏃堕棿(min) --- 鏃ュ巻宸ヤ綔鏃堕棿-璁″垝鍋滄満鏃堕棿 + Integer loadLong = mdcOeeInfo.getCalendarLong() - planCloseLong; + mdcOeeInfo.setLoadLong(loadLong); + // 闈炶鍒掑仠鏈烘椂闂�(min) --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶╂�绘椂闀� + Integer noPlanCloseLong = mdcDowntimeService.findPlanTimeDuration(equipmentId, validDate, CommonConstant.CLOSE_TYPE_1); + mdcOeeInfo.setNoplanCloseLong(noPlanCloseLong); + // 寮�鍔ㄦ椂闂�(min) --- 璐熻嵎鏃堕棿-闈炶鍒掑仠鏈烘椂闂� + int actuateLong = loadLong - noPlanCloseLong; + mdcOeeInfo.setActuateLong(actuateLong); + // 鏃堕棿寮�鍔ㄧ巼 --- 寮�鍔ㄦ椂闂�/璐熻嵎鏃堕棿 + BigDecimal timeActuationRate = new BigDecimal(actuateLong).divide(new BigDecimal(loadLong), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + mdcOeeInfo.setTimeActuationRate(timeActuationRate); + // 鏈夋晥杩愯鏃堕棿 --- 鎸夐渶姹傜淮鎶ら浂浠跺姞宸ユ�绘椂闀縷|绯荤粺涓昏酱璐熻浇鏃堕棿 + Integer effectiveRunLong = 0; + Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate); + if (totalProcessLong == 0) { + //鏌ヨ璁惧杩愯鏃堕棿 + effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", "")); + } else { + effectiveRunLong = totalProcessLong; + } + mdcOeeInfo.setEffectiveRunLong(effectiveRunLong); + // 鎬ц兘寮�鍔ㄧ巼 --- 鏈夋晥杩愯鏃堕棿/寮�鍔ㄦ椂闂� + BigDecimal performanceRate = BigDecimal.ZERO; + if (effectiveRunLong != 0 && actuateLong != 0) { + performanceRate = new BigDecimal(effectiveRunLong).divide(new BigDecimal(actuateLong), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + } + mdcOeeInfo.setPerformanceRate(performanceRate); + // 鍔犲伐闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶� + Integer processCount = mdcPartProcessInfoService.selectTotalProcessCount(equipmentId, validDate); + mdcOeeInfo.setProcessCount(processCount); + // 鍚堟牸闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶� + Integer passCount = mdcPartProcessInfoService.selectTotalPassCount(equipmentId, validDate); + mdcOeeInfo.setPassCount(passCount); + // 鍚堟牸鐜� --- 鍚堟牸鏁�/鍔犲伐鏁� + BigDecimal passRate = BigDecimal.ZERO; + if (processCount != 0 && passCount != 0) { + passRate = new BigDecimal(passCount).divide(new BigDecimal(processCount), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + } + mdcOeeInfo.setPassRate(passRate); + // OEE --- 鏃堕棿寮�鍔ㄧ巼 * 鎬ц兘寮�鍔ㄧ巼 * 涓�娆″悎鏍肩巼 + BigDecimal oee = BigDecimal.ZERO; + if (!timeActuationRate.equals(BigDecimal.ZERO) && !performanceRate.equals(BigDecimal.ZERO) && !passRate.equals(BigDecimal.ZERO)) { + oee = timeActuationRate.multiply(performanceRate).multiply(passRate).divide(new BigDecimal("10000"), 4, RoundingMode.HALF_UP); + } + mdcOeeInfo.setOee(oee); + result.add(mdcOeeInfo); + } + } + } + super.saveBatch(result); + } + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java new file mode 100644 index 0000000..2d41fb1 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java @@ -0,0 +1,204 @@ +package org.jeecg.modules.mdc.service.impl; + +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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.entity.MdcPartProcessInfo; +import org.jeecg.modules.mdc.mapper.MdcPartProcessInfoMapper; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.mdc.service.IMdcPartProcessInfoService; +import org.jeecg.modules.mdc.vo.MdcPartProcessInfoVo; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @Description: 闆朵欢鍔犲伐鏁版嵁琛� + * @Author: lius + * @Date: 2024-12-11 + */ +@Service +public class MdcPartProcessInfoServiceImpl extends ServiceImpl<MdcPartProcessInfoMapper, MdcPartProcessInfo> implements IMdcPartProcessInfoService { + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + /** + * 鍒嗛〉鏌ヨ + * + * @param userId + * @param page + * @param mdcPartProcessInfo + * @param req + * @return + */ + @Override + public IPage<MdcPartProcessInfo> pageList(String userId, Page<MdcPartProcessInfo> page, MdcPartProcessInfoVo mdcPartProcessInfo, HttpServletRequest req) { + List<String> equipmentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(mdcPartProcessInfo.getParentId()) && StringUtils.isEmpty(mdcPartProcessInfo.getEquipmentId())) { + if ("2".equals(mdcPartProcessInfo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcPartProcessInfo.getParentId()); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcPartProcessInfo.getParentId()); + } + } else if (StringUtils.isNotEmpty(mdcPartProcessInfo.getEquipmentId())) { + //鍗曞彴璁惧淇℃伅 + mdcPartProcessInfo.setEquipmentIdList(Collections.singletonList(mdcPartProcessInfo.getEquipmentId())); + } else { + //鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + if ("2".equals(mdcPartProcessInfo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } + } + + if (mdcPartProcessInfo.getEquipmentIdList() == null || mdcPartProcessInfo.getEquipmentIdList().isEmpty()) { + mdcPartProcessInfo.setEquipmentIdList(equipmentIds); + } + + if (mdcPartProcessInfo.getEquipmentIdList() == null || mdcPartProcessInfo.getEquipmentIdList().isEmpty()) { + return null; + } + return this.baseMapper.pageList(page, mdcPartProcessInfo); + } + + @Override + public boolean addPartProcess(MdcPartProcessInfoVo mdcPartProcessInfo) { + String[] equipmentIdList = mdcPartProcessInfo.getEquipmentIds().split(","); + List<MdcPartProcessInfo> partProcessInfoList = new ArrayList<>(); + for (String equipmentId : equipmentIdList) { + MdcPartProcessInfo mppi = new MdcPartProcessInfo(); + BeanUtils.copyProperties(mdcPartProcessInfo, mppi); + mppi.setEquipmentId(equipmentId); + partProcessInfoList.add(mppi); + } + this.saveBatch(partProcessInfoList); + return true; + } + + @Override + public ModelAndView exportXls(String userId, MdcPartProcessInfoVo mdcPartProcessInfo) { + LambdaQueryWrapper<MdcPartProcessInfo> queryWrapper = new LambdaQueryWrapper<>(); + List<String> equipmentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(mdcPartProcessInfo.getParentId()) && StringUtils.isEmpty(mdcPartProcessInfo.getEquipmentId())) { + if ("2".equals(mdcPartProcessInfo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcPartProcessInfo.getParentId()); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcPartProcessInfo.getParentId()); + } + } else if (StringUtils.isNotEmpty(mdcPartProcessInfo.getEquipmentId())) { + //鍗曞彴璁惧淇℃伅 + mdcPartProcessInfo.setEquipmentIdList(Collections.singletonList(mdcPartProcessInfo.getEquipmentId())); + } else { + //鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + if ("2".equals(mdcPartProcessInfo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } + } + + if (mdcPartProcessInfo.getEquipmentIdList() == null || mdcPartProcessInfo.getEquipmentIdList().isEmpty()) { + mdcPartProcessInfo.setEquipmentIdList(equipmentIds); + } + + if (mdcPartProcessInfo.getEquipmentIdList() == null || mdcPartProcessInfo.getEquipmentIdList().isEmpty()) { + return null; + } else { + queryWrapper.in(MdcPartProcessInfo::getEquipmentId, mdcPartProcessInfo.getEquipmentIdList()); + } + if (StringUtils.isNotEmpty(mdcPartProcessInfo.getEquipmentId())) { + queryWrapper.eq(MdcPartProcessInfo::getEquipmentId, mdcPartProcessInfo.getEquipmentId()); + } + if (StringUtils.isNotEmpty(mdcPartProcessInfo.getPartId())) { + queryWrapper.eq(MdcPartProcessInfo::getPartId, mdcPartProcessInfo.getPartId()); + } + if (StringUtils.isNotEmpty(mdcPartProcessInfo.getStartTime()) && StringUtils.isNotEmpty(mdcPartProcessInfo.getEndTime())) { + queryWrapper.between(MdcPartProcessInfo::getTheDate, mdcPartProcessInfo.getStartTime(), mdcPartProcessInfo.getEndTime()); + } + queryWrapper.orderByDesc(MdcPartProcessInfo::getTheDate).orderByDesc(MdcPartProcessInfo::getEquipmentId); + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + List<MdcPartProcessInfo> mdcPartProcessInfos = this.baseMapper.selectList(queryWrapper); + // 瀵煎嚭鏂囦欢鍚嶇О + mv.addObject(NormalExcelConstants.FILE_NAME, "闆朵欢鍔犲伐鏁版嵁鍒楄〃"); + mv.addObject(NormalExcelConstants.CLASS, MdcPartProcessInfo.class); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("闆朵欢鍔犲伐鏁版嵁鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "闆朵欢鍔犲伐鏁版嵁")); + //update-end---author:wangshuai ---date:20211227 for锛歔JTC-116]瀵煎嚭浜哄啓姝讳簡------------ + mv.addObject(NormalExcelConstants.DATA_LIST, mdcPartProcessInfos); + return mv; + } + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂� + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectTotalProcessLong(String equipmentId, String validDate) { + Integer totalProcessLong = this.baseMapper.selectTotalProcessLong(equipmentId, validDate); + if (totalProcessLong == null) { + return 0; + } else { + return totalProcessLong; + } + } + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectTotalProcessCount(String equipmentId, String validDate) { + Integer totalProcessCount = this.baseMapper.selectTotalProcessCount(equipmentId, validDate); + if (totalProcessCount == null) { + return 0; + } else { + return totalProcessCount; + } + } + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectTotalPassCount(String equipmentId, String validDate) { + Integer totalPassCount = this.baseMapper.selectTotalPassCount(equipmentId, validDate); + if (totalPassCount == null) { + return 0; + } else { + return totalPassCount; + } + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java index 75c7f8e..fafdbf7 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java @@ -4,6 +4,7 @@ import io.swagger.models.auth.In; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -83,6 +84,13 @@ } /** + * @return 鑾峰彇涓や釜date鐨勬椂闂村樊锛岀粨鏋滀负鍒嗛挓 + */ + public static Integer differentMinutes(Date startDate, Date endDate) { + return new BigDecimal(endDate.getTime() - startDate.getTime()).divide(new BigDecimal("60000"), 0, RoundingMode.HALF_UP).intValue(); + } + + /** * @return 杩斿洖浼犲叆鏃堕棿鐨�0鐐�0鍒�0绉� */ public static Date getTodayZero(Date d) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java new file mode 100644 index 0000000..b23a4c9 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java @@ -0,0 +1,13 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +/** + * @author Lius + * @date 2025/1/20 14:41 + */ +@Data +public class MdcOeeComputeVo { + private String startDate; + private String endDate; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoVo.java new file mode 100644 index 0000000..783ebfc --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoVo.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; +import org.jeecg.modules.mdc.entity.MdcOeeInfo; + +import java.util.List; + +/** + * @author Lius + * @date 2024/12/12 10:14 + */ +@Data +public class MdcOeeInfoVo extends MdcOeeInfo { + private String startTime; + private String endTime; + private String parentId; + private String typeTree; + private List<String> equipmentIdList; + private String equipmentIds; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcPartProcessInfoVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcPartProcessInfoVo.java new file mode 100644 index 0000000..9992b3b --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcPartProcessInfoVo.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; +import org.jeecg.modules.mdc.entity.MdcPartProcessInfo; + +import java.util.List; + +/** + * @author Lius + * @date 2024/12/11 15:47 + */ +@Data +public class MdcPartProcessInfoVo extends MdcPartProcessInfo { + private String startTime; + private String endTime; + private String parentId; + private String typeTree; + private List<String> equipmentIdList; + private String equipmentIds; +} -- Gitblit v1.9.3