From d69ae21b1ff106e39a94245ff6421ac70dc58242 Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 20 Jan 2025 19:03:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1.1.3=20=E7=94=9F=E4=BA=A7=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E4=BF=A1=E6=81=AF=E6=A0=B9=E6=8D=AE=E8=BD=A6=E9=97=B4?= =?UTF-8?q?=E5=88=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/DatabaseConstants.java | 16 ++++ .../common/mapper/DynamicBaseSqlMapper.java | 13 +++ .../provider/DynamicBaseSqlProvider.java | 32 +++++++ .../dromara/mes/domain/bo/ProdPlanInfoBo.java | 2 + .../mes/mapper/ProdPlanInfoMapper.java | 13 ++- .../service/impl/ProdPlanInfoServiceImpl.java | 94 +++++++++++-------- .../mapper/mes/ProdPlanInfoMapper.xml | 2 +- 7 files changed, 129 insertions(+), 43 deletions(-) create mode 100644 ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/DatabaseConstants.java create mode 100644 ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/mapper/DynamicBaseSqlMapper.java create mode 100644 ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/provider/DynamicBaseSqlProvider.java diff --git a/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/DatabaseConstants.java b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/DatabaseConstants.java new file mode 100644 index 00000000..c15ae45e --- /dev/null +++ b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/DatabaseConstants.java @@ -0,0 +1,16 @@ +package org.dromara.common.constant; + +/** + * 数据库常量信息 + * + * @author ruoyi + */ +public interface DatabaseConstants { + + /** + * 生产计划表名前缀 + */ + String TABLE_NAME_PROD_PLAN_INFO_PREFIX = "prod_plan_info"; + + +} diff --git a/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/mapper/DynamicBaseSqlMapper.java b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/mapper/DynamicBaseSqlMapper.java new file mode 100644 index 00000000..c29f38b1 --- /dev/null +++ b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/mapper/DynamicBaseSqlMapper.java @@ -0,0 +1,13 @@ +package org.dromara.common.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.InsertProvider; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.provider.DynamicBaseSqlProvider; + +@Mapper +public interface DynamicBaseSqlMapper extends BaseMapper { + // 自定义动态插入方法,接收表名和对象作为参数 + @InsertProvider(type = DynamicBaseSqlProvider.class, method = "dynamicInsert") + int dynamicInsert(@Param("tableName") String tableName, @Param("tableNamePrefix") String tableNamePrefix,@Param("entity") T entity); +} diff --git a/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/provider/DynamicBaseSqlProvider.java b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/provider/DynamicBaseSqlProvider.java new file mode 100644 index 00000000..0a35087c --- /dev/null +++ b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/provider/DynamicBaseSqlProvider.java @@ -0,0 +1,32 @@ +package org.dromara.common.provider; + +import org.apache.ibatis.jdbc.SQL; +import java.util.Map; + + +public class DynamicBaseSqlProvider { + public String dynamicInsert(Map params) { + String tableName = (String) params.get("tableName"); +// Object entity = params.get("entity"); + String tableNamePrefix = (String) params.get("tableNamePrefix"); + + SQL sql = new SQL(); + sql.INSERT_INTO(tableName); + switch(tableNamePrefix){ + case "prod_plan_info": + sql.INTO_COLUMNS("plan_code", "material_id", "material_bom_id","plan_amount","dispatch_amount"); + sql.INTO_VALUES("#{entity.planCode}", "#{entity.materialId}", "#{entity.materialBomId}", "#{entity.planAmount}", "#{entity.dispatchAmount}"); + break; + } + return sql.toString(); + } + + + public String selectByDynamicTableName(Map params) { + String tableName = (String) params.get("tableName"); + return new SQL() {{ + SELECT("*"); + FROM(tableName); + }}.toString(); + } +} 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 e2871a5c..f8b8631a 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 @@ -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/mapper/ProdPlanInfoMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdPlanInfoMapper.java index 555aec6e..2ff30ce0 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 @@ -27,7 +27,7 @@ public interface ProdPlanInfoMapper extends BaseMapperPlus selectProdPlanInfoList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + public Page selectProdPlanInfoList(@Param("page") Page page, @Param("tableName")String tableName,@Param(Constants.WRAPPER) Wrapper queryWrapper); /** * 查询生产派工列表,Join process @@ -36,4 +36,15 @@ public interface ProdPlanInfoMapper extends BaseMapperPlus 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/service/impl/ProdPlanInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java index 1c8f9e02..b0b433a7 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,14 +1,18 @@ package org.dromara.mes.service.impl; +import org.dromara.common.constant.DatabaseConstants; 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 lombok.RequiredArgsConstructor; +import org.dromara.mes.domain.ProdPlanInfo2; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdPlanInfoBo; import org.dromara.mes.domain.vo.ProdPlanInfoVo; @@ -32,6 +36,8 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { private final ProdPlanInfoMapper baseMapper; + private final DynamicBaseSqlMapper dynamicBaseSqlMapper; + /** * 查询生产工单信息 * @@ -39,7 +45,7 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { * @return 生产工单信息 */ @Override - public ProdPlanInfoVo queryById(Long planId){ + public ProdPlanInfoVo queryById(Long planId) { return baseMapper.selectVoById(planId); } @@ -53,10 +59,13 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { @Override public TableDataInfo queryPageList(ProdPlanInfoBo bo, PageQuery pageQuery) { MPJLambdaWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectProdPlanInfoList(pageQuery.build(), lqw); + Long workshopId = bo.getWorkshopId(); + String tableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + workshopId; + Page result = baseMapper.selectProdPlanInfoList(pageQuery.build(), tableName, lqw); return TableDataInfo.build(result); } + /** * 查询符合条件的生产工单信息列表 * @@ -70,40 +79,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; } @@ -119,10 +129,12 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { 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; } @@ -142,7 +154,7 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(ProdPlanInfo entity){ + private void validEntityBeforeSave(ProdPlanInfo entity) { //TODO 做一些数据校验,如唯一约束 } @@ -155,7 +167,7 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; @@ -183,4 +195,4 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { } - } +} diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml index ee17ee73..7a4284b4 100644 --- a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml @@ -82,7 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" * - from prod_plan_info t + from ${tableName} t left join base_material_info bmi on bmi.material_id = t.material_id left join base_material_info bomi on bomi.material_id = t.material_bom_id left join prod_base_station_info pbsi on pbsi.station_id = t.release_id From c2f57a5ac3c5568df410d12f2ddb8fb511143003 Mon Sep 17 00:00:00 2001 From: xs Date: Tue, 21 Jan 2025 10:18:14 +0800 Subject: [PATCH 2/3] =?UTF-8?q?1.1.4=20=E7=94=9F=E4=BA=A7=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E4=BF=A1=E6=81=AF=E6=A0=B9=E6=8D=AE=E8=BD=A6=E9=97=B4?= =?UTF-8?q?=E5=88=86=E8=A1=A8=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java | 2 -- 1 file changed, 2 deletions(-) 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 b0b433a7..3028d1bf 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 @@ -11,8 +11,6 @@ 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.mes.domain.ProdPlanInfo2; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdPlanInfoBo; import org.dromara.mes.domain.vo.ProdPlanInfoVo; From 0df2888eac0270cd122ca317d0052e0f6baaf811 Mon Sep 17 00:00:00 2001 From: xs Date: Tue, 21 Jan 2025 10:18:51 +0800 Subject: [PATCH 3/3] =?UTF-8?q?1.1.4=20=E7=94=9F=E4=BA=A7=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E4=BF=A1=E6=81=AF=E6=A0=B9=E6=8D=AE=E8=BD=A6=E9=97=B4?= =?UTF-8?q?=E5=88=86=E8=A1=A8=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/hwmom-mes/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ruoyi-modules/hwmom-mes/pom.xml b/ruoyi-modules/hwmom-mes/pom.xml index 35f2c1e3..a5531c66 100644 --- a/ruoyi-modules/hwmom-mes/pom.xml +++ b/ruoyi-modules/hwmom-mes/pom.xml @@ -115,6 +115,12 @@ com.microsoft.sqlserver mssql-jdbc + + org.dromara + hwmom-common-mom + 2.2.2 + compile + org.dromara