diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/constant/MtlType.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/constant/MtlType.java new file mode 100644 index 0000000..6fcec55 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/constant/MtlType.java @@ -0,0 +1,26 @@ +package com.njzscloud.dispose.mfg.bom.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 字典代码:mtl_type + * 字典名称:物料类型 + */ +@Getter +@RequiredArgsConstructor +public enum MtlType implements DictStr { + YuanLiao("YuanLiao", "原料"), + + FuChanPin("FuChanPin", "副产品"), + + ZhuChanPin("ZhuChanPin", "主产品"), + + ; + private final String val; + + private final String txt; +} + + diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/controller/BomController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/controller/BomController.java new file mode 100644 index 0000000..e4e9b0b --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/controller/BomController.java @@ -0,0 +1,66 @@ +package com.njzscloud.dispose.mfg.bom.controller; + +import com.njzscloud.common.core.utils.R; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.bom.pojo.entity.BomEntity; +import com.njzscloud.dispose.mfg.bom.service.BomService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 物料清单 + */ +@Slf4j +@RestController +@RequestMapping("/bom") +@RequiredArgsConstructor +public class BomController { + private final BomService bomService; + + /** + * 新增 + */ + @PostMapping("/add") + public R add(@RequestBody BomEntity bomEntity) { + bomService.add(bomEntity); + return R.success(); + } + + /** + * 修改 + */ + @PostMapping("/modify") + public R modify(@RequestBody BomEntity bomEntity) { + bomService.modify(bomEntity); + return R.success(); + } + + /** + * 删除 + */ + @PostMapping("/del") + public R del(@RequestBody List ids) { + bomService.del(ids); + return R.success(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + public R detail(@RequestParam("id") Long id) { + return R.success(bomService.detail(id)); + } + + /** + * 分页查询 + */ + @GetMapping("/paging") + public R> paging(PageParam pageParam, BomEntity bomEntity) { + return R.success(bomService.paging(pageParam, bomEntity)); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/controller/BomDetailController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/controller/BomDetailController.java new file mode 100644 index 0000000..8fde201 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/controller/BomDetailController.java @@ -0,0 +1,66 @@ +package com.njzscloud.dispose.mfg.bom.controller; + +import com.njzscloud.common.core.utils.R; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.bom.pojo.entity.BomDetailEntity; +import com.njzscloud.dispose.mfg.bom.service.BomDetailService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 物料清单明细 + */ +@Slf4j +@RestController +@RequestMapping("/bom_detail") +@RequiredArgsConstructor +public class BomDetailController { + private final BomDetailService bomDetailService; + + /** + * 新增 + */ + @PostMapping("/add") + public R add(@RequestBody BomDetailEntity bomDetailEntity) { + bomDetailService.add(bomDetailEntity); + return R.success(); + } + + /** + * 修改 + */ + @PostMapping("/modify") + public R modify(@RequestBody BomDetailEntity bomDetailEntity) { + bomDetailService.modify(bomDetailEntity); + return R.success(); + } + + /** + * 删除 + */ + @PostMapping("/del") + public R del(@RequestBody List ids) { + bomDetailService.del(ids); + return R.success(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + public R detail(@RequestParam("id") Long id) { + return R.success(bomDetailService.detail(id)); + } + + /** + * 分页查询 + */ + @GetMapping("/paging") + public R> paging(PageParam pageParam, BomDetailEntity bomDetailEntity) { + return R.success(bomDetailService.paging(pageParam, bomDetailEntity)); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/mapper/BomDetailMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/mapper/BomDetailMapper.java new file mode 100644 index 0000000..df52196 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/mapper/BomDetailMapper.java @@ -0,0 +1,12 @@ +package com.njzscloud.dispose.mfg.bom.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njzscloud.dispose.mfg.bom.pojo.entity.BomDetailEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 物料清单明细 + */ +@Mapper +public interface BomDetailMapper extends BaseMapper { +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/mapper/BomMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/mapper/BomMapper.java new file mode 100644 index 0000000..60b54ca --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/mapper/BomMapper.java @@ -0,0 +1,12 @@ +package com.njzscloud.dispose.mfg.bom.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njzscloud.dispose.mfg.bom.pojo.entity.BomEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 物料清单 + */ +@Mapper +public interface BomMapper extends BaseMapper { +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/entity/BomDetailEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/entity/BomDetailEntity.java new file mode 100644 index 0000000..3100330 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/entity/BomDetailEntity.java @@ -0,0 +1,60 @@ +package com.njzscloud.dispose.mfg.bom.pojo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.njzscloud.dispose.mfg.bom.constant.MtlType; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * 物料清单明细 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("mfg_bom_detail") +public class BomDetailEntity { + + /** + * Id + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 物料清单 Id;mfg_bom.id + */ + private Long bomId; + + /** + * 产品 Id;gds_goods.id + */ + private Long goodsId; + + /** + * 物料类型,YuanLiao-->原料、FuChanPin-->副产品、ZhuChanPin-->主产品 + */ + private MtlType mtlType; + + /** + * 是否为产出;0-->否、1-->是 + */ + private Boolean chu; + + /** + * 消耗/产出量;如果为产出,则此值为 1 + */ + private BigDecimal quantity; + + /** + * 是否必需;0-->否、1-->是 + */ + private Boolean mandatory; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/entity/BomEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/entity/BomEntity.java new file mode 100644 index 0000000..4267375 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/entity/BomEntity.java @@ -0,0 +1,82 @@ +package com.njzscloud.dispose.mfg.bom.pojo.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 物料清单 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("mfg_bom") +public class BomEntity { + + /** + * Id + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 编码 + */ + private String sn; + + /** + * 主产品 Id;gds_goods.id + */ + private Long goodId; + + /** + * 物料清单版本号 + */ + private String bomVer; + + /** + * 是否可用;0-->否、1-->是 + */ + private Boolean canuse; + + /** + * 备注 + */ + private String memo; + + /** + * 创建人 Id; sys_user.id + */ + @TableField(fill = FieldFill.INSERT) + private Long creatorId; + + /** + * 修改人 Id; sys_user.id + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long modifierId; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime modifyTime; + + /** + * 是否删除; 0-->未删除、1-->已删除 + */ + @TableLogic + private Boolean deleted; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/result/SearchBomDetailResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/result/SearchBomDetailResult.java new file mode 100644 index 0000000..cb86626 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/result/SearchBomDetailResult.java @@ -0,0 +1,61 @@ +package com.njzscloud.dispose.mfg.bom.pojo.result; + +import com.njzscloud.dispose.mfg.bom.constant.MtlType; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * 物料清单明细 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchBomDetailResult { + + /** + * Id + */ + private Long id; + + /** + * 物料清单 Id;mfg_bom.id + */ + private Long bomId; + + /** + * 产品 Id;gds_goods.id + */ + private Long goodsId; + /** + * 产品名称 + */ + private String goodsName; + /** + * 产品编码 + */ + private String goodsSn; + /** + * 物料类型,YuanLiao-->原料、FuChanPin-->副产品、ZhuChanPin-->主产品 + */ + private MtlType mtlType; + + /** + * 是否为产出;0-->否、1-->是 + */ + private Boolean chu; + + /** + * 消耗/产出量;如果为产出,则此值为 1 + */ + private BigDecimal quantity; + + /** + * 是否必需;0-->否、1-->是 + */ + private Boolean mandatory; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/result/SearchBomResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/result/SearchBomResult.java new file mode 100644 index 0000000..96a28ed --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/pojo/result/SearchBomResult.java @@ -0,0 +1,58 @@ +package com.njzscloud.dispose.mfg.bom.pojo.result; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 物料清单 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchBomResult { + + /** + * Id + */ + private Long id; + + /** + * 编码 + */ + private String sn; + + /** + * 主产品 Id;gds_goods.id + */ + private Long goodId; + /** + * 主产品名称 + */ + private String goodsName; + /** + * 主产品编码 + */ + private String goodsSn; + /** + * 物料清单版本号 + */ + private String bomVer; + + /** + * 是否可用;0-->否、1-->是 + */ + private Boolean canuse; + + /** + * 备注 + */ + private String memo; + + private List details; +} + diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/service/BomDetailService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/service/BomDetailService.java new file mode 100644 index 0000000..6813c08 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/service/BomDetailService.java @@ -0,0 +1,60 @@ +package com.njzscloud.dispose.mfg.bom.service; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.bom.mapper.BomDetailMapper; +import com.njzscloud.dispose.mfg.bom.pojo.entity.BomDetailEntity; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 物料清单明细 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class BomDetailService extends ServiceImpl implements IService { + + /** + * 新增 + */ + public void add(BomDetailEntity bomDetailEntity) { + this.save(bomDetailEntity); + } + + /** + * 修改 + */ + public void modify(BomDetailEntity bomDetailEntity) { + this.updateById(bomDetailEntity); + } + + /** + * 删除 + */ + @Transactional(rollbackFor = Exception.class) + public void del(List ids) { + this.removeBatchByIds(ids); + } + + /** + * 详情 + */ + public BomDetailEntity detail(Long id) { + return this.getById(id); + } + + /** + * 分页查询 + */ + public PageResult paging(PageParam pageParam, BomDetailEntity bomDetailEntity) { + return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(bomDetailEntity))); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/service/BomService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/service/BomService.java new file mode 100644 index 0000000..88cd6b3 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/bom/service/BomService.java @@ -0,0 +1,60 @@ +package com.njzscloud.dispose.mfg.bom.service; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.bom.mapper.BomMapper; +import com.njzscloud.dispose.mfg.bom.pojo.entity.BomEntity; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 物料清单 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class BomService extends ServiceImpl implements IService { + + /** + * 新增 + */ + public void add(BomEntity bomEntity) { + this.save(bomEntity); + } + + /** + * 修改 + */ + public void modify(BomEntity bomEntity) { + this.updateById(bomEntity); + } + + /** + * 删除 + */ + @Transactional(rollbackFor = Exception.class) + public void del(List ids) { + this.removeBatchByIds(ids); + } + + /** + * 详情 + */ + public BomEntity detail(Long id) { + return this.getById(id); + } + + /** + * 分页查询 + */ + public PageResult paging(PageParam pageParam, BomEntity bomEntity) { + return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(bomEntity))); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/constant/CraftCategory.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/constant/CraftCategory.java new file mode 100644 index 0000000..ada5a6b --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/constant/CraftCategory.java @@ -0,0 +1,24 @@ +package com.njzscloud.dispose.mfg.craft.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 字典代码:craft_category + * 字典名称:工艺类型 + */ +@Getter +@RequiredArgsConstructor +public enum CraftCategory implements DictStr { + ZiDongHua("ZiDongHua", "自动化"), + + RenGong("RenGong", "人工"), + + ; + private final String val; + + private final String txt; +} + + diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftController.java new file mode 100644 index 0000000..322a5e3 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftController.java @@ -0,0 +1,69 @@ +package com.njzscloud.dispose.mfg.craft.controller; + +import com.njzscloud.common.core.utils.R; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftEntity; +import com.njzscloud.dispose.mfg.craft.pojo.param.AddCraftParam; +import com.njzscloud.dispose.mfg.craft.pojo.param.SearchCraftParam; +import com.njzscloud.dispose.mfg.craft.pojo.result.SearchCraftResult; +import com.njzscloud.dispose.mfg.craft.service.CraftService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 工艺 + */ +@Slf4j +@RestController +@RequestMapping("/craft") +@RequiredArgsConstructor +public class CraftController { + private final CraftService craftService; + + /** + * 新增 + */ + @PostMapping("/add") + public R add(@RequestBody AddCraftParam addCraftParam) { + craftService.add(addCraftParam); + return R.success(); + } + + /** + * 修改 + */ + @PostMapping("/modify") + public R modify(@RequestBody CraftEntity craftEntity) { + craftService.modify(craftEntity); + return R.success(); + } + + /** + * 删除 + */ + @PostMapping("/del") + public R del(@RequestBody List ids) { + craftService.del(ids); + return R.success(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + public R detail(@RequestParam("id") Long id) { + return R.success(craftService.detail(id)); + } + + /** + * 分页查询 + */ + @GetMapping("/paging") + public R> paging(PageParam pageParam, SearchCraftParam searchCraftParam) { + return R.success(craftService.paging(pageParam, searchCraftParam)); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftOperationController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftOperationController.java new file mode 100644 index 0000000..0e8832b --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftOperationController.java @@ -0,0 +1,66 @@ +package com.njzscloud.dispose.mfg.craft.controller; + +import com.njzscloud.common.core.utils.R; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftOperationEntity; +import com.njzscloud.dispose.mfg.craft.service.CraftOperationService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 工序 + */ +@Slf4j +@RestController +@RequestMapping("/craft_operation") +@RequiredArgsConstructor +public class CraftOperationController { + private final CraftOperationService craftOperationService; + + /** + * 新增 + */ + @PostMapping("/add") + public R add(@RequestBody CraftOperationEntity craftOperationEntity) { + craftOperationService.add(craftOperationEntity); + return R.success(); + } + + /** + * 修改 + */ + @PostMapping("/modify") + public R modify(@RequestBody CraftOperationEntity craftOperationEntity) { + craftOperationService.modify(craftOperationEntity); + return R.success(); + } + + /** + * 删除 + */ + @PostMapping("/del") + public R del(@RequestBody List ids) { + craftOperationService.del(ids); + return R.success(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + public R detail(@RequestParam("id") Long id) { + return R.success(craftOperationService.detail(id)); + } + + /** + * 分页查询 + */ + @GetMapping("/paging") + public R> paging(PageParam pageParam, CraftOperationEntity craftOperationEntity) { + return R.success(craftOperationService.paging(pageParam, craftOperationEntity)); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftWayController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftWayController.java new file mode 100644 index 0000000..78a7560 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/controller/CraftWayController.java @@ -0,0 +1,87 @@ +package com.njzscloud.dispose.mfg.craft.controller; + +import com.njzscloud.common.core.utils.R; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftWayEntity; +import com.njzscloud.dispose.mfg.craft.pojo.param.AddAllCraftWayParam; +import com.njzscloud.dispose.mfg.craft.pojo.result.SearchCraftWayResult; +import com.njzscloud.dispose.mfg.craft.service.CraftWayService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 工艺路线 + */ +@Slf4j +@RestController +@RequestMapping("/craft_way") +@RequiredArgsConstructor +public class CraftWayController { + private final CraftWayService craftWayService; + + /** + * 新增 + */ + @PostMapping("/add") + public R add(@RequestBody CraftWayEntity craftWayEntity) { + craftWayService.add(craftWayEntity); + return R.success(); + } + + /** + * 新增 + */ + @PostMapping("/add_all") + public R addAll(@RequestBody AddAllCraftWayParam addAllCraftWayParam) { + craftWayService.addAll(addAllCraftWayParam); + return R.success(); + } + + /** + * 修改 + */ + @PostMapping("/modify") + public R modify(@RequestBody CraftWayEntity craftWayEntity) { + craftWayService.modify(craftWayEntity); + return R.success(); + } + + /** + * 删除 + */ + @PostMapping("/del") + public R del(@RequestBody List ids) { + craftWayService.del(ids); + return R.success(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + public R detail(@RequestParam("id") Long id) { + return R.success(craftWayService.detail(id)); + } + + /** + * 分页查询 + */ + @GetMapping("/paging") + public R> paging(PageParam pageParam, CraftWayEntity craftWayEntity) { + return R.success(craftWayService.paging(pageParam, craftWayEntity)); + } + + + /** + * 查询工艺路线列表 + */ + @GetMapping("/list_all") + public R> listAll(Long craftId) { + return R.success(craftWayService.listAll(craftId)); + } + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftMapper.java new file mode 100644 index 0000000..7c98aa5 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftMapper.java @@ -0,0 +1,20 @@ +package com.njzscloud.dispose.mfg.craft.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftEntity; +import com.njzscloud.dispose.mfg.craft.pojo.result.SearchCraftResult; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 工艺 + */ +@Mapper +public interface CraftMapper extends BaseMapper { + SearchCraftResult detail(@Param("id") Long id); + + IPage paging(Page page, @Param("ew") QueryWrapper ew); +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftOperationMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftOperationMapper.java new file mode 100644 index 0000000..940d99b --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftOperationMapper.java @@ -0,0 +1,12 @@ +package com.njzscloud.dispose.mfg.craft.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftOperationEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 工序 + */ +@Mapper +public interface CraftOperationMapper extends BaseMapper { +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftWayMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftWayMapper.java new file mode 100644 index 0000000..c62556c --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/mapper/CraftWayMapper.java @@ -0,0 +1,24 @@ +package com.njzscloud.dispose.mfg.craft.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njzscloud.dispose.mfg.bom.pojo.result.SearchBomDetailResult; +import com.njzscloud.dispose.mfg.bom.pojo.result.SearchBomResult; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftWayEntity; +import com.njzscloud.dispose.mfg.craft.pojo.result.SearchCraftOperationResult; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 工艺路线 + */ +@Mapper +public interface CraftWayMapper extends BaseMapper { + List listOperations(@Param("ew") QueryWrapper ew); + + List listBom(@Param("ew") QueryWrapper ew); + + List listBomDetail(@Param("ew") QueryWrapper ew); +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftEntity.java new file mode 100644 index 0000000..d4d4800 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftEntity.java @@ -0,0 +1,93 @@ +package com.njzscloud.dispose.mfg.craft.pojo.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.njzscloud.dispose.mfg.craft.constant.CraftCategory; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 工艺 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("mfg_craft") +public class CraftEntity { + + /** + * Id + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 编码 + */ + private String sn; + + /** + * 终产品 Id + */ + private Long goodsId; + + /** + * 工艺名称 + */ + private String craftName; + + /** + * 工艺版本号 + */ + private String craftVer; + + /** + * 工艺类型;字典编码:craft_category,ZiDongHua-->自动化、RenGong-->人工 + */ + private CraftCategory craftCategory; + + /** + * 是否可用;0-->否、1-->是 + */ + private Boolean canuse; + + /** + * 备注 + */ + private String memo; + + /** + * 创建人 Id; sys_user.id + */ + @TableField(fill = FieldFill.INSERT) + private Long creatorId; + + /** + * 修改人 Id; sys_user.id + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long modifierId; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime modifyTime; + + /** + * 是否删除; 0-->未删除、1-->已删除 + */ + @TableLogic + private Boolean deleted; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftOperationEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftOperationEntity.java new file mode 100644 index 0000000..3226a74 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftOperationEntity.java @@ -0,0 +1,93 @@ +package com.njzscloud.dispose.mfg.craft.pojo.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 工序 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("mfg_craft_operation") +public class CraftOperationEntity { + + /** + * Id + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 编号 + */ + private String sn; + + /** + * 工序名称 + */ + private String operationName; + + /** + * 工序类型;字典编码:operation_category + */ + private String operationCategory; + + /** + * 标准节拍;单位:N/分钟 + */ + private BigDecimal stdCycle; + + /** + * 是否质检节点;0-->否、1-->是 + */ + private Boolean checkPoint; + + /** + * 是否可用;0-->否、1-->是 + */ + private Boolean canuse; + + /** + * 备注 + */ + private String memo; + + /** + * 创建人 Id;sys_user.id + */ + @TableField(fill = FieldFill.INSERT) + private Long creatorId; + + /** + * 修改人 Id;sys_user.id + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long modifierId; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime modifyTime; + + /** + * 是否删除; 0-->未删除、1-->已删除 + */ + @TableLogic + private Boolean deleted; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftWayEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftWayEntity.java new file mode 100644 index 0000000..3ae4a8a --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/entity/CraftWayEntity.java @@ -0,0 +1,52 @@ +package com.njzscloud.dispose.mfg.craft.pojo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +/** + * 工艺路线 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("mfg_craft_way") +public class CraftWayEntity { + + /** + * Id + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 工艺 Id + */ + private Long craftId; + + /** + * 工序 Id;mfg_craft_operation.id + */ + private Long operationId; + + /** + * 物料清单 Id + */ + private Long bomId; + + /** + * 步骤;同一工艺下相同步骤的工序为并行工序 + */ + private Integer step; + + /** + * 备注 + */ + private String memo; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddAllCraftWayParam.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddAllCraftWayParam.java new file mode 100644 index 0000000..c1a2445 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddAllCraftWayParam.java @@ -0,0 +1,28 @@ +package com.njzscloud.dispose.mfg.craft.pojo.param; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class AddAllCraftWayParam { + + /** + * 工艺 Id + */ + @NotNull(message = "工艺不能为空") + private Long craftId; + /** + * 工艺路线 + */ + @NotEmpty(message = "工艺路线不能为空") + private List craftWayList; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddCraftParam.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddCraftParam.java new file mode 100644 index 0000000..0098e8e --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddCraftParam.java @@ -0,0 +1,54 @@ +package com.njzscloud.dispose.mfg.craft.pojo.param; + +import com.njzscloud.dispose.mfg.craft.constant.CraftCategory; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +/** + * 工艺 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class AddCraftParam { + + /** + * 终产品 Id + */ + @NotNull(message = "终产品不能为空") + private Long goodsId; + + /** + * 工艺名称 + */ + @NotBlank(message = "工艺名称不能为空") + private String craftName; + + /** + * 工艺版本号 + */ + @NotBlank(message = "工艺版本号不能为空") + private String craftVer; + + /** + * 工艺类型;字典编码:craft_category,ZiDongHua-->自动化、RenGong-->人工 + */ + @NotNull(message = "工艺类型不能为空") + private CraftCategory craftCategory; + + /** + * 是否可用;0-->否、1-->是 + */ + @NotNull(message = "是否可用不能为空") + private Boolean canuse; + + /** + * 备注 + */ + private String memo; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddCraftWayParam.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddCraftWayParam.java new file mode 100644 index 0000000..e6975ab --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/AddCraftWayParam.java @@ -0,0 +1,41 @@ +package com.njzscloud.dispose.mfg.craft.pojo.param; + +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +/** + * 工艺路线 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class AddCraftWayParam { + + /** + * 工序 Id;mfg_craft_operation.id + */ + @NotNull(message = "工序不能为空") + private Long operationId; + + /** + * 物料清单 Id + */ + @NotNull(message = "物料清单不能为空") + private Long bomId; + + /** + * 步骤;同一工艺下相同步骤的工序为并行工序 + */ + @NotNull(message = "步骤不能为空") + private Integer step; + + /** + * 备注 + */ + private String memo; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/SearchCraftParam.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/SearchCraftParam.java new file mode 100644 index 0000000..1e7a727 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/param/SearchCraftParam.java @@ -0,0 +1,43 @@ +package com.njzscloud.dispose.mfg.craft.pojo.param; + +import com.njzscloud.dispose.mfg.craft.constant.CraftCategory; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +/** + * 工艺 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchCraftParam { + /** + * 工艺名称 + */ + @NotBlank(message = "工艺名称不能为空") + private String craftName; + + /** + * 工艺版本号 + */ + @NotBlank(message = "工艺版本号不能为空") + private String craftVer; + + /** + * 工艺类型;字典编码:craft_category,ZiDongHua-->自动化、RenGong-->人工 + */ + @NotNull(message = "工艺类型不能为空") + private CraftCategory craftCategory; + + /** + * 是否可用;0-->否、1-->是 + */ + @NotNull(message = "是否可用不能为空") + private Boolean canuse; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftOperationResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftOperationResult.java new file mode 100644 index 0000000..40cbc43 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftOperationResult.java @@ -0,0 +1,58 @@ +package com.njzscloud.dispose.mfg.craft.pojo.result; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * 工序 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchCraftOperationResult { + + /** + * Id + */ + private Long id; + + /** + * 编号 + */ + private String sn; + + /** + * 工序名称 + */ + private String operationName; + + /** + * 工序类型;字典编码:operation_category + */ + private String operationCategory; + + /** + * 标准节拍;单位:N/分钟 + */ + private BigDecimal stdCycle; + + /** + * 是否质检节点;0-->否、1-->是 + */ + private Boolean checkPoint; + + /** + * 是否可用;0-->否、1-->是 + */ + private Boolean canuse; + + /** + * 备注 + */ + private String memo; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftResult.java new file mode 100644 index 0000000..669c872 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftResult.java @@ -0,0 +1,59 @@ +package com.njzscloud.dispose.mfg.craft.pojo.result; + +import com.njzscloud.dispose.mfg.craft.constant.CraftCategory; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchCraftResult { + private Long id; + + /** + * 编码 + */ + private String sn; + + /** + * 终产品 Id + */ + private Long goodsId; + /** + * 终产品名称 + */ + private String goodsName; + /** + * 终产品编码 + */ + private String goodsSn; + + /** + * 工艺名称 + */ + private String craftName; + + /** + * 工艺版本号 + */ + private String craftVer; + + /** + * 工艺类型;字典编码:craft_category,ZiDongHua-->自动化、RenGong-->人工 + */ + private CraftCategory craftCategory; + + /** + * 是否可用;0-->否、1-->是 + */ + private Boolean canuse; + + /** + * 备注 + */ + private String memo; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftWayResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftWayResult.java new file mode 100644 index 0000000..b781540 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/pojo/result/SearchCraftWayResult.java @@ -0,0 +1,56 @@ +package com.njzscloud.dispose.mfg.craft.pojo.result; + +import com.njzscloud.dispose.mfg.bom.pojo.result.SearchBomResult; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +/** + * 工艺路线 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchCraftWayResult { + + /** + * Id + */ + private Long id; + /** + * 工艺 Id + */ + private Long craftId; + + /** + * 工序 Id;mfg_craft_operation.id + */ + private Long operationId; + + /** + * 物料清单 Id + */ + private Long bomId; + /** + * 工序 + */ + private SearchCraftOperationResult operation; + + /** + * 物料清单 + */ + private SearchBomResult bom; + + /** + * 步骤;同一工艺下相同步骤的工序为并行工序 + */ + private Integer step; + + /** + * 备注 + */ + private String memo; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftOperationService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftOperationService.java new file mode 100644 index 0000000..2f0515d --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftOperationService.java @@ -0,0 +1,60 @@ +package com.njzscloud.dispose.mfg.craft.service; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.craft.mapper.CraftOperationMapper; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftOperationEntity; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 工序 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class CraftOperationService extends ServiceImpl implements IService { + + /** + * 新增 + */ + public void add(CraftOperationEntity craftOperationEntity) { + this.save(craftOperationEntity); + } + + /** + * 修改 + */ + public void modify(CraftOperationEntity craftOperationEntity) { + this.updateById(craftOperationEntity); + } + + /** + * 删除 + */ + @Transactional(rollbackFor = Exception.class) + public void del(List ids) { + this.removeBatchByIds(ids); + } + + /** + * 详情 + */ + public CraftOperationEntity detail(Long id) { + return this.getById(id); + } + + /** + * 分页查询 + */ + public PageResult paging(PageParam pageParam, CraftOperationEntity craftOperationEntity) { + return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(craftOperationEntity))); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftService.java new file mode 100644 index 0000000..2e40b85 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftService.java @@ -0,0 +1,81 @@ +package com.njzscloud.dispose.mfg.craft.service; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.core.ex.Exceptions; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.common.sn.support.SnUtil; +import com.njzscloud.dispose.mfg.craft.mapper.CraftMapper; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftEntity; +import com.njzscloud.dispose.mfg.craft.pojo.param.AddCraftParam; +import com.njzscloud.dispose.mfg.craft.pojo.param.SearchCraftParam; +import com.njzscloud.dispose.mfg.craft.pojo.result.SearchCraftResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Optional; + +/** + * 工艺 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class CraftService extends ServiceImpl implements IService { + + /** + * 新增 + */ + @Transactional(rollbackFor = Exception.class) + public void add(AddCraftParam addCraftParam) { + List list = this.list(Wrappers.lambdaQuery().eq(CraftEntity::getGoodsId, addCraftParam.getGoodsId())); + + Optional optionalCraft = list.stream().filter(item -> item.getCraftVer().equals(addCraftParam.getCraftVer())).findFirst(); + Assert.isFalse(optionalCraft.isPresent(), () -> Exceptions.exception("工艺版本号已存在")); + + if (addCraftParam.getCanuse()) { + updateBatchById(list.stream().map(item -> item.setCanuse(false)).toList()); + } + + + this.save(BeanUtil.copyProperties(addCraftParam, CraftEntity.class) + .setSn(SnUtil.next("Craft-SN")) + ); + } + + /** + * 修改 + */ + public void modify(CraftEntity craftEntity) { + this.updateById(craftEntity); + } + + /** + * 删除 + */ + @Transactional(rollbackFor = Exception.class) + public void del(List ids) { + this.removeBatchByIds(ids); + } + + /** + * 详情 + */ + public SearchCraftResult detail(Long id) { + return baseMapper.detail(id); + } + + /** + * 分页查询 + */ + public PageResult paging(PageParam pageParam, SearchCraftParam searchCraftParam) { + return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.lambdaQuery())); + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftWayService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftWayService.java new file mode 100644 index 0000000..b4050b0 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/mfg/craft/service/CraftWayService.java @@ -0,0 +1,102 @@ +package com.njzscloud.dispose.mfg.craft.service; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.core.utils.GroupUtil; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.mfg.bom.pojo.result.SearchBomDetailResult; +import com.njzscloud.dispose.mfg.bom.pojo.result.SearchBomResult; +import com.njzscloud.dispose.mfg.craft.mapper.CraftWayMapper; +import com.njzscloud.dispose.mfg.craft.pojo.entity.CraftWayEntity; +import com.njzscloud.dispose.mfg.craft.pojo.param.AddAllCraftWayParam; +import com.njzscloud.dispose.mfg.craft.pojo.result.SearchCraftOperationResult; +import com.njzscloud.dispose.mfg.craft.pojo.result.SearchCraftWayResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 工艺路线 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class CraftWayService extends ServiceImpl implements IService { + + /** + * 新增 + */ + public void add(CraftWayEntity craftWayEntity) { + this.save(craftWayEntity); + } + + /** + * 修改 + */ + public void modify(CraftWayEntity craftWayEntity) { + this.updateById(craftWayEntity); + } + + /** + * 删除 + */ + @Transactional(rollbackFor = Exception.class) + public void del(List ids) { + this.removeBatchByIds(ids); + } + + /** + * 详情 + */ + public CraftWayEntity detail(Long id) { + return this.getById(id); + } + + /** + * 分页查询 + */ + public PageResult paging(PageParam pageParam, CraftWayEntity craftWayEntity) { + return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(craftWayEntity))); + } + + @Transactional(rollbackFor = Exception.class) + public void addAll(AddAllCraftWayParam addAllCraftWayParam) { + Long craftId = addAllCraftWayParam.getCraftId(); + this.remove(Wrappers.lambdaQuery().eq(CraftWayEntity::getCraftId, craftId)); + List collect = addAllCraftWayParam.getCraftWayList() + .stream() + .map(it -> BeanUtil.copyProperties(it, CraftWayEntity.class).setCraftId(craftId)) + .collect(Collectors.toList()); + this.saveBatch(collect); + } + + public List listAll(Long craftId) { + List craftWayEntityList = this.list(Wrappers.lambdaQuery(CraftWayEntity.class).eq(CraftWayEntity::getCraftId, craftId)); + List collect = craftWayEntityList + .stream() + .map(it -> BeanUtil.copyProperties(it, SearchCraftWayResult.class)) + .collect(Collectors.toList()); + List operationIdList = craftWayEntityList.stream().map(CraftWayEntity::getOperationId).collect(Collectors.toList()); + List craftOperationResultList = baseMapper.listOperations(Wrappers.query().in("a.id", operationIdList)); + Map map1 = GroupUtil.k_o(craftOperationResultList, SearchCraftOperationResult::getId); + for (SearchCraftWayResult searchCraftWayResult : collect) { + searchCraftWayResult.setOperation(map1.get(searchCraftWayResult.getOperationId())); + } + List bomIdList = craftWayEntityList.stream().map(CraftWayEntity::getBomId).collect(Collectors.toList()); + List bomList = baseMapper.listBom(Wrappers.query().in("a.id", bomIdList)); + List bomDetailList = baseMapper.listBomDetail(Wrappers.query().in("a.id", bomIdList)); + Map> map2 = GroupUtil.k_a(bomDetailList, SearchBomDetailResult::getBomId); + for (SearchBomResult searchBomResult : bomList) { + searchBomResult.setDetails(map2.get(searchBomResult.getId())); + } + return collect; + } +} diff --git a/njzscloud-svr/src/main/resources/mapper/mfg/bom/BomDetailMapper.xml b/njzscloud-svr/src/main/resources/mapper/mfg/bom/BomDetailMapper.xml new file mode 100644 index 0000000..4f0333c --- /dev/null +++ b/njzscloud-svr/src/main/resources/mapper/mfg/bom/BomDetailMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/njzscloud-svr/src/main/resources/mapper/mfg/bom/BomMapper.xml b/njzscloud-svr/src/main/resources/mapper/mfg/bom/BomMapper.xml new file mode 100644 index 0000000..5c167e1 --- /dev/null +++ b/njzscloud-svr/src/main/resources/mapper/mfg/bom/BomMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftMapper.xml b/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftMapper.xml new file mode 100644 index 0000000..6e07230 --- /dev/null +++ b/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftMapper.xml @@ -0,0 +1,31 @@ + + + + + + SELECT a.id, + a.sn, + a.goods_id, + a.craft_name, + a.craft_ver, + a.craft_category, + a.canuse, + a.memo, + a.create_time, + b.goods_name, + b.sn AS goods_sn + FROM mfg_craft a + INNER JOIN gds_goods b ON b.id = a.goods_id + + + + + diff --git a/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftOperationMapper.xml b/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftOperationMapper.xml new file mode 100644 index 0000000..0624b91 --- /dev/null +++ b/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftOperationMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftWayMapper.xml b/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftWayMapper.xml new file mode 100644 index 0000000..7f0a94c --- /dev/null +++ b/njzscloud-svr/src/main/resources/mapper/mfg/craft/CraftWayMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/z-doc/pdma/njzscloud-dispose.pdma b/z-doc/pdma/njzscloud-dispose.pdma index 2978045..158a872 100644 --- a/z-doc/pdma/njzscloud-dispose.pdma +++ b/z-doc/pdma/njzscloud-dispose.pdma @@ -39175,52 +39175,6 @@ "createdUserId": null, "dictItems": [] }, - { - "id": "17AB1527-D2DB-4AF4-8468-BBFB792CC944", - "defKey": "bom_id", - "defName": "物料清单 Id", - "intro": "mfg_bom.id", - "baseDataType": "BIGINT", - "bizDomainType": "", - "dbDataType": "BIGINT", - "dataLen": "", - "numScale": "", - "primaryKey": 0, - "notNull": 1, - "autoIncrement": 0, - "defaultValue": "", - "stndDictId": "", - "stndFieldId": "", - "stndDictKey": "", - "stndFieldKey": "", - "stndComplianceLevel": "", - "stndComplianceType": "", - "dictFrom": "", - "dictItems": null, - "fieldTier": "", - "mark": null, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "attr10": "", - "attr11": "", - "attr12": "", - "attr13": "", - "attr14": "", - "attr15": "", - "attr16": "", - "attr17": "", - "attr18": "", - "attr19": "", - "attr20": "", - "origin": "UI" - }, { "id": "2AE67567-1B1A-466C-8681-913A43464EB2", "defKey": "operation_name", @@ -39406,52 +39360,6 @@ "attr20": null, "origin": "PASTE" }, - { - "id": "481FF15E-5B3F-4D68-A9B6-5E899F99C3F4", - "defKey": "step", - "defName": "步骤", - "intro": "相同步骤的工序为并行工序", - "baseDataType": "INT", - "bizDomainType": "", - "dbDataType": "INT", - "dataLen": null, - "numScale": null, - "primaryKey": 0, - "notNull": 1, - "autoIncrement": 0, - "defaultValue": "", - "stndDictId": null, - "stndFieldId": null, - "stndDictKey": null, - "stndFieldKey": null, - "stndComplianceLevel": null, - "stndComplianceType": null, - "dictFrom": "", - "dictItems": [], - "fieldTier": "", - "mark": null, - "attr1": null, - "attr2": null, - "attr3": null, - "attr4": null, - "attr5": null, - "attr6": null, - "attr7": null, - "attr8": null, - "attr9": null, - "attr10": null, - "attr11": null, - "attr12": null, - "attr13": null, - "attr14": null, - "attr15": null, - "attr16": null, - "attr17": null, - "attr18": "PDManer", - "attr19": null, - "attr20": null, - "origin": "PASTE" - }, { "id": "718EF98E-8C67-4467-8FEB-B30631A8C56F", "defKey": "canuse", @@ -40085,236 +39993,6 @@ "attr19": "", "attr20": "", "origin": "UI" - }, - { - "id": "FBF7FBF4-A009-4927-9A02-E29A570B2AC1", - "defKey": "creator_id", - "defName": "创建人 Id", - "intro": "sys_user.id", - "baseDataType": "BIGINT", - "bizDomainType": "", - "dbDataType": "BIGINT", - "dataLen": "", - "numScale": "", - "primaryKey": 0, - "notNull": 1, - "autoIncrement": 0, - "defaultValue": "", - "stndDictId": "", - "stndFieldId": "", - "stndDictKey": "", - "stndFieldKey": "", - "stndComplianceLevel": "", - "stndComplianceType": "", - "dictFrom": "", - "dictItems": null, - "fieldTier": "", - "mark": null, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "attr10": "", - "attr11": "", - "attr12": "", - "attr13": "", - "attr14": "", - "attr15": "", - "attr16": "", - "attr17": "", - "attr18": "PDManer", - "attr19": "", - "attr20": "", - "origin": "PASTE" - }, - { - "id": "D8E1EC0E-DEAF-4E7E-9CFC-2C08CBCCC379", - "defKey": "modifier_id", - "defName": "修改人 Id", - "intro": " sys_user.id", - "baseDataType": "BIGINT", - "bizDomainType": "", - "dbDataType": "BIGINT", - "dataLen": "", - "numScale": "", - "primaryKey": 0, - "notNull": 1, - "autoIncrement": 0, - "defaultValue": "", - "stndDictId": "", - "stndFieldId": "", - "stndDictKey": "", - "stndFieldKey": "", - "stndComplianceLevel": "", - "stndComplianceType": "", - "dictFrom": "", - "dictItems": [], - "fieldTier": "", - "mark": null, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "attr10": "", - "attr11": "", - "attr12": "", - "attr13": "", - "attr14": "", - "attr15": "", - "attr16": "", - "attr17": "", - "attr18": "PDManer", - "attr19": "", - "attr20": "", - "origin": "PASTE" - }, - { - "id": "82F2DC35-0B85-4C2A-93AB-031FCC3D283A", - "defKey": "create_time", - "defName": "创建时间", - "intro": "", - "baseDataType": "DATETIME", - "bizDomainType": "", - "dbDataType": "DATETIME", - "dataLen": "", - "numScale": "", - "primaryKey": 0, - "notNull": 1, - "autoIncrement": 0, - "defaultValue": "", - "stndDictId": "", - "stndFieldId": "", - "stndDictKey": "", - "stndFieldKey": "", - "stndComplianceLevel": "", - "stndComplianceType": "", - "dictFrom": "", - "dictItems": [], - "fieldTier": "", - "mark": null, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "attr10": "", - "attr11": "", - "attr12": "", - "attr13": "", - "attr14": "", - "attr15": "", - "attr16": "", - "attr17": "", - "attr18": "PDManer", - "attr19": "", - "attr20": "", - "origin": "PASTE" - }, - { - "id": "D78B226E-E874-455D-8685-36F0997710F5", - "defKey": "modify_time", - "defName": "修改时间", - "intro": "", - "baseDataType": "DATETIME", - "bizDomainType": "", - "dbDataType": "DATETIME", - "dataLen": "", - "numScale": "", - "primaryKey": 0, - "notNull": 1, - "autoIncrement": 0, - "defaultValue": "", - "stndDictId": "", - "stndFieldId": "", - "stndDictKey": "", - "stndFieldKey": "", - "stndComplianceLevel": "", - "stndComplianceType": "", - "dictFrom": "", - "dictItems": [], - "fieldTier": "", - "mark": null, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "attr10": "", - "attr11": "", - "attr12": "", - "attr13": "", - "attr14": "", - "attr15": "", - "attr16": "", - "attr17": "", - "attr18": "PDManer", - "attr19": "", - "attr20": "", - "origin": "PASTE" - }, - { - "id": "D79B9DF6-2D44-41E5-852F-A2BF56A3D18E", - "defKey": "deleted", - "defName": "是否删除", - "intro": " 0-->未删除、1-->已删除", - "baseDataType": "TINYINT", - "bizDomainType": "", - "dbDataType": "TINYINT", - "dataLen": 1, - "numScale": "", - "primaryKey": 0, - "notNull": 1, - "autoIncrement": 0, - "defaultValue": "0", - "stndDictId": "", - "stndFieldId": "", - "stndDictKey": "", - "stndFieldKey": "", - "stndComplianceLevel": "", - "stndComplianceType": "", - "dictFrom": "", - "dictItems": [], - "fieldTier": "", - "mark": null, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "attr10": "", - "attr11": "", - "attr12": "", - "attr13": "", - "attr14": "", - "attr15": "", - "attr16": "", - "attr17": "", - "attr18": "PDManer", - "attr19": "", - "attr20": "", - "origin": "PASTE" } ], "correlations": null, @@ -42459,7 +42137,7 @@ "readonly": false, "allowWs": false }, - "updateTime": 1767582120955, - "signature": "8b0147224327f003d919047195c70983", + "updateTime": 1767693314511, + "signature": "41d1fbdc96c560fe7fa1949efeb758fe", "branchId": "1111" } \ No newline at end of file