Merge remote-tracking branch 'origin/master'

master
wanghao 3 months ago
commit 3716895495

@ -178,7 +178,8 @@ sa-token:
is-share: false is-share: false
# jwt秘钥 # jwt秘钥
jwt-secret-key: abcdefghijklmnopqrstuvwxyz jwt-secret-key: abcdefghijklmnopqrstuvwxyz
# 设置Token有效期1小时单位
timeout: 3600
# MyBatisPlus配置 # MyBatisPlus配置
# https://baomidou.com/config/ # https://baomidou.com/config/
mybatis-plus: mybatis-plus:

@ -1,5 +1,7 @@
package org.dromara.mes.api; package org.dromara.mes.api;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.mes.api.model.BaseMaterialInfo;
import org.dromara.mes.api.model.bo.BaseMaterialInfoBo; import org.dromara.mes.api.model.bo.BaseMaterialInfoBo;
import java.util.List; import java.util.List;
@ -18,4 +20,5 @@ public interface RemoteMaterialInfoService {
*/ */
Boolean remoteInsertBaseMaterialInfo(List<BaseMaterialInfoBo> bos); Boolean remoteInsertBaseMaterialInfo(List<BaseMaterialInfoBo> bos);
} }

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hwmom-api-pda</artifactId>
<description>
hwmom-api-pda PDA接口模块
</description>
<dependencies>
<!-- RuoYi Common Core-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-core</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-excel</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,20 @@
package org.dromara.pda.api;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.pda.api.model.BaseMaterial;
import java.util.List;
import java.util.Map;
public interface RemotePdaMesApiService {
/**
*
* @param materialCode
* @param tenantId
* @return
* @throws UserException
*/
BaseMaterial remoteQueryByMaterialCode(String materialCode , String tenantId) throws UserException;
}

@ -0,0 +1,19 @@
package org.dromara.pda.api;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.pda.api.model.vo.RemoteDefectVo;
import java.util.List;
public interface RemotePdaQmsApiService {
/**
*
* @param defectType
* @param tenantId
* @return
* @throws UserException
*/
List<RemoteDefectVo> remoteQueryDefectList(String defectType , String tenantId) throws UserException;
}

@ -0,0 +1,267 @@
package org.dromara.pda.api.model;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@Data
@NoArgsConstructor
public class BaseMaterial implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long materialId;
/**
* ERP
*/
private String erpId;
/**
*
*/
private String materialCode;
/**
*
*/
private String oldMaterialCode;
/**
*
*/
private String materialName;
/**
* ID
*/
private Long materialTypeId;
/**
* (1 2 3)
*/
private String materialCategories;
/**
*
*/
private String materialSubclass;
/**
* (0 1)
*/
private String batchFlag;
/**
*
*/
private Long batchAmount;
/**
* ID
*/
private Long materialUnitId;
/**
*
*/
private String materialUnit;
/**
*
*/
private String materialMatkl;
/**
*
*/
private String materialSpec;
/**
*
*/
private Long netWeight;
/**
*
*/
private Long grossWeight;
/**
* (1 0)
*/
private String alwaysFlag;
/**
*
*/
private Long factoryId;
/**
*
*/
private Long createOrgId;
/**
* 使
*/
private Long useOrgId;
/**
* 线
*/
private Long prodLineId;
/**
* 1 0
*/
private String activeFlag;
/**
* (0 1)
*/
private String deletedFlag;
/**
*
*/
private Long purchasePriceUnitId;
/**
*
*/
private Date approveDate;
/**
* erp
*/
private Date erpModifyDate;
/**
*
*/
private Long maxStockAmount;
/**
*
*/
private Long minStockAmount;
/**
*
*/
private Long safeStockAmount;
/**
* (1 0)
*/
private String applyFlag;
/**
* 1ERP 2 3MES
*/
private String materialClassfication;
/**
* (1 0)
*/
private String autoOutstockFlag;
/**
* (1 0)
*/
private String accessoriesFlag;
/**
* (1 0)
*/
private String lowValueConsumableFlag;
/**
*
*/
private String brand;
/**
*
*/
private String plyrating;
/**
*
*/
private String pattern;
/**
*
*/
private String speedLevel;
/**
*
*/
private String load;
/**
* 1 2 3
*/
private String tireMarkings;
/**
*
*/
private Long minParkingTime;
/**
*
*/
private Long maxParkingTime;
/**
*
*/
private Long standardWeight;
/**
*
*/
private Long weightUpperLimit;
/**
*
*/
private Long weightLowerLimit;
/**
* (0 1)
*/
private String innerTubeFlag;
/**
* (0 1)
*/
private String saleType;
/**
*
*/
private String remark;
/**
*
*/
private String factoryName; //映射字段
/**
*
*/
private String matrialTypeName;//映射字段
}

@ -0,0 +1,104 @@
package org.dromara.pda.api.model.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
@Data
@NoArgsConstructor
public class RemoteDefectVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private String defectDetailId;
/**
*
*/
@ExcelProperty(value = "病疵编码")
private Long defectCode;
/**
*
*/
@ExcelProperty(value = "病疵描述")
private String defectDesc;
/**
*
*/
@ExcelProperty(value = "病疵类型")
private String defectType;
/**
*
*/
@ExcelProperty(value = "排序")
private String sort;
/**
*
*/
@ExcelProperty(value = "工序")
private String operation;
/**
*
*/
@ExcelProperty(value = "层级")
private String defectLevel;
/**
* 0 1
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
private String status;
/**
* 1 0
*/
@ExcelProperty(value = "是否删除", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "1=是,0=否")
private String isFlag;
/**
*
*/
@ExcelProperty(value = "预留字段")
private String attr1;
/**
*
*/
@ExcelProperty(value = "预留字段")
private String attr2;
/**
*
*/
@ExcelProperty(value = "预留字段")
private String attr3;
/**
*
*/
@ExcelProperty(value = "预留字段")
private String attr4;
/**
*
*/
private String remark;
}

@ -14,6 +14,7 @@
<module>ruoyi-api-resource</module> <module>ruoyi-api-resource</module>
<module>ruoyi-api-workflow</module> <module>ruoyi-api-workflow</module>
<module>hwmom-api-mes</module> <module>hwmom-api-mes</module>
<module>hwmom-api-pda</module>
</modules> </modules>
<artifactId>ruoyi-api</artifactId> <artifactId>ruoyi-api</artifactId>

@ -14,7 +14,6 @@
<description> <description>
ruoyi-common-core 核心模块 ruoyi-common-core 核心模块
</description> </description>
<dependencies> <dependencies>
<!-- Spring框架基本的核心工具 --> <!-- Spring框架基本的核心工具 -->
<dependency> <dependency>

@ -0,0 +1,14 @@
package org.dromara.common.core.exception.pda;
import org.dromara.common.core.exception.base.BaseException;
import java.io.Serial;
public class PdaServiceException extends BaseException {
@Serial
private static final long serialVersionUID = 1L;
public PdaServiceException(String code, Object... args) {
super("materialCode", code, args, null);
}
}

