From 816af5df6e6c4f2a826746669ff34ad195b86b6e Mon Sep 17 00:00:00 2001 From: chenx <1366659369@qq.com> Date: Wed, 17 Jun 2026 16:39:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=86=E7=82=BC=E7=94=9F=E4=BA=A7=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E7=BB=B4=E6=8A=A4=E8=A1=A8=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/MesXslMixingProductionPlan.java | 112 +++----- ...MesXslMixingProductionPlanServiceImpl.java | 253 ++++++++---------- ...ng_production_plan_shared_shift_fields.sql | 18 ++ ...tion_plan_drop_redundant_shift_columns.sql | 31 +++ ...es_xsl_mixing_production_plan_recreate.sql | 44 +++ ...ng_production_plan_add_material_fields.sql | 7 + ...uction_plan_fix_material_id_definition.sql | 6 + ...xsl_mixing_production_plan_add_plan_no.sql | 7 + .../MesXslMixingProductionPlanList.vue | 146 ++++++++-- 9 files changed, 384 insertions(+), 240 deletions(-) create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_134__mes_xsl_mixing_production_plan_shared_shift_fields.sql create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_135__mes_xsl_mixing_production_plan_drop_redundant_shift_columns.sql create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_136__mes_xsl_mixing_production_plan_recreate.sql create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_137__mes_xsl_mixing_production_plan_add_material_fields.sql create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_138__mes_xsl_mixing_production_plan_fix_material_id_definition.sql create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_139__mes_xsl_mixing_production_plan_add_plan_no.sql diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/entity/MesXslMixingProductionPlan.java b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/entity/MesXslMixingProductionPlan.java index 42d2d2e8..1e7a75a4 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/entity/MesXslMixingProductionPlan.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/entity/MesXslMixingProductionPlan.java @@ -43,91 +43,47 @@ public class MesXslMixingProductionPlan implements Serializable { @Schema(description = "机台名称") private String machineName; + @Excel(name = "班次标识", width = 10) + @Schema(description = "班次标识:1早班 2中班 3晚班") + private Integer shiftFlag; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Schema(description = "计划日期(保存时写入当前日期)") private Date planDate; + @Schema(description = "计划号(yyyyMMddA三位流水)") + private String planNo; - @Schema(description = "早班计划ID") - private String morningPlanId; - @Schema(description = "早班计划类型 M母胶/F终胶") - private String morningPlanType; - @Schema(description = "早班生产订单ID") - private String morningSourceOrderId; - @Excel(name = "早班生产订单", width = 20) - private String morningOrderNo; + @Schema(description = "计划ID(母胶/终胶计划)") + private String planId; + @Schema(description = "计划类型 M母胶/F终胶") + private String planType; + @Schema(description = "生产订单ID") + private String sourceOrderId; + @Schema(description = "胶料ID(取母胶/终胶计划materialCode)") + private String materialId; + @Schema(description = "胶料名称(取母胶/终胶计划mesMaterialName)") + private String materialName; + @Excel(name = "生产订单", width = 20) + private String orderNo; @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") - @Schema(description = "早班订单日期") - private Date morningOrderDate; - @Excel(name = "早班配方名称", width = 20) - private String morningFormulaName; - @Excel(name = "早班计划重量", width = 15) - private BigDecimal morningPlanWeight; - @Excel(name = "早班计划车数", width = 12) - private Integer morningPlannedCarCount; - @Excel(name = "早班已排产车数", width = 12) - private Integer morningScheduledCarCount; - @Excel(name = "早班完成车数", width = 12) - private Integer morningFinishedCarCount; - @Excel(name = "早班计划", width = 12) - private Integer morningPlanCount; - @Excel(name = "早班备注", width = 20) - private String morningRemark; - - @Schema(description = "中班计划ID") - private String noonPlanId; - @Schema(description = "中班计划类型 M母胶/F终胶") - private String noonPlanType; - @Schema(description = "中班生产订单ID") - private String noonSourceOrderId; - @Excel(name = "中班生产订单", width = 20) - private String noonOrderNo; - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @Schema(description = "中班订单日期") - private Date noonOrderDate; - @Excel(name = "中班配方名称", width = 20) - private String noonFormulaName; - @Excel(name = "中班计划重量", width = 15) - private BigDecimal noonPlanWeight; - @Excel(name = "中班计划车数", width = 12) - private Integer noonPlannedCarCount; - @Excel(name = "中班已排产车数", width = 12) - private Integer noonScheduledCarCount; - @Excel(name = "中班完成车数", width = 12) - private Integer noonFinishedCarCount; - @Excel(name = "中班计划", width = 12) - private Integer noonPlanCount; - @Excel(name = "中班备注", width = 20) - private String noonRemark; - - @Schema(description = "晚班计划ID") - private String nightPlanId; - @Schema(description = "晚班计划类型 M母胶/F终胶") - private String nightPlanType; - @Schema(description = "晚班生产订单ID") - private String nightSourceOrderId; - @Excel(name = "晚班生产订单", width = 20) - private String nightOrderNo; - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @Schema(description = "晚班订单日期") - private Date nightOrderDate; - @Excel(name = "晚班配方名称", width = 20) - private String nightFormulaName; - @Excel(name = "晚班计划重量", width = 15) - private BigDecimal nightPlanWeight; - @Excel(name = "晚班计划车数", width = 12) - private Integer nightPlannedCarCount; - @Excel(name = "晚班已排产车数", width = 12) - private Integer nightScheduledCarCount; - @Excel(name = "晚班完成车数", width = 12) - private Integer nightFinishedCarCount; - @Excel(name = "晚班计划", width = 12) - private Integer nightPlanCount; - @Excel(name = "晚班备注", width = 20) - private String nightRemark; + @Schema(description = "订单日期") + private Date orderDate; + @Excel(name = "配方名称", width = 20) + private String formulaName; + @Excel(name = "计划重量", width = 15) + private BigDecimal planWeight; + @Excel(name = "计划车数", width = 12) + private Integer plannedCarCount; + @Excel(name = "已排产车数", width = 12) + private Integer scheduledCarCount; + @Excel(name = "完成车数", width = 12) + private Integer finishedCarCount; + @Excel(name = "计划", width = 12) + private Integer planCount; + @Excel(name = "备注", width = 20) + private String remark; private Integer tenantId; private String sysOrgCode; diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixingProductionPlanServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixingProductionPlanServiceImpl.java index e35aafbb..414452df 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixingProductionPlanServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixingProductionPlanServiceImpl.java @@ -4,6 +4,8 @@ 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 java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -15,6 +17,8 @@ import java.util.Objects; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.modules.mes.material.entity.MesMaterial; +import org.jeecg.modules.mes.material.mapper.MesMaterialMapper; import org.jeecg.modules.xslmes.entity.MesXslEquipmentLedger; import org.jeecg.modules.xslmes.entity.MesXslFinalBatchPlan; import org.jeecg.modules.xslmes.entity.MesXslMasterBatchPlan; @@ -35,21 +39,25 @@ import org.springframework.util.CollectionUtils; public class MesXslMixingProductionPlanServiceImpl extends ServiceImpl implements IMesXslMixingProductionPlanService { + private static final DateTimeFormatter PLAN_NO_DATE_FMT = DateTimeFormatter.BASIC_ISO_DATE; private final MesXslEquipmentLedgerMapper equipmentLedgerMapper; private final MesXslMasterBatchPlanMapper masterBatchPlanMapper; private final MesXslFinalBatchPlanMapper finalBatchPlanMapper; private final MesXslMixingSpecMapper mixingSpecMapper; + private final MesMaterialMapper mesMaterialMapper; public MesXslMixingProductionPlanServiceImpl( MesXslEquipmentLedgerMapper equipmentLedgerMapper, MesXslMasterBatchPlanMapper masterBatchPlanMapper, MesXslFinalBatchPlanMapper finalBatchPlanMapper, - MesXslMixingSpecMapper mixingSpecMapper) { + MesXslMixingSpecMapper mixingSpecMapper, + MesMaterialMapper mesMaterialMapper) { this.equipmentLedgerMapper = equipmentLedgerMapper; this.masterBatchPlanMapper = masterBatchPlanMapper; this.finalBatchPlanMapper = finalBatchPlanMapper; this.mixingSpecMapper = mixingSpecMapper; + this.mesMaterialMapper = mesMaterialMapper; } @Override @@ -60,13 +68,14 @@ public class MesXslMixingProductionPlanServiceImpl return; } Map machineNameCache = new HashMap<>(); + Map dailyPlanNoCounter = new HashMap<>(); List saveList = new ArrayList<>(); int sort = 1; for (MesXslMixingProductionPlan row : rows) { if (row == null || !hasBusinessData(row)) { continue; } - normalizeRow(row, machineNameCache); + normalizeRow(row, machineNameCache, dailyPlanNoCounter); row.setSortNo(sort++); saveList.add(row); } @@ -77,26 +86,27 @@ public class MesXslMixingProductionPlanServiceImpl private boolean hasBusinessData(MesXslMixingProductionPlan row) { return StringUtils.isNotBlank(row.getMachineId()) - || StringUtils.isNotBlank(row.getMorningPlanId()) - || StringUtils.isNotBlank(row.getNoonPlanId()) - || StringUtils.isNotBlank(row.getNightPlanId()) - || StringUtils.isNotBlank(row.getMorningRemark()) - || StringUtils.isNotBlank(row.getNoonRemark()) - || StringUtils.isNotBlank(row.getNightRemark()) - || row.getMorningPlanCount() != null - || row.getNoonPlanCount() != null - || row.getNightPlanCount() != null; + || StringUtils.isNotBlank(row.getPlanId()) + || StringUtils.isNotBlank(row.getRemark()) + || row.getPlanCount() != null; } private void normalizeRow( - MesXslMixingProductionPlan row, Map machineNameCache) { + MesXslMixingProductionPlan row, + Map machineNameCache, + Map dailyPlanNoCounter) { row.setId(null); row.setMachineId(StringUtils.trimToNull(row.getMachineId())); row.setMachineName(resolveMachineName(row.getMachineId(), machineNameCache)); + Integer shiftFlag = row.getShiftFlag(); + if (shiftFlag == null || shiftFlag < 1 || shiftFlag > 3) { + row.setShiftFlag(1); + } + row.setPlanId(StringUtils.trimToNull(row.getPlanId())); + row.setPlanType(StringUtils.upperCase(StringUtils.trimToNull(row.getPlanType()))); row.setPlanDate(new Date()); - fillShiftFromPlan(row, "morning"); - fillShiftFromPlan(row, "noon"); - fillShiftFromPlan(row, "night"); + row.setPlanNo(generatePlanNo(row.getPlanDate(), dailyPlanNoCounter)); + fillFromPlan(row); Date now = new Date(); if (row.getCreateTime() == null) { row.setCreateTime(now); @@ -107,6 +117,14 @@ public class MesXslMixingProductionPlanServiceImpl } } + private String generatePlanNo(Date planDate, Map dailyPlanNoCounter) { + String datePart = planDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().format(PLAN_NO_DATE_FMT); + Integer current = dailyPlanNoCounter.get(datePart); + int next = current == null ? 1 : current + 1; + dailyPlanNoCounter.put(datePart, next); + return datePart + "A" + String.format("%03d", next); + } + private String resolveMachineName(String machineId, Map cache) { if (StringUtils.isBlank(machineId)) { return null; @@ -119,171 +137,118 @@ public class MesXslMixingProductionPlanServiceImpl }); } - private void fillShiftFromPlan(MesXslMixingProductionPlan row, String shift) { - String planId = getPlanId(row, shift); - String planType = StringUtils.upperCase(StringUtils.trimToEmpty(getPlanType(row, shift))); + private void fillFromPlan(MesXslMixingProductionPlan row) { + String planId = row.getPlanId(); + String planType = StringUtils.upperCase(StringUtils.trimToEmpty(row.getPlanType())); if (StringUtils.isBlank(planId)) { - clearShiftPlanFields(row, shift); + clearPlanFields(row); return; } if ("M".equals(planType)) { MesXslMasterBatchPlan plan = masterBatchPlanMapper.selectById(planId); if (plan == null) { - clearShiftPlanFields(row, shift); + clearPlanFields(row); return; } - setShiftFromMasterPlan(row, shift, plan); + setFromMasterPlan(row, plan); return; } MesXslFinalBatchPlan finalPlan = finalBatchPlanMapper.selectById(planId); if (finalPlan == null) { - clearShiftPlanFields(row, shift); + clearPlanFields(row); return; } - setShiftFromFinalPlan(row, shift, finalPlan); + setFromFinalPlan(row, finalPlan); } - private String getPlanId(MesXslMixingProductionPlan row, String shift) { - return switch (shift) { - case "morning" -> StringUtils.trimToNull(row.getMorningPlanId()); - case "noon" -> StringUtils.trimToNull(row.getNoonPlanId()); - default -> StringUtils.trimToNull(row.getNightPlanId()); - }; - } - - private String getPlanType(MesXslMixingProductionPlan row, String shift) { - return switch (shift) { - case "morning" -> row.getMorningPlanType(); - case "noon" -> row.getNoonPlanType(); - default -> row.getNightPlanType(); - }; - } - - private void setShiftFromMasterPlan( - MesXslMixingProductionPlan row, String shift, MesXslMasterBatchPlan plan) { - setShiftPlanType(row, shift, "M"); - setShiftSourceOrderId(row, shift, plan.getSourceOrderId()); - setShiftOrderNo(row, shift, plan.getOrderNo()); - setShiftOrderDate(row, shift, plan.getOrderDate()); - setShiftFormulaName( - row, - shift, + private void setFromMasterPlan(MesXslMixingProductionPlan row, MesXslMasterBatchPlan plan) { + row.setPlanType("M"); + row.setSourceOrderId(plan.getSourceOrderId()); + row.setMaterialId(resolveMesMaterialId(plan.getMesMaterialName(), plan.getMaterialCode())); + row.setMaterialName(plan.getMesMaterialName()); + row.setOrderNo(plan.getOrderNo()); + row.setOrderDate(plan.getOrderDate()); + row.setFormulaName( resolveFormulaNameByMachineAndMaterial( row.getMachineId(), row.getMachineName(), plan.getMaterialCode(), plan.getMesMaterialName(), true)); - setShiftPlanWeight(row, shift, plan.getPlanWeight()); - setShiftPlannedCarCount(row, shift, plan.getPlannedCarCount()); - setShiftScheduledCarCount(row, shift, plan.getScheduledCarCount()); - setShiftFinishedCarCount(row, shift, plan.getFinishedCarCount()); + row.setPlanWeight(plan.getPlanWeight()); + row.setPlannedCarCount(plan.getPlannedCarCount()); + row.setScheduledCarCount(plan.getScheduledCarCount()); + row.setFinishedCarCount(plan.getFinishedCarCount()); } - private void setShiftFromFinalPlan( - MesXslMixingProductionPlan row, String shift, MesXslFinalBatchPlan plan) { - setShiftPlanType(row, shift, "F"); - setShiftSourceOrderId(row, shift, plan.getSourceOrderId()); - setShiftOrderNo(row, shift, plan.getOrderNo()); - setShiftOrderDate(row, shift, plan.getOrderDate()); - setShiftFormulaName( - row, - shift, + private void setFromFinalPlan(MesXslMixingProductionPlan row, MesXslFinalBatchPlan plan) { + row.setPlanType("F"); + row.setSourceOrderId(plan.getSourceOrderId()); + row.setMaterialId(resolveMesMaterialId(plan.getMesMaterialName(), plan.getMaterialCode())); + row.setMaterialName(plan.getMesMaterialName()); + row.setOrderNo(plan.getOrderNo()); + row.setOrderDate(plan.getOrderDate()); + row.setFormulaName( resolveFormulaNameByMachineAndMaterial( row.getMachineId(), row.getMachineName(), plan.getMaterialCode(), plan.getMesMaterialName(), true)); - setShiftPlanWeight(row, shift, plan.getPlanWeight()); - setShiftPlannedCarCount(row, shift, plan.getPlannedCarCount()); - setShiftScheduledCarCount(row, shift, plan.getScheduledCarCount()); - setShiftFinishedCarCount(row, shift, plan.getFinishedCarCount()); + row.setPlanWeight(plan.getPlanWeight()); + row.setPlannedCarCount(plan.getPlannedCarCount()); + row.setScheduledCarCount(plan.getScheduledCarCount()); + row.setFinishedCarCount(plan.getFinishedCarCount()); } - private void clearShiftPlanFields(MesXslMixingProductionPlan row, String shift) { - setShiftPlanType(row, shift, null); - setShiftSourceOrderId(row, shift, null); - setShiftOrderNo(row, shift, null); - setShiftOrderDate(row, shift, null); - setShiftFormulaName(row, shift, null); - setShiftPlanWeight(row, shift, null); - setShiftPlannedCarCount(row, shift, null); - setShiftScheduledCarCount(row, shift, null); - setShiftFinishedCarCount(row, shift, null); + private void clearPlanFields(MesXslMixingProductionPlan row) { + row.setPlanType(null); + row.setSourceOrderId(null); + row.setMaterialId(null); + row.setMaterialName(null); + row.setOrderNo(null); + row.setOrderDate(null); + row.setFormulaName(null); + row.setPlanWeight(null); + row.setPlannedCarCount(null); + row.setScheduledCarCount(null); + row.setFinishedCarCount(null); } - private void setShiftPlanType(MesXslMixingProductionPlan row, String shift, String value) { - switch (shift) { - case "morning" -> row.setMorningPlanType(value); - case "noon" -> row.setNoonPlanType(value); - default -> row.setNightPlanType(value); + private String resolveMesMaterialId(String mesMaterialName, String materialCode) { + String name = StringUtils.trimToNull(mesMaterialName); + String code = StringUtils.trimToNull(materialCode); + LambdaQueryWrapper byNameWrapper = + new LambdaQueryWrapper() + .eq(name != null, MesMaterial::getMaterialName, name) + .and( + w -> + w.eq(MesMaterial::getDelFlag, CommonConstant.DEL_FLAG_0) + .or() + .isNull(MesMaterial::getDelFlag)) + .orderByDesc(MesMaterial::getUpdateTime) + .orderByDesc(MesMaterial::getCreateTime) + .last("LIMIT 1"); + MesMaterial byName = mesMaterialMapper.selectOne(byNameWrapper); + if (byName != null) { + return byName.getId(); } - } - - private void setShiftSourceOrderId(MesXslMixingProductionPlan row, String shift, String value) { - switch (shift) { - case "morning" -> row.setMorningSourceOrderId(value); - case "noon" -> row.setNoonSourceOrderId(value); - default -> row.setNightSourceOrderId(value); - } - } - - private void setShiftOrderNo(MesXslMixingProductionPlan row, String shift, String value) { - switch (shift) { - case "morning" -> row.setMorningOrderNo(value); - case "noon" -> row.setNoonOrderNo(value); - default -> row.setNightOrderNo(value); - } - } - - private void setShiftOrderDate(MesXslMixingProductionPlan row, String shift, Date value) { - switch (shift) { - case "morning" -> row.setMorningOrderDate(value); - case "noon" -> row.setNoonOrderDate(value); - default -> row.setNightOrderDate(value); - } - } - - private void setShiftFormulaName(MesXslMixingProductionPlan row, String shift, String value) { - switch (shift) { - case "morning" -> row.setMorningFormulaName(value); - case "noon" -> row.setNoonFormulaName(value); - default -> row.setNightFormulaName(value); - } - } - - private void setShiftPlanWeight( - MesXslMixingProductionPlan row, String shift, java.math.BigDecimal value) { - switch (shift) { - case "morning" -> row.setMorningPlanWeight(value); - case "noon" -> row.setNoonPlanWeight(value); - default -> row.setNightPlanWeight(value); - } - } - - private void setShiftPlannedCarCount(MesXslMixingProductionPlan row, String shift, Integer value) { - switch (shift) { - case "morning" -> row.setMorningPlannedCarCount(value); - case "noon" -> row.setNoonPlannedCarCount(value); - default -> row.setNightPlannedCarCount(value); - } - } - - private void setShiftScheduledCarCount(MesXslMixingProductionPlan row, String shift, Integer value) { - switch (shift) { - case "morning" -> row.setMorningScheduledCarCount(value); - case "noon" -> row.setNoonScheduledCarCount(value); - default -> row.setNightScheduledCarCount(value); - } - } - - private void setShiftFinishedCarCount(MesXslMixingProductionPlan row, String shift, Integer value) { - switch (shift) { - case "morning" -> row.setMorningFinishedCarCount(value); - case "noon" -> row.setNoonFinishedCarCount(value); - default -> row.setNightFinishedCarCount(value); + if (code == null) { + return null; } + LambdaQueryWrapper byCodeWrapper = + new LambdaQueryWrapper() + .eq(MesMaterial::getMaterialCode, code) + .and( + w -> + w.eq(MesMaterial::getDelFlag, CommonConstant.DEL_FLAG_0) + .or() + .isNull(MesMaterial::getDelFlag)) + .orderByDesc(MesMaterial::getUpdateTime) + .orderByDesc(MesMaterial::getCreateTime) + .last("LIMIT 1"); + MesMaterial byCode = mesMaterialMapper.selectOne(byCodeWrapper); + return byCode == null ? null : byCode.getId(); } @Override diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_134__mes_xsl_mixing_production_plan_shared_shift_fields.sql b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_134__mes_xsl_mixing_production_plan_shared_shift_fields.sql new file mode 100644 index 00000000..dd873580 --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_134__mes_xsl_mixing_production_plan_shared_shift_fields.sql @@ -0,0 +1,18 @@ +-- 密炼生产计划维护:早中晚共用字段 + 班次标识 +SET NAMES utf8mb4; + +ALTER TABLE `mes_xsl_mixing_production_plan` + ADD COLUMN IF NOT EXISTS `shift_flag` int DEFAULT NULL COMMENT '班次标识:1早班 2中班 3晚班' AFTER `machine_name`, + ADD COLUMN IF NOT EXISTS `plan_id` varchar(32) DEFAULT NULL COMMENT '计划ID(母胶/终胶计划)' AFTER `plan_date`, + ADD COLUMN IF NOT EXISTS `plan_type` varchar(2) DEFAULT NULL COMMENT '计划类型:M母胶/F终胶' AFTER `plan_id`, + ADD COLUMN IF NOT EXISTS `source_order_id` varchar(32) DEFAULT NULL COMMENT '生产订单ID' AFTER `plan_type`, + ADD COLUMN IF NOT EXISTS `order_no` varchar(64) DEFAULT NULL COMMENT '生产订单号' AFTER `source_order_id`, + ADD COLUMN IF NOT EXISTS `order_date` date DEFAULT NULL COMMENT '订单日期' AFTER `order_no`, + ADD COLUMN IF NOT EXISTS `formula_name` varchar(128) DEFAULT NULL COMMENT '配方名称' AFTER `order_date`, + ADD COLUMN IF NOT EXISTS `plan_weight` decimal(18,6) DEFAULT NULL COMMENT '计划重量' AFTER `formula_name`, + ADD COLUMN IF NOT EXISTS `planned_car_count` int DEFAULT NULL COMMENT '计划车数' AFTER `plan_weight`, + ADD COLUMN IF NOT EXISTS `scheduled_car_count` int DEFAULT NULL COMMENT '已排产车数' AFTER `planned_car_count`, + ADD COLUMN IF NOT EXISTS `finished_car_count` int DEFAULT NULL COMMENT '完成车数' AFTER `scheduled_car_count`, + ADD COLUMN IF NOT EXISTS `plan_count` int DEFAULT NULL COMMENT '计划' AFTER `finished_car_count`, + ADD COLUMN IF NOT EXISTS `remark` varchar(500) DEFAULT NULL COMMENT '备注' AFTER `plan_count`; + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_135__mes_xsl_mixing_production_plan_drop_redundant_shift_columns.sql b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_135__mes_xsl_mixing_production_plan_drop_redundant_shift_columns.sql new file mode 100644 index 00000000..a7f88c92 --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_135__mes_xsl_mixing_production_plan_drop_redundant_shift_columns.sql @@ -0,0 +1,31 @@ +-- 密炼生产计划维护:删除早/中/晚冗余字段,保留共用字段 + 班次标识 +SET NAMES utf8mb4; + +SET @drop_sql = ( + SELECT IFNULL( + CONCAT( + 'ALTER TABLE `mes_xsl_mixing_production_plan` ', + GROUP_CONCAT(CONCAT('DROP COLUMN `', column_name, '`') ORDER BY ordinal_position SEPARATOR ', ') + ), + 'SELECT 1' + ) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'mes_xsl_mixing_production_plan' + AND COLUMN_NAME IN ( + 'morning_plan_id', 'morning_plan_type', 'morning_source_order_id', 'morning_order_no', 'morning_order_date', + 'morning_formula_name', 'morning_plan_weight', 'morning_planned_car_count', 'morning_scheduled_car_count', + 'morning_finished_car_count', 'morning_plan_count', 'morning_remark', + 'noon_plan_id', 'noon_plan_type', 'noon_source_order_id', 'noon_order_no', 'noon_order_date', + 'noon_formula_name', 'noon_plan_weight', 'noon_planned_car_count', 'noon_scheduled_car_count', + 'noon_finished_car_count', 'noon_plan_count', 'noon_remark', + 'night_plan_id', 'night_plan_type', 'night_source_order_id', 'night_order_no', 'night_order_date', + 'night_formula_name', 'night_plan_weight', 'night_planned_car_count', 'night_scheduled_car_count', + 'night_finished_car_count', 'night_plan_count', 'night_remark' + ) +); + +PREPARE stmt FROM @drop_sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_136__mes_xsl_mixing_production_plan_recreate.sql b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_136__mes_xsl_mixing_production_plan_recreate.sql new file mode 100644 index 00000000..2feb2d92 --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_136__mes_xsl_mixing_production_plan_recreate.sql @@ -0,0 +1,44 @@ +-- 密炼生产计划维护:删表重建(注意:会清空原表数据) +SET NAMES utf8mb4; + +DROP TABLE IF EXISTS `mes_xsl_mixing_production_plan`; + +CREATE TABLE `mes_xsl_mixing_production_plan` ( + `id` varchar(32) NOT NULL COMMENT '主键', + `sort_no` int DEFAULT NULL COMMENT '排序号', + `machine_id` varchar(32) DEFAULT NULL COMMENT '机台ID(mes_xsl_equipment_ledger.id)', + `machine_name` varchar(128) DEFAULT NULL COMMENT '机台名称冗余', + `shift_flag` int DEFAULT NULL COMMENT '班次标识:1早班 2中班 3晚班', + `plan_date` date DEFAULT NULL COMMENT '计划日期(保存时写入当前日期)', + `plan_no` varchar(32) DEFAULT NULL COMMENT '计划号(yyyyMMddA三位流水)', + `plan_id` varchar(32) DEFAULT NULL COMMENT '计划ID(母胶/终胶计划)', + `plan_type` varchar(2) DEFAULT NULL COMMENT '计划类型:M母胶/F终胶', + `source_order_id` varchar(32) DEFAULT NULL COMMENT '生产订单ID', + `material_id` varchar(32) DEFAULT NULL COMMENT '胶料ID(mes_material.id)', + `material_name` varchar(128) DEFAULT NULL COMMENT '胶料名称(取母胶/终胶计划mesMaterialName)', + `order_no` varchar(64) DEFAULT NULL COMMENT '生产订单号', + `order_date` date DEFAULT NULL COMMENT '订单日期', + `formula_name` varchar(128) DEFAULT NULL COMMENT '配方名称', + `plan_weight` decimal(18,6) DEFAULT NULL COMMENT '计划重量', + `planned_car_count` int DEFAULT NULL COMMENT '计划车数', + `scheduled_car_count` int DEFAULT NULL COMMENT '已排产车数', + `finished_car_count` int DEFAULT NULL COMMENT '完成车数', + `plan_count` int DEFAULT NULL COMMENT '计划', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `tenant_id` int DEFAULT NULL COMMENT '租户', + `sys_org_code` varchar(64) DEFAULT NULL COMMENT '部门编码', + `create_by` varchar(32) DEFAULT NULL COMMENT '创建人', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) DEFAULT NULL COMMENT '更新人', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` int DEFAULT '0' COMMENT '删除标记(0正常1删除)', + PRIMARY KEY (`id`), + KEY `idx_mxmp_machine` (`machine_id`), + KEY `idx_mxmp_plan_date` (`plan_date`), + KEY `idx_mxmp_plan_no` (`plan_no`), + KEY `idx_mxmp_shift_flag` (`shift_flag`), + KEY `idx_mxmp_plan_id` (`plan_id`), + KEY `idx_mxmp_sort` (`sort_no`), + KEY `idx_mxmp_tenant` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES密炼生产计划维护'; + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_137__mes_xsl_mixing_production_plan_add_material_fields.sql b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_137__mes_xsl_mixing_production_plan_add_material_fields.sql new file mode 100644 index 00000000..34f2ba8b --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_137__mes_xsl_mixing_production_plan_add_material_fields.sql @@ -0,0 +1,7 @@ +-- 密炼生产计划维护:新增胶料ID和胶料名称字段 +SET NAMES utf8mb4; + +ALTER TABLE `mes_xsl_mixing_production_plan` + ADD COLUMN IF NOT EXISTS `material_id` varchar(32) DEFAULT NULL COMMENT '胶料ID(mes_material.id)' AFTER `source_order_id`, + ADD COLUMN IF NOT EXISTS `material_name` varchar(128) DEFAULT NULL COMMENT '胶料名称(取母胶/终胶计划mesMaterialName)' AFTER `material_id`; + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_138__mes_xsl_mixing_production_plan_fix_material_id_definition.sql b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_138__mes_xsl_mixing_production_plan_fix_material_id_definition.sql new file mode 100644 index 00000000..4649b958 --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_138__mes_xsl_mixing_production_plan_fix_material_id_definition.sql @@ -0,0 +1,6 @@ +-- 密炼生产计划维护:修正胶料ID字段定义为mes_material主键ID +SET NAMES utf8mb4; + +ALTER TABLE `mes_xsl_mixing_production_plan` + MODIFY COLUMN `material_id` varchar(32) DEFAULT NULL COMMENT '胶料ID(mes_material.id)'; + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_139__mes_xsl_mixing_production_plan_add_plan_no.sql b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_139__mes_xsl_mixing_production_plan_add_plan_no.sql new file mode 100644 index 00000000..98784dc6 --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.2_139__mes_xsl_mixing_production_plan_add_plan_no.sql @@ -0,0 +1,7 @@ +-- 密炼生产计划维护:新增计划号字段 +SET NAMES utf8mb4; + +ALTER TABLE `mes_xsl_mixing_production_plan` + ADD COLUMN IF NOT EXISTS `plan_no` varchar(32) DEFAULT NULL COMMENT '计划号(yyyyMMddA三位流水)' AFTER `plan_date`, + ADD INDEX `idx_mxmp_plan_no` (`plan_no`); + diff --git a/jeecgboot-vue3/src/views/xslmes/mesXslMixingProductionPlan/MesXslMixingProductionPlanList.vue b/jeecgboot-vue3/src/views/xslmes/mesXslMixingProductionPlan/MesXslMixingProductionPlanList.vue index 274ee5ef..6e9f5dba 100644 --- a/jeecgboot-vue3/src/views/xslmes/mesXslMixingProductionPlan/MesXslMixingProductionPlanList.vue +++ b/jeecgboot-vue3/src/views/xslmes/mesXslMixingProductionPlan/MesXslMixingProductionPlanList.vue @@ -14,15 +14,7 @@ 刷新 - +