diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/controller/MesPlanBomController.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/controller/MesPlanBomController.java new file mode 100644 index 0000000..ba8f8cc --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/controller/MesPlanBomController.java @@ -0,0 +1,108 @@ +package com.ruoyi.mts.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.mts.domain.vo.MesPlanBomVo; +import com.ruoyi.mts.domain.bo.MesPlanBomBo; +import com.ruoyi.mts.service.IMesPlanBomService; + +/** + * 物料清单 + * + * @author jiangzhe + * @date 2024-02-20 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/mts/planBom") +public class MesPlanBomController extends BaseController { + + private final IMesPlanBomService iMesPlanBomService; + + /** + * 查询物料清单列表 + */ + @SaCheckPermission("mts:planBom:list") + @GetMapping("/list") + public R> list(MesPlanBomBo bo) { + List list = iMesPlanBomService.queryList(bo); + return R.ok(list); + } + + /** + * 导出物料清单列表 + */ + @SaCheckPermission("mts:planBom:export") + @Log(title = "物料清单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(MesPlanBomBo bo, HttpServletResponse response) { + List list = iMesPlanBomService.queryList(bo); + ExcelUtil.exportExcel(list, "物料清单", MesPlanBomVo.class, response); + } + + /** + * 获取物料清单详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("mts:planBom:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iMesPlanBomService.queryById(id)); + } + + /** + * 新增物料清单 + */ + @SaCheckPermission("mts:planBom:add") + @Log(title = "物料清单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody MesPlanBomBo bo) { + return toAjax(iMesPlanBomService.insertByBo(bo)); + } + + /** + * 修改物料清单 + */ + @SaCheckPermission("mts:planBom:edit") + @Log(title = "物料清单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody MesPlanBomBo bo) { + return toAjax(iMesPlanBomService.updateByBo(bo)); + } + + /** + * 删除物料清单 + * + * @param ids 主键串 + */ + @SaCheckPermission("mts:planBom:remove") + @Log(title = "物料清单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iMesPlanBomService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/MesPlanBom.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/MesPlanBom.java new file mode 100644 index 0000000..7f5885f --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/MesPlanBom.java @@ -0,0 +1,90 @@ +package com.ruoyi.mts.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.TreeEntity; + +/** + * 物料清单对象 mes_plan_bom + * + * @author jiangzhe + * @date 2024-02-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("mes_plan_bom") +public class MesPlanBom extends TreeEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + /** + * 详情任务id + */ + private Long detailId; + /** + * 层级 + */ + private Integer deep; + /** + * 物资名称 + */ + private String name; + /** + * 图号及标准号 + */ + private String standardNo; + /** + * 材质 + */ + private String material; + /** + * 数量 + */ + private Integer num; + /** + * 单位 + */ + private String unit; + /** + * 工序 + */ + private String process; + /** + * 备注 + */ + private String remark; + /** + * 应到日期 + */ + private Date dueDate; + /** + * 实到日期 + */ + private Date actualDate; + /** + * 供应商 + */ + private String supplier; + /** + * oss对应id + */ + private Long ossId; + /** + * 删除标志(0存在,2删除) + */ + @TableLogic + private String delFlag; + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/MesPlanDetail.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/MesPlanDetail.java index 1bcee4a..461b384 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/MesPlanDetail.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/MesPlanDetail.java @@ -3,11 +3,13 @@ package com.ruoyi.mts.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; + import java.io.Serializable; import java.util.Date; import java.math.BigDecimal; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.TreeEntity; @@ -22,7 +24,7 @@ import com.ruoyi.common.core.domain.TreeEntity; @TableName("mes_plan_detail") public class MesPlanDetail extends TreeEntity { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; /** * 主键 @@ -38,13 +40,29 @@ public class MesPlanDetail extends TreeEntity { */ private String name; /** - * 计划时间 + * 计划开始时间 */ - private Date planDate; + private Date planStartDate; + /** - * 实际时间 + * 计划结束时间 */ - private Date actualDate; + private Date planEndDate; + + /** + * 实际开始时间 + */ + private Date actualStartDate; + + /** + * 实际结束时间 + */ + private Date actualEndDate; + + /** + * 甘特图颜色 + */ + private String ganttColor; /** * 删除标志(0存在,2删除) */ diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/bo/MesPlanBomBo.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/bo/MesPlanBomBo.java new file mode 100644 index 0000000..2b705a6 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/bo/MesPlanBomBo.java @@ -0,0 +1,110 @@ +package com.ruoyi.mts.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.TreeEntity; + +/** + * 物料清单业务对象 mes_plan_bom + * + * @author jiangzhe + * @date 2024-02-20 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class MesPlanBomBo extends TreeEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 详情任务id + */ + @NotNull(message = "详情任务id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long detailId; + + /** + * 层级 + */ + private Integer deep; + + /** + * 物资名称 + */ + @NotBlank(message = "物资名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String name; + + /** + * 图号及标准号 + */ + @NotBlank(message = "图号及标准号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String standardNo; + + /** + * 材质 + */ + @NotBlank(message = "材质不能为空", groups = { AddGroup.class, EditGroup.class }) + private String material; + + /** + * 数量 + */ + @NotNull(message = "数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer num; + + /** + * 单位 + */ + @NotBlank(message = "单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private String unit; + + /** + * 工序 + */ + @NotBlank(message = "工序不能为空", groups = { AddGroup.class, EditGroup.class }) + private String process; + + /** + * 备注 + */ + @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) + private String remark; + + /** + * 应到日期 + */ + @NotNull(message = "应到日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date dueDate; + + /** + * 实到日期 + */ + @NotNull(message = "实到日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date actualDate; + + /** + * 供应商 + */ + @NotBlank(message = "供应商不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplier; + + /** + * oss对应id + */ + @NotNull(message = "oss对应id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long ossId; + + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/bo/MesPlanDetailBo.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/bo/MesPlanDetailBo.java index 4298d4d..ce9782b 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/bo/MesPlanDetailBo.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/bo/MesPlanDetailBo.java @@ -4,11 +4,13 @@ import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import lombok.Data; import lombok.EqualsAndHashCode; + import javax.validation.constraints.*; import java.util.Date; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.TreeEntity; @@ -26,32 +28,43 @@ public class MesPlanDetailBo extends TreeEntity { /** * 主键 */ - @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + @NotNull(message = "主键不能为空", groups = {EditGroup.class}) private Long id; /** * 主表id */ - @NotNull(message = "主表id不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "主表id不能为空", groups = {AddGroup.class, EditGroup.class}) private Long mainId; /** * 名称 */ - @NotBlank(message = "名称不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotBlank(message = "名称不能为空", groups = {AddGroup.class, EditGroup.class}) private String name; /** - * 计划时间 + * 计划开始时间 */ - @NotNull(message = "计划时间不能为空", groups = { AddGroup.class, EditGroup.class }) - private Date planDate; + private Date planStartDate; /** - * 实际时间 + * 计划结束时间 */ - @NotNull(message = "实际时间不能为空", groups = { AddGroup.class, EditGroup.class }) - private Date actualDate; + private Date planEndDate; + /** + * 实际开始时间 + */ + private Date actualStartDate; + /** + * 实际结束时间 + */ + private Date actualEndDate; + + /** + * 甘特图颜色 + */ + private String ganttColor; } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/vo/MesPlanBomVo.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/vo/MesPlanBomVo.java new file mode 100644 index 0000000..0f29b87 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/vo/MesPlanBomVo.java @@ -0,0 +1,117 @@ +package com.ruoyi.mts.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + +import java.io.Serializable; + +/** + * 物料清单视图对象 mes_plan_bom + * + * @author jiangzhe + * @date 2024-02-20 + */ +@Data +@ExcelIgnoreUnannotated +public class MesPlanBomVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 父id + */ + @ExcelProperty(value = "父id") + private Long parentId; + + /** + * 详情任务id + */ + @ExcelProperty(value = "详情任务id") + private Long detailId; + + /** + * 层级 + */ + @ExcelProperty(value = "层级") + private Integer deep; + + /** + * 物资名称 + */ + @ExcelProperty(value = "物资名称") + private String name; + + /** + * 图号及标准号 + */ + @ExcelProperty(value = "图号及标准号") + private String standardNo; + + /** + * 材质 + */ + @ExcelProperty(value = "材质") + private String material; + + /** + * 数量 + */ + @ExcelProperty(value = "数量") + private Integer num; + + /** + * 单位 + */ + @ExcelProperty(value = "单位") + private String unit; + + /** + * 工序 + */ + @ExcelProperty(value = "工序") + private String process; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 应到日期 + */ + @ExcelProperty(value = "应到日期") + private Date dueDate; + + /** + * 实到日期 + */ + @ExcelProperty(value = "实到日期") + private Date actualDate; + + /** + * 供应商 + */ + @ExcelProperty(value = "供应商") + private String supplier; + + /** + * oss对应id + */ + @ExcelProperty(value = "oss对应id") + private Long ossId; + + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/vo/MesPlanDetailVo.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/vo/MesPlanDetailVo.java index 9568bdf..6f0f7d4 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/vo/MesPlanDetailVo.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/domain/vo/MesPlanDetailVo.java @@ -48,16 +48,27 @@ public class MesPlanDetailVo implements Serializable { private String name; /** - * 计划时间 + * 计划开始时间 */ - @ExcelProperty(value = "计划时间") - private Date planDate; + private Date planStartDate; /** - * 实际时间 + * 计划结束时间 */ - @ExcelProperty(value = "实际时间") - private Date actualDate; + private Date planEndDate; + /** + * 实际开始时间 + */ + private Date actualStartDate; + /** + * 实际结束时间 + */ + private Date actualEndDate; + + /** + * 甘特图颜色 + */ + private String ganttColor; } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/mapper/MesPlanBomMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/mapper/MesPlanBomMapper.java new file mode 100644 index 0000000..08ef813 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/mapper/MesPlanBomMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.mts.mapper; + +import com.ruoyi.mts.domain.MesPlanBom; +import com.ruoyi.mts.domain.vo.MesPlanBomVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 物料清单Mapper接口 + * + * @author jiangzhe + * @date 2024-02-20 + */ +public interface MesPlanBomMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/service/IMesPlanBomService.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/service/IMesPlanBomService.java new file mode 100644 index 0000000..72da46d --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/service/IMesPlanBomService.java @@ -0,0 +1,43 @@ +package com.ruoyi.mts.service; + +import com.ruoyi.mts.domain.MesPlanBom; +import com.ruoyi.mts.domain.vo.MesPlanBomVo; +import com.ruoyi.mts.domain.bo.MesPlanBomBo; + +import java.util.Collection; +import java.util.List; + +/** + * 物料清单Service接口 + * + * @author jiangzhe + * @date 2024-02-20 + */ +public interface IMesPlanBomService { + + /** + * 查询物料清单 + */ + MesPlanBomVo queryById(Long id); + + + /** + * 查询物料清单列表 + */ + List queryList(MesPlanBomBo bo); + + /** + * 新增物料清单 + */ + Boolean insertByBo(MesPlanBomBo bo); + + /** + * 修改物料清单 + */ + Boolean updateByBo(MesPlanBomBo bo); + + /** + * 校验并批量删除物料清单信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/service/impl/MesPlanBomServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/service/impl/MesPlanBomServiceImpl.java new file mode 100644 index 0000000..8db71cd --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/service/impl/MesPlanBomServiceImpl.java @@ -0,0 +1,109 @@ +package com.ruoyi.mts.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.mts.domain.bo.MesPlanBomBo; +import com.ruoyi.mts.domain.vo.MesPlanBomVo; +import com.ruoyi.mts.domain.MesPlanBom; +import com.ruoyi.mts.mapper.MesPlanBomMapper; +import com.ruoyi.mts.service.IMesPlanBomService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 物料清单Service业务层处理 + * + * @author jiangzhe + * @date 2024-02-20 + */ +@RequiredArgsConstructor +@Service +public class MesPlanBomServiceImpl implements IMesPlanBomService { + + private final MesPlanBomMapper baseMapper; + + /** + * 查询物料清单 + */ + @Override + public MesPlanBomVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + + /** + * 查询物料清单列表 + */ + @Override + public List queryList(MesPlanBomBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(MesPlanBomBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getParentId() != null, MesPlanBom::getParentId, bo.getParentId()); + lqw.eq(bo.getDetailId() != null, MesPlanBom::getDetailId, bo.getDetailId()); + lqw.eq(bo.getDeep() != null, MesPlanBom::getDeep, bo.getDeep()); + lqw.like(StringUtils.isNotBlank(bo.getName()), MesPlanBom::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getStandardNo()), MesPlanBom::getStandardNo, bo.getStandardNo()); + lqw.eq(StringUtils.isNotBlank(bo.getMaterial()), MesPlanBom::getMaterial, bo.getMaterial()); + lqw.eq(bo.getNum() != null, MesPlanBom::getNum, bo.getNum()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), MesPlanBom::getUnit, bo.getUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getProcess()), MesPlanBom::getProcess, bo.getProcess()); + lqw.eq(bo.getDueDate() != null, MesPlanBom::getDueDate, bo.getDueDate()); + lqw.eq(bo.getActualDate() != null, MesPlanBom::getActualDate, bo.getActualDate()); + lqw.eq(StringUtils.isNotBlank(bo.getSupplier()), MesPlanBom::getSupplier, bo.getSupplier()); + lqw.eq(bo.getOssId() != null, MesPlanBom::getOssId, bo.getOssId()); + return lqw; + } + + /** + * 新增物料清单 + */ + @Override + public Boolean insertByBo(MesPlanBomBo bo) { + MesPlanBom add = BeanUtil.toBean(bo, MesPlanBom.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改物料清单 + */ + @Override + public Boolean updateByBo(MesPlanBomBo bo) { + MesPlanBom update = BeanUtil.toBean(bo, MesPlanBom.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(MesPlanBom entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除物料清单 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/mts/service/impl/MesPlanDetailServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/mts/service/impl/MesPlanDetailServiceImpl.java index 4bd25e1..b304e66 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/mts/service/impl/MesPlanDetailServiceImpl.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/mts/service/impl/MesPlanDetailServiceImpl.java @@ -65,8 +65,8 @@ public class MesPlanDetailServiceImpl implements IMesPlanDetailService { lqw.eq(bo.getParentId() != null, MesPlanDetail::getParentId, bo.getParentId()); lqw.eq(bo.getMainId() != null, MesPlanDetail::getMainId, bo.getMainId()); lqw.like(StringUtils.isNotBlank(bo.getName()), MesPlanDetail::getName, bo.getName()); - lqw.eq(bo.getPlanDate() != null, MesPlanDetail::getPlanDate, bo.getPlanDate()); - lqw.eq(bo.getActualDate() != null, MesPlanDetail::getActualDate, bo.getActualDate()); + lqw.eq(bo.getPlanStartDate() != null, MesPlanDetail::getPlanStartDate, bo.getPlanStartDate()); + lqw.eq(bo.getPlanEndDate() != null, MesPlanDetail::getPlanEndDate, bo.getPlanEndDate()); return lqw; } diff --git a/ruoyi-demo/src/main/resources/mapper/mts/MesPlanBomMapper.xml b/ruoyi-demo/src/main/resources/mapper/mts/MesPlanBomMapper.xml new file mode 100644 index 0000000..65b720f --- /dev/null +++ b/ruoyi-demo/src/main/resources/mapper/mts/MesPlanBomMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-demo/src/main/resources/mapper/mts/MesPlanDetailMapper.xml b/ruoyi-demo/src/main/resources/mapper/mts/MesPlanDetailMapper.xml index 3c56254..822f76c 100644 --- a/ruoyi-demo/src/main/resources/mapper/mts/MesPlanDetailMapper.xml +++ b/ruoyi-demo/src/main/resources/mapper/mts/MesPlanDetailMapper.xml @@ -9,8 +9,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + + + + + diff --git a/ruoyi-ui-vue3/src/api/mts/planBom.js b/ruoyi-ui-vue3/src/api/mts/planBom.js new file mode 100644 index 0000000..fd587de --- /dev/null +++ b/ruoyi-ui-vue3/src/api/mts/planBom.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询物料清单列表 +export function listPlanBom(query) { + return request({ + url: '/mts/planBom/list', + method: 'get', + params: query + }) +} + +// 查询物料清单详细 +export function getPlanBom(id) { + return request({ + url: '/mts/planBom/' + id, + method: 'get' + }) +} + +// 新增物料清单 +export function addPlanBom(data) { + return request({ + url: '/mts/planBom', + method: 'post', + data: data + }) +} + +// 修改物料清单 +export function updatePlanBom(data) { + return request({ + url: '/mts/planBom', + method: 'put', + data: data + }) +} + +// 删除物料清单 +export function delPlanBom(id) { + return request({ + url: '/mts/planBom/' + id, + method: 'delete' + }) +} diff --git a/ruoyi-ui-vue3/src/router/index.js b/ruoyi-ui-vue3/src/router/index.js index 2f91f9e..adc4f87 100644 --- a/ruoyi-ui-vue3/src/router/index.js +++ b/ruoyi-ui-vue3/src/router/index.js @@ -1,6 +1,6 @@ -import { createWebHistory, createRouter } from 'vue-router' +import { createWebHistory, createRouter } from "vue-router"; /* Layout */ -import Layout from '@/layout' +import Layout from "@/layout"; /** * Note: 路由配置项 @@ -27,64 +27,64 @@ import Layout from '@/layout' // 公共路由 export const constantRoutes = [ { - path: '/redirect', + path: "/redirect", component: Layout, hidden: true, children: [ { - path: '/redirect/:path(.*)', - component: () => import('@/views/redirect/index.vue') - } - ] + path: "/redirect/:path(.*)", + component: () => import("@/views/redirect/index.vue"), + }, + ], }, { - path: '/login', - component: () => import('@/views/login'), - hidden: true + path: "/login", + component: () => import("@/views/login"), + hidden: true, }, { - path: '/register', - component: () => import('@/views/register'), - hidden: true + path: "/register", + component: () => import("@/views/register"), + hidden: true, }, { path: "/:pathMatch(.*)*", - component: () => import('@/views/error/404'), - hidden: true + component: () => import("@/views/error/404"), + hidden: true, }, { - path: '/401', - component: () => import('@/views/error/401'), - hidden: true + path: "/401", + component: () => import("@/views/error/401"), + hidden: true, }, { - path: '', + path: "", component: Layout, - redirect: '/index', + redirect: "/index", children: [ { - path: '/index', - component: () => import('@/views/index'), - name: 'Index', - meta: { title: '首页', icon: 'dashboard', affix: true } - } - ] + path: "/index", + component: () => import("@/views/index"), + name: "Index", + meta: { title: "首页", icon: "dashboard", affix: true }, + }, + ], }, { - path: '/user', + path: "/user", component: Layout, hidden: true, - redirect: 'noredirect', + redirect: "noredirect", children: [ { - path: 'profile', - component: () => import('@/views/system/user/profile/index'), - name: 'Profile', - meta: { title: '个人中心', icon: 'user' } - } - ] - } -] + path: "profile", + component: () => import("@/views/system/user/profile/index"), + name: "Profile", + meta: { title: "个人中心", icon: "user" }, + }, + ], + }, +]; // 动态路由,基于用户权限动态去加载 export const dynamicRoutes = [ @@ -139,8 +139,22 @@ export const dynamicRoutes = [ { path: "index/:mainId(\\d+)", component: () => import("@/views/mts/planDetail"), - name: "detail", - meta: { title: "计划任务", activeMenu: "/mts/planMain" }, + name: "plan-detail", + meta: { title: "计划任务", activeMenu: "/mts/planDetail" }, + }, + ], + }, + { + path: "/mts/detail-bom", + component: Layout, + hidden: true, + permissions: ["mts:planMain:list"], + children: [ + { + path: "index/:detailId(\\d+)", + component: () => import("@/views/mts/planBom"), + name: "detail-bom", + meta: { title: "物料清单", activeMenu: "/mts/planBom" }, }, ], }, @@ -179,9 +193,9 @@ const router = createRouter({ routes: constantRoutes, scrollBehavior(to, from, savedPosition) { if (savedPosition) { - return savedPosition + return savedPosition; } else { - return { top: 0 } + return { top: 0 }; } }, }); diff --git a/ruoyi-ui-vue3/src/views/index.vue b/ruoyi-ui-vue3/src/views/index.vue index dc2f370..c57322c 100644 --- a/ruoyi-ui-vue3/src/views/index.vue +++ b/ruoyi-ui-vue3/src/views/index.vue @@ -1,5 +1,5 @@ diff --git a/ruoyi-ui-vue3/src/views/mts/planBom/index.vue b/ruoyi-ui-vue3/src/views/mts/planBom/index.vue new file mode 100644 index 0000000..9fafb7f --- /dev/null +++ b/ruoyi-ui-vue3/src/views/mts/planBom/index.vue @@ -0,0 +1,356 @@ + + + diff --git a/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue b/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue index e2d9e14..664571d 100644 --- a/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue +++ b/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue @@ -1,173 +1,350 @@ - - -.container { - height: 100vh; - width: 100%; -} - -.left-container { - overflow: hidden; - position: relative; - height: 100%; -} - -.right-container { - border-right: 1px solid #cecece; - float: right; - height: 100%; - width: 340px; - box-shadow: 0 0 5px 2px #aaa; - position: relative; - z-index: 2; -} - -.gantt-messages { - list-style-type: none; - height: 50%; - margin: 0; - overflow-x: hidden; - overflow-y: auto; - padding-left: 5px; -} - -.gantt-messages>.gantt-message { - background-color: #f4f4f4; - box-shadow: inset 5px 0 #d69000; - font-family: Geneva, Arial, Helvetica, sans-serif; - font-size: 14px; - margin: 5px 0; - padding: 8px 0 8px 10px; -} - -.gantt-selected-info { - border-bottom: 1px solid #cecece; - box-sizing: border-box; - font-family: Geneva, Arial, Helvetica, sans-serif; - height: 50%; - line-height: 28px; - padding: 10px; -} - -.gantt-selected-info h2 { - border-bottom: 1px solid #cecece; -} - -.select-task-prompt h2 { - color: #d9d9d9; -} - diff --git a/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue.bak b/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue.bak deleted file mode 100644 index 0c95108..0000000 --- a/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue.bak +++ /dev/null @@ -1,286 +0,0 @@ - - - diff --git a/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue.gt b/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue.gt new file mode 100644 index 0000000..e2d9e14 --- /dev/null +++ b/ruoyi-ui-vue3/src/views/mts/planDetail/index.vue.gt @@ -0,0 +1,173 @@ + + + + + diff --git a/ruoyi-ui-vue3/src/views/mts/planMain/index.vue b/ruoyi-ui-vue3/src/views/mts/planMain/index.vue index 1d38a40..232ec8d 100644 --- a/ruoyi-ui-vue3/src/views/mts/planMain/index.vue +++ b/ruoyi-ui-vue3/src/views/mts/planMain/index.vue @@ -80,12 +80,12 @@ + style="width: 100%" placeholder="请选择开始时间"> + style="width: 100%" placeholder="请选择结束时间"> @@ -204,7 +204,7 @@ function handleSelectionChange(selection) { function handleAdd() { reset(); open.value = true; - title.value = "添加生产计划主"; + title.value = "添加生产计划"; } /** 修改按钮操作 */ @@ -216,7 +216,7 @@ function handleUpdate(row) { loading.value = false; form.value = response.data; open.value = true; - title.value = "修改生产计划主"; + title.value = "修改生产计划"; }); }