@ -59,3 +59,6 @@ tenant.number.not.blank=租户编号不能为空
tenant.not.exists=对不起, 您的租户不存在,请联系管理员 tenant.not.exists=对不起, 您的租户不存在,请联系管理员
tenant.blocked=对不起,您的租户已禁用,请联系管理员 tenant.blocked=对不起,您的租户已禁用,请联系管理员
tenant.expired=对不起,您的租户已过期,请联系管理员 tenant.expired=对不起,您的租户已过期,请联系管理员
##PDA
materialCode.not.exit=对不起,物料编码不存在
defect.type.not.blank=缺陷类型不能为空

@ -120,12 +120,16 @@
<version>2.2.2</version> <version>2.2.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>hwmom-api-pda</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-common-job</artifactId> <artifactId>ruoyi-common-job</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>

@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.api.service.IBaseMaterialInfoApiService; import org.dromara.api.service.IBaseMaterialInfoApiService;
import org.dromara.mes.api.RemoteMaterialInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;

@ -0,0 +1,42 @@
package org.dromara.api.controller;
import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.api.service.IPdaApiService;
import org.dromara.common.core.domain.R;
import org.dromara.pda.api.model.BaseMaterial;
import org.dromara.pda.api.model.vo.RemoteDefectVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 访:/mes/prodPlanDetailApi
*
* @author Yangwl
* @date 2025-01-02
*/
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("/pdaApi")
public class PdaApiController {
@Autowired
private final IPdaApiService iPdaApiService;
/**
* PDA
*/
@GetMapping(value = {"/getMaterialInfo/{MaterialCode}"})
public BaseMaterial getMaterialInfo(@PathVariable(value = "MaterialCode", required = false) String MaterialCode) {
return iPdaApiService.getMaterialInfo(MaterialCode);
}
@GetMapping("/getDefectDetail")
public List<RemoteDefectVo> getDefectDetail(@NotBlank(message = "{defect.type.not.blank}") String defectType) {
return iPdaApiService.getDefectDetail(defectType);
}
}

@ -0,0 +1,282 @@
package org.dromara.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.util.Date;
/**
* base_material_info
*
* @author zangch
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("base_material_info")
public class BaseMaterialInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "material_id", type = IdType.AUTO)
private Long materialId;
/**
* ERP
*/
private String erpId;
/**
*
*/
private String materialCode;
/**
*
*/
private String oldMaterialCode;
/**
*
*/
private String materialName;
/**
* ID
*/
private Long materialTypeId;
/**
* (1 2 3)
*/
private String materialCategories;
/**
*
*/
private String materialSubclass;
/**
* (0 1)
*/
private String batchFlag;
/**
*
*/
private Long batchAmount;
/**
* ID
*/
private Long materialUnitId;
/**
*
*/
private String materialUnit;
/**
*
*/
private String materialMatkl;
/**
*
*/
private String materialSpec;
/**
*
*/
private Long netWeight;
/**
*
*/
private Long grossWeight;
/**
* (1 0)
*/
private String alwaysFlag;
/**
*
*/
private Long factoryId;
/**
*
*/
private Long createOrgId;
/**
* 使
*/
private Long useOrgId;
/**
* 线
*/
private Long prodLineId;
/**
* 1 0
*/
private String activeFlag;
/**
* (0 1)
*/
private String deletedFlag;
/**
*
*/
private Long purchasePriceUnitId;
/**
*
*/
private Date approveDate;
/**
* erp
*/
private Date erpModifyDate;
/**
*
*/
private Long maxStockAmount;
/**
*
*/
private Long minStockAmount;
/**
*
*/
private Long safeStockAmount;
/**
* (1 0)
*/
private String applyFlag;
/**
* 1ERP 2 3MES
*/
private String materialClassfication;
/**
* (1 0)
*/
private String autoOutstockFlag;
/**
* (1 0)
*/
private String accessoriesFlag;
/**
* (1 0)
*/
private String lowValueConsumableFlag;
/**
*
*/
private String brand;
/**
*
*/
private String plyrating;
/**
*
*/
private String pattern;
/**
*
*/
private String speedLevel;
/**
*
*/
private String load;
/**
* 1 2 3
*/
private String tireMarkings;
/**
*
*/
private Long minParkingTime;
/**
*
*/
private Long maxParkingTime;
/**
*
*/
private Long standardWeight;
/**
*
*/
private Long weightUpperLimit;
/**
*
*/
private Long weightLowerLimit;
/**
* (0 1)
*/
private String innerTubeFlag;
/**
* (0 1)
*/
private String saleType;
/**
*
*/
private String remark;
/**
*
*/
@TableField(exist = false)
private String factoryName; //映射字段
/**
*
*/
@TableField(exist = false)
private String matrialTypeName;//映射字段
}

