后端:生产计划由选择物料bom改为bom版本
master
xs 3 months ago
parent e7ff97763c
commit 06c85a2cd5

@ -16,10 +16,10 @@ public class DynamicBaseSqlProvider {
sql.INSERT_INTO(tableName); sql.INSERT_INTO(tableName);
switch (tableNamePrefix) { switch (tableNamePrefix) {
case "prod_plan_info": case "prod_plan_info":
sql.INTO_COLUMNS("plan_code", "material_id", "material_bom_id", "plan_amount", "dispatch_amount", sql.INTO_COLUMNS("plan_code", "material_id", "material_bom_version", "plan_amount", "dispatch_amount",
"process_id", "plan_begin_time", "plan_end_time", "release_type", "release_id", "shift_id", "process_id", "plan_begin_time", "plan_end_time", "release_type", "release_id", "shift_id",
"import_flag", "class_team_id", "model_code", "create_dept", "create_by", "create_time"); "import_flag", "class_team_id", "model_code", "create_dept", "create_by", "create_time");
sql.INTO_VALUES("#{entity.planCode}", "#{entity.materialId}", "#{entity.materialBomId}", "#{entity.planAmount}", "#{entity.dispatchAmount}", sql.INTO_VALUES("#{entity.planCode}", "#{entity.materialId}", "#{entity.materialBomVersion}", "#{entity.planAmount}", "#{entity.dispatchAmount}",
"#{entity.processId}", "#{entity.planBeginTime}", "#{entity.planEndTime}", "#{entity.releaseType}", "#{entity.releaseId}", "#{entity.shiftId}", "#{entity.processId}", "#{entity.planBeginTime}", "#{entity.planEndTime}", "#{entity.releaseType}", "#{entity.releaseId}", "#{entity.shiftId}",
"#{entity.importFlag}", "#{entity.classTeamId}", "#{entity.modelCode}", "#{entity.createDept}", "#{entity.createBy}", "#{entity.createTime}"); "#{entity.importFlag}", "#{entity.classTeamId}", "#{entity.modelCode}", "#{entity.createDept}", "#{entity.createBy}", "#{entity.createTime}");
break; break;

@ -16,11 +16,13 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.mes.domain.ProdBaseRouteProcess; import org.dromara.mes.domain.ProdBaseRouteProcess;
import org.dromara.mes.domain.bo.ProdMaterialBomBo;
import org.dromara.mes.domain.bo.ProdMaterialBomVersionBo;
import org.dromara.mes.domain.bo.ProdPlanInfoBo; import org.dromara.mes.domain.bo.ProdPlanInfoBo;
import org.dromara.mes.domain.vo.MesProductPlanEditVo; import org.dromara.mes.domain.vo.*;
import org.dromara.mes.domain.vo.PlanMonitorVo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.mes.service.IProdBaseRouteProcessService; import org.dromara.mes.service.IProdBaseRouteProcessService;
import org.dromara.mes.service.IProdMaterialBomService;
import org.dromara.mes.service.IProdMaterialBomVersionService;
import org.dromara.mes.service.IProdPlanInfoService; import org.dromara.mes.service.IProdPlanInfoService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -44,6 +46,10 @@ public class ProdPlanInfoController extends BaseController {
private final IProdBaseRouteProcessService prodBaseRouteProcessService; private final IProdBaseRouteProcessService prodBaseRouteProcessService;
private final IProdMaterialBomService prodMaterialBomService;
private final IProdMaterialBomVersionService prodMaterialBomVersionService;
/** /**
* *
*/ */
@ -184,4 +190,24 @@ public class ProdPlanInfoController extends BaseController {
return R.ok(prodPlanInfoService.queryMoritorList(bo)); return R.ok(prodPlanInfoService.queryMoritorList(bo));
} }
/**
* bom
*/
@SaCheckPermission("mes:planInfo:list")
@GetMapping("/materialBomTreeSelect")
public R<List<TreeSelect>> materialBomTreeSelect(ProdMaterialBomBo prodMaterialBomBo) {
return R.ok(prodMaterialBomService.selectMaterialBomTreeList(prodMaterialBomBo));
}
/**
* bom
*/
@SaCheckPermission("mes:planInfo:list")
@GetMapping("/materialBomVersionSelect")
public R<List<ProdMaterialBomVersionVo>> materialBomVersionSelect(ProdMaterialBomVersionBo prodMaterialBomBo) {
return R.ok(prodMaterialBomVersionService.queryList(prodMaterialBomBo));
}
} }

@ -31,6 +31,10 @@ public class ProdMaterialBomVersion extends TenantEntity {
*/ */
private String activeFlag; private String activeFlag;
/**
* 1 0
*/
private String deleteFlag;
/** /**
* bom * bom

@ -64,6 +64,11 @@ public class ProdPlanInfo extends TenantEntity {
*/ */
private Long materialBomId; private Long materialBomId;
/**
* bom
*/
private String materialBomVersion;
/** /**
* ID * ID
*/ */

@ -32,6 +32,11 @@ public class ProdMaterialBomVersionBo extends BaseEntity {
@NotBlank(message = "激活标识1是 0否不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "激活标识1是 0否不能为空", groups = { AddGroup.class, EditGroup.class })
private String activeFlag; private String activeFlag;
/**
* 1 0
*/
private String deleteFlag;
/** /**
* bom * bom
*/ */

@ -67,6 +67,12 @@ public class ProdPlanInfoBo extends BaseEntity {
@NotNull(message = "物料BOM不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "物料BOM不能为空", groups = { AddGroup.class, EditGroup.class })
private Long materialBomId; private Long materialBomId;
/**
* bom
*/
private String materialBomVersion;
/** /**
* ID * ID
*/ */

@ -41,6 +41,11 @@ public class ProdMaterialBomVersionVo implements Serializable {
@ExcelDictFormat(readConverterExp = "1=是,0=否") @ExcelDictFormat(readConverterExp = "1=是,0=否")
private String activeFlag; private String activeFlag;
/**
* 1 0
*/
private String deleteFlag;
/** /**
* bom * bom
*/ */

@ -80,6 +80,11 @@ public class ProdPlanInfoVo implements Serializable {
@ExcelProperty(value = "物料BOM_ID") @ExcelProperty(value = "物料BOM_ID")
private Long materialBomId; private Long materialBomId;
/**
* bom
*/
private String materialBomVersion;
/** /**
* ID * ID
*/ */

@ -32,7 +32,7 @@ public interface ProdPlanInfoMapper extends BaseMapperPlus<ProdPlanInfo, ProdPla
* ,Join process * ,Join process
* *
* @param bo * @param bo
* @return * @return
*/ */
public List<ProdPlanInfoVo> selectProdPlanInfoJoinProcessList(ProdPlanInfoBo bo); public List<ProdPlanInfoVo> selectProdPlanInfoJoinProcessList(ProdPlanInfoBo bo);
@ -41,7 +41,7 @@ public interface ProdPlanInfoMapper extends BaseMapperPlus<ProdPlanInfo, ProdPla
* *
* @param tableName * @param tableName
* @param queryWrapper * @param queryWrapper
* @return * @return
*/ */
List<ProdPlanInfoVo> selectProdPlanInfoList(@Param("tableName") String tableName, @Param(Constants.WRAPPER) Wrapper<ProdPlanInfo> queryWrapper); List<ProdPlanInfoVo> selectProdPlanInfoList(@Param("tableName") String tableName, @Param(Constants.WRAPPER) Wrapper<ProdPlanInfo> queryWrapper);
@ -51,4 +51,15 @@ public interface ProdPlanInfoMapper extends BaseMapperPlus<ProdPlanInfo, ProdPla
*/ */
List<PlanMonitorVo> queryMoritorList(@Param("tableName") String tableName, List<PlanMonitorVo> queryMoritorList(@Param("tableName") String tableName,
@Param(Constants.WRAPPER) Wrapper<ProdPlanInfo> queryWrapper); @Param(Constants.WRAPPER) Wrapper<ProdPlanInfo> queryWrapper);
/**
* ,bom
*
* @param tableName
* @param queryWrapper
* @return
*/
List<ProdPlanInfoVo> selectProdPlan4Check(@Param("tableName") String tableName, @Param(Constants.WRAPPER) Wrapper<ProdPlanInfo> queryWrapper);
} }

@ -1,5 +1,7 @@
package org.dromara.mes.service.impl; package org.dromara.mes.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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 +11,7 @@ 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.ProdMaterialBom;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdMaterialBomVersionBo; import org.dromara.mes.domain.bo.ProdMaterialBomVersionBo;
import org.dromara.mes.domain.vo.ProdMaterialBomVersionVo; import org.dromara.mes.domain.vo.ProdMaterialBomVersionVo;
@ -39,7 +42,7 @@ public class ProdMaterialBomVersionServiceImpl implements IProdMaterialBomVersio
* @return bom * @return bom
*/ */
@Override @Override
public ProdMaterialBomVersionVo queryById(String materialBomVersion){ public ProdMaterialBomVersionVo queryById(String materialBomVersion) {
return baseMapper.selectVoById(materialBomVersion); return baseMapper.selectVoById(materialBomVersion);
} }
@ -72,10 +75,22 @@ public class ProdMaterialBomVersionServiceImpl implements IProdMaterialBomVersio
private MPJLambdaWrapper<ProdMaterialBomVersion> buildQueryWrapper(ProdMaterialBomVersionBo bo) { private MPJLambdaWrapper<ProdMaterialBomVersion> buildQueryWrapper(ProdMaterialBomVersionBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdMaterialBomVersion> lqw = JoinWrappers.lambda(ProdMaterialBomVersion.class) MPJLambdaWrapper<ProdMaterialBomVersion> lqw = JoinWrappers.lambda(ProdMaterialBomVersion.class)
.selectAll(ProdMaterialBomVersion.class) .exists(params.get("parentId") != null, "SELECT 1\n" +
.eq(StringUtils.isNotBlank(bo.getMaterialBomVersion()), ProdMaterialBomVersion::getMaterialBomVersion, bo.getMaterialBomVersion()) "\tFROM\n" +
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdMaterialBomVersion::getActiveFlag, bo.getActiveFlag()) "\t\tprod_material_bom st\n" +
.orderByDesc(ProdMaterialBomVersion::getCreateTime).orderByDesc(ProdMaterialBomVersion::getActiveFlag); "\tWHERE\n" +
"\t\t(st.material_bom_version = t.material_bom_version\n" +
"\t\t\tAND st.parent_id = "+params.get("parentId")+"\n" +
"\t\t\tAND st.delete_flag = '0')")
.eq(StringUtils.isNotBlank(bo.getMaterialBomVersion()), ProdMaterialBomVersion::getMaterialBomVersion, bo.getMaterialBomVersion())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdMaterialBomVersion::getActiveFlag, bo.getActiveFlag())
.orderByDesc(ProdMaterialBomVersion::getCreateTime).orderByDesc(ProdMaterialBomVersion::getActiveFlag);
// boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>()
// .eq(SysUser::getUserName, user.getUserName())
// .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
return lqw; return lqw;
} }
@ -112,7 +127,7 @@ public class ProdMaterialBomVersionServiceImpl implements IProdMaterialBomVersio
/** /**
* *
*/ */
private void validEntityBeforeSave(ProdMaterialBomVersion entity){ private void validEntityBeforeSave(ProdMaterialBomVersion entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -125,7 +140,7 @@ public class ProdMaterialBomVersionServiceImpl implements IProdMaterialBomVersio
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;

@ -270,4 +270,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ORDER BY r.machineId, t.shift_id, t.plan_id ORDER BY r.machineId, t.shift_id, t.plan_id
</select> </select>
<select id="selectProdPlan4Check" parameterType="ProdPlanInfo" resultMap="ProdPlanInfoResult">
select mpp.plan_code,mpp.plan_status from ${tableName} mpp
<where>
<if test="productOrderId != null ">and mpp.product_order_id = #{productOrderId}</if>
<if test="planCode != null and planCode != ''">and mpp.plan_code = #{planCode}</if>
<if test="dispatchCode != null and dispatchCode != ''">and mpp.dispatch_code = #{dispatchCode}</if>
<if test="materialId != null ">and mpp.material_id = #{materialId}</if>
<if test="materialBomVersion != null and materialBomVersion != ''">and mpp.material_bom_version = #{materialBomVersion}</if>
<if test="materialBomId != null ">and mpp.material_bom_id = #{materialBomId}</if>
<if test="processId != null ">and mpp.process_id = #{processId}</if>
<if test="processOrder != null ">and mpp.process_order = #{processOrder}</if>
<if test="lastProcessId != null ">and mpp.last_process_id = #{lastProcessId}</if>
<if test="productionTime != null ">and mpp.production_time = #{productionTime}</if>
<if test="planAmount != null ">and mpp.plan_amount = #{planAmount}</if>
<if test="completeAmount != null ">and mpp.complete_amount = #{completeAmount}</if>
<if test="planBeginTime != null ">and mpp.plan_begin_time = #{planBeginTime}</if>
<if test="planEndTime != null ">and mpp.plan_end_time = #{planEndTime}</if>
<if test="realBeginTime != null ">and mpp.real_begin_time = #{realBeginTime}</if>
<if test="realEndTime != null ">and mpp.real_end_time = #{realEndTime}</if>
<if test="attachId != null and attachId != ''">and mpp.attach_id = #{attachId}</if>
<if test="planStatus != null and planStatus != ''">and mpp.plan_status = #{planStatus}</if>
</where>
</select>
</mapper> </mapper>

Loading…
Cancel
Save