From 1171380bfccf6c5e7900efac456656c270b4c82c Mon Sep 17 00:00:00 2001 From: "JinLu.Yin" <411641505@qq.com> Date: Mon, 12 Sep 2022 21:49:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E5=B7=A5=E8=89=BA=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=B7=BB=E5=8A=A0=E6=AF=8F=E9=81=93=E5=B7=A5?= =?UTF-8?q?=E5=BA=8F=E7=9A=84BOM=E7=89=A9=E6=96=99=E6=B6=88=E8=80=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProRouteProductBomController.java | 112 +++++++++ .../mes/pro/domain/ProRouteProductBom.java | 220 ++++++++++++++++++ .../pro/mapper/ProRouteProductBomMapper.java | 69 ++++++ .../service/IProRouteProductBomService.java | 69 ++++++ .../impl/ProRouteProductBomServiceImpl.java | 109 +++++++++ .../mapper/pro/ProRouteProductBomMapper.xml | 139 +++++++++++ 6 files changed, 718 insertions(+) create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProRouteProductBomController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProRouteProductBom.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductBomMapper.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java create mode 100644 ktg-mes/src/main/resources/mapper/pro/ProRouteProductBomMapper.xml diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProRouteProductBomController.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProRouteProductBomController.java new file mode 100644 index 0000000..145320d --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProRouteProductBomController.java @@ -0,0 +1,112 @@ +package com.ktg.mes.pro.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.ktg.common.constant.UserConstants; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.enums.BusinessType; +import com.ktg.mes.pro.domain.ProRouteProductBom; +import com.ktg.mes.pro.service.IProRouteProductBomService; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.common.core.page.TableDataInfo; + +/** + * 产品制程物料BOMController + * + * @author yinjinlu + * @date 2022-09-12 + */ +@RestController +@RequestMapping("/mes/pro/routeproductbom") +public class ProRouteProductBomController extends BaseController +{ + @Autowired + private IProRouteProductBomService proRouteProductBomService; + + /** + * 查询产品制程物料BOM列表 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:routeproductbom:list')") + @GetMapping("/list") + public TableDataInfo list(ProRouteProductBom proRouteProductBom) + { + startPage(); + List list = proRouteProductBomService.selectProRouteProductBomList(proRouteProductBom); + return getDataTable(list); + } + + /** + * 导出产品制程物料BOM列表 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:routeproductbom:export')") + @Log(title = "产品制程物料BOM", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ProRouteProductBom proRouteProductBom) + { + List list = proRouteProductBomService.selectProRouteProductBomList(proRouteProductBom); + ExcelUtil util = new ExcelUtil(ProRouteProductBom.class); + util.exportExcel(response, list, "产品制程物料BOM数据"); + } + + /** + * 获取产品制程物料BOM详细信息 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:routeproductbom:query')") + @GetMapping(value = "/{recordId}") + public AjaxResult getInfo(@PathVariable("recordId") Long recordId) + { + return AjaxResult.success(proRouteProductBomService.selectProRouteProductBomByRecordId(recordId)); + } + + /** + * 新增产品制程物料BOM + */ + @PreAuthorize("@ss.hasPermi('mes:pro:routeproductbom:add')") + @Log(title = "产品制程物料BOM", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ProRouteProductBom proRouteProductBom) + { + if(UserConstants.NOT_UNIQUE.equals(proRouteProductBomService.checkUnique(proRouteProductBom))){ + return AjaxResult.error("当前BOM物料在此工序已经配置过!"); + } + return toAjax(proRouteProductBomService.insertProRouteProductBom(proRouteProductBom)); + } + + /** + * 修改产品制程物料BOM + */ + @PreAuthorize("@ss.hasPermi('mes:pro:routeproductbom:edit')") + @Log(title = "产品制程物料BOM", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ProRouteProductBom proRouteProductBom) + { + if(UserConstants.NOT_UNIQUE.equals(proRouteProductBomService.checkUnique(proRouteProductBom))){ + return AjaxResult.error("当前BOM物料在此工序已经配置过!"); + } + return toAjax(proRouteProductBomService.updateProRouteProductBom(proRouteProductBom)); + } + + /** + * 删除产品制程物料BOM + */ + @PreAuthorize("@ss.hasPermi('mes:pro:routeproductbom:remove')") + @Log(title = "产品制程物料BOM", businessType = BusinessType.DELETE) + @DeleteMapping("/{recordIds}") + public AjaxResult remove(@PathVariable Long[] recordIds) + { + return toAjax(proRouteProductBomService.deleteProRouteProductBomByRecordIds(recordIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProRouteProductBom.java b/ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProRouteProductBom.java new file mode 100644 index 0000000..4cf3e1a --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProRouteProductBom.java @@ -0,0 +1,220 @@ +package com.ktg.mes.pro.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ktg.common.annotation.Excel; +import com.ktg.common.core.domain.BaseEntity; + +/** + * 产品制程物料BOM对象 pro_route_product_bom + * + * @author yinjinlu + * @date 2022-09-12 + */ +public class ProRouteProductBom extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 记录ID */ + private Long recordId; + + /** 工艺路线ID */ + @Excel(name = "工艺路线ID") + private Long routeId; + + /** 工序ID */ + @Excel(name = "工序ID") + private Long processId; + + /** 产品物料ID */ + @Excel(name = "产品物料ID") + private Long productId; + + /** 产品物料ID */ + @Excel(name = "产品物料ID") + private Long itemId; + + /** 产品物料编码 */ + @Excel(name = "产品物料编码") + private String itemCode; + + /** 产品物料名称 */ + @Excel(name = "产品物料名称") + private String itemName; + + /** 规格型号 */ + @Excel(name = "规格型号") + private String specification; + + /** 单位 */ + @Excel(name = "单位") + private String unitOfMeasure; + + /** 用料比例 */ + @Excel(name = "用料比例") + private Long quantity; + + /** 预留字段1 */ + private String attr1; + + /** 预留字段2 */ + private String attr2; + + /** 预留字段3 */ + private Long attr3; + + /** 预留字段4 */ + private Long attr4; + + public void setRecordId(Long recordId) + { + this.recordId = recordId; + } + + public Long getRecordId() + { + return recordId; + } + public void setRouteId(Long routeId) + { + this.routeId = routeId; + } + + public Long getRouteId() + { + return routeId; + } + public void setProcessId(Long processId) + { + this.processId = processId; + } + + public Long getProcessId() + { + return processId; + } + public void setProductId(Long productId) + { + this.productId = productId; + } + + public Long getProductId() + { + return productId; + } + public void setItemId(Long itemId) + { + this.itemId = itemId; + } + + public Long getItemId() + { + return itemId; + } + public void setItemCode(String itemCode) + { + this.itemCode = itemCode; + } + + public String getItemCode() + { + return itemCode; + } + public void setItemName(String itemName) + { + this.itemName = itemName; + } + + public String getItemName() + { + return itemName; + } + public void setSpecification(String specification) + { + this.specification = specification; + } + + public String getSpecification() + { + return specification; + } + public void setUnitOfMeasure(String unitOfMeasure) + { + this.unitOfMeasure = unitOfMeasure; + } + + public String getUnitOfMeasure() + { + return unitOfMeasure; + } + public void setQuantity(Long quantity) + { + this.quantity = quantity; + } + + public Long getQuantity() + { + return quantity; + } + public void setAttr1(String attr1) + { + this.attr1 = attr1; + } + + public String getAttr1() + { + return attr1; + } + public void setAttr2(String attr2) + { + this.attr2 = attr2; + } + + public String getAttr2() + { + return attr2; + } + public void setAttr3(Long attr3) + { + this.attr3 = attr3; + } + + public Long getAttr3() + { + return attr3; + } + public void setAttr4(Long attr4) + { + this.attr4 = attr4; + } + + public Long getAttr4() + { + return attr4; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("recordId", getRecordId()) + .append("routeId", getRouteId()) + .append("processId", getProcessId()) + .append("productId", getProductId()) + .append("itemId", getItemId()) + .append("itemCode", getItemCode()) + .append("itemName", getItemName()) + .append("specification", getSpecification()) + .append("unitOfMeasure", getUnitOfMeasure()) + .append("quantity", getQuantity()) + .append("remark", getRemark()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductBomMapper.java b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductBomMapper.java new file mode 100644 index 0000000..91ae98d --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductBomMapper.java @@ -0,0 +1,69 @@ +package com.ktg.mes.pro.mapper; + +import java.util.List; +import com.ktg.mes.pro.domain.ProRouteProductBom; + +/** + * 产品制程物料BOMMapper接口 + * + * @author yinjinlu + * @date 2022-09-12 + */ +public interface ProRouteProductBomMapper +{ + /** + * 查询产品制程物料BOM + * + * @param recordId 产品制程物料BOM主键 + * @return 产品制程物料BOM + */ + public ProRouteProductBom selectProRouteProductBomByRecordId(Long recordId); + + /** + * 查询产品制程物料BOM列表 + * + * @param proRouteProductBom 产品制程物料BOM + * @return 产品制程物料BOM集合 + */ + public List selectProRouteProductBomList(ProRouteProductBom proRouteProductBom); + + + /** + * 检测是否重复配置 + * @param proRouteProductBom + * @return + */ + public ProRouteProductBom checkUnique(ProRouteProductBom proRouteProductBom); + + /** + * 新增产品制程物料BOM + * + * @param proRouteProductBom 产品制程物料BOM + * @return 结果 + */ + public int insertProRouteProductBom(ProRouteProductBom proRouteProductBom); + + /** + * 修改产品制程物料BOM + * + * @param proRouteProductBom 产品制程物料BOM + * @return 结果 + */ + public int updateProRouteProductBom(ProRouteProductBom proRouteProductBom); + + /** + * 删除产品制程物料BOM + * + * @param recordId 产品制程物料BOM主键 + * @return 结果 + */ + public int deleteProRouteProductBomByRecordId(Long recordId); + + /** + * 批量删除产品制程物料BOM + * + * @param recordIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProRouteProductBomByRecordIds(Long[] recordIds); +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java new file mode 100644 index 0000000..7154829 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java @@ -0,0 +1,69 @@ +package com.ktg.mes.pro.service; + +import java.util.List; +import com.ktg.mes.pro.domain.ProRouteProductBom; + +/** + * 产品制程物料BOMService接口 + * + * @author yinjinlu + * @date 2022-09-12 + */ +public interface IProRouteProductBomService +{ + /** + * 查询产品制程物料BOM + * + * @param recordId 产品制程物料BOM主键 + * @return 产品制程物料BOM + */ + public ProRouteProductBom selectProRouteProductBomByRecordId(Long recordId); + + /** + * 查询产品制程物料BOM列表 + * + * @param proRouteProductBom 产品制程物料BOM + * @return 产品制程物料BOM集合 + */ + public List selectProRouteProductBomList(ProRouteProductBom proRouteProductBom); + + + /** + * 检测是否重复配置 + * @param proRouteProductBom + * @return + */ + public String checkUnique(ProRouteProductBom proRouteProductBom); + + /** + * 新增产品制程物料BOM + * + * @param proRouteProductBom 产品制程物料BOM + * @return 结果 + */ + public int insertProRouteProductBom(ProRouteProductBom proRouteProductBom); + + /** + * 修改产品制程物料BOM + * + * @param proRouteProductBom 产品制程物料BOM + * @return 结果 + */ + public int updateProRouteProductBom(ProRouteProductBom proRouteProductBom); + + /** + * 批量删除产品制程物料BOM + * + * @param recordIds 需要删除的产品制程物料BOM主键集合 + * @return 结果 + */ + public int deleteProRouteProductBomByRecordIds(Long[] recordIds); + + /** + * 删除产品制程物料BOM信息 + * + * @param recordId 产品制程物料BOM主键 + * @return 结果 + */ + public int deleteProRouteProductBomByRecordId(Long recordId); +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java new file mode 100644 index 0000000..9b8207a --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java @@ -0,0 +1,109 @@ +package com.ktg.mes.pro.service.impl; + +import java.util.List; + +import com.ktg.common.constant.UserConstants; +import com.ktg.common.utils.DateUtils; +import com.ktg.common.utils.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ktg.mes.pro.mapper.ProRouteProductBomMapper; +import com.ktg.mes.pro.domain.ProRouteProductBom; +import com.ktg.mes.pro.service.IProRouteProductBomService; + +/** + * 产品制程物料BOMService业务层处理 + * + * @author yinjinlu + * @date 2022-09-12 + */ +@Service +public class ProRouteProductBomServiceImpl implements IProRouteProductBomService +{ + @Autowired + private ProRouteProductBomMapper proRouteProductBomMapper; + + /** + * 查询产品制程物料BOM + * + * @param recordId 产品制程物料BOM主键 + * @return 产品制程物料BOM + */ + @Override + public ProRouteProductBom selectProRouteProductBomByRecordId(Long recordId) + { + return proRouteProductBomMapper.selectProRouteProductBomByRecordId(recordId); + } + + /** + * 查询产品制程物料BOM列表 + * + * @param proRouteProductBom 产品制程物料BOM + * @return 产品制程物料BOM + */ + @Override + public List selectProRouteProductBomList(ProRouteProductBom proRouteProductBom) + { + return proRouteProductBomMapper.selectProRouteProductBomList(proRouteProductBom); + } + + @Override + public String checkUnique(ProRouteProductBom proRouteProductBom) { + ProRouteProductBom bom = proRouteProductBomMapper.checkUnique(proRouteProductBom); + Long recordId = proRouteProductBom.getRecordId() == null? -1L: proRouteProductBom.getRecordId(); + if(StringUtils.isNotNull(bom) && bom.getRecordId().longValue() != recordId.longValue()){ + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 新增产品制程物料BOM + * + * @param proRouteProductBom 产品制程物料BOM + * @return 结果 + */ + @Override + public int insertProRouteProductBom(ProRouteProductBom proRouteProductBom) + { + proRouteProductBom.setCreateTime(DateUtils.getNowDate()); + return proRouteProductBomMapper.insertProRouteProductBom(proRouteProductBom); + } + + /** + * 修改产品制程物料BOM + * + * @param proRouteProductBom 产品制程物料BOM + * @return 结果 + */ + @Override + public int updateProRouteProductBom(ProRouteProductBom proRouteProductBom) + { + proRouteProductBom.setUpdateTime(DateUtils.getNowDate()); + return proRouteProductBomMapper.updateProRouteProductBom(proRouteProductBom); + } + + /** + * 批量删除产品制程物料BOM + * + * @param recordIds 需要删除的产品制程物料BOM主键 + * @return 结果 + */ + @Override + public int deleteProRouteProductBomByRecordIds(Long[] recordIds) + { + return proRouteProductBomMapper.deleteProRouteProductBomByRecordIds(recordIds); + } + + /** + * 删除产品制程物料BOM信息 + * + * @param recordId 产品制程物料BOM主键 + * @return 结果 + */ + @Override + public int deleteProRouteProductBomByRecordId(Long recordId) + { + return proRouteProductBomMapper.deleteProRouteProductBomByRecordId(recordId); + } +} diff --git a/ktg-mes/src/main/resources/mapper/pro/ProRouteProductBomMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProRouteProductBomMapper.xml new file mode 100644 index 0000000..6d90be8 --- /dev/null +++ b/ktg-mes/src/main/resources/mapper/pro/ProRouteProductBomMapper.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select record_id, route_id, process_id, product_id, item_id, item_code, item_name, specification, unit_of_measure, quantity, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from pro_route_product_bom + + + + + + + + + + insert into pro_route_product_bom + + route_id, + process_id, + product_id, + item_id, + item_code, + item_name, + specification, + unit_of_measure, + quantity, + remark, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + + + #{routeId}, + #{processId}, + #{productId}, + #{itemId}, + #{itemCode}, + #{itemName}, + #{specification}, + #{unitOfMeasure}, + #{quantity}, + #{remark}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update pro_route_product_bom + + route_id = #{routeId}, + process_id = #{processId}, + product_id = #{productId}, + item_id = #{itemId}, + item_code = #{itemCode}, + item_name = #{itemName}, + specification = #{specification}, + unit_of_measure = #{unitOfMeasure}, + quantity = #{quantity}, + remark = #{remark}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where record_id = #{recordId} + + + + delete from pro_route_product_bom where record_id = #{recordId} + + + + delete from pro_route_product_bom where record_id in + + #{recordId} + + + \ No newline at end of file