@ -0,0 +1,382 @@
package org.dromara.api.domain.sap.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.api.domain.BaseMaterialInfo;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* base_material_info
*
* @author zangch
* @date 2025-01-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseMaterialInfo.class)
public class BaseMaterialInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long materialId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
* ERP
*/
@ExcelProperty(value = "ERP信息")
private String erpId;
/**
*
*/
@ExcelProperty(value = "物料编码")
private String materialCode;
/**
*
*/
@ExcelProperty(value = "旧物料编码")
private String oldMaterialCode;
/**
*
*/
@ExcelProperty(value = "物料名称")
private String materialName;
/**
* ID
*/
@ExcelProperty(value = "物料类型ID")
private Long materialTypeId;
/**
* (1 2 3)
*/
@ExcelProperty(value = "物料大类(1原材料 2半成品 3成品)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_material_categories")
private String materialCategories;
/**
*
*/
@ExcelProperty(value = "物料小类")
private String materialSubclass;
/**
* (0 1)
*/
@ExcelProperty(value = "批次标识(0否 1是)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_batch_flag")
private String batchFlag;
/**
*
*/
@ExcelProperty(value = "小批次数量")
private Long batchAmount;
/**
* ID
*/
@ExcelProperty(value = "计量单位ID")
private Long materialUnitId;
/**
*
*/
@ExcelProperty(value = "计量单位名称")
private String materialUnit;
/**
*
*/
@ExcelProperty(value = "物料组")
private String materialMatkl;
/**
*
*/
@ExcelProperty(value = "物料规格")
private String materialSpec;
/**
*
*/
@ExcelProperty(value = "净重")
private Long netWeight;
/**
*
*/
@ExcelProperty(value = "毛重")
private Long grossWeight;
/**
* (1 0)
*/
@ExcelProperty(value = "绑定标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "always_flag")
private String alwaysFlag;
/**
*
*/
@ExcelProperty(value = "所属工厂")
private Long factoryId;
/**
*
*/
@ExcelProperty(value = "创建组织")
private Long createOrgId;
/**
* 使
*/
@ExcelProperty(value = "使用组织")
private Long useOrgId;
/**
* 线
*/
@ExcelProperty(value = "所属产线")
private Long prodLineId;
/**
* 1 0
*/
@ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "active_flag")
private String activeFlag;
/**
* (0 1)
*/
@ExcelProperty(value = "删除标识(0否 1是)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "deleted_flag")
private String deletedFlag;
/**
*
*/
@ExcelProperty(value = "采购计价单位")
private Long purchasePriceUnitId;
/**
*
*/
@ExcelProperty(value = "审核日期")
private Date approveDate;
/**
* erp
*/
@ExcelProperty(value = "erp最后更新日期")
private Date erpModifyDate;
/**
*
*/
@ExcelProperty(value = "最大库存数量")
private Long maxStockAmount;
/**
*
*/
@ExcelProperty(value = "最小库存数量")
private Long minStockAmount;
/**
*
*/
@ExcelProperty(value = "安全库存数量")
private Long safeStockAmount;
/**
* (1 0)
*/
@ExcelProperty(value = "申请标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "apply_flag")
private String applyFlag;
/**
* 1ERP 2 3MES
*/
@ExcelProperty(value = "物料分类", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "material_classfication")
private String materialClassfication;
/**
* (1 0)
*/
@ExcelProperty(value = "自动出库标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "auto_outstock_flag")
private String autoOutstockFlag;
/**
* (1 0)
*/
@ExcelProperty(value = "辅料标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_accessories_flag")
private String accessoriesFlag;
/**
* (1 0)
*/
@ExcelProperty(value = "低值易耗品标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_low_value_consumable_flag")
private String lowValueConsumableFlag;
/**
*
*/
@ExcelProperty(value = "品牌")
private String brand;
/**
*
*/
@ExcelProperty(value = "层级")
private String plyrating;
/**
*
*/
@ExcelProperty(value = "花纹")
private String pattern;
/**
*
*/
@ExcelProperty(value = "速度级别")
private String speedLevel;
/**
*
*/
@ExcelProperty(value = "负荷载重")
private String load;
/**
* 1 2 3
*/
@ExcelProperty(value = "轮胎标记", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "tire_markings")
private String tireMarkings;
/**
*
*/
@ExcelProperty(value = "最小停放时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long minParkingTime;
/**
*
*/
@ExcelProperty(value = "最大停放时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long maxParkingTime;
/**
*
*/
@ExcelProperty(value = "标准重量")
private Long standardWeight;
/**
*
*/
@ExcelProperty(value = "标准重量上限")
private Long weightUpperLimit;
/**
*
*/
@ExcelProperty(value = "标准重量下限")
private Long weightLowerLimit;
/**
* (0 1)
*/
@ExcelProperty(value = "内胎标记(0无 1有)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "inner_tube_flag")
private String innerTubeFlag;
/**
* (0 1)
*/
@ExcelProperty(value = "销售类型(0内销 1外销)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sale_type")
private String saleType;
/**
*
*/
@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 factoryName;//映射字段
/**
*
*/
@ExcelProperty(value = "物料类型名称")
private String matrialTypeName;//映射字段
}

@ -0,0 +1,20 @@
package org.dromara.api.service;
import org.dromara.common.core.domain.R;
import org.dromara.pda.api.model.BaseMaterial;
import org.dromara.pda.api.model.vo.RemoteDefectVo;
import java.util.List;
/**
* APIService
*
* @author Yinq
* @date 2025-01-02
*/
public interface IPdaApiService {
BaseMaterial getMaterialInfo(String materialCode);
List<RemoteDefectVo> getDefectDetail(String defectType);
}

@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import org.dromara.api.service.ICommonApiService; import org.dromara.api.service.ICommonApiService;
import org.dromara.api.utils.SAPApiUtils; import org.dromara.api.utils.SAPApiUtils;
import org.dromara.api.utils.SAPConstants; import org.dromara.api.utils.SAPConstants;
import org.dromara.mes.api.RemoteMaterialInfoService; import org.dromara.mes.api.RemoteMaterialInfoService;
import org.dromara.mes.api.model.bo.BaseMaterialInfoBo; import org.dromara.mes.api.model.bo.BaseMaterialInfoBo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

@ -0,0 +1,32 @@
package org.dromara.api.service.impl;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.api.service.IPdaApiService;
import org.dromara.common.core.domain.R;
import org.dromara.pda.api.RemotePdaMesApiService;
import org.dromara.pda.api.RemotePdaQmsApiService;
import org.dromara.pda.api.model.BaseMaterial;
import org.dromara.pda.api.model.vo.RemoteDefectVo;
import org.springframework.stereotype.Service;
import java.util.List;
@RequiredArgsConstructor
@Service
public class IPdaApiServiceImpl implements IPdaApiService {
@DubboReference
private final RemotePdaMesApiService remotePdaMesApiService;
@DubboReference
private final RemotePdaQmsApiService remotePdaQmsApiService;
@Override
public BaseMaterial getMaterialInfo(String materialCode) {
return remotePdaMesApiService.remoteQueryByMaterialCode(materialCode,"000000");
}
@Override
public List<RemoteDefectVo> getDefectDetail(String defectType) {
return remotePdaQmsApiService.remoteQueryDefectList(defectType,"000000");
}
}

@ -112,5 +112,27 @@ public class BaseAlarmRule extends TenantEntity {
*/ */
private String remark; private String remark;
/**
*
*/
@TableField(exist = false)
private String alarmLevelName;
/**
*
*/
@TableField(exist = false)
private String alarmTypeName;
/**
*
*/
@TableField(exist = false)
private String ruleDeviceName;
/**
*
*/
@TableField(exist = false)
private String ruleDeviceModeName;
} }

@ -28,19 +28,19 @@ public class BaseAlarmRuleBo extends BaseEntity {
/** /**
* *
*/ */
@NotBlank(message = "规则名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "规则名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String alarmRuleName; private String alarmRuleName;
/** /**
* hw_alarm_levelalarm_level_id * hw_alarm_levelalarm_level_id
*/ */
@NotNull(message = "报警级别关联表hw_alarm_level字段alarm_level_id不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "报警级别", groups = {AddGroup.class, EditGroup.class})
private Long alarmLevelId; private Long alarmLevelId;
/** /**
* hw_alarm_typealarm_type_id * hw_alarm_typealarm_type_id
*/ */
@NotNull(message = "报警类型关联表hw_alarm_type字段alarm_type_id不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "报警类型", groups = {AddGroup.class, EditGroup.class})
private Long alarmTypeId; private Long alarmTypeId;
/** /**
@ -66,6 +66,7 @@ public class BaseAlarmRuleBo extends BaseEntity {
/** /**
* :{}>60 or {}<-88 * :{}>60 or {}<-88
*/ */
@NotBlank(message = "表达式不能为空", groups = {AddGroup.class, EditGroup.class})
private String triggerExpression; private String triggerExpression;
/** /**

@ -141,5 +141,28 @@ public class BaseAlarmRuleVo implements Serializable {
@ExcelProperty(value = "描述") @ExcelProperty(value = "描述")
private String remark; private String remark;
/**
*
*/
@ExcelProperty(value = "报警级别名称")
private String alarmLevelName;
/**
*
*/
@ExcelProperty(value = "报警类型名称")
private String alarmTypeName;
/**
*
*/
@ExcelProperty(value = "设备名称")
private String ruleDeviceName;
/**
*
*/
@ExcelProperty(value = "设备模型名称")
private String ruleDeviceModeName;
} }

@ -7,8 +7,10 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.dms.domain.BaseAlarmLevel;
import org.dromara.dms.domain.BaseAlarmType;
import org.dromara.dms.domain.DmsDeviceMode;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.dms.domain.bo.BaseAlarmRuleBo; import org.dromara.dms.domain.bo.BaseAlarmRuleBo;
import org.dromara.dms.domain.vo.BaseAlarmRuleVo; import org.dromara.dms.domain.vo.BaseAlarmRuleVo;
@ -39,7 +41,7 @@ public class BaseAlarmRuleServiceImpl implements IBaseAlarmRuleService {
* @return * @return
*/ */
@Override @Override
public BaseAlarmRuleVo queryById(Long alarmRuleId){ public BaseAlarmRuleVo queryById(Long alarmRuleId) {
return baseMapper.selectVoById(alarmRuleId); return baseMapper.selectVoById(alarmRuleId);
} }
@ -72,25 +74,31 @@ public class BaseAlarmRuleServiceImpl implements IBaseAlarmRuleService {
private MPJLambdaWrapper<BaseAlarmRule> buildQueryWrapper(BaseAlarmRuleBo bo) { private MPJLambdaWrapper<BaseAlarmRule> buildQueryWrapper(BaseAlarmRuleBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseAlarmRule> lqw = JoinWrappers.lambda(BaseAlarmRule.class) MPJLambdaWrapper<BaseAlarmRule> lqw = JoinWrappers.lambda(BaseAlarmRule.class)
.selectAll(BaseAlarmRule.class) .selectAll(BaseAlarmRule.class)
.eq(bo.getAlarmRuleId() != null, BaseAlarmRule::getAlarmRuleId, bo.getAlarmRuleId()) .select(BaseAlarmLevel::getAlarmLevelName)
.like(StringUtils.isNotBlank(bo.getAlarmRuleName()), BaseAlarmRule::getAlarmRuleName, bo.getAlarmRuleName()) .select(BaseAlarmType::getAlarmTypeName)
.eq(bo.getAlarmLevelId() != null, BaseAlarmRule::getAlarmLevelId, bo.getAlarmLevelId()) .select(DmsDeviceMode::getDeviceModeName)
.eq(bo.getAlarmTypeId() != null, BaseAlarmRule::getAlarmTypeId, bo.getAlarmTypeId()) .leftJoin(BaseAlarmLevel.class, BaseAlarmLevel::getAlarmLevelId, BaseAlarmRule::getAlarmLevelId)
.eq(StringUtils.isNotBlank(bo.getRuleType()), BaseAlarmRule::getRuleType, bo.getRuleType()) .leftJoin(BaseAlarmType.class, BaseAlarmType::getAlarmTypeId, BaseAlarmRule::getAlarmTypeId)
.eq(bo.getRuleDeviceId() != null, BaseAlarmRule::getRuleDeviceId, bo.getRuleDeviceId()) .leftJoin(DmsDeviceMode.class, DmsDeviceMode::getDeviceModeId, BaseAlarmRule::getRuleDeviceModeId)
.eq(bo.getRuleDeviceModeId() != null, BaseAlarmRule::getRuleDeviceModeId, bo.getRuleDeviceModeId()) .eq(bo.getAlarmRuleId() != null, BaseAlarmRule::getAlarmRuleId, bo.getAlarmRuleId())
.eq(bo.getRuleFunctionTotal() != null, BaseAlarmRule::getRuleFunctionTotal, bo.getRuleFunctionTotal()) .like(StringUtils.isNotBlank(bo.getAlarmRuleName()), BaseAlarmRule::getAlarmRuleName, bo.getAlarmRuleName())
.eq(StringUtils.isNotBlank(bo.getTriggerExpression()), BaseAlarmRule::getTriggerExpression, bo.getTriggerExpression()) .eq(bo.getAlarmLevelId() != null, BaseAlarmRule::getAlarmLevelId, bo.getAlarmLevelId())
.eq(StringUtils.isNotBlank(bo.getLinkFlag()), BaseAlarmRule::getLinkFlag, bo.getLinkFlag()) .eq(bo.getAlarmTypeId() != null, BaseAlarmRule::getAlarmTypeId, bo.getAlarmTypeId())
.eq(StringUtils.isNotBlank(bo.getAlarmRuleStatus()), BaseAlarmRule::getAlarmRuleStatus, bo.getAlarmRuleStatus()) .eq(StringUtils.isNotBlank(bo.getRuleType()), BaseAlarmRule::getRuleType, bo.getRuleType())
.eq(StringUtils.isNotBlank(bo.getAlarmPushFlag()), BaseAlarmRule::getAlarmPushFlag, bo.getAlarmPushFlag()) .eq(bo.getRuleDeviceId() != null, BaseAlarmRule::getRuleDeviceId, bo.getRuleDeviceId())
.eq(StringUtils.isNotBlank(bo.getAlarmPushContent()), BaseAlarmRule::getAlarmPushContent, bo.getAlarmPushContent()) .eq(bo.getRuleDeviceModeId() != null, BaseAlarmRule::getRuleDeviceModeId, bo.getRuleDeviceModeId())
.eq(StringUtils.isNotBlank(bo.getAlarmRecoverContent()), BaseAlarmRule::getAlarmRecoverContent, bo.getAlarmRecoverContent()) .eq(bo.getRuleFunctionTotal() != null, BaseAlarmRule::getRuleFunctionTotal, bo.getRuleFunctionTotal())
.eq(bo.getTriggerTimeFrame() != null, BaseAlarmRule::getTriggerTimeFrame, bo.getTriggerTimeFrame()) .eq(StringUtils.isNotBlank(bo.getTriggerExpression()), BaseAlarmRule::getTriggerExpression, bo.getTriggerExpression())
.eq(bo.getTriggerNumber() != null, BaseAlarmRule::getTriggerNumber, bo.getTriggerNumber()) .eq(StringUtils.isNotBlank(bo.getLinkFlag()), BaseAlarmRule::getLinkFlag, bo.getLinkFlag())
.eq(bo.getTriggerDeadzone() != null, BaseAlarmRule::getTriggerDeadzone, bo.getTriggerDeadzone()) .eq(StringUtils.isNotBlank(bo.getAlarmRuleStatus()), BaseAlarmRule::getAlarmRuleStatus, bo.getAlarmRuleStatus())
.orderByAsc(BaseAlarmRule::getCreateTime); .eq(StringUtils.isNotBlank(bo.getAlarmPushFlag()), BaseAlarmRule::getAlarmPushFlag, bo.getAlarmPushFlag())
.eq(StringUtils.isNotBlank(bo.getAlarmPushContent()), BaseAlarmRule::getAlarmPushContent, bo.getAlarmPushContent())
.eq(StringUtils.isNotBlank(bo.getAlarmRecoverContent()), BaseAlarmRule::getAlarmRecoverContent, bo.getAlarmRecoverContent())
.eq(bo.getTriggerTimeFrame() != null, BaseAlarmRule::getTriggerTimeFrame, bo.getTriggerTimeFrame())
.eq(bo.getTriggerNumber() != null, BaseAlarmRule::getTriggerNumber, bo.getTriggerNumber())
.eq(bo.getTriggerDeadzone() != null, BaseAlarmRule::getTriggerDeadzone, bo.getTriggerDeadzone())
.orderByAsc(BaseAlarmRule::getCreateTime);
return lqw; return lqw;
} }
@ -127,7 +135,7 @@ public class BaseAlarmRuleServiceImpl implements IBaseAlarmRuleService {
/** /**
* *
*/ */
private void validEntityBeforeSave(BaseAlarmRule entity){ private void validEntityBeforeSave(BaseAlarmRule entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -140,7 +148,7 @@ public class BaseAlarmRuleServiceImpl implements IBaseAlarmRuleService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;

@ -128,6 +128,12 @@
<version>2.2.2</version> <version>2.2.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>hwmom-api-pda</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>

@ -24,6 +24,7 @@ public class BaseDeviceType extends TenantEntity {
/** /**
* ID * ID
*/ */
@TableId(value = "device_type_id", type = IdType.AUTO)
private Long deviceTypeId; private Long deviceTypeId;
/** /**
@ -61,5 +62,11 @@ public class BaseDeviceType extends TenantEntity {
*/ */
private String remark; private String remark;
/**
*
*/
@TableField(exist = false)
private String deviceCategoryName;//join映射字段
} }

@ -50,17 +50,31 @@ public class BaseEqualMaterialInfo extends TenantEntity {
*/ */
private String remark; private String remark;
/**
* ID
*/
private Long parentId;
/**
* BOM
*/
private String materialBomVersion;
/** /**
* *
*/ */
@TableField(exist = false) @TableField(exist = false)
private String materialName;//映射字段 private String materialName;
/** /**
* *
*/ */
@TableField(exist = false) @TableField(exist = false)
private String equalMaterialName;//映射字段 private String equalMaterialName;
/**
*
*/
@TableField(exist = false)
private String parentName;
} }

@ -0,0 +1,53 @@
package org.dromara.mes.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* dms_device_mode
*
* @author Yinq
* @date 2025-03-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("dms_device_mode")
public class ProdBaseDeviceMode extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "device_mode_id", type = IdType.AUTO)
private Long deviceModeId;
/**
*
*/
private String deviceModeName;
/**
* 19
*/
private String deviceModeStatus;
/**
*
*/
private String deviceModePic;
/**
*
*/
private String remark;
}

@ -77,9 +77,60 @@ public class ProdBaseMachineInfo extends TenantEntity {
*/ */
private Long workshopId; private Long workshopId;
/**
* dms_device_mode
*/
private Long deviceModeId;
/**
* IP
*/
private String machineIp;
/**
*
*/
private Long machinePort;
/**
*
*/
private String accessProtocol;
/**
*
*/
private String registerAddress;
/**
* 1bool2short3int4long5float6byte7ushort8uint9ulong10double11
*/
private String dataType;
/**
*
*/
private Long dataLength;
/**
* 1ASCII,2Unicode,3Unicode-big,4UTF-8,5UTF-32,6ANSI,7GB2312
*/
private String dataEncoding;
/**
*
*/
private Long requestInterval;
/** /**
* *
*/ */
@TableField(exist = false) @TableField(exist = false)
private String workshopName; private String workshopName;
/**
*
*/
@TableField(exist = false)
private String deviceModeName;
} }

@ -23,25 +23,25 @@ public class BaseDeviceTypeBo extends BaseEntity {
/** /**
* ID * ID
*/ */
@NotNull(message = "物料类型ID不能为空", groups = { AddGroup.class, EditGroup.class }) /* @NotNull(message = "物料类型ID不能为空", groups = { AddGroup.class, EditGroup.class })*/
private Long deviceTypeId; private Long deviceTypeId;
/** /**
* *
*/ */
@NotNull(message = "父级标识不能为空", groups = { AddGroup.class, EditGroup.class }) /* @NotNull(message = "父级标识不能为空", groups = { AddGroup.class, EditGroup.class })*/
private Long parentId; private Long parentId;
/** /**
* *
*/ */
@NotBlank(message = "设备类型编号不能为空", groups = { AddGroup.class, EditGroup.class }) /* @NotBlank(message = "设备类型编号不能为空", groups = { AddGroup.class, EditGroup.class })*/
private String deviceTypeCode; private String deviceTypeCode;
/** /**
* *
*/ */
@NotBlank(message = "设备类型名称不能为空", groups = { AddGroup.class, EditGroup.class }) /* @NotBlank(message = "设备类型名称不能为空", groups = { AddGroup.class, EditGroup.class })*/
private String deviceTypeName; private String deviceTypeName;
/** /**
@ -53,13 +53,13 @@ public class BaseDeviceTypeBo extends BaseEntity {
/** /**
* IDIDbase_categorycategory_type2 * IDIDbase_categorycategory_type2
*/ */
@NotNull(message = "设备大类不能为空", groups = { AddGroup.class, EditGroup.class }) /* @NotNull(message = "设备大类不能为空", groups = { AddGroup.class, EditGroup.class })*/
private Long deviceCategoryId; private Long deviceCategoryId;
/** /**
* 1 0 * 1 0
*/ */
@NotBlank(message = "激活标识不能为空", groups = { AddGroup.class, EditGroup.class }) /* @NotBlank(message = "激活标识不能为空", groups = { AddGroup.class, EditGroup.class })*/
private String activeFlag; private String activeFlag;
/** /**
@ -68,5 +68,9 @@ public class BaseDeviceTypeBo extends BaseEntity {
/* @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })*/ /* @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })*/
private String remark; private String remark;
/**
*
*/
private String deviceCategoryName;//join映射字段
} }

@ -2,12 +2,9 @@ package org.dromara.mes.domain.bo;
import org.dromara.mes.domain.BaseEqualMaterialInfo; import org.dromara.mes.domain.BaseEqualMaterialInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity; 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 io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/** /**
* base_equal_material_info * base_equal_material_info
@ -45,5 +42,13 @@ public class BaseEqualMaterialInfoBo extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* ID
*/
private Long parentId;
/**
* BOM
*/
private String materialBomVersion;
} }

@ -1,5 +1,6 @@
package org.dromara.mes.domain.bo; package org.dromara.mes.domain.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.mes.domain.ProdBaseMachineInfo; import org.dromara.mes.domain.ProdBaseMachineInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
@ -85,5 +86,59 @@ public class ProdBaseMachineInfoBo extends BaseEntity {
*/ */
private Long workshopId; private Long workshopId;
/**
* dms_device_mode
*/
@ExcelProperty(value = "设备模型关联设备模型dms_device_mode")
private Long deviceModeId;
/**
* IP
*/
@ExcelProperty(value = "设备IP地址")
private String machineIp;
/**
*
*/
@ExcelProperty(value = "设备端口")
private Long machinePort;
/**
*
*/
@ExcelProperty(value = "设备协议")
private String accessProtocol;
/**
*
*/
@ExcelProperty(value = "寄存器地址")
private String registerAddress;
/**
* 1bool2short3int4long5float6byte7ushort8uint9ulong10double11
*/
@ExcelProperty(value = "数据类型")
private String dataType;
/**
*
*/
@ExcelProperty(value = "数据长度")
private Long dataLength;
/**
* 1ASCII,2Unicode,3Unicode-big,4UTF-8,5UTF-32,6ANSI,7GB2312
*/
@ExcelProperty(value = "数据编码格式")
private String dataEncoding;
/**
*
*/
@ExcelProperty(value = "请求间隔")
private Long requestInterval;
private List<ProdBaseMachineProcess> baseMachineProcessList; private List<ProdBaseMachineProcess> baseMachineProcessList;
} }

@ -37,7 +37,7 @@ public class ProdBaseMouldInfoBo extends BaseEntity {
/** /**
* ID * ID
*/ */
@NotNull(message = "所在机台ID不能为空", groups = {AddGroup.class, EditGroup.class}) /* @NotNull(message = "所在机台ID不能为空", groups = {AddGroup.class, EditGroup.class})*/
private Long machineId; private Long machineId;
/** /**

@ -78,5 +78,9 @@ public class BaseDeviceTypeVo implements Serializable {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
*
*/
@ExcelProperty(value = "设备大类名称")
private String deviceCategoryName;//join映射字段
} }

@ -13,7 +13,6 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
* base_equal_material_info * base_equal_material_info
* *
@ -109,4 +108,22 @@ public class BaseEqualMaterialInfoVo implements Serializable {
@ExcelProperty(value = "物料名称") @ExcelProperty(value = "物料名称")
private String equalMaterialName;//映射字段 private String equalMaterialName;//映射字段
/**
* ID
*/
@ExcelProperty(value = "父物料ID")
private Long parentId;
/**
* BOM
*/
@ExcelProperty(value = "BOM版本")
private String materialBomVersion;
/**
*
*/
@ExcelProperty(value = "父物料名称")
private String parentName;
} }

