package cn.iocoder.yudao.module.mdm.controller.admin.item;
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemModelPageReqVO;
|
import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemModelRespVO;
|
import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemModelSaveReqVO;
|
import cn.iocoder.yudao.module.mdm.dal.dataobject.item.MdmItemDO;
|
import cn.iocoder.yudao.module.mdm.dal.dataobject.item.MdmItemModelDO;
|
import cn.iocoder.yudao.module.mdm.dal.dataobject.unit.MdmUnitMeasureDO;
|
import cn.iocoder.yudao.module.mdm.service.item.MdmItemModelService;
|
import cn.iocoder.yudao.module.mdm.service.item.MdmItemService;
|
import cn.iocoder.yudao.module.mdm.service.unit.MdmUnitMeasureService;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.annotation.Resource;
|
import jakarta.validation.Valid;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.Collection;
|
import java.util.List;
|
import java.util.Map;
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
|
@Tag(name = "管理后台 - MDM 物料型号(型号 + 主辅单位换算)")
|
@RestController
|
@RequestMapping("/mdm/item-model")
|
@Validated
|
public class MdmItemModelController {
|
|
@Resource
|
private MdmItemModelService itemModelService;
|
|
@Resource
|
private MdmItemService itemService;
|
@Resource
|
private MdmUnitMeasureService unitMeasureService;
|
|
@PostMapping("/create")
|
@Operation(summary = "创建物料型号")
|
@PreAuthorize("@ss.hasPermission('mdm:item:create')")
|
public CommonResult<Long> createItemModel(@Valid @RequestBody MdmItemModelSaveReqVO createReqVO) {
|
return success(itemModelService.createItemModel(createReqVO));
|
}
|
|
@PutMapping("/update")
|
@Operation(summary = "更新物料型号")
|
@PreAuthorize("@ss.hasPermission('mdm:item:update')")
|
public CommonResult<Boolean> updateItemModel(@Valid @RequestBody MdmItemModelSaveReqVO updateReqVO) {
|
itemModelService.updateItemModel(updateReqVO);
|
return success(true);
|
}
|
|
@DeleteMapping("/delete")
|
@Operation(summary = "删除物料型号")
|
@Parameter(name = "id", description = "型号编号", required = true, example = "1024")
|
@PreAuthorize("@ss.hasPermission('mdm:item:delete')")
|
public CommonResult<Boolean> deleteItemModel(@RequestParam("id") Long id) {
|
itemModelService.deleteItemModel(id);
|
return success(true);
|
}
|
|
@PostMapping("/save-list")
|
@Operation(summary = "全量覆盖保存物料的型号列表")
|
@PreAuthorize("@ss.hasPermission('mdm:item:update')")
|
public CommonResult<Boolean> saveItemModelList(@RequestParam("itemId") Long itemId,
|
@RequestBody List<MdmItemModelSaveReqVO> modelList) {
|
itemModelService.saveItemModelList(itemId, modelList);
|
return success(true);
|
}
|
|
@GetMapping("/get")
|
@Operation(summary = "获得物料型号")
|
@Parameter(name = "id", description = "型号编号", required = true, example = "1024")
|
@PreAuthorize("@ss.hasPermission('mdm:item:query')")
|
public CommonResult<MdmItemModelRespVO> getItemModel(@RequestParam("id") Long id) {
|
MdmItemModelDO itemModel = itemModelService.getItemModel(id);
|
if (itemModel == null) {
|
return success(null);
|
}
|
return success(buildRespVOList(List.of(itemModel)).get(0));
|
}
|
|
@GetMapping("/list-by-item")
|
@Operation(summary = "获得指定物料的型号列表")
|
@Parameter(name = "itemId", description = "物料编号", required = true, example = "1")
|
@PreAuthorize("@ss.hasPermission('mdm:item:query')")
|
public CommonResult<List<MdmItemModelRespVO>> getItemModelListByItemId(@RequestParam("itemId") Long itemId) {
|
return success(buildRespVOList(itemModelService.getItemModelListByItemId(itemId)));
|
}
|
|
@GetMapping("/list-by-items")
|
@Operation(summary = "获得指定多个物料的型号列表")
|
@Parameter(name = "itemIds", description = "物料编号列表", required = true)
|
@PreAuthorize("@ss.hasPermission('mdm:item:query')")
|
public CommonResult<List<MdmItemModelRespVO>> getItemModelListByItemIds(@RequestParam("itemIds") Collection<Long> itemIds) {
|
List<MdmItemModelDO> list = itemModelService.getItemModelListByItemIds(itemIds);
|
return success(buildRespVOList(list));
|
}
|
|
@GetMapping("/page")
|
@Operation(summary = "获得物料型号分页")
|
@PreAuthorize("@ss.hasPermission('mdm:item:query')")
|
public CommonResult<PageResult<MdmItemModelRespVO>> getItemModelPage(@Valid MdmItemModelPageReqVO pageReqVO) {
|
PageResult<MdmItemModelDO> pageResult = itemModelService.getItemModelPage(pageReqVO);
|
return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal()));
|
}
|
|
private List<MdmItemModelRespVO> buildRespVOList(List<MdmItemModelDO> list) {
|
if (list == null || list.isEmpty()) {
|
return List.of();
|
}
|
List<MdmItemModelRespVO> respList = BeanUtils.toBean(list, MdmItemModelRespVO.class);
|
|
Map<Long, MdmItemDO> itemMap = convertMap(itemService.getItemList(convertSet(list, MdmItemModelDO::getItemId)),
|
MdmItemDO::getId);
|
Map<Long, MdmUnitMeasureDO> unitMap = convertMap(
|
unitMeasureService.getUnitMeasureList(convertSet(list, MdmItemModelDO::getUnitMeasureId)),
|
MdmUnitMeasureDO::getId);
|
|
respList.forEach(resp -> {
|
MdmItemDO item = itemMap.get(resp.getItemId());
|
if (item != null) {
|
resp.setItemCode(item.getCode()).setItemName(item.getName());
|
}
|
MdmUnitMeasureDO unit = unitMap.get(resp.getUnitMeasureId());
|
if (unit != null) {
|
resp.setUnitMeasureName(unit.getName());
|
}
|
});
|
return respList;
|
}
|
|
}
|