+{
+ private static final long serialVersionUID = -1185015143654744140L;
+
+ /**
+ * SecureRandom 的单例
+ *
+ */
+ private static class Holder
+ {
+ static final SecureRandom numberGenerator = getSecureRandom();
+ }
+
+ /** 此UUID的最高64有效位 */
+ private final long mostSigBits;
+
+ /** 此UUID的最低64有效位 */
+ private final long leastSigBits;
+
+ /**
+ * 私有构造
+ *
+ * @param data 数据
+ */
+ private UUID(byte[] data)
+ {
+ long msb = 0;
+ long lsb = 0;
+ assert data.length == 16 : "data must be 16 bytes in length";
+ for (int i = 0; i < 8; i++)
+ {
+ msb = (msb << 8) | (data[i] & 0xff);
+ }
+ for (int i = 8; i < 16; i++)
+ {
+ lsb = (lsb << 8) | (data[i] & 0xff);
+ }
+ this.mostSigBits = msb;
+ this.leastSigBits = lsb;
+ }
+
+ /**
+ * 使用指定的数据构造新的 UUID。
+ *
+ * @param mostSigBits 用于 {@code UUID} 的最高有效 64 位
+ * @param leastSigBits 用于 {@code UUID} 的最低有效 64 位
+ */
+ public UUID(long mostSigBits, long leastSigBits)
+ {
+ this.mostSigBits = mostSigBits;
+ this.leastSigBits = leastSigBits;
+ }
+
+ /**
+ * 获取类型 4(伪随机生成的)UUID 的静态工厂。
+ *
+ * @return 随机生成的 {@code UUID}
+ */
+ public static UUID fastUUID()
+ {
+ return randomUUID(false);
+ }
+
+ /**
+ * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。
+ *
+ * @return 随机生成的 {@code UUID}
+ */
+ public static UUID randomUUID()
+ {
+ return randomUUID(true);
+ }
+
+ /**
+ * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。
+ *
+ * @param isSecure 是否使用{@link SecureRandom}如果是可以获得更安全的随机码,否则可以得到更好的性能
+ * @return 随机生成的 {@code UUID}
+ */
+ public static UUID randomUUID(boolean isSecure)
+ {
+ final Random ng = isSecure ? Holder.numberGenerator : getRandom();
+
+ byte[] randomBytes = new byte[16];
+ ng.nextBytes(randomBytes);
+ randomBytes[6] &= 0x0f; /* clear version */
+ randomBytes[6] |= 0x40; /* set to version 4 */
+ randomBytes[8] &= 0x3f; /* clear variant */
+ randomBytes[8] |= 0x80; /* set to IETF variant */
+ return new UUID(randomBytes);
+ }
+
+ /**
+ * 根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。
+ *
+ * @param name 用于构造 UUID 的字节数组。
+ *
+ * @return 根据指定数组生成的 {@code UUID}
+ */
+ public static UUID nameUUIDFromBytes(byte[] name)
+ {
+ MessageDigest md;
+ try
+ {
+ md = MessageDigest.getInstance("MD5");
+ }
+ catch (NoSuchAlgorithmException nsae)
+ {
+ throw new InternalError("MD5 not supported");
+ }
+ byte[] md5Bytes = md.digest(name);
+ md5Bytes[6] &= 0x0f; /* clear version */
+ md5Bytes[6] |= 0x30; /* set to version 3 */
+ md5Bytes[8] &= 0x3f; /* clear variant */
+ md5Bytes[8] |= 0x80; /* set to IETF variant */
+ return new UUID(md5Bytes);
+ }
+
+ /**
+ * 根据 {@link #toString()} 方法中描述的字符串标准表示形式创建{@code UUID}。
+ *
+ * @param name 指定 {@code UUID} 字符串
+ * @return 具有指定值的 {@code UUID}
+ * @throws IllegalArgumentException 如果 name 与 {@link #toString} 中描述的字符串表示形式不符抛出此异常
+ *
+ */
+ public static UUID fromString(String name)
+ {
+ String[] components = name.split("-");
+ if (components.length != 5)
+ {
+ throw new IllegalArgumentException("Invalid UUID string: " + name);
+ }
+ for (int i = 0; i < 5; i++)
+ {
+ components[i] = "0x" + components[i];
+ }
+
+ long mostSigBits = Long.decode(components[0]).longValue();
+ mostSigBits <<= 16;
+ mostSigBits |= Long.decode(components[1]).longValue();
+ mostSigBits <<= 16;
+ mostSigBits |= Long.decode(components[2]).longValue();
+
+ long leastSigBits = Long.decode(components[3]).longValue();
+ leastSigBits <<= 48;
+ leastSigBits |= Long.decode(components[4]).longValue();
+
+ return new UUID(mostSigBits, leastSigBits);
+ }
+
+ /**
+ * 返回此 UUID 的 128 位值中的最低有效 64 位。
+ *
+ * @return 此 UUID 的 128 位值中的最低有效 64 位。
+ */
+ public long getLeastSignificantBits()
+ {
+ return leastSigBits;
+ }
+
+ /**
+ * 返回此 UUID 的 128 位值中的最高有效 64 位。
+ *
+ * @return 此 UUID 的 128 位值中最高有效 64 位。
+ */
+ public long getMostSignificantBits()
+ {
+ return mostSigBits;
+ }
+
+ /**
+ * 与此 {@code UUID} 相关联的版本号. 版本号描述此 {@code UUID} 是如何生成的。
+ *
+ * 版本号具有以下含意:
+ *
+ * - 1 基于时间的 UUID
+ *
- 2 DCE 安全 UUID
+ *
- 3 基于名称的 UUID
+ *
- 4 随机生成的 UUID
+ *
+ *
+ * @return 此 {@code UUID} 的版本号
+ */
+ public int version()
+ {
+ // Version is bits masked by 0x000000000000F000 in MS long
+ return (int) ((mostSigBits >> 12) & 0x0f);
+ }
+
+ /**
+ * 与此 {@code UUID} 相关联的变体号。变体号描述 {@code UUID} 的布局。
+ *
+ * 变体号具有以下含意:
+ *
+ * - 0 为 NCS 向后兼容保留
+ *
- 2 IETF RFC 4122(Leach-Salz), 用于此类
+ *
- 6 保留,微软向后兼容
+ *
- 7 保留供以后定义使用
+ *
+ *
+ * @return 此 {@code UUID} 相关联的变体号
+ */
+ public int variant()
+ {
+ // This field is composed of a varying number of bits.
+ // 0 - - Reserved for NCS backward compatibility
+ // 1 0 - The IETF aka Leach-Salz variant (used by this class)
+ // 1 1 0 Reserved, Microsoft backward compatibility
+ // 1 1 1 Reserved for future definition.
+ return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63));
+ }
+
+ /**
+ * 与此 UUID 相关联的时间戳值。
+ *
+ *
+ * 60 位的时间戳值根据此 {@code UUID} 的 time_low、time_mid 和 time_hi 字段构造。
+ * 所得到的时间戳以 100 毫微秒为单位,从 UTC(通用协调时间) 1582 年 10 月 15 日零时开始。
+ *
+ *
+ * 时间戳值仅在在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 {@code UUID} 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。
+ *
+ * @throws UnsupportedOperationException 如果此 {@code UUID} 不是 version 为 1 的 UUID。
+ */
+ public long timestamp() throws UnsupportedOperationException
+ {
+ checkTimeBase();
+ return (mostSigBits & 0x0FFFL) << 48//
+ | ((mostSigBits >> 16) & 0x0FFFFL) << 32//
+ | mostSigBits >>> 32;
+ }
+
+ /**
+ * 与此 UUID 相关联的时钟序列值。
+ *
+ *
+ * 14 位的时钟序列值根据此 UUID 的 clock_seq 字段构造。clock_seq 字段用于保证在基于时间的 UUID 中的时间唯一性。
+ *
+ * {@code clockSequence} 值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。 如果此 UUID 不是基于时间的 UUID,则此方法抛出
+ * UnsupportedOperationException。
+ *
+ * @return 此 {@code UUID} 的时钟序列
+ *
+ * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1
+ */
+ public int clockSequence() throws UnsupportedOperationException
+ {
+ checkTimeBase();
+ return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48);
+ }
+
+ /**
+ * 与此 UUID 相关的节点值。
+ *
+ *
+ * 48 位的节点值根据此 UUID 的 node 字段构造。此字段旨在用于保存机器的 IEEE 802 地址,该地址用于生成此 UUID 以保证空间唯一性。
+ *
+ * 节点值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 UUID 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。
+ *
+ * @return 此 {@code UUID} 的节点值
+ *
+ * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1
+ */
+ public long node() throws UnsupportedOperationException
+ {
+ checkTimeBase();
+ return leastSigBits & 0x0000FFFFFFFFFFFFL;
+ }
+
+ /**
+ * 返回此{@code UUID} 的字符串表现形式。
+ *
+ *
+ * UUID 的字符串表示形式由此 BNF 描述:
+ *
+ *
+ * {@code
+ * UUID = ----
+ * time_low = 4*
+ * time_mid = 2*
+ * time_high_and_version = 2*
+ * variant_and_sequence = 2*
+ * node = 6*
+ * hexOctet =
+ * hexDigit = [0-9a-fA-F]
+ * }
+ *
+ *
+ *
+ *
+ * @return 此{@code UUID} 的字符串表现形式
+ * @see #toString(boolean)
+ */
+ @Override
+ public String toString()
+ {
+ return toString(false);
+ }
+
+ /**
+ * 返回此{@code UUID} 的字符串表现形式。
+ *
+ *
+ * UUID 的字符串表示形式由此 BNF 描述:
+ *
+ *
+ * {@code
+ * UUID = ----
+ * time_low = 4*
+ * time_mid = 2*
+ * time_high_and_version = 2*
+ * variant_and_sequence = 2*
+ * node = 6*
+ * hexOctet =
+ * hexDigit = [0-9a-fA-F]
+ * }
+ *
+ *
+ *
+ *
+ * @param isSimple 是否简单模式,简单模式为不带'-'的UUID字符串
+ * @return 此{@code UUID} 的字符串表现形式
+ */
+ public String toString(boolean isSimple)
+ {
+ final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36);
+ // time_low
+ builder.append(digits(mostSigBits >> 32, 8));
+ if (false == isSimple)
+ {
+ builder.append('-');
+ }
+ // time_mid
+ builder.append(digits(mostSigBits >> 16, 4));
+ if (false == isSimple)
+ {
+ builder.append('-');
+ }
+ // time_high_and_version
+ builder.append(digits(mostSigBits, 4));
+ if (false == isSimple)
+ {
+ builder.append('-');
+ }
+ // variant_and_sequence
+ builder.append(digits(leastSigBits >> 48, 4));
+ if (false == isSimple)
+ {
+ builder.append('-');
+ }
+ // node
+ builder.append(digits(leastSigBits, 12));
+
+ return builder.toString();
+ }
+
+ /**
+ * 返回此 UUID 的哈希码。
+ *
+ * @return UUID 的哈希码值。
+ */
+ @Override
+ public int hashCode()
+ {
+ long hilo = mostSigBits ^ leastSigBits;
+ return ((int) (hilo >> 32)) ^ (int) hilo;
+ }
+
+ /**
+ * 将此对象与指定对象比较。
+ *
+ * 当且仅当参数不为 {@code null}、而是一个 UUID 对象、具有与此 UUID 相同的 varriant、包含相同的值(每一位均相同)时,结果才为 {@code true}。
+ *
+ * @param obj 要与之比较的对象
+ *
+ * @return 如果对象相同,则返回 {@code true};否则返回 {@code false}
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if ((null == obj) || (obj.getClass() != UUID.class))
+ {
+ return false;
+ }
+ UUID id = (UUID) obj;
+ return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits);
+ }
+
+ // Comparison Operations
+
+ /**
+ * 将此 UUID 与指定的 UUID 比较。
+ *
+ *
+ * 如果两个 UUID 不同,且第一个 UUID 的最高有效字段大于第二个 UUID 的对应字段,则第一个 UUID 大于第二个 UUID。
+ *
+ * @param val 与此 UUID 比较的 UUID
+ *
+ * @return 在此 UUID 小于、等于或大于 val 时,分别返回 -1、0 或 1。
+ *
+ */
+ @Override
+ public int compareTo(UUID val)
+ {
+ // The ordering is intentionally set up so that the UUIDs
+ // can simply be numerically compared as two numbers
+ return (this.mostSigBits < val.mostSigBits ? -1 : //
+ (this.mostSigBits > val.mostSigBits ? 1 : //
+ (this.leastSigBits < val.leastSigBits ? -1 : //
+ (this.leastSigBits > val.leastSigBits ? 1 : //
+ 0))));
+ }
+
+ // -------------------------------------------------------------------------------------------------------------------
+ // Private method start
+ /**
+ * 返回指定数字对应的hex值
+ *
+ * @param val 值
+ * @param digits 位
+ * @return 值
+ */
+ private static String digits(long val, int digits)
+ {
+ long hi = 1L << (digits * 4);
+ return Long.toHexString(hi | (val & (hi - 1))).substring(1);
+ }
+
+ /**
+ * 检查是否为time-based版本UUID
+ */
+ private void checkTimeBase()
+ {
+ if (version() != 1)
+ {
+ throw new UnsupportedOperationException("Not a time-based UUID");
+ }
+ }
+
+ /**
+ * 获取{@link SecureRandom},类提供加密的强随机数生成器 (RNG)
+ *
+ * @return {@link SecureRandom}
+ */
+ public static SecureRandom getSecureRandom()
+ {
+ try
+ {
+ return SecureRandom.getInstance("SHA1PRNG");
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ throw new UtilException(e);
+ }
+ }
+
+ /**
+ * 获取随机数生成器对象
+ * ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。
+ *
+ * @return {@link ThreadLocalRandom}
+ */
+ public static ThreadLocalRandom getRandom()
+ {
+ return ThreadLocalRandom.current();
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/annotation/Log.java b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/annotation/Log.java
index 2dced97..20da2c2 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/annotation/Log.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/annotation/Log.java
@@ -45,4 +45,7 @@ public @interface Log {
*/
String[] excludeParamNames() default {};
+ String tableName() default "";
+
+
}
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java
index eb81dfe..22f727c 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java
@@ -113,7 +113,13 @@ public class LogAspect {
// 设置消耗时间
StopWatch stopWatch = KEY_CACHE.get();
stopWatch.stop();
- operLog.setCostTime(stopWatch.getTime());
+ operLog.setCostTime(stopWatch.getTime());//毫秒(1毫秒=1000000纳秒nano)
+
+
+ operLog.setSimpleClassName(joinPoint.getTarget().getClass().getSimpleName());
+ operLog.setTableName(controllerLog.tableName());
+
+
// 发布事件保存数据库
SpringUtils.context().publishEvent(operLog);
} catch (Exception exp) {
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogEventListener.java b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogEventListener.java
index 3584e0c..7f6da25 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogEventListener.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogEventListener.java
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;
+import com.alibaba.fastjson2.JSONObject;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@@ -11,6 +12,9 @@ import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ip.AddressUtils;
+import org.dromara.common.log.enums.BusinessStatus;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.RemoteClientService;
import org.dromara.system.api.RemoteLogService;
@@ -20,6 +24,10 @@ import org.dromara.system.api.domain.vo.RemoteClientVo;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* 异步调用日志服务
*
@@ -34,6 +42,11 @@ public class LogEventListener {
@DubboReference
private RemoteClientService remoteClientService;
+ public static final Map TABLE_ID_MAP = new HashMap<>();
+ static {
+ TABLE_ID_MAP.put("base_class_team_info", "class_team_id");
+ }
+
/**
* 保存系统日志记录
*/
@@ -41,6 +54,45 @@ public class LogEventListener {
public void saveLog(OperLogEvent operLogEvent) {
RemoteOperLogBo sysOperLog = BeanUtil.toBean(operLogEvent, RemoteOperLogBo.class);
remoteLogService.saveLog(sysOperLog);
+ this.dataSyncPublish(operLogEvent);
+ }
+
+
+ private void dataSyncPublish(OperLogEvent operLogEvent) {
+ /**
+ * 默认所有表都需要同步到机台本地,如果有需要不同的话,可以配置在redis中、内存中或者数据库中
+ */
+ Integer status = operLogEvent.getStatus();
+ Integer businessType = operLogEvent.getBusinessType();
+ if (status.equals(BusinessStatus.SUCCESS.ordinal())
+ && !businessType.equals(BusinessType.OTHER.ordinal()) && !businessType.equals(BusinessType.EXPORT.ordinal())
+ && !businessType.equals(BusinessType.GENCODE.ordinal()) && !businessType.equals(BusinessType.FORCE.ordinal())) {
+ JSONObject daySyncPublishJson = new JSONObject();
+ String tableName = operLogEvent.getTableName();
+
+ if (StringUtils.isEmpty(tableName)) {
+ String simpleClassName = operLogEvent.getSimpleClassName();
+ simpleClassName = simpleClassName.replaceFirst("Controller", "");
+ tableName = camelToSnake(simpleClassName);
+ }
+
+ long costTime = operLogEvent.getCostTime();
+ long filterTimeL = System.currentTimeMillis() - costTime - 60000;//多减1分钟
+
+ daySyncPublishJson.put("tableName", "["+tableName+"]");
+ daySyncPublishJson.put("filterTime", filterTimeL);
+ daySyncPublishJson.put("businessType", operLogEvent.getBusinessType());
+ if (businessType.equals(BusinessType.DELETE.ordinal())) {
+ String tableId = TABLE_ID_MAP.get(tableName);
+ if (StringUtils.isNotEmpty(tableId)) {
+ daySyncPublishJson.put(tableId, operLogEvent.getOperParam());
+ }
+ }
+
+ RedisUtils.setCacheObject("publish", daySyncPublishJson.toString());
+
+ }
+
}
/**
@@ -100,4 +152,31 @@ public class LogEventListener {
return "[" + msg + "]";
}
+
+ public static String camelToSnake(String str) {
+ if (str == null || str.isEmpty()) {
+ return str;
+ }
+
+ StringBuilder result = new StringBuilder();
+ char[] charArray = str.toCharArray();
+
+ for (int i = 0; i < charArray.length; i++) {
+ char ch = charArray[i];
+ if (Character.isUpperCase(ch)) {
+ // 如果不是字符串的第一个字符,则在前面加上下划线
+ if (i != 0) {
+ result.append("_");
+ }
+ // 将大写字母转为小写并追加到结果中
+ result.append(Character.toLowerCase(ch));
+ } else {
+ // 直接追加非大写的字符
+ result.append(ch);
+ }
+ }
+
+ return result.toString();
+ }
+
}
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/OperLogEvent.java b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/OperLogEvent.java
index 0386192..f6f01e0 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/OperLogEvent.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/OperLogEvent.java
@@ -112,4 +112,15 @@ public class OperLogEvent implements Serializable {
* 消耗时间
*/
private Long costTime;
+
+ /**
+ * 类名(不包含package)
+ */
+ private String simpleClassName;
+
+ /**
+ * 表名
+ */
+ private String tableName;
+
}
diff --git a/ruoyi-modules/hwmom-api/pom.xml b/ruoyi-modules/hwmom-api/pom.xml
new file mode 100644
index 0000000..2cd6c77
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/pom.xml
@@ -0,0 +1,149 @@
+
+
+
+ org.dromara
+ ruoyi-modules
+ ${revision}
+
+ 4.0.0
+
+ hwmom-api
+
+
+ hwmom-api系统模块
+
+
+
+
+
+ org.dromara
+ ruoyi-common-nacos
+
+
+
+ org.dromara
+ ruoyi-common-sentinel
+
+
+
+
+ org.dromara
+ ruoyi-common-log
+
+
+
+ org.dromara
+ ruoyi-common-dict
+
+
+
+ org.dromara
+ ruoyi-common-doc
+
+
+
+ org.dromara
+ ruoyi-common-web
+
+
+
+ org.dromara
+ ruoyi-common-mybatis
+
+
+
+ org.dromara
+ ruoyi-common-dubbo
+
+
+
+ org.dromara
+ ruoyi-common-seata
+
+
+
+ org.dromara
+ ruoyi-common-idempotent
+
+
+
+ org.dromara
+ ruoyi-common-tenant
+
+
+
+ org.dromara
+ ruoyi-common-security
+
+
+
+ org.dromara
+ ruoyi-common-translation
+
+
+
+ org.dromara
+ ruoyi-common-sensitive
+
+
+
+ org.dromara
+ ruoyi-common-encrypt
+
+
+
+
+ org.dromara
+ ruoyi-api-system
+
+
+
+ org.dromara
+ ruoyi-api-resource
+
+
+
+
+
+
+
+
+ com.microsoft.sqlserver
+ mssql-jdbc
+
+
+
+ org.dromara
+ hwmom-api-mes
+ 2.2.2
+ compile
+
+
+
+ org.dromara
+ ruoyi-common-job
+
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
+
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/HwMomApiApplication.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/HwMomApiApplication.java
new file mode 100644
index 0000000..a79da95
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/HwMomApiApplication.java
@@ -0,0 +1,22 @@
+package org.dromara.api;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
+
+/**
+ * 系统模块
+ *
+ * @author ruoyi
+ */
+@EnableDubbo
+@SpringBootApplication
+public class HwMomApiApplication {
+ public static void main(String[] args) {
+ SpringApplication application = new SpringApplication(HwMomApiApplication.class);
+ application.setApplicationStartup(new BufferingApplicationStartup(2048));
+ application.run(args);
+ System.out.println("(♥◠‿◠)ノ゙ HwApi启动成功 ლ(´ڡ`ლ)゙ ");
+ }
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/controller/BaseMaterialInfoApiController.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/controller/BaseMaterialInfoApiController.java
new file mode 100644
index 0000000..9f03d28
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/controller/BaseMaterialInfoApiController.java
@@ -0,0 +1,41 @@
+package org.dromara.api.controller;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.api.service.IBaseMaterialInfoApiService;
+import org.dromara.mes.api.RemoteMaterialInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+
+/**
+ * 车间信息
+ * 前端访问路由地址为:/mes/baseWorkshopInfo
+ *
+ * @author Yinq
+ * @date 2025-01-02
+ */
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/materialInfoApi")
+public class BaseMaterialInfoApiController extends BaseController {
+
+
+
+ @Autowired
+ private final IBaseMaterialInfoApiService materialInfoApiService;
+
+
+ /**
+ * 测试物料信息存储接口
+ */
+ @PostMapping ("/test")
+ public String test(String requestBody) {
+ return materialInfoApiService.insertApi(requestBody);
+ }
+
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/SAPPortDto.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/SAPPortDto.java
new file mode 100644
index 0000000..fc623bd
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/SAPPortDto.java
@@ -0,0 +1,56 @@
+package org.dromara.api.domain.sap;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @Author YinQ
+ * @create 2023-09-26 14:46
+ */
+public class SAPPortDto {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 开始时间
+ */
+ @JsonProperty(value = "NDATE")
+ private String startDate;
+
+ /**
+ * 结束时间
+ */
+ @JsonProperty(value = "EDATE")
+ private String endDate;
+
+
+ /**
+ * 工厂编号
+ */
+ @JsonProperty(value = "WERKS")
+ private WERKSDto factoryCodes;
+
+
+ public String getStartDate() {
+ return startDate;
+ }
+
+ public void setStartDate(String startDate) {
+ this.startDate = startDate;
+ }
+
+ public String getEndDate() {
+ return endDate;
+ }
+
+ public void setEndDate(String endDate) {
+ this.endDate = endDate;
+ }
+
+ public WERKSDto getFactoryCodes() {
+ return factoryCodes;
+ }
+
+ public void setFactoryCodes(WERKSDto factoryCodes) {
+ this.factoryCodes = factoryCodes;
+ }
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/WERKSDto.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/WERKSDto.java
new file mode 100644
index 0000000..03946c1
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/WERKSDto.java
@@ -0,0 +1,33 @@
+package org.dromara.api.domain.sap;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @Author YinQ
+ * @create 2023-09-26 15:13
+ */
+public class WERKSDto {
+
+
+ /**
+ * 工厂请求Map
+ */
+ List> item;
+
+
+ public List> getItem() {
+ return item;
+ }
+
+ public void setItem(List> item) {
+ this.item = item;
+ }
+
+ @Override
+ public String toString() {
+ return "WERKSDto{" +
+ "item=" + item +
+ '}';
+ }
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/vo/SAPResultVo.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/vo/SAPResultVo.java
new file mode 100644
index 0000000..bdcf0c2
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/domain/sap/vo/SAPResultVo.java
@@ -0,0 +1,61 @@
+package org.dromara.api.domain.sap.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.dromara.api.domain.sap.WERKSDto;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 物料主数据
+ *
+ * @Author YinQ
+ * @create 2023-09-27 13:37
+ */
+public class SAPResultVo {
+
+ @JsonProperty(value = "O_TAB")
+ private HashMap>> O_TAB;
+
+ @JsonProperty(value = "WERKS")
+ private WERKSDto WERKS;
+
+ @JsonProperty(value = "O_RETURN")
+ private WERKSDto O_RETURN;
+
+ public HashMap>> getO_TAB() {
+ return O_TAB;
+ }
+
+ public void setO_TAB(HashMap>> o_TAB) {
+ O_TAB = o_TAB;
+ }
+
+ public WERKSDto getWERKS() {
+ return WERKS;
+ }
+
+ public void setWERKS(WERKSDto WERKS) {
+ this.WERKS = WERKS;
+ }
+
+ public WERKSDto getO_RETURN() {
+ return O_RETURN;
+ }
+
+ public void setO_RETURN(WERKSDto o_RETURN) {
+ O_RETURN = o_RETURN;
+ }
+
+ public SAPResultVo() {
+ }
+
+ @Override
+ public String toString() {
+ return "SAPResultVo{" +
+ "O_TAB=" + O_TAB +
+ ", WERKS='" + WERKS + '\'' +
+ ", O_RETURN=" + O_RETURN +
+ '}';
+ }
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/IBaseMaterialInfoApiService.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/IBaseMaterialInfoApiService.java
new file mode 100644
index 0000000..22b3e5a
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/IBaseMaterialInfoApiService.java
@@ -0,0 +1,14 @@
+package org.dromara.api.service;
+
+
+/**
+ * API物料Service接口
+ *
+ * @author Yinq
+ * @date 2025-01-02
+ */
+public interface IBaseMaterialInfoApiService {
+
+ String insertApi(String requestBody);
+
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/ICommonApiService.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/ICommonApiService.java
new file mode 100644
index 0000000..c5a3950
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/ICommonApiService.java
@@ -0,0 +1,23 @@
+package org.dromara.api.service;
+
+import org.dromara.api.domain.sap.SAPPortDto;
+import org.dromara.mes.api.model.bo.BaseMaterialInfoBo;
+
+import java.util.List;
+
+/**
+ * 通用APIService接口
+ *
+ * @author Yinq
+ * @date 2025-01-02
+ */
+public interface ICommonApiService {
+
+
+ String getSAPData(SAPPortDto sapPortDto);
+
+
+ List convertSAPToMaterialEntity(String json);
+
+
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/impl/BaseMaterialInfoApiServiceImpl.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/impl/BaseMaterialInfoApiServiceImpl.java
new file mode 100644
index 0000000..6052085
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/impl/BaseMaterialInfoApiServiceImpl.java
@@ -0,0 +1,53 @@
+package org.dromara.api.service.impl;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.api.domain.sap.SAPPortDto;
+import org.dromara.api.domain.sap.vo.SAPResultVo;
+import org.dromara.api.service.IBaseMaterialInfoApiService;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.api.service.ICommonApiService;
+import org.dromara.api.utils.SAPApiUtils;
+import org.dromara.api.utils.SAPConstants;
+import org.dromara.mes.api.RemoteMaterialInfoService;
+import org.dromara.mes.api.model.bo.BaseMaterialInfoBo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * API物料Service业务层处理
+ *
+ * @author Yinq
+ * @date 2025-01-02
+ */
+@RequiredArgsConstructor
+@Service
+public class BaseMaterialInfoApiServiceImpl implements IBaseMaterialInfoApiService {
+
+ @Autowired
+ private final ICommonApiService commonApiService;
+
+ @DubboReference
+ private final RemoteMaterialInfoService remoteMaterialInfoService;
+
+ @Override
+ public String insertApi(String requestBody) {
+ SAPPortDto sapPortDto = new SAPPortDto();
+ //请求API接口,获取数据
+ String json = commonApiService.getSAPData(sapPortDto);
+ //解析数据,存储实体类
+ List list = commonApiService.convertSAPToMaterialEntity(json);
+ remoteMaterialInfoService.remoteInsertBaseMaterialInfo(list);
+ return "success";
+ }
+
+
+
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/impl/CommonApiServiceImpl.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/impl/CommonApiServiceImpl.java
new file mode 100644
index 0000000..157dab5
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/service/impl/CommonApiServiceImpl.java
@@ -0,0 +1,77 @@
+package org.dromara.api.service.impl;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import org.dromara.api.domain.sap.SAPPortDto;
+import org.dromara.api.domain.sap.vo.SAPResultVo;
+import org.dromara.api.service.ICommonApiService;
+import org.dromara.api.utils.SAPApiUtils;
+import org.dromara.api.utils.SAPConstants;
+import org.dromara.mes.api.model.bo.BaseMaterialInfoBo;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+
+/**
+ * 通用APIService接口
+ *
+ * @author Yinq
+ * @date 2025-01-02
+ */
+@Service
+public class CommonApiServiceImpl implements ICommonApiService {
+
+
+ @Override
+ public String getSAPData(SAPPortDto sapPortDto) {
+ String requestParam = null;
+ String result = null;
+ try {
+ //获取物料API
+
+ // 创建ObjectMapper实例 对象转JSON字符串
+ ObjectMapper objectMapper = new ObjectMapper();
+ // 格式化输出
+ objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
+ requestParam = objectMapper.writeValueAsString(sapPortDto);
+ result = SAPApiUtils.sendSAPHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.MATERIAL_URL, requestParam);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ @Override
+ public List convertSAPToMaterialEntity(String json) {
+ SAPResultVo resultVo = null;
+ try {
+ // 处理接口返回消息
+ ObjectMapper resultMapper = new ObjectMapper();
+ // 将 JSON 字符串 转换为 Java 对象
+ resultVo = resultMapper.readValue(json, SAPResultVo.class);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ List materialInfoArrayList = new ArrayList<>();
+ assert resultVo != null;
+ List> itemList = resultVo.getO_TAB().get("item");
+ for (HashMap map : itemList) {
+ BaseMaterialInfoBo materialInfo = new BaseMaterialInfoBo();
+ materialInfo.setMaterialCode(map.get("MATNR"));
+ materialInfo.setMaterialName(map.get("MAKTX"));
+ materialInfo.setMaterialUnit(map.get("MEINS"));
+ materialInfo.setMaterialMatkl(map.get("MATKL"));
+ materialInfoArrayList.add(materialInfo);
+ }
+ return materialInfoArrayList;
+ }
+
+
+
+
+
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/snailjob/MaterialInfoJobExecutor.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/snailjob/MaterialInfoJobExecutor.java
new file mode 100644
index 0000000..b82c877
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/snailjob/MaterialInfoJobExecutor.java
@@ -0,0 +1,30 @@
+package org.dromara.api.snailjob;
+
+import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
+import com.aizuda.snailjob.client.job.core.dto.JobArgs;
+import com.aizuda.snailjob.client.model.ExecuteResult;
+import com.aizuda.snailjob.common.core.util.JsonUtil;
+import com.aizuda.snailjob.common.log.SnailJobLog;
+import org.dromara.api.service.IBaseMaterialInfoApiService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author opensnail
+ * @date 2024-05-17
+ */
+@Component
+@JobExecutor(name = "materialInfoJobExecutor")
+public class MaterialInfoJobExecutor {
+
+ @Autowired
+ IBaseMaterialInfoApiService baseMaterialInfoApiService;
+
+ public ExecuteResult jobExecute(JobArgs jobArgs) {
+ String jobParams = String.valueOf(jobArgs.getJobParams());
+ String result = baseMaterialInfoApiService.insertApi(jobParams);
+ SnailJobLog.LOCAL.info("materialInfoJobExecutor.jobArgs:{}", JsonUtil.toJsonString(jobArgs));
+ return ExecuteResult.success(result);
+ }
+
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/utils/SAPApiUtils.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/utils/SAPApiUtils.java
new file mode 100644
index 0000000..b5f8888
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/utils/SAPApiUtils.java
@@ -0,0 +1,43 @@
+package org.dromara.api.utils;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+
+import java.util.Base64;
+
+/**
+ * @Author YinQ
+ * @create 2023-10-12 10:52
+ */
+public class SAPApiUtils {
+
+
+ /**
+ * POST请求json格式
+ * @param apiUrl
+ * @param jsonData
+ * @return
+ */
+ public static String sendSAPHttpPost(String apiUrl, String jsonData) {
+ try {
+ // 构建POST请求
+ HttpRequest request = HttpRequest.post(apiUrl)
+ .header("Authorization", "Basic " + Base64.getUrlEncoder().
+ encodeToString((SAPConstants.USER_NAME + ":" + SAPConstants.PASS_WORD).getBytes()))
+ .body(jsonData) // 设置JSON格式的请求体
+ .contentType("application/json") // 设置Content-Type为application/json
+ .setConnectionTimeout(1000 * 10) // 设置请求连接超时时间
+ ;
+
+ // 发送POST请求
+ HttpResponse httpResponse = request.execute();
+
+ // 获取响应内容
+ return httpResponse.body();
+ } catch (Exception e) {
+ // 捕获异常并重新抛出自定义异常
+ throw new RuntimeException("Failed to send SAP HTTP POST request: " + e.getMessage(), e);
+ }
+
+ }
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/utils/SAPConstants.java b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/utils/SAPConstants.java
new file mode 100644
index 0000000..8dd0c71
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/java/org/dromara/api/utils/SAPConstants.java
@@ -0,0 +1,70 @@
+package org.dromara.api.utils;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author YinQ
+ * @create 2023-09-26 15:39
+ */
+@Component
+public class SAPConstants {
+
+
+ /**
+ * SAP-URL前缀
+ */
+ public static String SAP_PREFIX_URL;
+
+ /**
+ * SAP-用户名
+ */
+ public static String USER_NAME;
+
+ /**
+ * SAP-密码
+ */
+ public static String PASS_WORD;
+
+ /**
+ * 获取物料主数据(MES2019)
+ */
+ public static final String MATERIAL_URL = "/SdGetSB/SdSapGetMaterialToMesSvcRSProxy/merge";
+
+ /**
+ * 获取生产工单(MES2019)
+ */
+ public static final String PRODUCTION_ORDERS_URL = "/SdGetSB/SdSapGetPOToMesSvcRSProxy/merge";
+
+ /**
+ * 获取设备模具信息(MES2019)
+ */
+ public static final String EQUIPMENT_URL = "/SdGetSB/SdSapGetEQToMesSvcRSProxy/merge";
+
+ /**
+ * 获取产品BOM信息(MES2019)
+ */
+ public static final String PRODUCTS_BOM_URL = "/SdGetSB/SdSapGetBomToMesSvcRSProxy/merge";
+
+ /**
+ * 工厂编号
+ */
+ public static final String FACTORY_CODE = "1301";
+
+
+// @Value("${sap.prefix}")
+ public void setPrefix(String value) {
+ SAP_PREFIX_URL = value;
+ }
+
+// @Value("${sap.username}")
+ public void setUserName(String value) {
+ USER_NAME = value;
+ }
+
+// @Value("${sap.password}")
+ public void setPassWord(String value) {
+ PASS_WORD = value;
+ }
+
+}
diff --git a/ruoyi-modules/hwmom-api/src/main/resources/application.yml b/ruoyi-modules/hwmom-api/src/main/resources/application.yml
new file mode 100644
index 0000000..9538287
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/resources/application.yml
@@ -0,0 +1,34 @@
+# Tomcat
+server:
+ port: 6016
+
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: hwmom-api
+ profiles:
+ # 环境配置
+ active: @profiles.active@
+
+--- # nacos 配置
+spring:
+ cloud:
+ nacos:
+ # nacos 服务地址
+ server-addr: @nacos.server@
+ username: @nacos.username@
+ password: @nacos.password@
+ discovery:
+ # 注册组
+ group: @nacos.discovery.group@
+ namespace: ${spring.profiles.active}
+ config:
+ # 配置组
+ group: @nacos.config.group@
+ namespace: ${spring.profiles.active}
+ config:
+ import:
+ - optional:nacos:application-common.yml
+ - optional:nacos:datasource.yml
+ - optional:nacos:${spring.application.name}.yml
diff --git a/ruoyi-modules/hwmom-api/src/main/resources/banner.txt b/ruoyi-modules/hwmom-api/src/main/resources/banner.txt
new file mode 100644
index 0000000..f13665e
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/resources/banner.txt
@@ -0,0 +1,8 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+ __ _
+ / /_ _ ______ ___ ____ ____ ___ ____ _____ (_)
+ / __ \ | /| / / __ `__ \/ __ \/ __ `__ \______/ __ `/ __ \/ /
+ / / / / |/ |/ / / / / / / /_/ / / / / / /_____/ /_/ / /_/ / /
+/_/ /_/|__/|__/_/ /_/ /_/\____/_/ /_/ /_/ \__,_/ .___/_/
+ /_/
diff --git a/ruoyi-modules/hwmom-api/src/main/resources/logback-plus.xml b/ruoyi-modules/hwmom-api/src/main/resources/logback-plus.xml
new file mode 100644
index 0000000..caaa345
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/resources/logback-plus.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+ ${console.log.pattern}
+ utf-8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-modules/hwmom-api/src/main/resources/mapper/package-info.md b/ruoyi-modules/hwmom-api/src/main/resources/mapper/package-info.md
new file mode 100644
index 0000000..c938b1e
--- /dev/null
+++ b/ruoyi-modules/hwmom-api/src/main/resources/mapper/package-info.md
@@ -0,0 +1,3 @@
+java包使用 `.` 分割 resource 目录使用 `/` 分割
+
+此文件目的 防止文件夹粘连找不到 `xml` 文件
\ No newline at end of file
diff --git a/ruoyi-modules/hwmom-mes/pom.xml b/ruoyi-modules/hwmom-mes/pom.xml
index 83005fc..a5531c6 100644
--- a/ruoyi-modules/hwmom-mes/pom.xml
+++ b/ruoyi-modules/hwmom-mes/pom.xml
@@ -115,6 +115,19 @@
com.microsoft.sqlserver
mssql-jdbc
+
+ org.dromara
+ hwmom-common-mom
+ 2.2.2
+ compile
+
+
+
+ org.dromara
+ hwmom-api-mes
+ 2.2.2
+ compile
+
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseClassTeamInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseClassTeamInfoController.java
index 0be4424..9d57965 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseClassTeamInfoController.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseClassTeamInfoController.java
@@ -114,4 +114,14 @@ public class BaseClassTeamInfoController extends BaseController {
public R>selectClassTeamList(BaseClassTeamInfoBo bo, PageQuery pageQuery) {
return R.ok(baseClassTeamInfoService.queryList(bo));
}
+
+ /**
+ * 下拉框查询班组信息列表
+ */
+ @GetMapping("getBaseClassTeamInfoList")
+ public R> getBaseClassTeamInfolist(BaseClassTeamInfoBo bo) {
+ List list = baseClassTeamInfoService.queryList(bo);
+ return R.ok(list);
+ }
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseMaterialInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseMaterialInfoController.java
index e738804..9c55bac 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseMaterialInfoController.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseMaterialInfoController.java
@@ -110,7 +110,7 @@ public class BaseMaterialInfoController extends BaseController {
*/
@GetMapping("getBaseMaterialInfoList")
- public R> getBaseMaterialInfolist(BaseMaterialInfoBo bo) {
+ public R> getBaseMaterialInfoList(BaseMaterialInfoBo bo) {
List list = baseMaterialInfoService.queryList(bo);
return R.ok(list);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseStructureBomController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseStructureBomController.java
new file mode 100644
index 0000000..b6599b7
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseStructureBomController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.BaseStructureBomVo;
+import org.dromara.mes.domain.bo.BaseStructureBomBo;
+import org.dromara.mes.service.IBaseStructureBomService;
+
+/**
+ * 结构BOM信息
+ * 前端访问路由地址为:/mes/baseStructureBom
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/baseStructureBom")
+public class BaseStructureBomController extends BaseController {
+
+ private final IBaseStructureBomService baseStructureBomService;
+
+ /**
+ * 查询结构BOM信息列表
+ */
+ @SaCheckPermission("mes:baseStructureBom:list")
+ @GetMapping("/list")
+ public R> list(BaseStructureBomBo bo) {
+ List list = baseStructureBomService.queryList(bo);
+ return R.ok(list);
+ }
+
+ /**
+ * 导出结构BOM信息列表
+ */
+ @SaCheckPermission("mes:baseStructureBom:export")
+ @Log(title = "结构BOM信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BaseStructureBomBo bo, HttpServletResponse response) {
+ List list = baseStructureBomService.queryList(bo);
+ ExcelUtil.exportExcel(list, "结构BOM信息", BaseStructureBomVo.class, response);
+ }
+
+ /**
+ * 获取结构BOM信息详细信息
+ *
+ * @param structureBomId 主键
+ */
+ @SaCheckPermission("mes:baseStructureBom:query")
+ @GetMapping("/{structureBomId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long structureBomId) {
+ return R.ok(baseStructureBomService.queryById(structureBomId));
+ }
+
+ /**
+ * 新增结构BOM信息
+ */
+ @SaCheckPermission("mes:baseStructureBom:add")
+ @Log(title = "结构BOM信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BaseStructureBomBo bo) {
+ return toAjax(baseStructureBomService.insertByBo(bo));
+ }
+
+ /**
+ * 修改结构BOM信息
+ */
+ @SaCheckPermission("mes:baseStructureBom:edit")
+ @Log(title = "结构BOM信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BaseStructureBomBo bo) {
+ return toAjax(baseStructureBomService.updateByBo(bo));
+ }
+
+ /**
+ * 删除结构BOM信息
+ *
+ * @param structureBomIds 主键串
+ */
+ @SaCheckPermission("mes:baseStructureBom:remove")
+ @Log(title = "结构BOM信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{structureBomIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] structureBomIds) {
+ return toAjax(baseStructureBomService.deleteWithValidByIds(List.of(structureBomIds), true));
+ }
+
+
+ /**
+ * 下拉框查询结构BOM信息列表
+ */
+
+ @GetMapping("getBaseStructureBomList")
+ public R> getBaseStructureBomlist(BaseStructureBomBo bo) {
+ List list = baseStructureBomService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseMachineInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseMachineInfoController.java
new file mode 100644
index 0000000..399bc65
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseMachineInfoController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.ProdBaseMachineInfoVo;
+import org.dromara.mes.domain.bo.ProdBaseMachineInfoBo;
+import org.dromara.mes.service.IProdBaseMachineInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 机台信息
+ * 前端访问路由地址为:/mes/prodBaseMachineInfo
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/prodBaseMachineInfo")
+public class ProdBaseMachineInfoController extends BaseController {
+
+ private final IProdBaseMachineInfoService prodBaseMachineInfoService;
+
+ /**
+ * 查询机台信息列表
+ */
+ @SaCheckPermission("mes:prodBaseMachineInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProdBaseMachineInfoBo bo, PageQuery pageQuery) {
+ return prodBaseMachineInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出机台信息列表
+ */
+ @SaCheckPermission("mes:prodBaseMachineInfo:export")
+ @Log(title = "机台信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ProdBaseMachineInfoBo bo, HttpServletResponse response) {
+ List list = prodBaseMachineInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "机台信息", ProdBaseMachineInfoVo.class, response);
+ }
+
+ /**
+ * 获取机台信息详细信息
+ *
+ * @param machineId 主键
+ */
+ @SaCheckPermission("mes:prodBaseMachineInfo:query")
+ @GetMapping("/{machineId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long machineId) {
+ return R.ok(prodBaseMachineInfoService.queryById(machineId));
+ }
+
+ /**
+ * 新增机台信息
+ */
+ @SaCheckPermission("mes:prodBaseMachineInfo:add")
+ @Log(title = "机台信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ProdBaseMachineInfoBo bo) {
+ return toAjax(prodBaseMachineInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改机台信息
+ */
+ @SaCheckPermission("mes:prodBaseMachineInfo:edit")
+ @Log(title = "机台信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ProdBaseMachineInfoBo bo) {
+ return toAjax(prodBaseMachineInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除机台信息
+ *
+ * @param machineIds 主键串
+ */
+ @SaCheckPermission("mes:prodBaseMachineInfo:remove")
+ @Log(title = "机台信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{machineIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] machineIds) {
+ return toAjax(prodBaseMachineInfoService.deleteWithValidByIds(List.of(machineIds), true));
+ }
+
+
+ /**
+ * 下拉框查询机台信息列表
+ */
+
+ @GetMapping("getProdBaseMachineInfoList")
+ public R> getProdBaseMachineInfolist(ProdBaseMachineInfoBo bo) {
+ List list = prodBaseMachineInfoService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessInfoController.java
index 47dbd87..18be5f6 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessInfoController.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessInfoController.java
@@ -95,11 +95,22 @@ public class ProdBaseProcessInfoController extends BaseController {
@SaCheckPermission("mes:baseProcessInfo:edit")
@Log(title = "工序信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
- @PutMapping()
+ @PutMapping("/edit")
public R edit(@Validated(EditGroup.class) @RequestBody ProdBaseProcessInfoBo bo) {
return toAjax(prodBaseProcessInfoService.updateByBo(bo));
}
+ /**
+ * 修改工序信息
+ */
+ @SaCheckPermission("mes:baseProcessInfo:edit")
+ @Log(title = "工序信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping("/editUser")
+ public R editUser(@Validated(EditGroup.class) @RequestBody ProdBaseProcessInfoBo bo) {
+ return toAjax(prodBaseProcessInfoService.updateByBoUser(bo));
+ }
+
/**
* 删除工序信息
*
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessProdLineController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessProdLineController.java
new file mode 100644
index 0000000..2db606d
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessProdLineController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
+import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
+import org.dromara.mes.service.IProdBaseProcessProdLineService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工序关联产线
+ * 前端访问路由地址为:/mes/prodBaseProcessProdLine
+ *
+ * @author LionLi
+ * @date 2025-01-09
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/prodBaseProcessProdLine")
+public class ProdBaseProcessProdLineController extends BaseController {
+
+ private final IProdBaseProcessProdLineService prodBaseProcessProdLineService;
+
+ /**
+ * 查询工序关联产线列表
+ */
+ @SaCheckPermission("mes:prodBaseProcessProdLine:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProdBaseProcessProdLineBo bo, PageQuery pageQuery) {
+ return prodBaseProcessProdLineService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出工序关联产线列表
+ */
+ @SaCheckPermission("mes:prodBaseProcessProdLine:export")
+ @Log(title = "工序关联产线", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ProdBaseProcessProdLineBo bo, HttpServletResponse response) {
+ List list = prodBaseProcessProdLineService.queryList(bo);
+ ExcelUtil.exportExcel(list, "工序关联产线", ProdBaseProcessProdLineVo.class, response);
+ }
+
+ /**
+ * 获取工序关联产线详细信息
+ *
+ * @param processId 主键
+ */
+ @SaCheckPermission("mes:prodBaseProcessProdLine:query")
+ @GetMapping("/{processId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long processId) {
+ return R.ok(prodBaseProcessProdLineService.queryById(processId));
+ }
+
+ /**
+ * 新增工序关联产线
+ */
+ @SaCheckPermission("mes:prodBaseProcessProdLine:add")
+ @Log(title = "工序关联产线", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ProdBaseProcessProdLineBo bo) {
+ return toAjax(prodBaseProcessProdLineService.insertByBo(bo));
+ }
+
+ /**
+ * 修改工序关联产线
+ */
+ @SaCheckPermission("mes:prodBaseProcessProdLine:edit")
+ @Log(title = "工序关联产线", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ProdBaseProcessProdLineBo bo) {
+ return toAjax(prodBaseProcessProdLineService.updateByBo(bo));
+ }
+
+ /**
+ * 删除工序关联产线
+ *
+ * @param processIds 主键串
+ */
+ @SaCheckPermission("mes:prodBaseProcessProdLine:remove")
+ @Log(title = "工序关联产线", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{processIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] processIds) {
+ return toAjax(prodBaseProcessProdLineService.deleteWithValidByIds(List.of(processIds), true));
+ }
+
+
+ /**
+ * 下拉框查询工序关联产线列表
+ */
+
+ @GetMapping("getProdBaseProcessProdLineList")
+ public R> getProdBaseProcessProdLinelist(ProdBaseProcessProdLineBo bo) {
+ List list = prodBaseProcessProdLineService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessUserController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessUserController.java
new file mode 100644
index 0000000..2c4e3ae
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdBaseProcessUserController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
+import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
+import org.dromara.mes.service.IProdBaseProcessUserService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工序关联人员
+ * 前端访问路由地址为:/mes/prodBaseProcessUser
+ *
+ * @author zangch
+ * @date 2025-01-09
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/prodBaseProcessUser")
+public class ProdBaseProcessUserController extends BaseController {
+
+ private final IProdBaseProcessUserService prodBaseProcessUserService;
+
+ /**
+ * 查询工序关联人员列表
+ */
+ @SaCheckPermission("mes:prodBaseProcessUser:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProdBaseProcessUserBo bo, PageQuery pageQuery) {
+ return prodBaseProcessUserService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出工序关联人员列表
+ */
+ @SaCheckPermission("mes:prodBaseProcessUser:export")
+ @Log(title = "工序关联人员", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ProdBaseProcessUserBo bo, HttpServletResponse response) {
+ List list = prodBaseProcessUserService.queryList(bo);
+ ExcelUtil.exportExcel(list, "工序关联人员", ProdBaseProcessUserVo.class, response);
+ }
+
+ /**
+ * 获取工序关联人员详细信息
+ *
+ * @param processId 主键
+ */
+ @SaCheckPermission("mes:prodBaseProcessUser:query")
+ @GetMapping("/{processId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long processId) {
+ return R.ok(prodBaseProcessUserService.queryById(processId));
+ }
+
+ /**
+ * 新增工序关联人员
+ */
+ @SaCheckPermission("mes:prodBaseProcessUser:add")
+ @Log(title = "工序关联人员", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ProdBaseProcessUserBo bo) {
+ return toAjax(prodBaseProcessUserService.insertByBo(bo));
+ }
+
+ /**
+ * 修改工序关联人员
+ */
+ @SaCheckPermission("mes:prodBaseProcessUser:edit")
+ @Log(title = "工序关联人员", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ProdBaseProcessUserBo bo) {
+ return toAjax(prodBaseProcessUserService.updateByBo(bo));
+ }
+
+ /**
+ * 删除工序关联人员
+ *
+ * @param processIds 主键串
+ */
+ @SaCheckPermission("mes:prodBaseProcessUser:remove")
+ @Log(title = "工序关联人员", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{processIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] processIds) {
+ return toAjax(prodBaseProcessUserService.deleteWithValidByIds(List.of(processIds), true));
+ }
+
+
+ /**
+ * 下拉框查询工序关联人员列表
+ */
+
+ @GetMapping("getProdBaseProcessUserList")
+ public R> getProdBaseProcessUserlist(ProdBaseProcessUserBo bo) {
+ List list = prodBaseProcessUserService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java
index 5bed053..e3776c1 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java
@@ -107,9 +107,21 @@ public class ProdMaterialBomController extends BaseController {
/**
* 下拉框查询物料BOM信息列表
*/
- @GetMapping("getProdMaterialBomList")
+ @GetMapping("/getProdMaterialBomList")
public R> getProdMaterialBomlist(ProdMaterialBomBo bo) {
List list = prodMaterialBomService.queryList(bo);
return R.ok(list);
}
+
+ /**
+ * 根据结构BOM批量插入物料清单BOM。
+ */
+ @SaCheckPermission("mes:materialBom:add")
+ @Log(title = "物料BOM信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping("/addBatchMaterialBom")
+ public R addBatchMaterialBom(@RequestBody List boList) {
+ //不是单纯的批量新增,是新增BOM对话框(参考结构BOM批量新增物料BOM)
+ return toAjax(prodMaterialBomService.insertBatchByBoList(boList));
+ }
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java
index c497a85..9f2440f 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java
@@ -6,6 +6,9 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.mes.domain.ProdBaseRouteProcess;
+import org.dromara.mes.domain.vo.MesProductPlanEditVo;
+import org.dromara.mes.service.IProdBaseRouteProcessService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -37,6 +40,8 @@ public class ProdPlanInfoController extends BaseController {
private final IProdPlanInfoService prodPlanInfoService;
+ private final IProdBaseRouteProcessService prodBaseRouteProcessService;
+
/**
* 查询生产工单信息列表
*/
@@ -114,4 +119,47 @@ public class ProdPlanInfoController extends BaseController {
List list = prodPlanInfoService.queryList(bo);
return R.ok(list);
}
+
+ /**
+ * 获取派工编号
+ *
+ * @return orderCode
+ */
+ @GetMapping(value = "/getDispatchCode")
+ public R getDispatchCode() {
+ return R.ok(prodPlanInfoService.getDispatchCode());
+ }
+
+ /**
+ * 获取工序及关联生产人员信息
+ *
+ * @param prodBaseRouteProcess
+ * @return
+ */
+ @GetMapping(value = "/getBaseRouteProcesses")
+ public R> getBaseRouteProcesses(ProdBaseRouteProcess prodBaseRouteProcess) {
+ return R.ok(prodBaseRouteProcessService.selectProdBaseRouteProcessJoinList(prodBaseRouteProcess));
+ }
+
+ /**
+ * 查询生产派工List
+ *
+ * @param bo
+ * @return
+ */
+ @GetMapping("/selectProductPlans")
+ public R> selectProductPlans(ProdPlanInfoBo bo) {
+ List list = prodPlanInfoService.selectProdPlanInfoJoinProcessList(bo);
+ return R.ok(list);
+ }
+
+ /**
+ * 生产工单新增生产派工List
+ */
+ @PostMapping("/orderAddProductPlanList")
+ @RepeatSubmit(message = "正在提交,请稍后")
+ public R orderAddProductPlanList(@RequestBody MesProductPlanEditVo productPlanEditVo) {
+ return toAjax(prodPlanInfoService.orderAddMesProductPlanList(productPlanEditVo));
+ }
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdTechnologyInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdTechnologyInfoController.java
new file mode 100644
index 0000000..af69b5e
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdTechnologyInfoController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.ProdTechnologyInfoVo;
+import org.dromara.mes.domain.bo.ProdTechnologyInfoBo;
+import org.dromara.mes.service.IProdTechnologyInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工序工艺信息
+ * 前端访问路由地址为:/mes/technologyInfo
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/technologyInfo")
+public class ProdTechnologyInfoController extends BaseController {
+
+ private final IProdTechnologyInfoService prodTechnologyInfoService;
+
+ /**
+ * 查询工序工艺信息列表
+ */
+ @SaCheckPermission("mes:technologyInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProdTechnologyInfoBo bo, PageQuery pageQuery) {
+ return prodTechnologyInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出工序工艺信息列表
+ */
+ @SaCheckPermission("mes:technologyInfo:export")
+ @Log(title = "工序工艺信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ProdTechnologyInfoBo bo, HttpServletResponse response) {
+ List list = prodTechnologyInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "工序工艺信息", ProdTechnologyInfoVo.class, response);
+ }
+
+ /**
+ * 获取工序工艺信息详细信息
+ *
+ * @param technologyId 主键
+ */
+ @SaCheckPermission("mes:technologyInfo:query")
+ @GetMapping("/{technologyId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long technologyId) {
+ return R.ok(prodTechnologyInfoService.queryById(technologyId));
+ }
+
+ /**
+ * 新增工序工艺信息
+ */
+ @SaCheckPermission("mes:technologyInfo:add")
+ @Log(title = "工序工艺信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ProdTechnologyInfoBo bo) {
+ return toAjax(prodTechnologyInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改工序工艺信息
+ */
+ @SaCheckPermission("mes:technologyInfo:edit")
+ @Log(title = "工序工艺信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ProdTechnologyInfoBo bo) {
+ return toAjax(prodTechnologyInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除工序工艺信息
+ *
+ * @param technologyIds 主键串
+ */
+ @SaCheckPermission("mes:technologyInfo:remove")
+ @Log(title = "工序工艺信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{technologyIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] technologyIds) {
+ return toAjax(prodTechnologyInfoService.deleteWithValidByIds(List.of(technologyIds), true));
+ }
+
+
+ /**
+ * 下拉框查询工序工艺信息列表
+ */
+
+ @GetMapping("getProdTechnologyInfoList")
+ public R> getProdTechnologyInfolist(ProdTechnologyInfoBo bo) {
+ List list = prodTechnologyInfoService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdTechnologyStepInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdTechnologyStepInfoController.java
new file mode 100644
index 0000000..256469e
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdTechnologyStepInfoController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.ProdTechnologyStepInfoVo;
+import org.dromara.mes.domain.bo.ProdTechnologyStepInfoBo;
+import org.dromara.mes.service.IProdTechnologyStepInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工艺步序信息
+ * 前端访问路由地址为:/mes/technologyStepInfo
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/technologyStepInfo")
+public class ProdTechnologyStepInfoController extends BaseController {
+
+ private final IProdTechnologyStepInfoService prodTechnologyStepInfoService;
+
+ /**
+ * 查询工艺步序信息列表
+ */
+ @SaCheckPermission("mes:technologyStepInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProdTechnologyStepInfoBo bo, PageQuery pageQuery) {
+ return prodTechnologyStepInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出工艺步序信息列表
+ */
+ @SaCheckPermission("mes:technologyStepInfo:export")
+ @Log(title = "工艺步序信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ProdTechnologyStepInfoBo bo, HttpServletResponse response) {
+ List list = prodTechnologyStepInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "工艺步序信息", ProdTechnologyStepInfoVo.class, response);
+ }
+
+ /**
+ * 获取工艺步序信息详细信息
+ *
+ * @param stepId 主键
+ */
+ @SaCheckPermission("mes:technologyStepInfo:query")
+ @GetMapping("/{stepId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long stepId) {
+ return R.ok(prodTechnologyStepInfoService.queryById(stepId));
+ }
+
+ /**
+ * 新增工艺步序信息
+ */
+ @SaCheckPermission("mes:technologyStepInfo:add")
+ @Log(title = "工艺步序信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ProdTechnologyStepInfoBo bo) {
+ return toAjax(prodTechnologyStepInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改工艺步序信息
+ */
+ @SaCheckPermission("mes:technologyStepInfo:edit")
+ @Log(title = "工艺步序信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ProdTechnologyStepInfoBo bo) {
+ return toAjax(prodTechnologyStepInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除工艺步序信息
+ *
+ * @param stepIds 主键串
+ */
+ @SaCheckPermission("mes:technologyStepInfo:remove")
+ @Log(title = "工艺步序信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{stepIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] stepIds) {
+ return toAjax(prodTechnologyStepInfoService.deleteWithValidByIds(List.of(stepIds), true));
+ }
+
+
+ /**
+ * 下拉框查询工艺步序信息列表
+ */
+
+ @GetMapping("getProdTechnologyStepInfoList")
+ public R> getProdTechnologyStepInfolist(ProdTechnologyStepInfoBo bo) {
+ List list = prodTechnologyStepInfoService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseClassTeamInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseClassTeamInfo.java
index 90d9920..f6f17cf 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseClassTeamInfo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseClassTeamInfo.java
@@ -72,18 +72,24 @@ public class BaseClassTeamInfo extends TenantEntity {
* BaseShiftInfo的班次名称
*/
@TableField(exist = false)
- private String shiftName;
+ private String shiftName;//映射字段
/**
* ProdBaseStationInfo工位名称
*/
@TableField(exist = false)
- private String stationName;
+ private String stationName;//映射字段
/**
* ProdBaseProcessInfo工序名称
*/
@TableField(exist = false)
- private String processName;
+ private String processName;//映射字段
+
+ /**
+ * 班组负责人
+ */
+ @TableField(exist = false)
+ private String teamHeadName;//映射字段
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialInfo.java
index 2984590..4cbf300 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialInfo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialInfo.java
@@ -270,4 +270,11 @@ public class BaseMaterialInfo extends TenantEntity {
*/
@TableField(exist = false)
private String factoryName; //映射字段
+
+ /**
+ * 物料类型名称
+ */
+ @TableField(exist = false)
+ private String matrialTypeName;//映射字段
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseStructureBom.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseStructureBom.java
new file mode 100644
index 0000000..bd1aef1
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseStructureBom.java
@@ -0,0 +1,81 @@
+package org.dromara.mes.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 结构BOM信息对象 base_structure_bom
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("base_structure_bom")
+public class BaseStructureBom extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @TableId(value = "structure_bom_id", type = IdType.AUTO)
+ private Long structureBomId;
+
+ /**
+ * 父级标识
+ */
+ private Long parentId;
+
+ /**
+ * 物料类型ID
+ */
+ private String materialTypeId;
+
+ /**
+ * 物料类型名称
+ */
+ private String materialTypeName;
+
+ /**
+ * 结构BOM说明
+ */
+ private String structureBomDesc;
+
+ /**
+ * 结构BOM版本
+ */
+ private String structureBomVersion;
+
+ /**
+ * 祖级列表
+ */
+ private String ancestors;
+
+ /**
+ * 层级
+ */
+ private Long level;
+
+ /**
+ * 顶级标识(1是 0否)
+ */
+ private Long topFlag;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseMachineInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseMachineInfo.java
new file mode 100644
index 0000000..cb21851
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseMachineInfo.java
@@ -0,0 +1,76 @@
+package org.dromara.mes.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 机台信息对象 prod_base_machine_info
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("prod_base_machine_info")
+public class ProdBaseMachineInfo extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @TableId(value = "machine_id", type = IdType.AUTO)
+ private Long machineId;
+
+ /**
+ * 机台编号
+ */
+ private String machineCode;
+
+ /**
+ * 机台名称
+ */
+ private String machineName;
+
+ /**
+ * 资产编号
+ */
+ private String assetNumber;
+
+ /**
+ * 机台位置
+ */
+ private String machineLocation;
+
+ /**
+ * 机台类型
+ */
+ private String machineType;
+
+ /**
+ * 机台规格
+ */
+ private String machineSpec;
+
+ /**
+ * 供应商
+ */
+ private String supplierId;
+
+ /**
+ * 机台状态(0停用 1启用 2报废)
+ */
+ private String machineStatus;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessInfo.java
index 01c9eca..9b9c10c 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessInfo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessInfo.java
@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
+import java.util.List;
/**
* 工序信息对象 prod_base_process_info
@@ -62,5 +63,18 @@ public class ProdBaseProcessInfo extends TenantEntity {
*/
private String remark;
+ /**
+ * 工序关联产线信息
+ */
+ @TableField(exist = false)
+ private List prodBaseProcessProdlineList;//工序关联产线信息,映射字段
+
+ /** 工序关联人员信息 */
+ @TableField(exist = false)
+ private List prodBaseProcessUserList;//工序关联人员信息,映射字段
+
+ @TableField(exist = false)
+ private String processPercentage;//映射字段
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessProdLine.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessProdLine.java
new file mode 100644
index 0000000..1a6a60b
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessProdLine.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.domain;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 工序关联产线对象 prod_base_process_prod_line
+ *
+ * @author LionLi
+ * @date 2025-01-09
+ */
+@Data
+@EqualsAndHashCode()
+@TableName("prod_base_process_prod_line")
+public class ProdBaseProcessProdLine {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 工序ID
+ */
+ private Long processId;
+
+ /**
+ * 所属产线ID
+ */
+ private Long prodLineId;
+
+
+
+ /*删除继承BaseEntity*/
+ /**
+ * 请求参数
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ @TableField(exist = false)
+ private Map params = new HashMap<>();
+ /**
+ * 创建部门
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createDept;
+
+ /**
+ * 创建者
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+ /**
+ * 租户编号
+ */
+ private String tenantId;
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessUser.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessUser.java
new file mode 100644
index 0000000..4576ea1
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseProcessUser.java
@@ -0,0 +1,73 @@
+package org.dromara.mes.domain;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 工序关联人员对象 prod_base_process_user
+ *
+ * @author zangch
+ * @date 2025-01-09
+ */
+@Data
+@EqualsAndHashCode()
+@TableName("prod_base_process_user")
+public class ProdBaseProcessUser {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 工序ID
+ */
+ private Long processId;
+
+ /**
+ * 用户ID
+ */
+ private Long userId;
+
+ /**
+ * 用户名称
+ */
+ private String userName;
+
+
+ /*删除继承BaseEntity*/
+ /**
+ * 请求参数
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ @TableField(exist = false)
+ private Map params = new HashMap<>();
+ /**
+ * 创建部门
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createDept;
+
+ /**
+ * 创建者
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+ /**
+ * 租户编号
+ */
+ private String tenantId;
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java
index 7438391..4030499 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java
@@ -48,4 +48,18 @@ public class ProdBaseRouteProcess extends BaseEntity {
private String remark;
+
+ /**
+ * 工序名称
+ */
+ @TableField(exist = false)
+ private String processName;//映射字段
+
+ /**
+ * 工序类别(1生产工序 2质检工序)
+ */
+ @TableField(exist = false)
+ private String processType;//映射字段
+
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java
index 92756a3..5d2aba6 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java
@@ -72,8 +72,14 @@ public class ProdBaseStationInfo extends TenantEntity {
*/
private String remark;
+ /**
+ * 机台ID
+ */
+ private Long machineId;
+
@TableField(exist = false)
private String processName;//字段映射
-
+ @TableField(exist = false)
+ private String machineName;//字段映射
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdOrderInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdOrderInfo.java
index 46e604e..76d9c70 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdOrderInfo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdOrderInfo.java
@@ -165,4 +165,27 @@ public class ProdOrderInfo extends TenantEntity {
private String remark;
+ /**
+ * 物料编码
+ */
+ @TableField(exist = false)
+ private String materialCode;//映射字段
+
+ /**
+ * 物料名称
+ */
+ @TableField(exist = false)
+ private String materialName;//映射字段
+
+ /**
+ *
+ */
+ @TableField(exist = false)
+ private String dispatchName;//映射字段
+
+ /**
+ * 工艺路线名称
+ */
+ @TableField(exist = false)
+ private String routeName;//映射字段
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdPlanInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdPlanInfo.java
index 9a8cf21..b2fe4eb 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdPlanInfo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdPlanInfo.java
@@ -179,5 +179,26 @@ public class ProdPlanInfo extends TenantEntity {
*/
private String remark;
+ /**
+ * 工序类别(1生产工序 2质检工序)
+ */
+ @TableField(exist = false)
+ private String processType;//映射字段
+
+ /**
+ * 工序名称
+ */
+ @TableField(exist = false)
+ private String processName;//映射字段
+
+ /**
+ * 单位生产时间(秒)
+ */
+ @TableField(exist = false)
+ private Long processProductionTime;//映射字段
+
+
+ @TableField(exist = false)
+ private String releaseName;//映射字段
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdTechnologyInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdTechnologyInfo.java
new file mode 100644
index 0000000..7f05d3d
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdTechnologyInfo.java
@@ -0,0 +1,75 @@
+package org.dromara.mes.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 工序工艺信息对象 prod_technology_info
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("prod_technology_info")
+public class ProdTechnologyInfo extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @TableId(value = "technology_id", type = IdType.AUTO)
+ private Long technologyId;
+
+ /**
+ * 工序ID
+ */
+ private Long processId;
+
+ /**
+ * 物料ID
+ */
+ private Long materialId;
+
+ /**
+ * 机台类型(1类一 2类二)
+ */
+ private String machineType;
+
+ /**
+ * 工艺类型(1量产 2限产)
+ */
+ private String technologyType;
+
+ /**
+ * 工艺版本
+ */
+ private String technologyVersion;
+
+ /**
+ * 硫化标准时间(秒)
+ */
+ private Long standardTime;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ @TableField(exist = false)
+ private String processName;
+
+ @TableField(exist = false)
+ private String materialName;
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdTechnologyStepInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdTechnologyStepInfo.java
new file mode 100644
index 0000000..7dc5903
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdTechnologyStepInfo.java
@@ -0,0 +1,71 @@
+package org.dromara.mes.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 工艺步序信息对象 prod_technology_step_info
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("prod_technology_step_info")
+public class ProdTechnologyStepInfo extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @TableId(value = "step_id", type = IdType.AUTO)
+ private Long stepId;
+
+ /**
+ * 工艺ID
+ */
+ private Long technologyId;
+
+ /**
+ * 步序编号
+ */
+ private Long stepCode;
+
+ /**
+ * 步序名称
+ */
+ private String stepName;
+
+ /**
+ * 步序时间(秒)
+ */
+ private Long stepTime;
+
+ /**
+ * 步序参数
+ */
+ private String stepParameter;
+
+ /**
+ * 阀门状态
+ */
+ private String valueState;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialInfoBo.java
index 2d37d7d..7dbc761 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialInfoBo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialInfoBo.java
@@ -30,7 +30,7 @@ public class BaseMaterialInfoBo extends BaseEntity {
/**
* ERP信息
*/
- @NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })
+/* @NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })*/
private String erpId;
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseStructureBomBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseStructureBomBo.java
new file mode 100644
index 0000000..05f6e93
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseStructureBomBo.java
@@ -0,0 +1,80 @@
+package org.dromara.mes.domain.bo;
+
+import org.dromara.mes.domain.BaseStructureBom;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 结构BOM信息业务对象 base_structure_bom
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BaseStructureBom.class, reverseConvertGenerate = false)
+public class BaseStructureBomBo extends BaseEntity {
+
+ /**
+ * 主键标识
+ */
+ private Long structureBomId;
+
+ /**
+ * 父级标识
+ */
+ private Long parentId;
+
+ /**
+ * 物料类型ID
+ */
+ @NotBlank(message = "物料类型ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String materialTypeId;
+
+ /**
+ * 物料类型名称
+ */
+ private String materialTypeName;
+
+ /**
+ * 结构BOM说明
+ */
+ private String structureBomDesc;
+
+ /**
+ * 结构BOM版本
+ */
+ private String structureBomVersion;
+
+ /**
+ * 祖级列表
+ */
+ private String ancestors;
+
+ /**
+ * 层级
+ */
+ private Long level;
+
+ /**
+ * 顶级标识(1是 0否)
+ */
+ private Long topFlag;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java
new file mode 100644
index 0000000..73c76b2
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java
@@ -0,0 +1,80 @@
+package org.dromara.mes.domain.bo;
+
+import org.dromara.mes.domain.ProdBaseMachineInfo;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 机台信息业务对象 prod_base_machine_info
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProdBaseMachineInfo.class, reverseConvertGenerate = false)
+public class ProdBaseMachineInfoBo extends BaseEntity {
+
+ /**
+ * 主键标识
+ */
+ private Long machineId;
+
+ /**
+ * 机台编号
+ */
+ @NotBlank(message = "机台编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String machineCode;
+
+ /**
+ * 机台名称
+ */
+ @NotBlank(message = "机台名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String machineName;
+
+ /**
+ * 资产编号
+ */
+ private String assetNumber;
+
+ /**
+ * 机台位置
+ */
+ private String machineLocation;
+
+ /**
+ * 机台类型
+ */
+ private String machineType;
+
+ /**
+ * 机台规格
+ */
+ private String machineSpec;
+
+ /**
+ * 供应商
+ */
+ private String supplierId;
+
+ /**
+ * 机台状态(0停用 1启用 2报废)
+ */
+ private String machineStatus;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ /**
+ * 工序
+ */
+ private Long processId;
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessInfoBo.java
index 8e4daea..d9ff840 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessInfoBo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessInfoBo.java
@@ -1,5 +1,6 @@
package org.dromara.mes.domain.bo;
+import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@@ -8,6 +9,10 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.mes.domain.ProdBaseProcessUser;
+
+import java.util.List;
/**
* 工序信息业务对象 prod_base_process_info
@@ -65,4 +70,14 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
private String remark;
+ /**
+ * 工序关联产线信息
+ */
+ private List prodBaseProcessProdlineBoList;//工序关联产线信息,映射字段
+
+ /** 工序关联人员信息 */
+ private List prodBaseProcessUserBoList;//工序关联人员信息,映射字段
+
+ private String processPercentageBo;//映射字段
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessProdLineBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessProdLineBo.java
new file mode 100644
index 0000000..f1e4d15
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessProdLineBo.java
@@ -0,0 +1,83 @@
+package org.dromara.mes.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 工序关联产线业务对象 prod_base_process_prod_line
+ *
+ * @author LionLi
+ * @date 2025-01-09
+ */
+@Data
+@EqualsAndHashCode()
+@AutoMapper(target = ProdBaseProcessProdLine.class, reverseConvertGenerate = false)
+public class ProdBaseProcessProdLineBo {
+
+ /**
+ * 工序ID
+ */
+ @NotNull(message = "工序ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long processId;
+
+ /**
+ * 所属产线ID
+ */
+ @NotNull(message = "所属产线ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long prodLineId;
+
+
+ /**
+ * 搜索值
+ */
+ @JsonIgnore
+ @TableField(exist = false)
+ private String searchValue;
+
+ /**
+ * 创建部门
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createDept;
+
+ /**
+ * 创建者
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+
+ /**
+ * 请求参数
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ @TableField(exist = false)
+ private Map params = new HashMap<>();
+
+ /**
+ * 租户编号
+ */
+ @TableField(exist = false)
+ private String tenantId;
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessUserBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessUserBo.java
new file mode 100644
index 0000000..d3a1eb6
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseProcessUserBo.java
@@ -0,0 +1,81 @@
+package org.dromara.mes.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.dromara.mes.domain.ProdBaseProcessUser;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 工序关联人员业务对象 prod_base_process_user
+ *
+ * @author zangch
+ * @date 2025-01-09
+ */
+@Data
+@EqualsAndHashCode()
+@AutoMapper(target = ProdBaseProcessUser.class, reverseConvertGenerate = false)
+public class ProdBaseProcessUserBo {
+
+ /**
+ * 工序ID
+ */
+ @NotNull(message = "工序ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long processId;
+
+ /**
+ * 用户ID
+ */
+ @NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
+ /**
+ * 用户名称
+ */
+ private String userName;
+
+ /**
+ * 搜索值
+ */
+ @JsonIgnore
+ @TableField(exist = false)
+ private String searchValue;
+
+ /**
+ * 创建部门
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createDept;
+
+ /**
+ * 创建者
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+
+ /**
+ * 请求参数
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ @TableField(exist = false)
+ private Map params = new HashMap<>();
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java
index b3a5942..c3c2d40 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java
@@ -74,5 +74,5 @@ public class ProdBaseStationInfoBo extends BaseEntity {
*/
private String remark;
-
+ private Long machineId;
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java
index 1d3e926..28b495e 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java
@@ -32,7 +32,6 @@ public class ProdOrderInfoBo extends BaseEntity {
/**
* 订单编号
*/
- @NotBlank(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderCode;
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java
index 5e3c1c7..f8b8631 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java
@@ -45,7 +45,7 @@ public class ProdPlanInfoBo extends BaseEntity {
/**
* 工单编号
*/
- @NotBlank(message = "工单编号不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "工单编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String planCode;
/**
@@ -56,13 +56,13 @@ public class ProdPlanInfoBo extends BaseEntity {
/**
* 物料ID;成品ID
*/
- @NotNull(message = "物料ID;成品ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ @NotNull(message = "物料不能为空", groups = { AddGroup.class, EditGroup.class })
private Long materialId;
/**
* 物料BOM_ID
*/
- @NotNull(message = "物料BOM_ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ @NotNull(message = "物料BOM不能为空", groups = { AddGroup.class, EditGroup.class })
private Long materialBomId;
/**
@@ -109,7 +109,7 @@ public class ProdPlanInfoBo extends BaseEntity {
/**
* 派工数量
*/
- @NotNull(message = "派工数量不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotNull(message = "派工数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long dispatchAmount;
/**
@@ -182,5 +182,7 @@ public class ProdPlanInfoBo extends BaseEntity {
*/
private String remark;
+ private Long workshopId;
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java
new file mode 100644
index 0000000..b67bfca
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java
@@ -0,0 +1,75 @@
+package org.dromara.mes.domain.bo;
+
+import org.dromara.mes.domain.ProdTechnologyInfo;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.mes.domain.ProdTechnologyStepInfo;
+
+import java.util.List;
+
+/**
+ * 工序工艺信息业务对象 prod_technology_info
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProdTechnologyInfo.class, reverseConvertGenerate = false)
+public class ProdTechnologyInfoBo extends BaseEntity {
+
+ /**
+ * 主键标识
+ */
+ private Long technologyId;
+
+ /**
+ * 工序ID
+ */
+ @NotNull(message = "工序ID不能为空", groups = {AddGroup.class, EditGroup.class})
+ private Long processId;
+
+ /**
+ * 物料ID
+ */
+ @NotNull(message = "物料ID不能为空", groups = {AddGroup.class, EditGroup.class})
+ private Long materialId;
+
+ /**
+ * 机台类型(1类一 2类二)
+ */
+ private String machineType;
+
+ /**
+ * 工艺类型(1量产 2限产)
+ */
+ private String technologyType;
+
+ /**
+ * 工艺版本
+ */
+ private String technologyVersion;
+
+ /**
+ * 硫化标准时间(秒)
+ */
+ private Long standardTime;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ private List prodTechnologyStepInfoList;
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyStepInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyStepInfoBo.java
new file mode 100644
index 0000000..3a23f93
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyStepInfoBo.java
@@ -0,0 +1,72 @@
+package org.dromara.mes.domain.bo;
+
+import org.dromara.mes.domain.ProdTechnologyStepInfo;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 工艺步序信息业务对象 prod_technology_step_info
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProdTechnologyStepInfo.class, reverseConvertGenerate = false)
+public class ProdTechnologyStepInfoBo extends BaseEntity {
+
+ /**
+ * 主键标识
+ */
+ private Long stepId;
+
+ /**
+ * 工艺ID
+ */
+ @NotNull(message = "工艺ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long technologyId;
+
+ /**
+ * 步序编号
+ */
+ @NotNull(message = "步序编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long stepCode;
+
+ /**
+ * 步序名称
+ */
+ @NotBlank(message = "步序名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String stepName;
+
+ /**
+ * 步序时间(秒)
+ */
+ private Long stepTime;
+
+ /**
+ * 步序参数
+ */
+ private String stepParameter;
+
+ /**
+ * 阀门状态
+ */
+ private String valueState;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseClassTeamInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseClassTeamInfoVo.java
index 55e675a..411bd94 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseClassTeamInfoVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseClassTeamInfoVo.java
@@ -116,23 +116,29 @@ public class BaseClassTeamInfoVo implements Serializable {
* 更新时间
*/
@ExcelProperty(value = "更新时间")
- private Date updateTime;
+ private Date updateTime;//映射字段
/**
* 班次名称
*/
@ExcelProperty(value = "班次名称")
- private String shiftName;
+ private String shiftName;//映射字段
/**
* 工位名称
*/
@ExcelProperty(value = "工位名称")
- private String stationName;
+ private String stationName;//映射字段
/**
* 工序名称
*/
@ExcelProperty(value = "工序名称")
- private String processName;
+ private String processName;//映射字段
+
+ /**
+ * 班组负责人名称
+ */
+ @ExcelProperty(value = "班组负责人名称")
+ private String teamHeadName;//映射字段
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialInfoVo.java
index 5a3ea64..788cca2 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialInfoVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialInfoVo.java
@@ -373,6 +373,12 @@ public class BaseMaterialInfoVo implements Serializable {
* 所属工厂
*/
@ExcelProperty(value = "所属工厂")
- private String factoryName;
+ private String factoryName;//映射字段
+
+ /**
+ * 物料类型名称
+ */
+ @ExcelProperty(value = "物料类型名称")
+ private String matrialTypeName;//映射字段
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java
index f9fe420..bcd97d3 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java
@@ -131,7 +131,7 @@ public class BaseMaterialTypeVo implements Serializable {
* 工序名称
*/
@ExcelProperty(value = "工序名称")
- private String processName;
+ private String processName;//工序名称
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseStructureBomVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseStructureBomVo.java
new file mode 100644
index 0000000..1e09b3e
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseStructureBomVo.java
@@ -0,0 +1,136 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.BaseStructureBom;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 结构BOM信息视图对象 base_structure_bom
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BaseStructureBom.class)
+public class BaseStructureBomVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @ExcelProperty(value = "主键标识")
+ private Long structureBomId;
+
+ /**
+ * 租户编号
+ */
+ @ExcelProperty(value = "租户编号")
+ private String tenantId;
+
+ /**
+ * 父级标识
+ */
+ @ExcelProperty(value = "父级标识")
+ private Long parentId;
+
+ /**
+ * 物料类型ID
+ */
+ @ExcelProperty(value = "物料类型ID")
+ private String materialTypeId;
+
+ /**
+ * 物料类型名称
+ */
+ @ExcelProperty(value = "物料类型名称")
+ private String materialTypeName;
+
+ /**
+ * 结构BOM说明
+ */
+ @ExcelProperty(value = "结构BOM说明")
+ private String structureBomDesc;
+
+ /**
+ * 结构BOM版本
+ */
+ @ExcelProperty(value = "结构BOM版本")
+ private String structureBomVersion;
+
+ /**
+ * 祖级列表
+ */
+ @ExcelProperty(value = "祖级列表")
+ private String ancestors;
+
+ /**
+ * 层级
+ */
+ @ExcelProperty(value = "层级")
+ private Long level;
+
+ /**
+ * 顶级标识(1是 0否)
+ */
+ @ExcelProperty(value = "顶级标识(1是 0否)", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "top_flag")
+ private Long topFlag;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "active_flag")
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+ /**
+ * 创建部门
+ */
+ @ExcelProperty(value = "创建部门")
+ private Long createDept;
+
+ /**
+ * 创建人
+ */
+ @ExcelProperty(value = "创建人")
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @ExcelProperty(value = "更新人")
+ private Long updateBy;
+
+ /**
+ * 更新时间
+ */
+ @ExcelProperty(value = "更新时间")
+ private Date updateTime;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/MesProductPlanEditVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/MesProductPlanEditVo.java
new file mode 100644
index 0000000..87bb1dc
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/MesProductPlanEditVo.java
@@ -0,0 +1,25 @@
+package org.dromara.mes.domain.vo;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import org.dromara.mes.domain.ProdPlanInfo;
+import org.dromara.mes.domain.bo.ProdPlanInfoBo;
+
+import java.util.List;
+
+@Data
+public class MesProductPlanEditVo {
+ //生产工单ID
+ @NotBlank(message = "生产工单Id必须输入")
+ private Long productOrderId;
+
+ //此次生产派工数量
+ private Long dispatchAmount;
+
+ //保存的生产计划
+ @NotBlank(message = "没有修改的生产派工提交")
+ private List mesProductPlanList;
+
+ //待删除的生产计划ID
+ private Long[] toDeletedPlanIds;
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java
new file mode 100644
index 0000000..abc767a
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java
@@ -0,0 +1,129 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.ProdBaseMachineInfo;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 机台信息视图对象 prod_base_machine_info
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProdBaseMachineInfo.class)
+public class ProdBaseMachineInfoVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @ExcelProperty(value = "主键标识")
+ private Long machineId;
+
+ /**
+ * 租户编号
+ */
+ @ExcelProperty(value = "租户编号")
+ private String tenantId;
+
+ /**
+ * 机台编号
+ */
+ @ExcelProperty(value = "机台编号")
+ private String machineCode;
+
+ /**
+ * 机台名称
+ */
+ @ExcelProperty(value = "机台名称")
+ private String machineName;
+
+ /**
+ * 资产编号
+ */
+ @ExcelProperty(value = "资产编号")
+ private String assetNumber;
+
+ /**
+ * 机台位置
+ */
+ @ExcelProperty(value = "机台位置")
+ private String machineLocation;
+
+ /**
+ * 机台类型
+ */
+ @ExcelProperty(value = "机台类型")
+ private String machineType;
+
+ /**
+ * 机台规格
+ */
+ @ExcelProperty(value = "机台规格")
+ private String machineSpec;
+
+ /**
+ * 供应商
+ */
+ @ExcelProperty(value = "供应商")
+ private String supplierId;
+
+ /**
+ * 机台状态(0停用 1启用 2报废)
+ */
+ @ExcelProperty(value = "机台状态(0停用 1启用 2报废)", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "machine_status")
+ private String machineStatus;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+ /**
+ * 创建部门
+ */
+ @ExcelProperty(value = "创建部门")
+ private Long createDept;
+
+ /**
+ * 创建人
+ */
+ @ExcelProperty(value = "创建人")
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @ExcelProperty(value = "更新人")
+ private Long updateBy;
+
+ /**
+ * 更新时间
+ */
+ @ExcelProperty(value = "更新时间")
+ private Date updateTime;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessInfoVo.java
index 638cacc..3d0b6db 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessInfoVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessInfoVo.java
@@ -1,5 +1,7 @@
package org.dromara.mes.domain.vo;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@@ -7,11 +9,13 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.mes.domain.ProdBaseProcessUser;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
-
+import java.util.List;
/**
@@ -115,5 +119,17 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelProperty(value = "更新时间")
private Date updateTime;
+ /**
+ * 工序关联产线信息
+ */
+ @ExcelIgnore
+ private List prodBaseProcessProdlineVoList;//工序关联产线信息,映射字段
+
+ /** 工序关联人员信息 */
+ @ExcelIgnore
+ private List prodBaseProcessUserVoList;//工序关联人员信息,映射字段
+
+ @ExcelIgnore
+ private String processPercentageVo;//映射字段
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessProdLineVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessProdLineVo.java
new file mode 100644
index 0000000..ff80acf
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessProdLineVo.java
@@ -0,0 +1,62 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工序关联产线视图对象 prod_base_process_prod_line
+ *
+ * @author LionLi
+ * @date 2025-01-09
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProdBaseProcessProdLine.class)
+public class ProdBaseProcessProdLineVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 工序ID
+ */
+ @ExcelProperty(value = "工序ID")
+ private Long processId;
+
+ /**
+ * 所属产线ID
+ */
+ @ExcelProperty(value = "所属产线ID")
+ private Long prodLineId;
+
+ /**
+ * 租户编号
+ */
+ @ExcelProperty(value = "租户编号")
+ private String tenantId;
+
+ /**
+ * 创建人
+ */
+ @ExcelProperty(value = "创建人")
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessUserVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessUserVo.java
new file mode 100644
index 0000000..3e3aca5
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseProcessUserVo.java
@@ -0,0 +1,68 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.ProdBaseProcessUser;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工序关联人员视图对象 prod_base_process_user
+ *
+ * @author zangch
+ * @date 2025-01-09
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProdBaseProcessUser.class)
+public class ProdBaseProcessUserVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 工序ID
+ */
+ @ExcelProperty(value = "工序ID")
+ private Long processId;
+
+ /**
+ * 用户ID
+ */
+ @ExcelProperty(value = "用户ID")
+ private Long userId;
+
+ /**
+ * 租户编号
+ */
+ @ExcelProperty(value = "租户编号")
+ private String tenantId;
+
+ /**
+ * 用户名称
+ */
+ @ExcelProperty(value = "用户名称")
+ private String userName;
+
+ /**
+ * 创建人
+ */
+ @ExcelProperty(value = "创建人")
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java
index ef4c4a5..d3a99b2 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java
@@ -59,4 +59,19 @@ public class ProdBaseRouteProcessVo implements Serializable {
private String remark;
+
+
+ /**
+ * 工序名称
+ */
+ @ExcelProperty(value = "工序名称")
+ private String processName;
+
+ /**
+ * 工序类别(1生产工序 2质检工序)
+ */
+ @ExcelProperty(value = "工序类别", converter = ExcelDictConvert.class)
+ private String processType;
+
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java
index 3a3378d..b8ed28b 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java
@@ -1,5 +1,6 @@
package org.dromara.mes.domain.vo;
+import com.alibaba.excel.annotation.ExcelIgnore;
import org.dromara.mes.domain.ProdBaseRoute;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@@ -95,6 +96,10 @@ public class ProdBaseRouteVo implements Serializable {
@ExcelProperty(value = "更新时间")
private Date updateTime;
+ /**
+ * 工艺路线
+ */
+ @ExcelIgnore
private List routeProcessVoList;
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java
index 3f37b31..93ed805 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java
@@ -131,5 +131,11 @@ public class ProdBaseStationInfoVo implements Serializable {
@ExcelProperty(value = "更新时间")
private Date updateTime;
+ private Long machineId;
+ /**
+ * 机台名称
+ */
+ @ExcelProperty(value = "机台名称")
+ private String machineName;
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdOrderInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdOrderInfoVo.java
index 5ccc970..edaa840 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdOrderInfoVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdOrderInfoVo.java
@@ -36,6 +36,13 @@ public class ProdOrderInfoVo implements Serializable {
@ExcelProperty(value = "主键标识")
private Long productOrderId;
+ /**
+ * 租户编号
+ */
+ @ExcelProperty(value = "租户编号")
+ private String tenantId;
+
+
/**
* 订单编号
*/
@@ -205,5 +212,55 @@ public class ProdOrderInfoVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
+ /**
+ * 创建部门
+ */
+ @ExcelProperty(value = "创建部门")
+ private Long createDept;
+
+ /**
+ * 创建人
+ */
+ @ExcelProperty(value = "创建人")
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @ExcelProperty(value = "更新人")
+ private Long updateBy;
+
+ /**
+ * 更新时间
+ */
+ @ExcelProperty(value = "更新时间")
+ private Date updateTime;
+
+ /**
+ * 物料名称
+ */
+ @ExcelProperty(value = "物料名称")
+ private String materialName;//映射字段
+
+ /**
+ * 物料编码
+ */
+ @ExcelProperty(value = "物料编码")
+ private String materialCode;//映射字段
+
+
+ /**
+ * 工艺路线名称
+ */
+ @ExcelProperty(value = "工艺路线名称")
+ private String dispatchName;//映射字段
+
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java
index c18eb44..40a43f1 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java
@@ -1,6 +1,8 @@
package org.dromara.mes.domain.vo;
import java.util.Date;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.mes.domain.ProdPlanInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
@@ -222,5 +224,21 @@ public class ProdPlanInfoVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
+ private String materialCode;
+ private String materialName;
+ private String processName;
+ private String shiftName;
+ private String teamName;
+ private String materialBomName;
+ private String releaseName;
+
+ /**
+ * 工序类别(1生产工序 2质检工序)
+ */
+ @ExcelIgnore
+ private String processType;
+
+ @ExcelIgnore
+ private Long processProductionTime;
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java
new file mode 100644
index 0000000..387a1cb
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java
@@ -0,0 +1,96 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.ProdTechnologyInfo;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.mes.domain.ProdTechnologyStepInfo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 工序工艺信息视图对象 prod_technology_info
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProdTechnologyInfo.class)
+public class ProdTechnologyInfoVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @ExcelProperty(value = "主键标识")
+ private Long technologyId;
+
+ /**
+ * 工序ID
+ */
+ @ExcelProperty(value = "工序ID")
+ private Long processId;
+
+ /**
+ * 物料ID
+ */
+ @ExcelProperty(value = "物料ID")
+ private Long materialId;
+
+ /**
+ * 机台类型(1类一 2类二)
+ */
+ @ExcelProperty(value = "机台类型", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "mes_machine_type")
+ private String machineType;
+
+ /**
+ * 工艺类型(1量产 2限产)
+ */
+ @ExcelProperty(value = "工艺类型", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "mes_technology_type")
+ private String technologyType;
+
+ /**
+ * 工艺版本
+ */
+ @ExcelProperty(value = "工艺版本")
+ private String technologyVersion;
+
+ /**
+ * 硫化标准时间(秒)
+ */
+ @ExcelProperty(value = "硫化标准时间", converter = ExcelDictConvert.class)
+ private Long standardTime;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "active_flag")
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+ @ExcelProperty(value = "工序名称")
+ private String processName;
+
+ @ExcelProperty(value = "物料名称")
+ private String materialName;
+
+ private List prodTechnologyStepInfoList;
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyStepInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyStepInfoVo.java
new file mode 100644
index 0000000..ed0fd36
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyStepInfoVo.java
@@ -0,0 +1,87 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.ProdTechnologyStepInfo;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工艺步序信息视图对象 prod_technology_step_info
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProdTechnologyStepInfo.class)
+public class ProdTechnologyStepInfoVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键标识
+ */
+ @ExcelProperty(value = "主键标识")
+ private Long stepId;
+
+ /**
+ * 工艺ID
+ */
+ @ExcelProperty(value = "工艺ID")
+ private Long technologyId;
+
+ /**
+ * 步序编号
+ */
+ @ExcelProperty(value = "步序编号")
+ private Long stepCode;
+
+ /**
+ * 步序名称
+ */
+ @ExcelProperty(value = "步序名称")
+ private String stepName;
+
+ /**
+ * 步序时间(秒)
+ */
+ @ExcelProperty(value = "步序时间", converter = ExcelDictConvert.class)
+ private Long stepTime;
+
+ /**
+ * 步序参数
+ */
+ @ExcelProperty(value = "步序参数")
+ private String stepParameter;
+
+ /**
+ * 阀门状态
+ */
+ @ExcelProperty(value = "阀门状态")
+ private String valueState;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "active_flag")
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/dubbo/RemoteMaterialInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/dubbo/RemoteMaterialInfoServiceImpl.java
new file mode 100644
index 0000000..b5d5740
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/dubbo/RemoteMaterialInfoServiceImpl.java
@@ -0,0 +1,49 @@
+package org.dromara.mes.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.mes.api.RemoteMaterialInfoService;
+import org.dromara.mes.api.model.bo.BaseMaterialInfoBo;
+import org.dromara.mes.domain.BaseMaterialInfo;
+import org.dromara.mes.mapper.BaseMaterialInfoMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 物料接口实现类
+ *
+ * @author Yinq
+ */
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteMaterialInfoServiceImpl implements RemoteMaterialInfoService {
+
+ private final BaseMaterialInfoMapper materialInfoMapper;
+
+ /**
+ * 批量新增物料信息接口
+ * @param bos
+ * @return true成功,false失败
+ */
+ @Override
+ public Boolean remoteInsertBaseMaterialInfo(List bos) {
+ List list = new ArrayList<>();
+ for (BaseMaterialInfoBo bo : bos) {
+ //校验物料是否已存在,若存在则更新数据
+ BaseMaterialInfo add = MapstructUtils.convert(bo, BaseMaterialInfo.class);
+ list.add(add);
+ }
+ if (list.size() == 0){
+ return false;
+ }
+ return materialInfoMapper.insertBatch(list);
+ }
+
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseStructureBomMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseStructureBomMapper.java
new file mode 100644
index 0000000..2cc7076
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseStructureBomMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.BaseStructureBom;
+import org.dromara.mes.domain.vo.BaseStructureBomVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 结构BOM信息Mapper接口
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+public interface BaseStructureBomMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseMachineInfoMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseMachineInfoMapper.java
new file mode 100644
index 0000000..b1da8e7
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseMachineInfoMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.ProdBaseMachineInfo;
+import org.dromara.mes.domain.vo.ProdBaseMachineInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 机台信息Mapper接口
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+public interface ProdBaseMachineInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessInfoMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessInfoMapper.java
index 266f79b..a4b4990 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessInfoMapper.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessInfoMapper.java
@@ -1,9 +1,16 @@
package org.dromara.mes.mapper;
import org.dromara.mes.domain.ProdBaseProcessInfo;
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.mes.domain.ProdBaseProcessUser;
+import org.dromara.mes.domain.bo.ProdBaseProcessInfoBo;
+import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
+import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.mes.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import java.util.List;
+
/**
* 工序信息Mapper接口
*
@@ -12,4 +19,108 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface ProdBaseProcessInfoMapper extends BaseMapperPlus {
+ /**
+ * 查询工序信息
+ *
+ * @param processId 工序信息主键
+ * @return 工序信息
+ */
+ public ProdBaseProcessInfo selectProdBaseProcessInfoByProcessId(Long processId);
+
+ /**
+ * 获取工序用户信息详细信息
+ * @param processId 工序信息主键
+ * @return 工序信息
+ */
+ public ProdBaseProcessInfo selectProdBaseProcessInfoUserByProcessId(Long processId);
+
+ /**
+ * 查询工序信息列表
+ *
+ * @param prodBaseProcessInfo 工序信息
+ * @return 工序信息集合
+ */
+ public List selectProdBaseProcessInfoList(ProdBaseProcessInfoBo prodBaseProcessInfo);
+
+ /**
+ * 新增工序信息
+ *
+ * @param prodBaseProcessInfo 工序信息
+ * @return 结果
+ */
+ public int insertProdBaseProcessInfo(ProdBaseProcessInfoBo prodBaseProcessInfo);
+
+ /**
+ * 修改工序信息
+ *
+ * @param prodBaseProcessInfo 工序信息
+ * @return 结果
+ */
+ public int updateProdBaseProcessInfo(ProdBaseProcessInfoBo prodBaseProcessInfo);
+
+ /**
+ * 删除工序信息
+ *
+ * @param processId 工序信息主键
+ * @return 结果
+ */
+ public int deleteProdBaseProcessInfoByProcessId(Long processId);
+
+ /**
+ * 批量删除工序信息
+ *
+ * @param processIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteProdBaseProcessInfoByProcessIds(Long[] processIds);
+
+ /**
+ * 批量删除工序关联产线
+ *
+ * @param processIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteProdBaseProcessProdlineByProcessIds(Long[] processIds);
+
+ /**
+ * 批量新增工序关联产线
+ *
+ * @param prodBaseProcessProdlineList 工序关联产线列表
+ * @return 结果
+ */
+ public int batchProdBaseProcessProdline(List prodBaseProcessProdlineList);
+
+
+ /**
+ * 通过工序信息主键删除工序关联产线信息
+ *
+ * @param processId 工序信息ID
+ * @return 结果
+ */
+ public int deleteProdBaseProcessProdlineByProcessId(Long processId);
+
+ /**
+ * 批量删除工序关联人员
+ *
+ * @param processIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteProdBaseProcessUserByProcessIds(Long[] processIds);
+
+ /**
+ * 批量新增工序关联人员
+ *
+ * @param prodBaseProcessUserList 工序关联人员列表
+ * @return 结果
+ */
+ public int batchProdBaseProcessUser(List prodBaseProcessUserList);
+
+
+ /**
+ * 通过工序信息主键删除工序关联人员信息
+ *
+ * @param processId 工序信息ID
+ * @return 结果
+ */
+ public int deleteProdBaseProcessUserByProcessId(Long processId);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessProdLineMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessProdLineMapper.java
new file mode 100644
index 0000000..4210a21
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessProdLineMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工序关联产线Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-01-09
+ */
+public interface ProdBaseProcessProdLineMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessUserMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessUserMapper.java
new file mode 100644
index 0000000..b402f29
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseProcessUserMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.ProdBaseProcessUser;
+import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工序关联人员Mapper接口
+ *
+ * @author zangch
+ * @date 2025-01-09
+ */
+public interface ProdBaseProcessUserMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteMapper.java
index f1d55ab..ba4a97a 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteMapper.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteMapper.java
@@ -30,26 +30,26 @@ public interface ProdBaseRouteMapper extends BaseMapperPlus selectProdBaseRouteList(ProdBaseRoute mesBaseRoute);
+ public List selectProdBaseRouteList(ProdBaseRoute prodBaseRoute);
/**
* 新增工艺路线
*
- * @param mesBaseRoute 工艺路线
+ * @param prodBaseRoute 工艺路线
* @return 结果
*/
- public int insertProdBaseRoute(ProdBaseRoute mesBaseRoute);
+ public int insertProdBaseRoute(ProdBaseRoute prodBaseRoute);
/**
* 修改工艺路线
*
- * @param mesBaseRoute 工艺路线
+ * @param prodBaseRoute 工艺路线
* @return 结果
*/
- public int updateProdBaseRoute(ProdBaseRoute mesBaseRoute);
+ public int updateProdBaseRoute(ProdBaseRoute prodBaseRoute);
/**
* 删除工艺路线
@@ -78,10 +78,10 @@ public interface ProdBaseRouteMapper extends BaseMapperPlus mesBaseRouteProcessList);
+ public int batchProdBaseRouteProcess(List prodBaseRouteProcessList);
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteProcessMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteProcessMapper.java
index a036c20..db31187 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteProcessMapper.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteProcessMapper.java
@@ -4,6 +4,8 @@ import org.dromara.mes.domain.ProdBaseRouteProcess;
import org.dromara.mes.domain.vo.ProdBaseRouteProcessVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import java.util.List;
+
/**
* 工艺路线组成信息Mapper接口
*
@@ -12,4 +14,13 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface ProdBaseRouteProcessMapper extends BaseMapperPlus {
+ /**
+ * 查询工艺路线组成信息列表,Join prod_base_process_info
+ *
+ * @param prodBaseRouteProcess 工艺路线组成信息
+ * @return 工艺路线组成信息集合
+ */
+ public List selectProdBaseRouteProcessJoinList(ProdBaseRouteProcess prodBaseRouteProcess);
+
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdOrderInfoMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdOrderInfoMapper.java
index f710e70..d3825f2 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdOrderInfoMapper.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdOrderInfoMapper.java
@@ -1,9 +1,16 @@
package org.dromara.mes.mapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
import org.dromara.mes.domain.ProdOrderInfo;
+import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import java.util.List;
+
/**
* 生产订单信息Mapper接口
*
@@ -12,4 +19,14 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface ProdOrderInfoMapper extends BaseMapperPlus {
+ /**
+ * 查询生产订单信息;生产工单列表
+ * @param page
+ * @param queryWrapper
+ * @return
+ */
+ public Page selectProdOrderInfoList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper);
+
+
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdPlanInfoMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdPlanInfoMapper.java
index 2e2b910..2ff30ce 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdPlanInfoMapper.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdPlanInfoMapper.java
@@ -1,9 +1,18 @@
package org.dromara.mes.mapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.mes.domain.ProdOrderInfo;
import org.dromara.mes.domain.ProdPlanInfo;
+import org.dromara.mes.domain.bo.ProdPlanInfoBo;
+import org.dromara.mes.domain.vo.ProdOrderInfoVo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import java.util.List;
+
/**
* 生产工单信息Mapper接口
*
@@ -12,4 +21,30 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface ProdPlanInfoMapper extends BaseMapperPlus {
+ /**
+ * 生产工单列表
+ * @param page
+ * @param queryWrapper
+ * @return
+ */
+ public Page selectProdPlanInfoList(@Param("page") Page page, @Param("tableName")String tableName,@Param(Constants.WRAPPER) Wrapper queryWrapper);
+
+ /**
+ * 查询生产派工列表,Join process
+ *
+ * @param bo 生产派工
+ * @return 生产派工集合
+ */
+ public List selectProdPlanInfoJoinProcessList(ProdPlanInfoBo bo);
+
+ /**
+ * 根据查询条件从指定表中获取生产计划列表。
+ *
+ * @param tableName 动态表名
+ * @param queryWrapper 查询条件封装对象
+ * @return 用户列表
+ */
+ Page selectProdPlanInfoList(@Param("tableName") String tableName,@Param("page") Page page,
+ @Param(Constants.WRAPPER) Wrapper queryWrapper);
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdTechnologyInfoMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdTechnologyInfoMapper.java
new file mode 100644
index 0000000..934732d
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdTechnologyInfoMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.ProdTechnologyInfo;
+import org.dromara.mes.domain.vo.ProdTechnologyInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工序工艺信息Mapper接口
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+public interface ProdTechnologyInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdTechnologyStepInfoMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdTechnologyStepInfoMapper.java
new file mode 100644
index 0000000..b2d9f0b
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdTechnologyStepInfoMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.ProdTechnologyStepInfo;
+import org.dromara.mes.domain.vo.ProdTechnologyStepInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工艺步序信息Mapper接口
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+public interface ProdTechnologyStepInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseStructureBomService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseStructureBomService.java
new file mode 100644
index 0000000..d65a7d1
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseStructureBomService.java
@@ -0,0 +1,59 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.BaseStructureBom;
+import org.dromara.mes.domain.vo.BaseStructureBomVo;
+import org.dromara.mes.domain.bo.BaseStructureBomBo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 结构BOM信息Service接口
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+public interface IBaseStructureBomService {
+
+ /**
+ * 查询结构BOM信息
+ *
+ * @param structureBomId 主键
+ * @return 结构BOM信息
+ */
+ BaseStructureBomVo queryById(Long structureBomId);
+
+
+ /**
+ * 查询符合条件的结构BOM信息列表
+ *
+ * @param bo 查询条件
+ * @return 结构BOM信息列表
+ */
+ List queryList(BaseStructureBomBo bo);
+
+ /**
+ * 新增结构BOM信息
+ *
+ * @param bo 结构BOM信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BaseStructureBomBo bo);
+
+ /**
+ * 修改结构BOM信息
+ *
+ * @param bo 结构BOM信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BaseStructureBomBo bo);
+
+ /**
+ * 校验并批量删除结构BOM信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseMachineInfoService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseMachineInfoService.java
new file mode 100644
index 0000000..4f54382
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseMachineInfoService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.ProdBaseMachineInfo;
+import org.dromara.mes.domain.vo.ProdBaseMachineInfoVo;
+import org.dromara.mes.domain.bo.ProdBaseMachineInfoBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 机台信息Service接口
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+public interface IProdBaseMachineInfoService {
+
+ /**
+ * 查询机台信息
+ *
+ * @param machineId 主键
+ * @return 机台信息
+ */
+ ProdBaseMachineInfoVo queryById(Long machineId);
+
+ /**
+ * 分页查询机台信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 机台信息分页列表
+ */
+ TableDataInfo queryPageList(ProdBaseMachineInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的机台信息列表
+ *
+ * @param bo 查询条件
+ * @return 机台信息列表
+ */
+ List queryList(ProdBaseMachineInfoBo bo);
+
+ /**
+ * 新增机台信息
+ *
+ * @param bo 机台信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ProdBaseMachineInfoBo bo);
+
+ /**
+ * 修改机台信息
+ *
+ * @param bo 机台信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ProdBaseMachineInfoBo bo);
+
+ /**
+ * 校验并批量删除机台信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessInfoService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessInfoService.java
index ff84298..b2910c0 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessInfoService.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessInfoService.java
@@ -57,6 +57,14 @@ public interface IProdBaseProcessInfoService {
*/
Boolean updateByBo(ProdBaseProcessInfoBo bo);
+ /**
+ * 修改工序信息关联用户
+ *
+ * @param bo 工序信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBoUser(ProdBaseProcessInfoBo bo);
+
/**
* 校验并批量删除工序信息信息
*
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessProdLineService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessProdLineService.java
new file mode 100644
index 0000000..df81b3d
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessProdLineService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
+import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工序关联产线Service接口
+ *
+ * @author LionLi
+ * @date 2025-01-09
+ */
+public interface IProdBaseProcessProdLineService {
+
+ /**
+ * 查询工序关联产线
+ *
+ * @param processId 主键
+ * @return 工序关联产线
+ */
+ ProdBaseProcessProdLineVo queryById(Long processId);
+
+ /**
+ * 分页查询工序关联产线列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 工序关联产线分页列表
+ */
+ TableDataInfo queryPageList(ProdBaseProcessProdLineBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的工序关联产线列表
+ *
+ * @param bo 查询条件
+ * @return 工序关联产线列表
+ */
+ List queryList(ProdBaseProcessProdLineBo bo);
+
+ /**
+ * 新增工序关联产线
+ *
+ * @param bo 工序关联产线
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ProdBaseProcessProdLineBo bo);
+
+ /**
+ * 修改工序关联产线
+ *
+ * @param bo 工序关联产线
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ProdBaseProcessProdLineBo bo);
+
+ /**
+ * 校验并批量删除工序关联产线信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessUserService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessUserService.java
new file mode 100644
index 0000000..d5a454b
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseProcessUserService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.ProdBaseProcessUser;
+import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
+import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工序关联人员Service接口
+ *
+ * @author zangch
+ * @date 2025-01-09
+ */
+public interface IProdBaseProcessUserService {
+
+ /**
+ * 查询工序关联人员
+ *
+ * @param processId 主键
+ * @return 工序关联人员
+ */
+ ProdBaseProcessUserVo queryById(Long processId);
+
+ /**
+ * 分页查询工序关联人员列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 工序关联人员分页列表
+ */
+ TableDataInfo queryPageList(ProdBaseProcessUserBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的工序关联人员列表
+ *
+ * @param bo 查询条件
+ * @return 工序关联人员列表
+ */
+ List queryList(ProdBaseProcessUserBo bo);
+
+ /**
+ * 新增工序关联人员
+ *
+ * @param bo 工序关联人员
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ProdBaseProcessUserBo bo);
+
+ /**
+ * 修改工序关联人员
+ *
+ * @param bo 工序关联人员
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ProdBaseProcessUserBo bo);
+
+ /**
+ * 校验并批量删除工序关联人员信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteProcessService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteProcessService.java
index 1cc49f7..95b6470 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteProcessService.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteProcessService.java
@@ -66,4 +66,13 @@ public interface IProdBaseRouteProcessService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+
+ /**
+ * 查询工艺路线组成信息列表,Join mes_base_process
+ *
+ * @param prodBaseRouteProcess 工艺路线组成信息
+ * @return 工艺路线组成信息
+ */
+ public List selectProdBaseRouteProcessJoinList(ProdBaseRouteProcess prodBaseRouteProcess);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteService.java
index b1cc094..9818db0 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteService.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseRouteService.java
@@ -76,5 +76,5 @@ public interface IProdBaseRouteService {
* @param routeId 工艺路线主键
* @return 工艺路线
*/
- public ProdBaseRouteVo selectMesBaseRouteByRouteId(Long routeId);
+ public ProdBaseRouteVo selectProdBaseRouteByRouteId(Long routeId);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java
index 206eab7..95d9157 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java
@@ -56,4 +56,11 @@ public interface IProdMaterialBomService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ /**
+ * 根据结构BOM批量插入物料清单BOM。
+ * @param boList 需要插入的物料清单BOM列表。
+ * @return 如果所有节点都成功插入,返回true;否则抛出异常。
+ */
+ Boolean insertBatchByBoList(List boList);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdOrderInfoService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdOrderInfoService.java
index 9dfae04..31825bf 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdOrderInfoService.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdOrderInfoService.java
@@ -1,6 +1,5 @@
package org.dromara.mes.service;
-import org.dromara.mes.domain.ProdOrderInfo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java
index 7aaf3d1..d054333 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java
@@ -1,6 +1,7 @@
package org.dromara.mes.service;
import org.dromara.mes.domain.ProdPlanInfo;
+import org.dromara.mes.domain.vo.MesProductPlanEditVo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.mes.domain.bo.ProdPlanInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -66,4 +67,38 @@ public interface IProdPlanInfoService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+
+ /**
+ * 获取派工编号
+ *
+ * @return 生产派工
+ */
+ public String getDispatchCode();
+
+ /**
+ * 查询生产派工列表,join process
+ *
+ * @param bo 生产派工
+ * @return 生产派工
+ */
+ public List selectProdPlanInfoJoinProcessList(ProdPlanInfoBo bo);
+
+
+ /**
+ * 批量新增生产工单信息
+ *
+ * @param boList 生产工单信息列表
+ * @return 是否新增成功
+ */
+/* public Boolean insertBatchList(List boList);*/
+
+
+ /**
+ * 生产工单新增生产派工List
+ *
+ * @param mesProductPlanEditVo 生产派工VO对象
+ * @return
+ */
+ public int orderAddMesProductPlanList(MesProductPlanEditVo mesProductPlanEditVo);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdTechnologyInfoService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdTechnologyInfoService.java
new file mode 100644
index 0000000..310ae09
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdTechnologyInfoService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.ProdTechnologyInfo;
+import org.dromara.mes.domain.vo.ProdTechnologyInfoVo;
+import org.dromara.mes.domain.bo.ProdTechnologyInfoBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工序工艺信息Service接口
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+public interface IProdTechnologyInfoService {
+
+ /**
+ * 查询工序工艺信息
+ *
+ * @param technologyId 主键
+ * @return 工序工艺信息
+ */
+ ProdTechnologyInfoVo queryById(Long technologyId);
+
+ /**
+ * 分页查询工序工艺信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 工序工艺信息分页列表
+ */
+ TableDataInfo queryPageList(ProdTechnologyInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的工序工艺信息列表
+ *
+ * @param bo 查询条件
+ * @return 工序工艺信息列表
+ */
+ List queryList(ProdTechnologyInfoBo bo);
+
+ /**
+ * 新增工序工艺信息
+ *
+ * @param bo 工序工艺信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ProdTechnologyInfoBo bo);
+
+ /**
+ * 修改工序工艺信息
+ *
+ * @param bo 工序工艺信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ProdTechnologyInfoBo bo);
+
+ /**
+ * 校验并批量删除工序工艺信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdTechnologyStepInfoService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdTechnologyStepInfoService.java
new file mode 100644
index 0000000..ed14a61
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdTechnologyStepInfoService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.ProdTechnologyStepInfo;
+import org.dromara.mes.domain.vo.ProdTechnologyStepInfoVo;
+import org.dromara.mes.domain.bo.ProdTechnologyStepInfoBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工艺步序信息Service接口
+ *
+ * @author Yinq
+ * @date 2025-01-21
+ */
+public interface IProdTechnologyStepInfoService {
+
+ /**
+ * 查询工艺步序信息
+ *
+ * @param stepId 主键
+ * @return 工艺步序信息
+ */
+ ProdTechnologyStepInfoVo queryById(Long stepId);
+
+ /**
+ * 分页查询工艺步序信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 工艺步序信息分页列表
+ */
+ TableDataInfo queryPageList(ProdTechnologyStepInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的工艺步序信息列表
+ *
+ * @param bo 查询条件
+ * @return 工艺步序信息列表
+ */
+ List queryList(ProdTechnologyStepInfoBo bo);
+
+ /**
+ * 新增工艺步序信息
+ *
+ * @param bo 工艺步序信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ProdTechnologyStepInfoBo bo);
+
+ /**
+ * 修改工艺步序信息
+ *
+ * @param bo 工艺步序信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ProdTechnologyStepInfoBo bo);
+
+ /**
+ * 校验并批量删除工艺步序信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseClassTeamInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseClassTeamInfoServiceImpl.java
index 0128cfd..20ddccd 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseClassTeamInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseClassTeamInfoServiceImpl.java
@@ -2,6 +2,7 @@ package org.dromara.mes.service.impl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -138,6 +139,17 @@ public class BaseClassTeamInfoServiceImpl implements IBaseClassTeamInfoService {
*/
private void validEntityBeforeSave(BaseClassTeamInfo entity){
//TODO 做一些数据校验,如唯一约束
+ // 校验编码是否重复
+ if (StringUtils.isNotBlank(entity.getTeamCode())) {
+ BaseClassTeamInfoBo query = new BaseClassTeamInfoBo();
+ query.setTeamCode(entity.getTeamCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ BaseClassTeamInfo baseClassTeamInfo = baseMapper.selectOne(lqw);
+ if (baseClassTeamInfo != null
+ && !baseClassTeamInfo.getClassTeamId().equals(entity.getClassTeamId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java
index 8df3baa..4752ab2 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java
@@ -10,6 +10,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.mes.domain.BaseMaterialInfo;
+import org.dromara.mes.mapper.BaseMaterialInfoMapper;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.BaseEqualMaterialInfoBo;
import org.dromara.mes.domain.vo.BaseEqualMaterialInfoVo;
@@ -21,6 +22,8 @@ import java.util.List;
import java.util.Map;
import java.util.Collection;
+import org.springframework.util.ObjectUtils;
+
/**
* 等同物料信息Service业务层处理
*
@@ -32,6 +35,7 @@ import java.util.Collection;
public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoService {
private final BaseEqualMaterialInfoMapper baseMapper;
+ private final BaseMaterialInfoMapper baseMaterialInfoMapper;
/**
* 查询等同物料信息
@@ -41,7 +45,16 @@ public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoS
*/
@Override
public BaseEqualMaterialInfoVo queryById(Long equalMaterialInfoId){
- return baseMapper.selectVoById(equalMaterialInfoId);
+ BaseEqualMaterialInfoVo baseEqualMaterialInfoVo = baseMapper.selectVoById(equalMaterialInfoId);
+ if (!ObjectUtils.isEmpty(baseEqualMaterialInfoVo)) {
+ // 关联物料名称
+ BaseMaterialInfo baseMaterialInfo = baseMaterialInfoMapper.selectOne(Wrappers.lambdaQuery(BaseMaterialInfo.class)
+ .eq(BaseMaterialInfo::getMaterialId, baseEqualMaterialInfoVo.getMaterialId()));
+ if (!ObjectUtils.isEmpty(baseMaterialInfo)) {
+ baseEqualMaterialInfoVo.setMaterialName(baseMaterialInfo.getMaterialName());
+ }
+ }
+ return baseEqualMaterialInfoVo;
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialInfoServiceImpl.java
index 3ba89f5..c04469f 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialInfoServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -9,6 +10,8 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.mes.domain.BaseMaterialType;
+import org.dromara.mes.domain.BaseMeasurementUnitInfo;
import org.dromara.mes.domain.ProdBaseFactoryInfo;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.BaseMaterialInfoBo;
@@ -75,9 +78,21 @@ public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService {
MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseMaterialInfo.class)
.selectAll(BaseMaterialInfo.class)
+ // 关联查询工厂信息
.select(ProdBaseFactoryInfo::getFactoryName)
.leftJoin(ProdBaseFactoryInfo.class, ProdBaseFactoryInfo::getFactoryId, BaseMaterialInfo::getFactoryId)
+ //关联查询物料类型名称
+ .select(BaseMaterialType::getMatrialTypeName)
+ //注意"e":BaseMaterialType实体类中为matrialTypeId,BaseMaterialInfo实体类中为materialTypeId
+ .leftJoin(BaseMaterialType.class, BaseMaterialType::getMatrialTypeId, BaseMaterialInfo::getMaterialTypeId)
+
+/* //关联计量单位信息
+ .select(BaseMeasurementUnitInfo::getUnitName)
+ .leftJoin(BaseMeasurementUnitInfo.class, BaseMeasurementUnitInfo::getUnitId, BaseMaterialInfo::getMaterialUnitId)*/
+
+
+
.eq(bo.getMaterialId() != null, BaseMaterialInfo::getMaterialId, bo.getMaterialId())
.eq(StringUtils.isNotBlank(bo.getErpId()), BaseMaterialInfo::getErpId, bo.getErpId())
@@ -166,6 +181,16 @@ public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService {
*/
private void validEntityBeforeSave(BaseMaterialInfo entity){
//TODO 做一些数据校验,如唯一约束
+ if (StringUtils.isNotBlank(entity.getMaterialCode())) {
+ BaseMaterialInfoBo query = new BaseMaterialInfoBo();
+ query.setMaterialCode(entity.getMaterialCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ BaseMaterialInfo baseMaterialInfo = baseMapper.selectOne(lqw);
+ if (baseMaterialInfo != null
+ && !baseMaterialInfo.getMaterialId().equals(entity.getMaterialId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java
index 7a3ec4e..7ac3ae5 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java
@@ -1,5 +1,7 @@
package org.dromara.mes.service.impl;
+import org.apache.commons.lang3.ObjectUtils;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import com.github.yulichang.toolkit.JoinWrappers;
@@ -86,6 +88,17 @@ public class BaseMaterialTypeServiceImpl implements IBaseMaterialTypeService {
public Boolean insertByBo(BaseMaterialTypeBo bo) {
BaseMaterialType add = MapstructUtils.convert(bo, BaseMaterialType.class);
validEntityBeforeSave(add);
+
+ //获取父节点信息
+ BaseMaterialTypeVo query = baseMapper.selectVoById(bo.getParentId());
+ if (ObjectUtils.isNotEmpty(query)) {
+ //若父节点不为空,则将父节点的ancestors拼接父节点id拼接成ancestors
+ add.setAncestors(query.getAncestors() + "," + bo.getParentId());
+ }else{
+ //若父节点为空,则ancestors仅有父节点id
+ add.setAncestors(bo.getParentId().toString());
+ }
+
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setMatrialTypeId(add.getMatrialTypeId());
@@ -111,6 +124,15 @@ public class BaseMaterialTypeServiceImpl implements IBaseMaterialTypeService {
*/
private void validEntityBeforeSave(BaseMaterialType entity){
//TODO 做一些数据校验,如唯一约束
+ if (StringUtils.isNotBlank(entity.getMatrialTypeCode())) {
+ BaseMaterialTypeBo query = new BaseMaterialTypeBo();
+ query.setMatrialTypeCode(entity.getMatrialTypeCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ BaseMaterialType baseMaterialType = baseMapper.selectOne(lqw);
+ if (baseMaterialType != null && !baseMaterialType.getMatrialTypeId().equals(entity.getMatrialTypeId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
@@ -124,6 +146,14 @@ public class BaseMaterialTypeServiceImpl implements IBaseMaterialTypeService {
public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
+ for (Long id : ids) {
+ //监测删除的节点是否有子节点
+ BaseMaterialType query = new BaseMaterialType();
+ query.setParentId(id);
+ if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
+ throw new ServiceException("存在子节点,不允许删除");
+ }
+ }
}
return baseMapper.deleteByIds(ids) > 0;
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMeasurementUnitInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMeasurementUnitInfoServiceImpl.java
index 6494260..df7f9e1 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMeasurementUnitInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMeasurementUnitInfoServiceImpl.java
@@ -1,5 +1,7 @@
package org.dromara.mes.service.impl;
+import org.apache.commons.lang3.ObjectUtils;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import com.github.yulichang.toolkit.JoinWrappers;
@@ -79,6 +81,17 @@ public class BaseMeasurementUnitInfoServiceImpl implements IBaseMeasurementUnitI
public Boolean insertByBo(BaseMeasurementUnitInfoBo bo) {
BaseMeasurementUnitInfo add = MapstructUtils.convert(bo, BaseMeasurementUnitInfo.class);
validEntityBeforeSave(add);
+
+ // 获取父节点信息
+ BaseMeasurementUnitInfoVo query = baseMapper.selectVoById(bo.getParentId());
+ if (ObjectUtils.isNotEmpty(query)) {
+ //若父节点不为空,则将父节点的ancestors拼接父节点id拼接成ancestors
+ add.setAncestors(query.getAncestors() + "," + bo.getParentId());
+ }else{
+ //若父节点为空,则ancestors仅有父节点id
+ add.setAncestors(bo.getParentId().toString());
+ }
+
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setUnitId(add.getUnitId());
@@ -104,6 +117,16 @@ public class BaseMeasurementUnitInfoServiceImpl implements IBaseMeasurementUnitI
*/
private void validEntityBeforeSave(BaseMeasurementUnitInfo entity){
//TODO 做一些数据校验,如唯一约束
+ // 校验编码是否重复
+ if (StringUtils.isNotBlank(entity.getUnitCode())) {
+ BaseMeasurementUnitInfoBo query = new BaseMeasurementUnitInfoBo();
+ query.setUnitCode(entity.getUnitCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ BaseMeasurementUnitInfo baseMeasurementUnitInfo = baseMapper.selectOne(lqw);
+ if (baseMeasurementUnitInfo != null && !baseMeasurementUnitInfo.getUnitId().equals(entity.getUnitId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
@@ -117,6 +140,14 @@ public class BaseMeasurementUnitInfoServiceImpl implements IBaseMeasurementUnitI
public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
+ for (Long id : ids) {
+ // 判断是否存在子节点
+ BaseMeasurementUnitInfo query = new BaseMeasurementUnitInfo();
+ query.setParentId(id);
+ if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
+ throw new ServiceException("存在子节点,不允许删除");
+ }
+ }
}
return baseMapper.deleteByIds(ids) > 0;
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseShiftInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseShiftInfoServiceImpl.java
index cd0a182..e38f9ac 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseShiftInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseShiftInfoServiceImpl.java
@@ -3,6 +3,7 @@ package org.dromara.mes.service.impl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.val;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -130,6 +131,16 @@ public class BaseShiftInfoServiceImpl implements IBaseShiftInfoService {
*/
private void validEntityBeforeSave(BaseShiftInfo entity){
//TODO 做一些数据校验,如唯一约束
+ //校验编码是否重复
+ if (StringUtils.isNotBlank(entity.getShiftCode())) {
+ BaseShiftInfoBo query = new BaseShiftInfoBo();
+ query.setShiftCode(entity.getShiftCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ BaseShiftInfo baseShiftInfo = baseMapper.selectOne(lqw);
+ if (baseShiftInfo != null && !baseShiftInfo.getShiftId().equals(entity.getShiftId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseStructureBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseStructureBomServiceImpl.java
new file mode 100644
index 0000000..9ed72ad
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseStructureBomServiceImpl.java
@@ -0,0 +1,146 @@
+package org.dromara.mes.service.impl;
+
+import org.apache.commons.lang3.ObjectUtils;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.mes.domain.bo.BaseStructureBomBo;
+import org.dromara.mes.domain.vo.BaseStructureBomVo;
+import org.dromara.mes.domain.BaseStructureBom;
+import org.dromara.mes.mapper.BaseStructureBomMapper;
+import org.dromara.mes.service.IBaseStructureBomService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 结构BOM信息Service业务层处理
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@RequiredArgsConstructor
+@Service
+public class BaseStructureBomServiceImpl implements IBaseStructureBomService {
+
+ private final BaseStructureBomMapper baseMapper;
+
+ /**
+ * 查询结构BOM信息
+ *
+ * @param structureBomId 主键
+ * @return 结构BOM信息
+ */
+ @Override
+ public BaseStructureBomVo queryById(Long structureBomId){
+ return baseMapper.selectVoById(structureBomId);
+ }
+
+
+ /**
+ * 查询符合条件的结构BOM信息列表
+ *
+ * @param bo 查询条件
+ * @return 结构BOM信息列表
+ */
+ @Override
+ public List queryList(BaseStructureBomBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(BaseStructureBomBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseStructureBom.class)
+ .selectAll(BaseStructureBom.class)
+ .eq(bo.getStructureBomId() != null, BaseStructureBom::getStructureBomId, bo.getStructureBomId())
+ .eq(bo.getParentId() != null, BaseStructureBom::getParentId, bo.getParentId())
+ .eq(StringUtils.isNotBlank(bo.getMaterialTypeId()), BaseStructureBom::getMaterialTypeId, bo.getMaterialTypeId())
+ .like(StringUtils.isNotBlank(bo.getMaterialTypeName()), BaseStructureBom::getMaterialTypeName, bo.getMaterialTypeName())
+ .eq(StringUtils.isNotBlank(bo.getStructureBomDesc()), BaseStructureBom::getStructureBomDesc, bo.getStructureBomDesc())
+ .eq(StringUtils.isNotBlank(bo.getStructureBomVersion()), BaseStructureBom::getStructureBomVersion, bo.getStructureBomVersion())
+ .eq(StringUtils.isNotBlank(bo.getAncestors()), BaseStructureBom::getAncestors, bo.getAncestors())
+ .eq(bo.getLevel() != null, BaseStructureBom::getLevel, bo.getLevel())
+ .eq(bo.getTopFlag() != null, BaseStructureBom::getTopFlag, bo.getTopFlag())
+ .eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseStructureBom::getActiveFlag, bo.getActiveFlag())
+ .orderByDesc(BaseStructureBom::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增结构BOM信息
+ *
+ * @param bo 结构BOM信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BaseStructureBomBo bo) {
+ BaseStructureBom add = MapstructUtils.convert(bo, BaseStructureBom.class);
+ validEntityBeforeSave(add);
+
+ //获取父节点信息
+ BaseStructureBomVo query = baseMapper.selectVoById(bo.getParentId());
+ if (ObjectUtils.isNotEmpty(query)) {
+ //若父节点不为空,则将父节点的ancestors拼接父节点id拼接成ancestors
+ add.setAncestors(query.getAncestors() + "," + bo.getParentId());
+ }else{
+ //若父节点为空,则ancestors仅有父节点id
+ add.setAncestors(bo.getParentId().toString());
+ }
+
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setStructureBomId(add.getStructureBomId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改结构BOM信息
+ *
+ * @param bo 结构BOM信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BaseStructureBomBo bo) {
+ BaseStructureBom update = MapstructUtils.convert(bo, BaseStructureBom.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BaseStructureBom entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除结构BOM信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ for (Long id : ids) {
+ //监测删除的节点是否有子节点
+ BaseStructureBom query = new BaseStructureBom();
+ query.setParentId(id);
+ if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
+ throw new ServiceException("存在子节点,不允许删除");
+ }
+ }
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseSupplierInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseSupplierInfoServiceImpl.java
index 9185a33..dedfae4 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseSupplierInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseSupplierInfoServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -121,6 +122,16 @@ public class BaseSupplierInfoServiceImpl implements IBaseSupplierInfoService {
*/
private void validEntityBeforeSave(BaseSupplierInfo entity){
//TODO 做一些数据校验,如唯一约束
+ //校验编码是否重复
+ if (StringUtils.isNotBlank(entity.getSupplierCode())) {
+ BaseSupplierInfoBo query = new BaseSupplierInfoBo();
+ query.setSupplierCode(entity.getSupplierCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ BaseSupplierInfo baseSupplierInfo = baseMapper.selectOne(lqw);
+ if (baseSupplierInfo != null && !baseSupplierInfo.getSupplierId().equals(entity.getSupplierId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseToolingInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseToolingInfoServiceImpl.java
index 687e538..4398e9a 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseToolingInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseToolingInfoServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -122,6 +123,16 @@ public class BaseToolingInfoServiceImpl implements IBaseToolingInfoService {
*/
private void validEntityBeforeSave(BaseToolingInfo entity){
//TODO 做一些数据校验,如唯一约束
+ // 校验编码是否已存在
+ if (StringUtils.isNotBlank(entity.getToolingCode())) {
+ BaseToolingInfoBo query = new BaseToolingInfoBo();
+ query.setToolingCode(entity.getToolingCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ BaseToolingInfo baseToolingInfo = baseMapper.selectOne(lqw);
+ if (baseToolingInfo != null && !baseToolingInfo.getToolingId().equals(entity.getToolingId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseFactoryInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseFactoryInfoServiceImpl.java
index 73f17fb..3ba43be 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseFactoryInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseFactoryInfoServiceImpl.java
@@ -1,5 +1,7 @@
package org.dromara.mes.service.impl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -118,6 +120,15 @@ public class ProdBaseFactoryInfoServiceImpl implements IProdBaseFactoryInfoServi
*/
private void validEntityBeforeSave(ProdBaseFactoryInfo entity){
//TODO 做一些数据校验,如唯一约束
+ if (StringUtils.isNotBlank(entity.getFactoryCode())) {
+ ProdBaseFactoryInfoBo query = new ProdBaseFactoryInfoBo();
+ query.setFactoryCode(entity.getFactoryCode());
+ LambdaQueryWrapper lqw = buildQueryWrapper(query);
+ ProdBaseFactoryInfo baseProdBaseFactoryInfo = baseMapper.selectOne(lqw);
+ if (baseProdBaseFactoryInfo != null && !baseProdBaseFactoryInfo.getFactoryId().equals(entity.getFactoryId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java
new file mode 100644
index 0000000..677a04b
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java
@@ -0,0 +1,156 @@
+package org.dromara.mes.service.impl;
+
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.mes.domain.ProdBaseProcessInfo;
+import org.dromara.mes.domain.ProdBaseStationInfo;
+import org.springframework.stereotype.Service;
+import org.dromara.mes.domain.bo.ProdBaseMachineInfoBo;
+import org.dromara.mes.domain.vo.ProdBaseMachineInfoVo;
+import org.dromara.mes.domain.ProdBaseMachineInfo;
+import org.dromara.mes.mapper.ProdBaseMachineInfoMapper;
+import org.dromara.mes.service.IProdBaseMachineInfoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 机台信息Service业务层处理
+ *
+ * @author zangch
+ * @date 2025-01-20
+ */
+@RequiredArgsConstructor
+@Service
+public class ProdBaseMachineInfoServiceImpl implements IProdBaseMachineInfoService {
+
+ private final ProdBaseMachineInfoMapper baseMapper;
+
+ /**
+ * 查询机台信息
+ *
+ * @param machineId 主键
+ * @return 机台信息
+ */
+ @Override
+ public ProdBaseMachineInfoVo queryById(Long machineId){
+ return baseMapper.selectVoById(machineId);
+ }
+
+ /**
+ * 分页查询机台信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 机台信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ProdBaseMachineInfoBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的机台信息列表
+ *
+ * @param bo 查询条件
+ * @return 机台信息列表
+ */
+ @Override
+ public List queryList(ProdBaseMachineInfoBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(ProdBaseMachineInfoBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseMachineInfo.class)
+ .selectAll(ProdBaseMachineInfo.class)
+ .leftJoin(ProdBaseStationInfo.class, ProdBaseStationInfo::getMachineId, ProdBaseMachineInfo::getMachineId)
+ .leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseStationInfo::getProcessId)
+ .eq(bo.getMachineId() != null, ProdBaseMachineInfo::getMachineId, bo.getMachineId())
+ .eq(StringUtils.isNotBlank(bo.getMachineCode()), ProdBaseMachineInfo::getMachineCode, bo.getMachineCode())
+ .like(StringUtils.isNotBlank(bo.getMachineName()), ProdBaseMachineInfo::getMachineName, bo.getMachineName())
+ .eq(StringUtils.isNotBlank(bo.getAssetNumber()), ProdBaseMachineInfo::getAssetNumber, bo.getAssetNumber())
+ .eq(StringUtils.isNotBlank(bo.getMachineLocation()), ProdBaseMachineInfo::getMachineLocation, bo.getMachineLocation())
+ .eq(StringUtils.isNotBlank(bo.getMachineType()), ProdBaseMachineInfo::getMachineType, bo.getMachineType())
+ .eq(StringUtils.isNotBlank(bo.getMachineSpec()), ProdBaseMachineInfo::getMachineSpec, bo.getMachineSpec())
+ .eq(StringUtils.isNotBlank(bo.getSupplierId()), ProdBaseMachineInfo::getSupplierId, bo.getSupplierId())
+ .eq(StringUtils.isNotBlank(bo.getMachineStatus()), ProdBaseMachineInfo::getMachineStatus, bo.getMachineStatus())
+ .eq(StringUtils.isNotNull(bo.getProcessId()), ProdBaseProcessInfo::getProcessId, bo.getProcessId())
+ .orderByAsc(ProdBaseMachineInfo::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增机台信息
+ *
+ * @param bo 机台信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(ProdBaseMachineInfoBo bo) {
+ ProdBaseMachineInfo add = MapstructUtils.convert(bo, ProdBaseMachineInfo.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setMachineId(add.getMachineId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改机台信息
+ *
+ * @param bo 机台信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(ProdBaseMachineInfoBo bo) {
+ ProdBaseMachineInfo update = MapstructUtils.convert(bo, ProdBaseMachineInfo.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ProdBaseMachineInfo entity){
+ //TODO 做一些数据校验,如唯一约束
+ if (StringUtils.isNotBlank(entity.getMachineCode())) {
+ ProdBaseMachineInfoBo query = new ProdBaseMachineInfoBo();
+ query.setMachineCode(entity.getMachineCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ ProdBaseMachineInfo baseProdBaseMachineInfo = baseMapper.selectOne(lqw);
+ if (baseProdBaseMachineInfo != null
+ && !baseProdBaseMachineInfo.getMachineId().equals(entity.getMachineId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
+ }
+
+ /**
+ * 校验并批量删除机台信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessInfoServiceImpl.java
index d231564..16456f4 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessInfoServiceImpl.java
@@ -1,5 +1,8 @@
package org.dromara.mes.service.impl;
+import cn.hutool.core.util.ObjectUtil;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -8,13 +11,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.mes.domain.ProdBaseProcessUser;
+import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
+import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
+import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
+import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
+import org.dromara.mes.mapper.ProdBaseProcessProdLineMapper;
+import org.dromara.mes.mapper.ProdBaseProcessUserMapper;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.mes.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.mes.mapper.ProdBaseProcessInfoMapper;
import org.dromara.mes.service.IProdBaseProcessInfoService;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -31,6 +45,16 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
private final ProdBaseProcessInfoMapper baseMapper;
+ private final ProdBaseProcessUserServiceImpl prodBaseProcessUserService;
+
+ private final ProdBaseProcessProdLineServiceImpl prodBaseProcessProdlineService;
+
+ private final ProdBaseProcessUserMapper prodBaseProcessUserMapper;
+ private final ProdBaseProcessProdLineMapper prodBaseProcessProdlineMapper;
+
+
+
+
/**
* 查询工序信息
*
@@ -39,7 +63,23 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
*/
@Override
public ProdBaseProcessInfoVo queryById(Long processId){
- return baseMapper.selectVoById(processId);
+ ProdBaseProcessInfoVo prodBaseProcessInfoVo = baseMapper.selectVoById(processId);
+ if (ObjectUtil.isNotEmpty(prodBaseProcessInfoVo)) {
+ // 关联人员
+ ProdBaseProcessUserBo prodBaseProcessUserBo = new ProdBaseProcessUserBo();
+ prodBaseProcessUserBo.setProcessId(processId);
+ List prodBaseProcessUserVoList = prodBaseProcessUserService.queryList(prodBaseProcessUserBo);
+ // 关联人员若有数据,则赋值给prodBaseProcessInfoVo
+ if(ObjectUtil.isNotEmpty(prodBaseProcessUserVoList)) prodBaseProcessInfoVo.setProdBaseProcessUserVoList(prodBaseProcessUserVoList);
+
+ // 关联产线
+ ProdBaseProcessProdLineBo prodBaseProcessProdlineBo = new ProdBaseProcessProdLineBo();
+ prodBaseProcessProdlineBo.setProcessId(processId);
+ List prodBaseProcessProdlineVoList = prodBaseProcessProdlineService.queryList(prodBaseProcessProdlineBo);
+ // 关联产线若有数据,则赋值给prodBaseProcessInfoVo
+ if(ObjectUtil.isNotEmpty(prodBaseProcessProdlineVoList)) prodBaseProcessInfoVo.setProdBaseProcessProdlineVoList(prodBaseProcessProdlineVoList);
+ }
+ return prodBaseProcessInfoVo;
}
/**
@@ -72,6 +112,17 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
Map params = bo.getParams();
MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseProcessInfo.class)
.selectAll(ProdBaseProcessInfo.class)
+
+/* // 关联人员
+ .select(ProdBaseProcessUser::getUserId)
+ .select(ProdBaseProcessUser::getUserName)
+ .leftJoin(ProdBaseProcessUser.class, ProdBaseProcessUser::getProcessId, ProdBaseProcessInfo::getProcessId)
+
+ // 关联产线
+ .select(ProdBaseProcessProdLine::getProdLineId)
+ .leftJoin(ProdBaseProcessProdLine.class, ProdBaseProcessProdLine::getProcessId, ProdBaseProcessInfo::getProcessId)*/
+
+
.eq(bo.getProcessId() != null, ProdBaseProcessInfo::getProcessId, bo.getProcessId())
.eq(StringUtils.isNotBlank(bo.getProcessCode()), ProdBaseProcessInfo::getProcessCode, bo.getProcessCode())
.like(StringUtils.isNotBlank(bo.getProcessName()), ProdBaseProcessInfo::getProcessName, bo.getProcessName())
@@ -106,18 +157,91 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
* @param bo 工序信息
* @return 是否修改成功
*/
+ @Transactional
@Override
public Boolean updateByBo(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
+
+ String tenantId = LoginHelper.getTenantId();
+ Long deptId = LoginHelper.getDeptId();
+ Long userId = LoginHelper.getUserId();
+ if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);
+ if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);
+ if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);
+ update.setCreateTime(DateUtils.getNowDate());
+
+
validEntityBeforeSave(update);
+
+ List prodBaseProcessProdlineList = new ArrayList<>();
+ List prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList();
+ if(ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)){
+ prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class);
+ update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList);
+ }
+ baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId());
+ try {
+ insertProdBaseProcessProdline(update);
+ }catch (Exception e){
+ throw new ServiceException("该工序已关联产线!");
+ }
return baseMapper.updateById(update) > 0;
}
+ /**
+ * 修改工序信息关联人员
+ *
+ * @param bo 工序信息
+ * @return 是否修改成功
+ */
+ @Transactional
+ @Override
+ public Boolean updateByBoUser(ProdBaseProcessInfoBo bo) {
+ ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
+
+ String tenantId = LoginHelper.getTenantId();// 获取当前租户ID
+ Long deptId = LoginHelper.getDeptId();// 获取当前部门ID
+ Long userId = LoginHelper.getUserId();// 获取当前用户ID
+ if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);// 设置当前租户ID
+ if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);// 设置当前部门ID
+ if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);// 设置当前用户ID
+ update.setCreateTime(DateUtils.getNowDate());// 设置当前时间
+
+ validEntityBeforeSave(update);
+
+ List prodBaseProcessUserList = new ArrayList<>();
+ List prodBaseProcessUserBoList = bo.getProdBaseProcessUserBoList();
+ if(ObjectUtil.isNotEmpty(prodBaseProcessUserBoList)){
+ prodBaseProcessUserList = MapstructUtils.convert(prodBaseProcessUserBoList, ProdBaseProcessUser.class);
+ }
+ baseMapper.deleteProdBaseProcessUserByProcessId(update.getProcessId());
+ update.setProdBaseProcessUserList(prodBaseProcessUserList);
+ try {
+ insertProdBaseProcessUser(update);
+ }catch (Exception e){
+ System.out.println(e.getMessage());
+ throw new ServiceException("该工序已关联用户!");
+ }
+ return baseMapper.updateById(update) > 0;
+ }
+
+
+
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ProdBaseProcessInfo entity){
//TODO 做一些数据校验,如唯一约束
+ // 判断编码是否重复
+ if (StringUtils.isNotBlank(entity.getProcessCode())) {
+ ProdBaseProcessInfoBo query = new ProdBaseProcessInfoBo();
+ query.setProcessCode(entity.getProcessCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ ProdBaseProcessInfo prodBaseProcessInfo = baseMapper.selectOne(lqw);
+ if (prodBaseProcessInfo != null && !prodBaseProcessInfo.getProcessId().equals(entity.getProcessId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
@@ -134,4 +258,53 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+ /**
+ * 新增工序关联产线信息
+ *
+ * @param prodBaseProcessInfo 工序信息对象
+ */
+ public void insertProdBaseProcessProdline(ProdBaseProcessInfo prodBaseProcessInfo) {
+ List prodBaseProcessProdlineList = prodBaseProcessInfo.getProdBaseProcessProdlineList();
+ Long processId = prodBaseProcessInfo.getProcessId();
+ if (ObjectUtil.isNotNull(prodBaseProcessProdlineList)) {
+ List list = new ArrayList();
+ for (ProdBaseProcessProdLine prodBaseProcessProdline : prodBaseProcessProdlineList) {
+ prodBaseProcessProdline.setCreateBy(prodBaseProcessInfo.getCreateBy());
+ prodBaseProcessProdline.setCreateTime(prodBaseProcessInfo.getCreateTime());
+ prodBaseProcessProdline.setCreateDept(prodBaseProcessInfo.getCreateDept());
+ prodBaseProcessProdline.setTenantId(prodBaseProcessInfo.getTenantId());
+ list.add(prodBaseProcessProdline);
+ }
+ if (!list.isEmpty()) {
+ prodBaseProcessProdlineMapper.insertBatch(list);
+ }
+ }
+ }
+ /**
+ * 新增工序关联用户信息
+ *
+ * @param prodBaseProcessInfo 工序信息对象
+ */
+ public void insertProdBaseProcessUser(ProdBaseProcessInfo prodBaseProcessInfo) {
+ List prodBaseProcessUserList = prodBaseProcessInfo.getProdBaseProcessUserList();
+ Long processId = prodBaseProcessInfo.getProcessId();
+ if (ObjectUtil.isNotNull(prodBaseProcessUserList)) {
+ List list = new ArrayList();
+ for (ProdBaseProcessUser prodBaseProcessUser : prodBaseProcessUserList) {
+ prodBaseProcessUser.setCreateBy(prodBaseProcessInfo.getCreateBy());
+ prodBaseProcessUser.setCreateTime(prodBaseProcessInfo.getCreateTime());
+ prodBaseProcessUser.setCreateDept(prodBaseProcessInfo.getCreateDept());
+ prodBaseProcessUser.setTenantId(prodBaseProcessInfo.getTenantId());
+
+ list.add(prodBaseProcessUser);
+ }
+ if (!list.isEmpty()) {
+ prodBaseProcessUserMapper.insertBatch(list);
+ }
+ }
+ }
+
+
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessProdLineServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessProdLineServiceImpl.java
new file mode 100644
index 0000000..f2e8520
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessProdLineServiceImpl.java
@@ -0,0 +1,133 @@
+package org.dromara.mes.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
+import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
+import org.dromara.mes.domain.ProdBaseProcessProdLine;
+import org.dromara.mes.mapper.ProdBaseProcessProdLineMapper;
+import org.dromara.mes.service.IProdBaseProcessProdLineService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 工序关联产线Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-01-09
+ */
+@RequiredArgsConstructor
+@Service
+public class ProdBaseProcessProdLineServiceImpl implements IProdBaseProcessProdLineService {
+
+ private final ProdBaseProcessProdLineMapper baseMapper;
+
+ /**
+ * 查询工序关联产线
+ *
+ * @param processId 主键
+ * @return 工序关联产线
+ */
+ @Override
+ public ProdBaseProcessProdLineVo queryById(Long processId){
+ return baseMapper.selectVoById(processId);
+ }
+
+ /**
+ * 分页查询工序关联产线列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 工序关联产线分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ProdBaseProcessProdLineBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的工序关联产线列表
+ *
+ * @param bo 查询条件
+ * @return 工序关联产线列表
+ */
+ @Override
+ public List queryList(ProdBaseProcessProdLineBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(ProdBaseProcessProdLineBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseProcessProdLine.class)
+ .selectAll(ProdBaseProcessProdLine.class)
+ .eq(bo.getProcessId() != null, ProdBaseProcessProdLine::getProcessId, bo.getProcessId())
+ .eq(bo.getProdLineId() != null, ProdBaseProcessProdLine::getProdLineId, bo.getProdLineId())
+ .orderByDesc(ProdBaseProcessProdLine::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增工序关联产线
+ *
+ * @param bo 工序关联产线
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(ProdBaseProcessProdLineBo bo) {
+ ProdBaseProcessProdLine add = MapstructUtils.convert(bo, ProdBaseProcessProdLine.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setProcessId(add.getProcessId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改工序关联产线
+ *
+ * @param bo 工序关联产线
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(ProdBaseProcessProdLineBo bo) {
+ ProdBaseProcessProdLine update = MapstructUtils.convert(bo, ProdBaseProcessProdLine.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ProdBaseProcessProdLine entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除工序关联产线信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessUserServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessUserServiceImpl.java
new file mode 100644
index 0000000..5f48228
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProcessUserServiceImpl.java
@@ -0,0 +1,134 @@
+package org.dromara.mes.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
+import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
+import org.dromara.mes.domain.ProdBaseProcessUser;
+import org.dromara.mes.mapper.ProdBaseProcessUserMapper;
+import org.dromara.mes.service.IProdBaseProcessUserService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 工序关联人员Service业务层处理
+ *
+ * @author zangch
+ * @date 2025-01-09
+ */
+@RequiredArgsConstructor
+@Service
+public class ProdBaseProcessUserServiceImpl implements IProdBaseProcessUserService {
+
+ private final ProdBaseProcessUserMapper baseMapper;
+
+ /**
+ * 查询工序关联人员
+ *
+ * @param processId 主键
+ * @return 工序关联人员
+ */
+ @Override
+ public ProdBaseProcessUserVo queryById(Long processId){
+ return baseMapper.selectVoById(processId);
+ }
+
+ /**
+ * 分页查询工序关联人员列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 工序关联人员分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ProdBaseProcessUserBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的工序关联人员列表
+ *
+ * @param bo 查询条件
+ * @return 工序关联人员列表
+ */
+ @Override
+ public List queryList(ProdBaseProcessUserBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(ProdBaseProcessUserBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseProcessUser.class)
+ .selectAll(ProdBaseProcessUser.class)
+ .eq(bo.getProcessId() != null, ProdBaseProcessUser::getProcessId, bo.getProcessId())
+ .eq(bo.getUserId() != null, ProdBaseProcessUser::getUserId, bo.getUserId())
+ .like(StringUtils.isNotBlank(bo.getUserName()), ProdBaseProcessUser::getUserName, bo.getUserName())
+ .orderByDesc(ProdBaseProcessUser::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增工序关联人员
+ *
+ * @param bo 工序关联人员
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(ProdBaseProcessUserBo bo) {
+ ProdBaseProcessUser add = MapstructUtils.convert(bo, ProdBaseProcessUser.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setProcessId(add.getProcessId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改工序关联人员
+ *
+ * @param bo 工序关联人员
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(ProdBaseProcessUserBo bo) {
+ ProdBaseProcessUser update = MapstructUtils.convert(bo, ProdBaseProcessUser.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ProdBaseProcessUser entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除工序关联人员信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProdLineInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProdLineInfoServiceImpl.java
index e03bc02..c6029fb 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProdLineInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseProdLineInfoServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -121,6 +122,17 @@ public class ProdBaseProdLineInfoServiceImpl implements IProdBaseProdLineInfoSer
*/
private void validEntityBeforeSave(ProdBaseProdLineInfo entity){
//TODO 做一些数据校验,如唯一约束
+ // 校验编码是否重复
+ if (StringUtils.isNotBlank(entity.getProdLineCode())) {
+ ProdBaseProdLineInfoBo query = new ProdBaseProdLineInfoBo();
+ query.setProdLineCode(entity.getProdLineCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ ProdBaseProdLineInfo prodBaseProdLineInfo = baseMapper.selectOne(lqw);
+ if (prodBaseProdLineInfo != null
+ && !prodBaseProdLineInfo.getProdLineId().equals(entity.getProdLineId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteProcessServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteProcessServiceImpl.java
index c99fcd6..cd99740 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteProcessServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteProcessServiceImpl.java
@@ -9,6 +9,7 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseRouteProcessBo;
import org.dromara.mes.domain.vo.ProdBaseRouteProcessVo;
@@ -32,6 +33,8 @@ public class ProdBaseRouteProcessServiceImpl implements IProdBaseRouteProcessSer
private final ProdBaseRouteProcessMapper baseMapper;
+ private final ProdBaseRouteProcessMapper prodBaseRouteProcessMapper;
+
/**
* 查询工艺路线组成信息
*
@@ -73,6 +76,11 @@ public class ProdBaseRouteProcessServiceImpl implements IProdBaseRouteProcessSer
Map params = bo.getParams();
MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseRouteProcess.class)
.selectAll(ProdBaseRouteProcess.class)
+
+ .select(ProdBaseProcessInfo::getProcessName)
+ .select(ProdBaseProcessInfo::getProcessType)
+ .leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseRouteProcess::getProcessId)
+
.eq(bo.getRouteProcessId() != null, ProdBaseRouteProcess::getRouteProcessId, bo.getRouteProcessId())
.eq(bo.getRouteId() != null, ProdBaseRouteProcess::getRouteId, bo.getRouteId())
.eq(bo.getProcessId() != null, ProdBaseRouteProcess::getProcessId, bo.getProcessId())
@@ -132,4 +140,17 @@ public class ProdBaseRouteProcessServiceImpl implements IProdBaseRouteProcessSer
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+ /**
+ * 查询工艺路线组成信息列表,Join mes_base_process
+ *
+ * @param prodBaseRouteProcess 工艺路线组成信息
+ * @return 工艺路线组成信息
+ */
+ @Override
+ public List selectProdBaseRouteProcessJoinList(ProdBaseRouteProcess prodBaseRouteProcess)
+ {
+ return prodBaseRouteProcessMapper.selectProdBaseRouteProcessJoinList(prodBaseRouteProcess);
+ }
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java
index 359c4fa..530dec0 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java
@@ -166,22 +166,22 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService {
public void insertProdBaseRouteProcess(ProdBaseRouteBo bo)
{
// 获取工艺路线中的工艺步骤列表
- List mesBaseRouteProcessList = bo.getRouteProcessBoList();
+ List prodBaseRouteProcessList = bo.getRouteProcessBoList();
// 获取工艺路线ID
Long routeId = bo.getRouteId();
// 如果工艺步骤列表不为空
- if (ObjectUtil.isNotNull(mesBaseRouteProcessList))
+ if (ObjectUtil.isNotNull(prodBaseRouteProcessList))
{
// 创建一个新的工艺步骤列表
List list = new ArrayList();
// 遍历每一个工艺步骤
- for (ProdBaseRouteProcessBo mesBaseRouteProcess : mesBaseRouteProcessList)
+ for (ProdBaseRouteProcessBo prodBaseRouteProcess : prodBaseRouteProcessList)
{
// 设置工艺步骤的工艺路线ID
- mesBaseRouteProcess.setRouteId(routeId);
+ prodBaseRouteProcess.setRouteId(routeId);
// 将工艺步骤添加到新的列表中
- list.add(mesBaseRouteProcess);
+ list.add(prodBaseRouteProcess);
}
// 如果新的工艺步骤列表不为空
if (!list.isEmpty())
@@ -209,7 +209,7 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService {
* @return 工艺路线
*/
@Override
- public ProdBaseRouteVo selectMesBaseRouteByRouteId(Long routeId)
+ public ProdBaseRouteVo selectProdBaseRouteByRouteId(Long routeId)
{
return routeMapper.selectProdBaseRouteByRouteId(routeId);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java
index 5e173e3..6ff215c 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java
@@ -9,6 +9,7 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.mes.domain.ProdBaseMachineInfo;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseStationInfoBo;
@@ -75,16 +76,19 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi
MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseStationInfo.class)
.selectAll(ProdBaseStationInfo.class)
.select(ProdBaseProcessInfo::getProcessName)
+ .select(ProdBaseMachineInfo::getMachineName)
.leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseStationInfo::getProcessId)
+ .leftJoin(ProdBaseMachineInfo.class, ProdBaseMachineInfo::getMachineId, ProdBaseStationInfo::getMachineId)
.eq(bo.getStationId() != null, ProdBaseStationInfo::getStationId, bo.getStationId())
.eq(StringUtils.isNotBlank(bo.getStationCode()), ProdBaseStationInfo::getStationCode, bo.getStationCode())
.like(StringUtils.isNotBlank(bo.getStationName()), ProdBaseStationInfo::getStationName, bo.getStationName())
.eq(StringUtils.isNotBlank(bo.getStationType()), ProdBaseStationInfo::getStationType, bo.getStationType())
.eq(bo.getProcessId() != null, ProdBaseStationInfo::getProcessId, bo.getProcessId())
+ .eq(bo.getMachineId() != null, ProdBaseStationInfo::getMachineId, bo.getMachineId())
.like(StringUtils.isNotBlank(bo.getAgvCode()), ProdBaseStationInfo::getAgvCode, bo.getAgvCode())
.like(StringUtils.isNotBlank(bo.getIpAddress()), ProdBaseStationInfo::getIpAddress, bo.getIpAddress())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseStationInfo::getActiveFlag, bo.getActiveFlag())
- .orderByDesc(ProdBaseStationInfo::getCreateTime);
+ .orderByAsc(ProdBaseStationInfo::getCreateTime);
return lqw;
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseWorkshopInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseWorkshopInfoServiceImpl.java
index 73c96f6..93b4ded 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseWorkshopInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseWorkshopInfoServiceImpl.java
@@ -2,6 +2,7 @@ package org.dromara.mes.service.impl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -118,6 +119,16 @@ public class ProdBaseWorkshopInfoServiceImpl implements IProdBaseWorkshopInfoSer
*/
private void validEntityBeforeSave(ProdBaseWorkshopInfo entity) {
//TODO 做一些数据校验,如唯一约束
+ // 校验编码是否重复
+ if (StringUtils.isNotBlank(entity.getWorkshopCode())) {
+ ProdBaseWorkshopInfoBo query = new ProdBaseWorkshopInfoBo();
+ query.setWorkshopCode(entity.getWorkshopCode());
+ MPJLambdaWrapper lqw = buildQueryWrapper(query);
+ ProdBaseWorkshopInfo prodBaseWorkshopInfo = baseMapper.selectOne(lqw);
+ if (prodBaseWorkshopInfo != null && !prodBaseWorkshopInfo.getWorkshopId().equals(entity.getWorkshopId())) {
+ throw new ServiceException("编码已存在");
+ }
+ }
}
/**
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java
index 344669d..6767f87 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java
@@ -15,6 +15,14 @@ import org.dromara.mes.service.IProdMaterialBomService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
+import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.springframework.transaction.annotation.Transactional;
+import cn.hutool.core.collection.CollUtil;
+import org.dromara.common.core.exception.ServiceException;
+
/**
* 物料BOM信息Service业务层处理
@@ -83,6 +91,13 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService {
*/
@Override
public Boolean insertByBo(ProdMaterialBomBo bo) {
+ isTopFlag(bo);
+ ProdMaterialBomVo info = baseMapper.selectVoById(bo.getParentId());
+ if (StringUtils.isNull(info)) {
+ bo.setAncestors(bo.getParentId().toString());
+ } else {
+ bo.setAncestors(info.getAncestors() + "," + bo.getParentId());
+ }
ProdMaterialBom add = MapstructUtils.convert(bo, ProdMaterialBom.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
@@ -100,6 +115,11 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService {
*/
@Override
public Boolean updateByBo(ProdMaterialBomBo bo) {
+ isTopFlag(bo);
+ ProdMaterialBomVo info = baseMapper.selectVoById(bo.getParentId());
+ if (StringUtils.isNotNull(info)) {
+ bo.setAncestors(info.getAncestors() + "," + bo.getParentId());
+ }
ProdMaterialBom update = MapstructUtils.convert(bo, ProdMaterialBom.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
@@ -126,4 +146,105 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService {
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+ /**
+ * SET顶级标识
+ * 判断是否顶级BOM
+ *
+ * @param mesMaterialBom
+ */
+ private void isTopFlag(ProdMaterialBomBo mesMaterialBom) {
+ // 顶级标识1=是,0=否
+ if (StringUtils.isNull(mesMaterialBom.getParentId()) || mesMaterialBom.getParentId() == 0L) {
+ mesMaterialBom.setTopFlag(1L);
+ } else {
+ mesMaterialBom.setTopFlag(0L);
+ }
+ }
+
+
+
+ /**
+ * 根据结构BOM批量插入物料清单BOM。
+ * @param boList 需要插入的物料清单BOM列表。
+ * @return 如果所有节点都成功插入,返回true;否则抛出异常。
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean insertBatchByBoList(List boList) {
+ if (CollUtil.isEmpty(boList)) {
+ return false;
+ }
+
+ try {
+ // 按层级分组(根据parentId分组)
+ Map> levelMap = new HashMap<>();
+ // 1. 首先找出所有顶级节点
+ List topNodes = boList.stream()
+ .filter(bo -> bo.getParentId() == null || bo.getParentId() == 0)
+ .collect(Collectors.toList());
+ // 2. 其他节点按parentId分组
+ Map> childrenMap = boList.stream()
+ .filter(bo -> bo.getParentId() != null && bo.getParentId() != 0)
+ .collect(Collectors.groupingBy(bo -> Math.abs(bo.getParentId())));
+ // 存储临时ID到实际ID的映射
+ Map idMapping = new HashMap<>();
+ // 3. 优先处理顶级节点,设置基础数据并插入
+ for (ProdMaterialBomBo topNode : topNodes) {
+ Long tempId = Math.abs(topNode.getMaterialBomId());
+ topNode.setMaterialBomId(null); // 清除临时ID
+ topNode.setParentId(0L); // 确保顶级节点parentId为0
+ topNode.setAncestors("0"); // 顶级节点的ancestors为"0"
+ topNode.setTopFlag(1L); // 设置顶级节点的topFlag为1
+ // 插入顶级节点
+ ProdMaterialBom add = MapstructUtils.convert(topNode, ProdMaterialBom.class);
+ if (baseMapper.insert(add) <= 0) {
+ throw new ServiceException("插入顶级节点失败");
+ }
+ // 记录映射关系
+ idMapping.put(tempId, add.getMaterialBomId());
+ }
+ // 4. 处理子节点,直到所有节点都处理完
+ while (!childrenMap.isEmpty()) {
+ // 找出当前可以处理的节点(父节点已经在idMapping中的节点)
+ List processableParentIds = new ArrayList<>(childrenMap.keySet());
+ boolean processed = false;// 标记本轮是否有节点被处理
+ for (Long parentTempId : processableParentIds) {
+ // 检查父节点是否已处理
+ if (idMapping.containsKey(parentTempId)) {
+ List children = childrenMap.remove(parentTempId);
+ // 处理同一父节点的所有子节点
+ for (ProdMaterialBomBo child : children) {
+ Long childTempId = Math.abs(child.getMaterialBomId());
+ // 设置实际的父节点ID
+ child.setMaterialBomId(null);// 清除临时ID
+ child.setTopFlag(0L); // 设置非顶级节点的topFlag为0
+ Long actualParentId = idMapping.get(parentTempId);
+ child.setParentId(actualParentId);
+ // 设置祖级列表
+ ProdMaterialBom parent = baseMapper.selectById(actualParentId);
+ child.setAncestors(parent.getAncestors() + "," + actualParentId);
+
+ // 插入子节点
+ ProdMaterialBom add = MapstructUtils.convert(child, ProdMaterialBom.class);
+ if (baseMapper.insert(add) <= 0) {
+ throw new ServiceException("插入子节点失败");
+ }
+
+ // 记录映射关系
+ idMapping.put(childTempId, add.getMaterialBomId());
+ }
+ processed = true;
+ }
+ }
+ // 如果一轮循环没有处理任何节点,说明数据有问题
+ if (!processed && !childrenMap.isEmpty()) {
+ throw new ServiceException("存在无法处理的节点,可能是父节点丢失");
+ }
+ }
+ return true;
+ } catch (Exception e) {
+ throw new ServiceException("批量插入失败: " + e.getMessage());
+ }
+ }
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java
index ae7f285..4dcb0ef 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
+import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -7,13 +8,14 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.mes.domain.*;
+import org.dromara.mes.domain.vo.BaseMaterialInfoVo;
+import org.dromara.mes.mapper.*;
+import org.dromara.system.api.RemoteCodeRuleService;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
-import org.dromara.mes.domain.ProdOrderInfo;
-import org.dromara.mes.mapper.ProdOrderInfoMapper;
import org.dromara.mes.service.IProdOrderInfoService;
import java.util.List;
@@ -32,6 +34,17 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
private final ProdOrderInfoMapper baseMapper;
+ private final ProdBaseProdLineInfoMapper prodBaseProdLineInfoMapper;
+
+ private final ProdBaseRouteMapper prodBaseRouteMapper;
+
+ private final ProdBaseProcessInfoMapper prodBaseProcessInfoMapper;
+
+ private final BaseMaterialInfoMapper baseMaterialInfoMapper;
+
+ @DubboReference
+ private final RemoteCodeRuleService remoteCodeRuleService;
+
/**
* 查询生产订单信息
*
@@ -40,7 +53,31 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
*/
@Override
public ProdOrderInfoVo queryById(Long productOrderId){
- return baseMapper.selectVoById(productOrderId);
+ ProdOrderInfoVo prodOrderInfoVo = baseMapper.selectVoById(productOrderId);
+ //根据dispatchType查询对应的名称
+ String dispatchType = prodOrderInfoVo.getDispatchType();
+ switch (dispatchType) {
+ // 1:产线 2:工艺路线 3:工序
+ case "1":
+ prodOrderInfoVo.setDispatchName(prodBaseProdLineInfoMapper.selectVoById(prodOrderInfoVo.getDispatchId()).getProdLineName());
+ break;
+ case "2":
+ prodOrderInfoVo.setDispatchName(prodBaseRouteMapper.selectVoById(prodOrderInfoVo.getDispatchId()).getRouteName());
+ break;
+ case "3":
+ prodOrderInfoVo.setDispatchName(prodBaseProcessInfoMapper.selectVoById(prodOrderInfoVo.getDispatchId()).getProcessName());
+ break;
+ default:
+ break;
+ }
+ //根据materialId查询对应的名称和编码
+ Long materialId = prodOrderInfoVo.getMaterialId();
+ if (materialId != null) {
+ BaseMaterialInfoVo baseMaterialInfo = baseMaterialInfoMapper.selectVoById(materialId);
+ prodOrderInfoVo.setMaterialName(baseMaterialInfo.getMaterialName());
+ prodOrderInfoVo.setMaterialCode(baseMaterialInfo.getMaterialCode());
+ }
+ return prodOrderInfoVo;
}
/**
@@ -53,7 +90,7 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
@Override
public TableDataInfo queryPageList(ProdOrderInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ Page result = baseMapper.selectProdOrderInfoList(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@@ -112,6 +149,8 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
*/
@Override
public Boolean insertByBo(ProdOrderInfoBo bo) {
+ String orderCode = remoteCodeRuleService.selectCodeRuleCode("1");
+ bo.setOrderCode(orderCode);
ProdOrderInfo add = MapstructUtils.convert(bo, ProdOrderInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java
index f14acd0..027574c 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java
@@ -1,24 +1,31 @@
package org.dromara.mes.service.impl;
+import org.dromara.common.constant.DatabaseConstants;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.core.utils.uuid.Seq;
+import org.dromara.common.mapper.DynamicBaseSqlMapper;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.mes.domain.vo.MesProductPlanEditVo;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdPlanInfoBo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.mes.domain.ProdPlanInfo;
import org.dromara.mes.mapper.ProdPlanInfoMapper;
import org.dromara.mes.service.IProdPlanInfoService;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 生产工单信息Service业务层处理
@@ -32,6 +39,8 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
private final ProdPlanInfoMapper baseMapper;
+ private final DynamicBaseSqlMapper dynamicBaseSqlMapper;
+
/**
* 查询生产工单信息
*
@@ -39,7 +48,7 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
* @return 生产工单信息
*/
@Override
- public ProdPlanInfoVo queryById(Long planId){
+ public ProdPlanInfoVo queryById(Long planId) {
return baseMapper.selectVoById(planId);
}
@@ -53,10 +62,18 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
@Override
public TableDataInfo queryPageList(ProdPlanInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ Long workshopId = bo.getWorkshopId();
+ String tableName = null;
+ if (StringUtils.isNull(workshopId)){
+ tableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX;
+ } else {
+ tableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + workshopId;
+ }
+ Page result = baseMapper.selectProdPlanInfoList(pageQuery.build(), tableName, lqw);
return TableDataInfo.build(result);
}
+
/**
* 查询符合条件的生产工单信息列表
*
@@ -70,40 +87,41 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
}
private MPJLambdaWrapper buildQueryWrapper(ProdPlanInfoBo bo) {
+ System.out.println("wo;" + bo.getWorkshopId());
Map params = bo.getParams();
MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdPlanInfo.class)
- .selectAll(ProdPlanInfo.class)
- .eq(bo.getPlanId() != null, ProdPlanInfo::getPlanId, bo.getPlanId())
- .eq(bo.getProductOrderId() != null, ProdPlanInfo::getProductOrderId, bo.getProductOrderId())
- .eq(bo.getSaleOrderId() != null, ProdPlanInfo::getSaleOrderId, bo.getSaleOrderId())
- .eq(StringUtils.isNotBlank(bo.getSaleorderCode()), ProdPlanInfo::getSaleorderCode, bo.getSaleorderCode())
- .eq(StringUtils.isNotBlank(bo.getPlanCode()), ProdPlanInfo::getPlanCode, bo.getPlanCode())
- .eq(StringUtils.isNotBlank(bo.getDispatchCode()), ProdPlanInfo::getDispatchCode, bo.getDispatchCode())
- .eq(bo.getMaterialId() != null, ProdPlanInfo::getMaterialId, bo.getMaterialId())
- .eq(bo.getMaterialBomId() != null, ProdPlanInfo::getMaterialBomId, bo.getMaterialBomId())
- .eq(bo.getProcessId() != null, ProdPlanInfo::getProcessId, bo.getProcessId())
- .eq(bo.getProcessOrder() != null, ProdPlanInfo::getProcessOrder, bo.getProcessOrder())
- .eq(bo.getLastProcessId() != null, ProdPlanInfo::getLastProcessId, bo.getLastProcessId())
- .eq(StringUtils.isNotBlank(bo.getFinalProcessFlag()), ProdPlanInfo::getFinalProcessFlag, bo.getFinalProcessFlag())
- .eq(StringUtils.isNotBlank(bo.getReleaseType()), ProdPlanInfo::getReleaseType, bo.getReleaseType())
- .eq(bo.getReleaseId() != null, ProdPlanInfo::getReleaseId, bo.getReleaseId())
- .eq(bo.getProductionTime() != null, ProdPlanInfo::getProductionTime, bo.getProductionTime())
- .eq(bo.getPlanAmount() != null, ProdPlanInfo::getPlanAmount, bo.getPlanAmount())
- .eq(bo.getDispatchAmount() != null, ProdPlanInfo::getDispatchAmount, bo.getDispatchAmount())
- .eq(bo.getCompleteAmount() != null, ProdPlanInfo::getCompleteAmount, bo.getCompleteAmount())
- .eq(bo.getPlanBeginTime() != null, ProdPlanInfo::getPlanBeginTime, bo.getPlanBeginTime())
- .eq(bo.getPlanEndTime() != null, ProdPlanInfo::getPlanEndTime, bo.getPlanEndTime())
- .eq(bo.getRealBeginTime() != null, ProdPlanInfo::getRealBeginTime, bo.getRealBeginTime())
- .eq(bo.getRealEndTime() != null, ProdPlanInfo::getRealEndTime, bo.getRealEndTime())
- .eq(StringUtils.isNotBlank(bo.getAttachId()), ProdPlanInfo::getAttachId, bo.getAttachId())
- .eq(StringUtils.isNotBlank(bo.getPlanStatus()), ProdPlanInfo::getPlanStatus, bo.getPlanStatus())
- .eq(StringUtils.isNotBlank(bo.getImportFlag()), ProdPlanInfo::getImportFlag, bo.getImportFlag())
- .eq(StringUtils.isNotBlank(bo.getFinishFlag()), ProdPlanInfo::getFinishFlag, bo.getFinishFlag())
- .eq(bo.getPriority() != null, ProdPlanInfo::getPriority, bo.getPriority())
- .eq(bo.getShiftId() != null, ProdPlanInfo::getShiftId, bo.getShiftId())
- .eq(bo.getClassTeamId() != null, ProdPlanInfo::getClassTeamId, bo.getClassTeamId())
- .eq(StringUtils.isNotBlank(bo.getModelCode()), ProdPlanInfo::getModelCode, bo.getModelCode())
- .orderByDesc(ProdPlanInfo::getCreateTime);
+ .selectAll(ProdPlanInfo.class)
+ .eq(bo.getPlanId() != null, ProdPlanInfo::getPlanId, bo.getPlanId())
+ .eq(bo.getProductOrderId() != null, ProdPlanInfo::getProductOrderId, bo.getProductOrderId())
+ .eq(bo.getSaleOrderId() != null, ProdPlanInfo::getSaleOrderId, bo.getSaleOrderId())
+ .eq(StringUtils.isNotBlank(bo.getSaleorderCode()), ProdPlanInfo::getSaleorderCode, bo.getSaleorderCode())
+ .eq(StringUtils.isNotBlank(bo.getPlanCode()), ProdPlanInfo::getPlanCode, bo.getPlanCode())
+ .eq(StringUtils.isNotBlank(bo.getDispatchCode()), ProdPlanInfo::getDispatchCode, bo.getDispatchCode())
+ .eq(bo.getMaterialId() != null, ProdPlanInfo::getMaterialId, bo.getMaterialId())
+ .eq(bo.getMaterialBomId() != null, ProdPlanInfo::getMaterialBomId, bo.getMaterialBomId())
+ .eq(bo.getProcessId() != null, ProdPlanInfo::getProcessId, bo.getProcessId())
+ .eq(bo.getProcessOrder() != null, ProdPlanInfo::getProcessOrder, bo.getProcessOrder())
+ .eq(bo.getLastProcessId() != null, ProdPlanInfo::getLastProcessId, bo.getLastProcessId())
+ .eq(StringUtils.isNotBlank(bo.getFinalProcessFlag()), ProdPlanInfo::getFinalProcessFlag, bo.getFinalProcessFlag())
+ .eq(StringUtils.isNotBlank(bo.getReleaseType()), ProdPlanInfo::getReleaseType, bo.getReleaseType())
+ .eq(bo.getReleaseId() != null, ProdPlanInfo::getReleaseId, bo.getReleaseId())
+ .eq(bo.getProductionTime() != null, ProdPlanInfo::getProductionTime, bo.getProductionTime())
+ .eq(bo.getPlanAmount() != null, ProdPlanInfo::getPlanAmount, bo.getPlanAmount())
+ .eq(bo.getDispatchAmount() != null, ProdPlanInfo::getDispatchAmount, bo.getDispatchAmount())
+ .eq(bo.getCompleteAmount() != null, ProdPlanInfo::getCompleteAmount, bo.getCompleteAmount())
+ .eq(bo.getPlanBeginTime() != null, ProdPlanInfo::getPlanBeginTime, bo.getPlanBeginTime())
+ .eq(bo.getPlanEndTime() != null, ProdPlanInfo::getPlanEndTime, bo.getPlanEndTime())
+ .eq(bo.getRealBeginTime() != null, ProdPlanInfo::getRealBeginTime, bo.getRealBeginTime())
+ .eq(bo.getRealEndTime() != null, ProdPlanInfo::getRealEndTime, bo.getRealEndTime())
+ .eq(StringUtils.isNotBlank(bo.getAttachId()), ProdPlanInfo::getAttachId, bo.getAttachId())
+ .eq(StringUtils.isNotBlank(bo.getPlanStatus()), ProdPlanInfo::getPlanStatus, bo.getPlanStatus())
+ .eq(StringUtils.isNotBlank(bo.getImportFlag()), ProdPlanInfo::getImportFlag, bo.getImportFlag())
+ .eq(StringUtils.isNotBlank(bo.getFinishFlag()), ProdPlanInfo::getFinishFlag, bo.getFinishFlag())
+ .eq(bo.getPriority() != null, ProdPlanInfo::getPriority, bo.getPriority())
+ .eq(bo.getShiftId() != null, ProdPlanInfo::getShiftId, bo.getShiftId())
+ .eq(bo.getClassTeamId() != null, ProdPlanInfo::getClassTeamId, bo.getClassTeamId())
+ .eq(StringUtils.isNotBlank(bo.getModelCode()), ProdPlanInfo::getModelCode, bo.getModelCode())
+ .orderByDesc(ProdPlanInfo::getCreateTime);
return lqw;
}
@@ -115,12 +133,16 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
*/
@Override
public Boolean insertByBo(ProdPlanInfoBo bo) {
+ String planCode = Seq.getId(Seq.mesPlanCodeSeqType, Seq.mesPlanCodeCode);
+ bo.setPlanCode(planCode);
ProdPlanInfo add = MapstructUtils.convert(bo, ProdPlanInfo.class);
validEntityBeforeSave(add);
- boolean flag = baseMapper.insert(add) > 0;
- if (flag) {
- bo.setPlanId(add.getPlanId());
- }
+ String tableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + bo.getWorkshopId();
+ boolean flag = dynamicBaseSqlMapper.dynamicInsert(tableName, DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX, add) >0;
+// boolean flag = baseMapper.insert(add) > 0;
+// if (flag) {
+// bo.setPlanId(add.getPlanId());
+// }
return flag;
}
@@ -140,7 +162,7 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
/**
* 保存前的数据校验
*/
- private void validEntityBeforeSave(ProdPlanInfo entity){
+ private void validEntityBeforeSave(ProdPlanInfo entity) {
//TODO 做一些数据校验,如唯一约束
}
@@ -153,9 +175,88 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
*/
@Override
public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
- if(isValid){
+ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+ /**
+ * 获取派工编号
+ *
+ * @return
+ */
+ @Override
+ public String getDispatchCode() {
+ return Seq.getId(Seq.mesPlanCodeSeqType, Seq.mesPlanCodeCode);
+ }
+
+ /**
+ * 查询生产派工列表,join process
+ *
+ * @param bo 生产派工
+ * @return 生产派工
+ */
+ @Override
+ public List