@ -1,6 +1,8 @@
package org.dromara.mes.domain.vo; package org.dromara.mes.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
/** /**
@ -11,16 +13,19 @@ public class PlanMonitorVo {
/** /**
* ID * ID
*/ */
@ExcelProperty(value = "机台ID")
private Long machineId; private Long machineId;
/** /**
* *
*/ */
@ExcelProperty(value = "机台名称")
private String machineName; private String machineName;
/** /**
* *
*/ */
@ExcelProperty(value = "班次分组列表")
private List<ShiftGroupVo> shifts; private List<ShiftGroupVo> shifts;
} }

@ -131,12 +131,72 @@ public class ProdBaseMachineInfoVo implements Serializable {
*/ */
private Long workshopId; private Long workshopId;
/**
* dms_device_mode
*/
@ExcelProperty(value = "设备模型关联设备模型dms_device_mode")
private Long deviceModeId;
/**
* IP
*/
@ExcelProperty(value = "设备IP地址")
private String machineIp;
/**
*
*/
@ExcelProperty(value = "设备端口")
private Long machinePort;
/**
*
*/
@ExcelProperty(value = "设备协议")
private String accessProtocol;
/**
*
*/
@ExcelProperty(value = "寄存器地址")
private String registerAddress;
/**
* 1bool2short3int4long5float6byte7ushort8uint9ulong10double11
*/
@ExcelProperty(value = "数据类型")
private String dataType;
/**
*
*/
@ExcelProperty(value = "数据长度")
private Long dataLength;
/**
* 1ASCII,2Unicode,3Unicode-big,4UTF-8,5UTF-32,6ANSI,7GB2312
*/
@ExcelProperty(value = "数据编码格式")
private String dataEncoding;
/**
*
*/
@ExcelProperty(value = "请求间隔")
private Long requestInterval;
/** /**
* *
*/ */
@ExcelProperty(value = "车间名称") @ExcelProperty(value = "车间名称")
private String workshopName; private String workshopName;
/**
*
*/
@ExcelProperty(value = "设备模型名称")
private String deviceModeName;
private List<ProdBaseMachineProcess> baseMachineProcessList; private List<ProdBaseMachineProcess> baseMachineProcessList;
} }

