diff --git a/klp-wms/src/main/java/com/klp/controller/WmsProductController.java b/klp-wms/src/main/java/com/klp/controller/WmsProductController.java index bf81c5f8..d3d27886 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsProductController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsProductController.java @@ -103,4 +103,14 @@ public class WmsProductController extends BaseController { public DashboardOverviewVO getDashboardOverview() { return iWmsProductService.getDashboardOverview(); } + + /** + * 新增产品并自动创建BOM(带默认属性) + */ + @Log(title = "产品", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/addWithBom") + public R addWithBom(@Validated(AddGroup.class) @RequestBody WmsProductBo bo) { + return toAjax(iWmsProductService.insertByBo(bo)); + } } diff --git a/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java b/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java index fb08ab12..fde4fb26 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java @@ -105,4 +105,14 @@ public class WmsRawMaterialController extends BaseController { public TableDataInfo listWithDemand(WmsRawMaterialBo bo, PageQuery pageQuery) { return iWmsRawMaterialService.queryPageListWithDemand(bo, pageQuery); } + + /** + * 新增原材料并自动创建BOM(带默认属性) + */ + @Log(title = "原材料", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/addWithBom") + public R addWithBom(@Validated(AddGroup.class) @RequestBody WmsRawMaterialBo bo) { + return R.ok(iWmsRawMaterialService.insertByBo(bo)); + } } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsProductServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsProductServiceImpl.java index d39a4127..b27feef0 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsProductServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsProductServiceImpl.java @@ -18,10 +18,16 @@ import com.klp.service.IWmsProductService; import com.klp.domain.vo.PerformanceAreaVO; import com.klp.domain.vo.CurrentSituationAreaVO; import com.klp.domain.vo.RecommendationAreaVO; +import com.klp.service.IWmsBomService; +import com.klp.service.IWmsBomItemService; +import com.klp.domain.bo.WmsBomBo; +import com.klp.domain.bo.WmsBomItemBo; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.Arrays; /** * 产品Service业务层处理 @@ -34,6 +40,8 @@ import java.util.Collection; public class WmsProductServiceImpl implements IWmsProductService { private final WmsProductMapper baseMapper; + private final IWmsBomService wmsBomService; + private final IWmsBomItemService wmsBomItemService; /** * 查询产品 @@ -85,15 +93,66 @@ public class WmsProductServiceImpl implements IWmsProductService { * 新增产品 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(WmsProductBo bo) { + // 1. 先创建BOM头 + WmsBomBo bomBo = new WmsBomBo(); + bomBo.setBomCode("产品BOM" + System.currentTimeMillis()); + bomBo.setBomName("产品BOM" + System.currentTimeMillis()); + bomBo.setIsEnabled(1); + bomBo.setRemark("产品创建时自动生成的BOM"); + + WmsBomBo savedBom = wmsBomService.insertByBo(bomBo); + Long bomId = savedBom.getBomId(); + + // 2. 创建产品并关联BOM WmsProduct add = BeanUtil.toBean(bo, WmsProduct.class); + add.setBomId(bomId); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setProductId(add.getProductId()); + + // 3. 创建默认的BOM明细项(根据截图的默认属性) + createDefaultBomItems(bomId, "产品"); } return flag; } + + /** + * 创建默认的BOM明细项 + */ + private void createDefaultBomItems(Long bomId, String type) { + List defaultAttrs; + + if ("产品".equals(type)) { + // 产品默认属性(根据截图) + defaultAttrs = Arrays.asList( + new String[]{"厚度", "0.6"}, + new String[]{"宽度", "1250"}, + new String[]{"材质", "SPCC"}, + new String[]{"表面处理", "涂油"} + ); + } else { + // 原料默认属性(根据截图) + defaultAttrs = Arrays.asList( + new String[]{"宽度", "1265"}, + new String[]{"厚度", "4"}, + new String[]{"材质", "Q195L"}, + new String[]{"厂家", "天铁"} + ); + } + + for (String[] attr : defaultAttrs) { + WmsBomItemBo itemBo = new WmsBomItemBo(); + itemBo.setBomId(bomId); + itemBo.setAttrKey(attr[0]); + itemBo.setAttrValue(attr[1]); + itemBo.setIsEnabled(1); + itemBo.setRemark("创建时自动生成的默认属性"); + wmsBomItemService.insertByBo(itemBo); + } + } /** * 修改产品 diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsRawMaterialServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsRawMaterialServiceImpl.java index 713b3c8d..4c5d320c 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsRawMaterialServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsRawMaterialServiceImpl.java @@ -26,11 +26,17 @@ import com.klp.domain.vo.WmsPurchasePlanDetailVo; import com.klp.domain.vo.WmsProductBomVo; import com.klp.domain.vo.WmsOrderDetailVo; import com.klp.domain.vo.WmsOrderVo; +import com.klp.service.IWmsBomService; +import com.klp.service.IWmsBomItemService; +import com.klp.domain.bo.WmsBomBo; +import com.klp.domain.bo.WmsBomItemBo; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.Arrays; /** * 原材料Service业务层处理 @@ -48,6 +54,8 @@ public class WmsRawMaterialServiceImpl implements IWmsRawMaterialService { private final IWmsOrderDetailService orderDetailService; private final IWmsProductBomService productBomService; private final IWmsOrderService orderService; + private final IWmsBomService wmsBomService; + private final IWmsBomItemService wmsBomItemService; /** * 查询原材料 @@ -195,15 +203,66 @@ public class WmsRawMaterialServiceImpl implements IWmsRawMaterialService { * 新增原材料 */ @Override + @Transactional(rollbackFor = Exception.class) public WmsRawMaterialBo insertByBo(WmsRawMaterialBo bo) { + // 1. 先创建BOM头 + WmsBomBo bomBo = new WmsBomBo(); + bomBo.setBomCode("原材料BOM" + System.currentTimeMillis()); + bomBo.setBomName("原材料BOM" + System.currentTimeMillis()); + bomBo.setIsEnabled(1); + bomBo.setRemark("原材料创建时自动生成的BOM"); + + WmsBomBo savedBom = wmsBomService.insertByBo(bomBo); + Long bomId = savedBom.getBomId(); + + // 2. 创建原材料并关联BOM WmsRawMaterial add = BeanUtil.toBean(bo, WmsRawMaterial.class); + add.setBomId(bomId); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setRawMaterialId(add.getRawMaterialId()); + + // 3. 创建默认的BOM明细项(根据截图的默认属性) + createDefaultBomItems(bomId, "原料"); } return bo; } + + /** + * 创建默认的BOM明细项 + */ + private void createDefaultBomItems(Long bomId, String type) { + List defaultAttrs; + + if ("产品".equals(type)) { + // 产品默认属性(根据截图) + defaultAttrs = Arrays.asList( + new String[]{"厚度", "0.6"}, + new String[]{"宽度", "1250"}, + new String[]{"材质", "SPCC"}, + new String[]{"表面处理", "涂油"} + ); + } else { + // 原料默认属性(根据截图) + defaultAttrs = Arrays.asList( + new String[]{"宽度", "1265"}, + new String[]{"厚度", "4"}, + new String[]{"材质", "Q195L"}, + new String[]{"厂家", "天铁"} + ); + } + + for (String[] attr : defaultAttrs) { + WmsBomItemBo itemBo = new WmsBomItemBo(); + itemBo.setBomId(bomId); + itemBo.setAttrKey(attr[0]); + itemBo.setAttrValue(attr[1]); + itemBo.setIsEnabled(1); + itemBo.setRemark("创建时自动生成的默认属性"); + wmsBomItemService.insertByBo(itemBo); + } + } /** * 修改原材料