From 6a5cb9b11c95fbde3e56a55ea5379b633651d2ad Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期二, 15 四月 2025 16:54:13 +0800 Subject: [PATCH] Oee合格率数据源切换 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MesRcJobreportServiceImpl.java | 68 ++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcJcRcJobreportServiceImpl.java | 45 +++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/dto/MesRcJobreport.java | 28 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MesRcJobreportMapper.xml | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcJcRcJobreportMapper.java | 21 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/MesRcJobreportService.java | 16 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java | 39 +++- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcJcRcJobreportService.java | 20 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcJcRcJobreportMapper.xml | 13 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/entity/MdcJcRcJobreport.java | 58 +++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MesRcJobreportMapper.java | 14 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/MesPartProcessInfoJob.java | 117 ++++++++++++++ 12 files changed, 434 insertions(+), 10 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/MesPartProcessInfoJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/MesPartProcessInfoJob.java new file mode 100644 index 0000000..efc0a54 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/MesPartProcessInfoJob.java @@ -0,0 +1,117 @@ +package org.jeecg.modules.mdc.job; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.jeecg.modules.mdc.entity.MdcEquipment; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.mdcJc.dto.MesRcJobreport; +import org.jeecg.modules.mdcJc.entity.MdcJcRcJobreport; +import org.jeecg.modules.mdcJc.service.IMdcJcRcJobreportService; +import org.jeecg.modules.mdcJc.service.MesRcJobreportService; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.jeecg.modules.system.service.ISysAnnouncementService; +import org.quartz.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: Lius + * @CreateTime: 2025-04-14 + * @Description: 鍚屾MES鍔犲伐淇℃伅锛堝悎鏍肩巼锛� + */ +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +@Slf4j +public class MesPartProcessInfoJob implements Job { + + /** + * 鑻ュ弬鏁板彉閲忓悕淇敼 QuartzJobController涓篃闇�瀵瑰簲淇敼 鏃堕棿锛� yyyyMMdd 渚嬶細 20230414 + */ + private String parameter; + + public void setParameter(String parameter) { + this.parameter = parameter; + } + + @Resource + private IQuartzJobService quartzJobService; + + @Resource + private ISysAnnouncementService sysAnnouncementService; + + @Resource + private ISysQuartzLogService sysQuartzLogService; + + @Resource + private IMdcJcRcJobreportService mdcJcRcJobreportService; + + @Resource + private MesRcJobreportService mesRcJobreportService; + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + log.info("瀹氭椂鑾峰彇MES绯荤粺鍔犲伐涓暟浠诲姟 MesPartProcessInfoJob start! 鏃堕棿:" + DateUtils.getNow()); + long startTime = System.currentTimeMillis(); + try { + if (StringUtils.isNotBlank(parameter)) { + String date = ""; + if (StringUtils.isNotBlank(this.parameter)) { + date = DateUtils.format(DateUtils.toDate(this.parameter, DateUtils.STRDATE), DateUtils.STR_DATE); + } else { + date = DateUtils.format(DateUtils.getNow(), DateUtils.STR_DATE); + } + mdcJcRcJobreportService.remove(new LambdaQueryWrapper<MdcJcRcJobreport>().eq(MdcJcRcJobreport::getTheDate, date)); + + //鑾峰彇璁惧鍒楄〃 + List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(); + if (mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) { + List<String> equipmentIdList = mdcEquipmentList.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList()); + List<MesRcJobreport> mesRcJobreportList = mesRcJobreportService.findPartProcessInfo(date, equipmentIdList); + if (mesRcJobreportList != null && !mesRcJobreportList.isEmpty()) { + List<MdcJcRcJobreport> mdcJcRcJobreportList = new ArrayList<>(); + for (MesRcJobreport mesRcJobreport : mesRcJobreportList) { + MdcJcRcJobreport mdcJcRcJobreport = new MdcJcRcJobreport(); + mdcJcRcJobreport.setEquipmentId(mesRcJobreport.getDeviceNumber()); + mdcJcRcJobreport.setOkuqty(mesRcJobreport.getOkuqty().intValue()); + mdcJcRcJobreport.setProcessCount(mesRcJobreport.getQty().intValue()); + mdcJcRcJobreport.setTheDate(date); + mdcJcRcJobreportList.add(mdcJcRcJobreport); + } + if (!mdcEquipmentList.isEmpty()) { + mdcJcRcJobreportService.saveBatch(mdcJcRcJobreportList); + } + } + } + + } + quartzLog.setIsSuccess(0); + } catch (Exception e) { + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + // 鍙戦�佹秷鎭�氱煡 + sysAnnouncementService.jobSendMessage("瀹氭椂鑾峰彇MES绯荤粺鍔犲伐涓暟浠诲姟", quartzLog.getExceptionDetail()); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + } +} 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 index d166372..550d3f4 100644 --- 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 @@ -15,6 +15,7 @@ import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.MdcOeeComputeVo; import org.jeecg.modules.mdc.vo.MdcOeeInfoVo; +import org.jeecg.modules.mdcJc.service.IMdcJcRcJobreportService; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; @@ -45,8 +46,11 @@ @Resource private IMdcDowntimeService mdcDowntimeService; +// @Resource +// private IMdcPartProcessInfoService mdcPartProcessInfoService; + @Resource - private IMdcPartProcessInfoService mdcPartProcessInfoService; + private IMdcJcRcJobreportService mdcJcRcJobreportService; @Resource private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService; @@ -204,13 +208,17 @@ mdcOeeInfo.setTimeActuationRate(timeActuationRate); // 鏈夋晥杩愯鏃堕棿 --- 鎸夐渶姹傜淮鎶ら浂浠跺姞宸ユ�绘椂闀縷|绯荤粺涓昏酱璐熻浇鏃堕棿 Integer effectiveRunLong = 0; - Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate); - if (totalProcessLong == 0) { - //鏌ヨ璁惧杩愯鏃堕棿 - effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", "")); - } else { - effectiveRunLong = totalProcessLong; +// Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate); + //鏌ヨ璁惧杩愯鏃堕棿 + effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", "")); + if (effectiveRunLong == null) { + effectiveRunLong = 0; } +// if (totalProcessLong == 0) { +// +// } else { +// effectiveRunLong = totalProcessLong; +// } mdcOeeInfo.setEffectiveRunLong(effectiveRunLong); // 鎬ц兘寮�鍔ㄧ巼 --- 鏈夋晥杩愯鏃堕棿/寮�鍔ㄦ椂闂� BigDecimal performanceRate = BigDecimal.ZERO; @@ -219,10 +227,21 @@ } mdcOeeInfo.setPerformanceRate(performanceRate); // 鍔犲伐闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶� - Integer processCount = mdcPartProcessInfoService.selectTotalProcessCount(equipmentId, validDate); +// 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); +// } + // 鍔犲伐闆朵欢鏁伴噺 + Integer processCount = mdcJcRcJobreportService.selectTotalProcessCount(equipmentId, validDate); mdcOeeInfo.setProcessCount(processCount); - // 鍚堟牸闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶� - Integer passCount = mdcPartProcessInfoService.selectTotalPassCount(equipmentId, validDate); + // 鍚堟牸闆朵欢鏁伴噺 + Integer passCount = mdcJcRcJobreportService.selectTotalPassCount(equipmentId, validDate); mdcOeeInfo.setPassCount(passCount); // 鍚堟牸鐜� --- 鍚堟牸鏁�/鍔犲伐鏁� BigDecimal passRate = BigDecimal.ZERO; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/dto/MesRcJobreport.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/dto/MesRcJobreport.java new file mode 100644 index 0000000..0e56b53 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/dto/MesRcJobreport.java @@ -0,0 +1,28 @@ +package org.jeecg.modules.mdcJc.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: Lius + * @CreateTime: 2025-04-14 + * @Description: + */ +@Data +public class MesRcJobreport { + + private String billDate; + + private String deviceNumber; + + /** + * 鍚堟牸鏁� + */ + private BigDecimal okuqty; + + /** + * 鎬绘暟 + */ + private BigDecimal qty; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/entity/MdcJcRcJobreport.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/entity/MdcJcRcJobreport.java new file mode 100644 index 0000000..826e6c4 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/entity/MdcJcRcJobreport.java @@ -0,0 +1,58 @@ +package org.jeecg.modules.mdcJc.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: 璁惧闆嗘垚mes鍚堟牸鐜囪〃 + * @Author: jeecg-boot + * @Date: 2025-04-14 + * @Version: V1.0 + */ +@Data +@TableName("mdcJc_rc_jobreport") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "mdcJc_rc_jobreport瀵硅薄", description = "璁惧闆嗘垚mes鍚堟牸鐜囪〃") +public class MdcJcRcJobreport extends JeecgEntity implements Serializable { + + /** + * 璁惧缂栧彿 + */ + @Excel(name = "璁惧缂栧彿", width = 15) + @ApiModelProperty(value = "璁惧缂栧彿") + private String equipmentId; + /** + * 鍔犲伐闆朵欢鏁伴噺 + */ + @Excel(name = "鍔犲伐闆朵欢鏁伴噺", width = 15) + @ApiModelProperty(value = "鍔犲伐闆朵欢鏁伴噺") + private Integer processCount; + /** + * 鍚堟牸鏁伴噺 + */ + @Excel(name = "鍚堟牸鏁伴噺", width = 15) + @ApiModelProperty(value = "鍚堟牸鏁伴噺") + private Integer okuqty; + /** + * 涓嶅悎鏍奸浂浠舵暟閲� + */ + @Excel(name = "涓嶅悎鏍奸浂浠舵暟閲�", width = 15) + @ApiModelProperty(value = "涓嶅悎鏍奸浂浠舵暟閲�") + private Integer nookqty; + /** + * 鏃ユ湡 + */ + @Excel(name = "鏃ユ湡", width = 15) + @ApiModelProperty(value = "鏃ユ湡") + private String theDate; + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcJcRcJobreportMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcJcRcJobreportMapper.java new file mode 100644 index 0000000..0e00750 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcJcRcJobreportMapper.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.mdcJc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdcJc.dto.MesRcJobreport; +import org.jeecg.modules.mdcJc.entity.MdcJcRcJobreport; + +import java.util.List; + +/** + * @Description: 璁惧闆嗘垚mes鍚堟牸鐜囪〃 + * @Author: Lius + * @Date: 2025-04-14 + */ +public interface MdcJcRcJobreportMapper extends BaseMapper<MdcJcRcJobreport> { + + Integer selectTotalProcessCount(@Param("equipmentId") String equipmentId, @Param("date") String validDate); + + Integer selectTotalPassCount(@Param("equipmentId") String equipmentId, @Param("date") String validDate); + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MesRcJobreportMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MesRcJobreportMapper.java new file mode 100644 index 0000000..ade923f --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MesRcJobreportMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.mdcJc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.mdcJc.dto.MesRcJobreport; + + +/** + * @Author: Lius + * @CreateTime: 2025-04-14 + * @Description: + */ +public interface MesRcJobreportMapper extends BaseMapper<MesRcJobreport> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcJcRcJobreportMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcJcRcJobreportMapper.xml new file mode 100644 index 0000000..3052f63 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcJcRcJobreportMapper.xml @@ -0,0 +1,13 @@ +<?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.mdcJc.mapper.MdcJcRcJobreportMapper"> + + <select id="selectTotalProcessCount" resultType="java.lang.Integer"> + SELECT okuqty + nookqty FROM mdcJc_rc_jobreport WHERE equipment_id = #{equipmentId} AND the_date = #{date} + </select> + + <select id="selectTotalPassCount" resultType="java.lang.Integer"> + SELECT okuqty FROM mdcJc_rc_jobreport WHERE equipment_id = #{equipmentId} AND the_date = #{date} + </select> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MesRcJobreportMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MesRcJobreportMapper.xml new file mode 100644 index 0000000..19e2e13 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MesRcJobreportMapper.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.mdcJc.mapper.MesRcJobreportMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcJcRcJobreportService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcJcRcJobreportService.java new file mode 100644 index 0000000..6e23de2 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcJcRcJobreportService.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.mdcJc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdcJc.dto.MesRcJobreport; +import org.jeecg.modules.mdcJc.entity.MdcJcRcJobreport; + +import java.util.List; + +/** + * @Description: 璁惧闆嗘垚mes鍚堟牸鐜囪〃 + * @Author: Lius + * @Date: 2025-04-14 + */ +public interface IMdcJcRcJobreportService extends IService<MdcJcRcJobreport> { + + Integer selectTotalProcessCount(String equipmentId, String validDate); + + Integer selectTotalPassCount(String equipmentId, String validDate); + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/MesRcJobreportService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/MesRcJobreportService.java new file mode 100644 index 0000000..e30a8d9 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/MesRcJobreportService.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.mdcJc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdcJc.dto.MesRcJobreport; + +import java.util.List; + +/** + * @Author: Lius + * @CreateTime: 2025-04-14 + * @Description: + */ +public interface MesRcJobreportService { + + List<MesRcJobreport> findPartProcessInfo(String date, List<String> equipmentIdList); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcJcRcJobreportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcJcRcJobreportServiceImpl.java new file mode 100644 index 0000000..d6d4ad5 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcJcRcJobreportServiceImpl.java @@ -0,0 +1,45 @@ +package org.jeecg.modules.mdcJc.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.mdcJc.dto.MesRcJobreport; +import org.jeecg.modules.mdcJc.entity.MdcJcRcJobreport; +import org.jeecg.modules.mdcJc.mapper.MdcJcRcJobreportMapper; +import org.jeecg.modules.mdcJc.service.IMdcJcRcJobreportService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.List; + +/** + * @Description: 璁惧闆嗘垚mes鍚堟牸鐜囪〃 + * @Author: Lius + * @Date: 2025-04-14 + */ +@Service +@Slf4j +public class MdcJcRcJobreportServiceImpl extends ServiceImpl<MdcJcRcJobreportMapper, MdcJcRcJobreport> implements IMdcJcRcJobreportService { + + @Override + public Integer selectTotalProcessCount(String equipmentId, String validDate) { + Integer totalProcessCount = this.baseMapper.selectTotalProcessCount(equipmentId, validDate); + if (totalProcessCount == null) { + return 0; + } else { + return totalProcessCount; + } + } + + @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/mdcJc/service/impl/MesRcJobreportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MesRcJobreportServiceImpl.java new file mode 100644 index 0000000..333d09d --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MesRcJobreportServiceImpl.java @@ -0,0 +1,68 @@ +package org.jeecg.modules.mdcJc.service.impl; + +import org.jeecg.common.util.dynamic.db.DynamicDBUtil; +import org.jeecg.modules.mdcJc.dto.MesRcJobreport; +import org.jeecg.modules.mdcJc.service.MesRcJobreportService; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author: Lius + * @CreateTime: 2025-04-14 + * @Description: + */ +@Service +public class MesRcJobreportServiceImpl implements MesRcJobreportService { + + + @Override + public List<MesRcJobreport> findPartProcessInfo(String date, List<String> equipmentIdList) { + List<MesRcJobreport> result = new ArrayList<>(); + + // 绌哄弬鏁版鏌� + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return result; + } + + // 鏋勫缓鍔ㄦ�両N瀛愬彞 + String inClause = String.join(",", Collections.nCopies(equipmentIdList.size(), "?")); + + // 鏋勫缓瀹夊叏SQL锛堟敞鎰廤HERE瀛愬彞鐨勭┖鏍硷級 + String sql = "SELECT the_data AS thedate, " + + "device_number AS deviceNumber, " + + "okuqty, qty " + + "FROM hegelv " + + "WHERE the_data = ? " + // 浣跨敤鍙傛暟鍖栨煡璇� + "AND device_number IN (" + inClause + ")"; + + // 鍑嗗鍙傛暟锛堟棩鏈熷湪鍓嶏紝璁惧ID鍦ㄥ悗锛� + List<String> params = new ArrayList<>(); + params.add(date); + params.addAll(equipmentIdList); + + System.out.println("SQL鍙傛暟: date=" + date + ", equipmentIds=" + equipmentIdList); + + List<Map<String, Object>> mapList = DynamicDBUtil.findList("basicDB", sql, params.toArray()); + + if (mapList == null || mapList.isEmpty()) { + return result; + } + + result = mapList.stream().map(map -> { + MesRcJobreport mesRcJobreport = new MesRcJobreport(); + mesRcJobreport.setBillDate(map.get("thedate").toString()); + mesRcJobreport.setDeviceNumber(map.get("deviceNumber").toString()); + mesRcJobreport.setOkuqty(new BigDecimal(map.get("okuqty").toString())); + mesRcJobreport.setQty(new BigDecimal(map.get("qty").toString())); + return mesRcJobreport; + }).collect(Collectors.toList()); + + return result; + } +} -- Gitblit v1.9.3