@ -1,5 +1,6 @@
package org.dromara.mes.domain.vo; package org.dromara.mes.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@ -12,15 +13,18 @@ public class ShiftGroupVo {
/** /**
* ID * ID
*/ */
@ExcelProperty(value = "班次ID")
private Long shiftId; private Long shiftId;
/** /**
* *
*/ */
@ExcelProperty(value = "班次名称")
private String shiftName; private String shiftName;
/** /**
* *
*/ */
@ExcelProperty(value = "该班次下的物料计划列表")
private List<ProdPlanInfoVo> plans; private List<ProdPlanInfoVo> plans;
} }

@ -1,11 +1,17 @@
package org.dromara.mes.dubbo; package org.dromara.mes.dubbo;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.enums.UserStatus;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.mes.api.RemoteMaterialInfoService; import org.dromara.mes.api.RemoteMaterialInfoService;
import org.dromara.mes.api.model.bo.BaseMaterialInfoBo; import org.dromara.mes.api.model.bo.BaseMaterialInfoBo;
import org.dromara.mes.domain.BaseMaterialInfo; import org.dromara.mes.domain.BaseMaterialInfo;
import org.dromara.mes.domain.vo.BaseMaterialInfoVo;
import org.dromara.mes.mapper.BaseMaterialInfoMapper; import org.dromara.mes.mapper.BaseMaterialInfoMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -44,6 +50,4 @@ public class RemoteMaterialInfoServiceImpl implements RemoteMaterialInfoService
return materialInfoMapper.insertBatch(list); return materialInfoMapper.insertBatch(list);
} }
} }

