feat(wms): 新增产品和原材料时自动创建BOM及默认属性
- 在产品和原材料控制器中新增 addWithBom 接口 - 实现新增产品/原材料时自动创建BOM头信息 - 新增方法 createDefaultBomItems 用于创建默认BOM明细项- 根据类型(产品或原料)设置不同的默认属性值 - 使用事务确保数据一致性 - 注入 IWmsBomService 和 IWmsBomItemService 服务依赖
This commit is contained in:
@@ -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<Void> addWithBom(@Validated(AddGroup.class) @RequestBody WmsProductBo bo) {
|
||||
return toAjax(iWmsProductService.insertByBo(bo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,4 +105,14 @@ public class WmsRawMaterialController extends BaseController {
|
||||
public TableDataInfo<WmsRawMaterialVo> listWithDemand(WmsRawMaterialBo bo, PageQuery pageQuery) {
|
||||
return iWmsRawMaterialService.queryPageListWithDemand(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增原材料并自动创建BOM(带默认属性)
|
||||
*/
|
||||
@Log(title = "原材料", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/addWithBom")
|
||||
public R<WmsRawMaterialBo> addWithBom(@Validated(AddGroup.class) @RequestBody WmsRawMaterialBo bo) {
|
||||
return R.ok(iWmsRawMaterialService.insertByBo(bo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String[]> 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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改产品
|
||||
|
||||
@@ -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<String[]> 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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改原材料
|
||||
|
||||
Reference in New Issue
Block a user