@ -0,0 +1,43 @@
package org.dromara.mes.dubbo;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.mes.mapper.BaseMaterialInfoMapper;
import org.dromara.pda.api.RemotePdaMesApiService;
import org.dromara.pda.api.model.BaseMaterial;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@RequiredArgsConstructor
@Service
@DubboService
public class RemoteQmsApiServiceImpl implements RemotePdaMesApiService {
private final BaseMaterialInfoMapper baseMaterialInfoMapper ;
@Override
public BaseMaterial remoteQueryByMaterialCode(String materialCode, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> {
BaseMaterial baseMaterial=baseMaterialInfoMapper.queryByMaterialCode(materialCode);
//BaseMaterialInfoVo sysUser = baseMaterialInfoMapper.selectVoOne(new LambdaQueryWrapper<BaseMaterialInfo>().eq(BaseMaterialInfo::getMaterialCode, materialCode));
if (ObjectUtil.isNull(baseMaterial)) {
throw new UserException("materialCode.not.exit", materialCode);
}
// if (UserStatus.DISABLE.getCode().equals(sysUser.getStatus())) {
// throw new UserException("user.blocked", username);
// }
return baseMaterial;
});
}
}

@ -3,6 +3,7 @@ package org.dromara.mes.mapper;
import org.dromara.mes.domain.BaseMaterialInfo; import org.dromara.mes.domain.BaseMaterialInfo;
import org.dromara.mes.domain.vo.BaseMaterialInfoVo; import org.dromara.mes.domain.vo.BaseMaterialInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.pda.api.model.BaseMaterial;
/** /**
* Mapper * Mapper
@ -12,4 +13,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/ */
public interface BaseMaterialInfoMapper extends BaseMapperPlus<BaseMaterialInfo, BaseMaterialInfoVo> { public interface BaseMaterialInfoMapper extends BaseMapperPlus<BaseMaterialInfo, BaseMaterialInfoVo> {
BaseMaterial queryByMaterialCode(String materialCode);
} }

@ -0,0 +1,14 @@
package org.dromara.mes.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.mes.domain.ProdBaseDeviceMode;
/**
* Mapper
*
* @author Yinq
* @date 2025-03-11
*/
public interface prodBaseDeviceModeMapper extends BaseMapperPlus<ProdBaseDeviceMode, ProdBaseDeviceMode> {
}

@ -1,5 +1,6 @@
package org.dromara.mes.service.impl; package org.dromara.mes.service.impl;
import org.apache.commons.lang3.ObjectUtils;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.mes.domain.BaseDeviceCategory;
import org.dromara.mes.domain.vo.BaseMaterialTypeVo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.BaseDeviceTypeBo; import org.dromara.mes.domain.bo.BaseDeviceTypeBo;
import org.dromara.mes.domain.vo.BaseDeviceTypeVo; import org.dromara.mes.domain.vo.BaseDeviceTypeVo;
@ -73,6 +76,11 @@ public class BaseDeviceTypeServiceImpl implements IBaseDeviceTypeService {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseDeviceType> lqw = JoinWrappers.lambda(BaseDeviceType.class) MPJLambdaWrapper<BaseDeviceType> lqw = JoinWrappers.lambda(BaseDeviceType.class)
.selectAll(BaseDeviceType.class) .selectAll(BaseDeviceType.class)
// 关联查询设备大类信息
.select(BaseDeviceCategory::getDeviceCategoryName)
.leftJoin(BaseDeviceCategory.class,BaseDeviceCategory::getDeviceCategoryId,BaseDeviceType::getDeviceCategoryId)
.eq(bo.getDeviceTypeId() != null, BaseDeviceType::getDeviceTypeId, bo.getDeviceTypeId()) .eq(bo.getDeviceTypeId() != null, BaseDeviceType::getDeviceTypeId, bo.getDeviceTypeId())
.eq(bo.getParentId() != null, BaseDeviceType::getParentId, bo.getParentId()) .eq(bo.getParentId() != null, BaseDeviceType::getParentId, bo.getParentId())
.eq(StringUtils.isNotBlank(bo.getDeviceTypeCode()), BaseDeviceType::getDeviceTypeCode, bo.getDeviceTypeCode()) .eq(StringUtils.isNotBlank(bo.getDeviceTypeCode()), BaseDeviceType::getDeviceTypeCode, bo.getDeviceTypeCode())
@ -94,6 +102,15 @@ public class BaseDeviceTypeServiceImpl implements IBaseDeviceTypeService {
public Boolean insertByBo(BaseDeviceTypeBo bo) { public Boolean insertByBo(BaseDeviceTypeBo bo) {
BaseDeviceType add = MapstructUtils.convert(bo, BaseDeviceType.class); BaseDeviceType add = MapstructUtils.convert(bo, BaseDeviceType.class);
validEntityBeforeSave(add); validEntityBeforeSave(add);
//获取父节点信息
BaseDeviceTypeVo 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; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setDeviceTypeId(add.getDeviceTypeId()); bo.setDeviceTypeId(add.getDeviceTypeId());

@ -43,12 +43,12 @@ public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoS
* @return * @return
*/ */
@Override @Override
public BaseEqualMaterialInfoVo queryById(Long equalMaterialInfoId){ public BaseEqualMaterialInfoVo queryById(Long equalMaterialInfoId) {
BaseEqualMaterialInfoVo baseEqualMaterialInfoVo = baseMapper.selectVoById(equalMaterialInfoId); BaseEqualMaterialInfoVo baseEqualMaterialInfoVo = baseMapper.selectVoById(equalMaterialInfoId);
if (!ObjectUtils.isEmpty(baseEqualMaterialInfoVo)) { if (!ObjectUtils.isEmpty(baseEqualMaterialInfoVo)) {
// 关联物料名称 // 关联物料名称
BaseMaterialInfo baseMaterialInfo = baseMaterialInfoMapper.selectOne(Wrappers.lambdaQuery(BaseMaterialInfo.class) BaseMaterialInfo baseMaterialInfo = baseMaterialInfoMapper.selectOne(Wrappers.lambdaQuery(BaseMaterialInfo.class)
.eq(BaseMaterialInfo::getMaterialId, baseEqualMaterialInfoVo.getMaterialId())); .eq(BaseMaterialInfo::getMaterialId, baseEqualMaterialInfoVo.getMaterialId()));
if (!ObjectUtils.isEmpty(baseMaterialInfo)) { if (!ObjectUtils.isEmpty(baseMaterialInfo)) {
baseEqualMaterialInfoVo.setMaterialName(baseMaterialInfo.getMaterialName()); baseEqualMaterialInfoVo.setMaterialName(baseMaterialInfo.getMaterialName());
} }
@ -94,22 +94,25 @@ public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoS
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseEqualMaterialInfo> lqw = JoinWrappers.lambda(BaseEqualMaterialInfo.class) MPJLambdaWrapper<BaseEqualMaterialInfo> lqw = JoinWrappers.lambda(BaseEqualMaterialInfo.class)
.selectAll(BaseEqualMaterialInfo.class) .selectAll(BaseEqualMaterialInfo.class)
// 关联查询物料名称 // 关联查询物料名称
.select("material.material_name as material_name") .select("material.material_name as material_name")
.leftJoin(BaseMaterialInfo.class, "material", on -> on .leftJoin(BaseMaterialInfo.class, "material", on -> on
.eq(BaseMaterialInfo::getMaterialId, BaseEqualMaterialInfo::getMaterialId)) .eq(BaseMaterialInfo::getMaterialId, BaseEqualMaterialInfo::getMaterialId))
// 关联查询等同物料名称 // 关联查询等同物料名称
.select("equal_material.material_name as equal_material_name") .select("equal_material.material_name as equal_material_name")
.leftJoin(BaseMaterialInfo.class, "equal_material", on -> on .leftJoin(BaseMaterialInfo.class, "equal_material", on -> on
.eq(BaseMaterialInfo::getMaterialId, BaseEqualMaterialInfo::getEqualMaterialId)) .eq(BaseMaterialInfo::getMaterialId, BaseEqualMaterialInfo::getEqualMaterialId))
// 关联查询父级物料名称
.eq(bo.getEqualMaterialInfoId() != null, BaseEqualMaterialInfo::getEqualMaterialInfoId, bo.getEqualMaterialInfoId()) .select("parent_material.material_name as parent_name")
.eq(bo.getMaterialId() != null, BaseEqualMaterialInfo::getMaterialId, bo.getMaterialId()) .leftJoin(BaseMaterialInfo.class, "parent_material", on -> on
.eq(bo.getEqualMaterialId() != null, BaseEqualMaterialInfo::getEqualMaterialId, bo.getEqualMaterialId()) .eq(BaseMaterialInfo::getMaterialId, BaseEqualMaterialInfo::getParentId))
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseEqualMaterialInfo::getActiveFlag, bo.getActiveFlag()) .eq(bo.getEqualMaterialInfoId() != null, BaseEqualMaterialInfo::getEqualMaterialInfoId, bo.getEqualMaterialInfoId())
.orderByDesc(BaseEqualMaterialInfo::getCreateTime); .eq(bo.getMaterialId() != null, BaseEqualMaterialInfo::getMaterialId, bo.getMaterialId())
.eq(bo.getEqualMaterialId() != null, BaseEqualMaterialInfo::getEqualMaterialId, bo.getEqualMaterialId())
.eq(bo.getParentId() != null, BaseEqualMaterialInfo::getParentId, bo.getParentId())
.eq(bo.getMaterialBomVersion() != null, BaseEqualMaterialInfo::getMaterialBomVersion, bo.getMaterialBomVersion())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseEqualMaterialInfo::getActiveFlag, bo.getActiveFlag())
.orderByDesc(BaseEqualMaterialInfo::getCreateTime);
return lqw; return lqw;
} }
@ -146,7 +149,7 @@ public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoS
/** /**
* *
*/ */
private void validEntityBeforeSave(BaseEqualMaterialInfo entity){ private void validEntityBeforeSave(BaseEqualMaterialInfo entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -159,7 +162,7 @@ public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoS
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;

@ -96,7 +96,9 @@ public class ProdBaseMachineInfoServiceImpl implements IProdBaseMachineInfoServi
MPJLambdaWrapper<ProdBaseMachineInfo> lqw = JoinWrappers.lambda(ProdBaseMachineInfo.class) MPJLambdaWrapper<ProdBaseMachineInfo> lqw = JoinWrappers.lambda(ProdBaseMachineInfo.class)
.selectAll(ProdBaseMachineInfo.class) .selectAll(ProdBaseMachineInfo.class)
.select(ProdBaseWorkshopInfo::getWorkshopName) .select(ProdBaseWorkshopInfo::getWorkshopName)
.select(ProdBaseDeviceMode::getDeviceModeName)
.leftJoin(ProdBaseWorkshopInfo.class, ProdBaseWorkshopInfo::getWorkshopId, ProdBaseMachineInfo::getWorkshopId) .leftJoin(ProdBaseWorkshopInfo.class, ProdBaseWorkshopInfo::getWorkshopId, ProdBaseMachineInfo::getWorkshopId)
.leftJoin(ProdBaseDeviceMode.class, ProdBaseDeviceMode::getDeviceModeId, ProdBaseMachineInfo::getDeviceModeId)
.eq(bo.getMachineId() != null, ProdBaseMachineInfo::getMachineId, bo.getMachineId()) .eq(bo.getMachineId() != null, ProdBaseMachineInfo::getMachineId, bo.getMachineId())
.like(StringUtils.isNotBlank(bo.getMachineCode()), ProdBaseMachineInfo::getMachineCode, bo.getMachineCode()) .like(StringUtils.isNotBlank(bo.getMachineCode()), ProdBaseMachineInfo::getMachineCode, bo.getMachineCode())
.like(StringUtils.isNotBlank(bo.getMachineName()), ProdBaseMachineInfo::getMachineName, bo.getMachineName()) .like(StringUtils.isNotBlank(bo.getMachineName()), ProdBaseMachineInfo::getMachineName, bo.getMachineName())

@ -4,4 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.mes.mapper.BaseMaterialInfoMapper"> <mapper namespace="org.dromara.mes.mapper.BaseMaterialInfoMapper">
<select id="queryByMaterialCode" resultType="org.dromara.pda.api.model.BaseMaterial">
select material_code,material_name from base_material_info where material_code = #{materialCode}
</select>
</mapper> </mapper>

@ -111,6 +111,12 @@
<groupId>com.microsoft.sqlserver</groupId> <groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId> <artifactId>mssql-jdbc</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>hwmom-api-pda</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>com.microsoft.sqlserver</groupId>--> <!-- <groupId>com.microsoft.sqlserver</groupId>-->
<!-- <artifactId>mssql-jdbc</artifactId>--> <!-- <artifactId>mssql-jdbc</artifactId>-->

@ -1,8 +1,10 @@
package org.dromara.qms; package org.dromara.qms;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication @SpringBootApplication
public class HwmomQmsApplication { public class HwmomQmsApplication {

@ -26,6 +26,8 @@ public class QcDefectDetailBo extends BaseEntity {
private String defectDetailId; private String defectDetailId;
private String tenantId;
/** /**
* *
*/ */

@ -54,5 +54,4 @@ public class QcInspectionRulesBo extends BaseEntity {
*/ */
private String remark; private String remark;
} }

@ -0,0 +1,62 @@
package org.dromara.qms.dubbo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.pda.api.RemotePdaMesApiService;
import org.dromara.pda.api.RemotePdaQmsApiService;
import org.dromara.pda.api.model.BaseMaterial;
import org.dromara.pda.api.model.vo.RemoteDefectVo;
import org.dromara.qms.domain.QcDefectDetail;
import org.dromara.qms.domain.bo.QcDefectDetailBo;
import org.dromara.qms.domain.vo.QcDefectDetailVo;
import org.dromara.qms.mapper.QcDefectDetailMapper;
import org.dromara.qms.mapper.QcDefectInfoMapper;
import org.dromara.qms.service.IQcDefectDetailService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@RequiredArgsConstructor
@Service
@DubboService
public class RemoteQmsApiServiceImpl implements RemotePdaQmsApiService {
private final QcDefectInfoMapper qcDefectInfoMapper;
private final QcDefectDetailMapper qcDefectDetailMapper;
private final IQcDefectDetailService iQcDefectDetailService;
/**
*
* @param defectType
* @param tenantId
* @return
* @throws UserException
*/
@Override
public List<RemoteDefectVo> remoteQueryDefectList(String defectType, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> {
QcDefectDetailBo bo=new QcDefectDetailBo();
bo.setDefectType(defectType);
bo.setTenantId("000000");
List<QcDefectDetailVo> DefectDetailVos = iQcDefectDetailService.queryList(bo);
RemoteDefectVo rem=new RemoteDefectVo();
List<RemoteDefectVo> remoteDefectVoList=new ArrayList<>();
for(QcDefectDetailVo qcDefectDetailVo:DefectDetailVos){
rem.setDefectCode(qcDefectDetailVo.getDefectCode());
rem.setDefectDesc(qcDefectDetailVo.getDefectDesc());
remoteDefectVoList.add(rem);
}
return remoteDefectVoList;
});
}
}
Loading…
Cancel
Save