fix item requisition

plp
chenshuichuan 2 years ago
parent e00d91e7ed
commit 904b2581e7

@ -0,0 +1,4 @@
## 待完成
1. 获取当前某工序所有工人列表
2.

@ -1,5 +1,9 @@
package cn.iocoder.yudao.module.mes.controller.admin.itemrequisition; package cn.iocoder.yudao.module.mes.controller.admin.itemrequisition;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.mes.service.plan.PlanService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -24,6 +28,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.*; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO;
@ -38,6 +43,8 @@ public class ItemRequisitionController {
@Resource @Resource
private ItemRequisitionService itemRequisitionService; private ItemRequisitionService itemRequisitionService;
@Resource
private PlanService planService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建生产领料") @Operation(summary = "创建生产领料")
@ -76,10 +83,21 @@ public class ItemRequisitionController {
@Operation(summary = "获得生产领料分页") @Operation(summary = "获得生产领料分页")
@PreAuthorize("@ss.hasPermission('mes:item-requisition:query')") @PreAuthorize("@ss.hasPermission('mes:item-requisition:query')")
public CommonResult<PageResult<ItemRequisitionRespVO>> getItemRequisitionPage(@Valid ItemRequisitionPageReqVO pageReqVO) { public CommonResult<PageResult<ItemRequisitionRespVO>> getItemRequisitionPage(@Valid ItemRequisitionPageReqVO pageReqVO) {
PageResult<ItemRequisitionDO> pageResult = itemRequisitionService.getItemRequisitionPage(pageReqVO); PageResult<ItemRequisitionDO> pageResult = itemRequisitionService.getItemRequisitionPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ItemRequisitionRespVO.class)); return success(new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal()));
}
private List<ItemRequisitionRespVO> buildVOList(List<ItemRequisitionDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, PlanDO> map = planService.getPlanMap(
convertSet(list, ItemRequisitionDO::getPlanId));
return BeanUtils.toBean(list, ItemRequisitionRespVO.class, item -> {
MapUtils.findAndThen(map, item.getPlanId(),
plan -> item.setPlanCode(plan.getCode()));
});
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出生产领料 Excel") @Operation(summary = "导出生产领料 Excel")
@PreAuthorize("@ss.hasPermission('mes:item-requisition:export')") @PreAuthorize("@ss.hasPermission('mes:item-requisition:export')")
@ -88,9 +106,10 @@ public class ItemRequisitionController {
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ItemRequisitionDO> list = itemRequisitionService.getItemRequisitionPage(pageReqVO).getList(); List<ItemRequisitionDO> list = itemRequisitionService.getItemRequisitionPage(pageReqVO).getList();
List<ItemRequisitionRespVO> list1 = buildVOList(list);
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "生产领料.xls", "数据", ItemRequisitionRespVO.class, ExcelUtils.write(response, "生产领料.xls", "数据", ItemRequisitionRespVO.class,
BeanUtils.toBean(list, ItemRequisitionRespVO.class)); list1);
} }
// ==================== 子表(领料明细) ==================== // ==================== 子表(领料明细) ====================
@ -99,8 +118,9 @@ public class ItemRequisitionController {
@Operation(summary = "获得领料明细列表") @Operation(summary = "获得领料明细列表")
@Parameter(name = "itemRequisitionId", description = "领料单ID") @Parameter(name = "itemRequisitionId", description = "领料单ID")
@PreAuthorize("@ss.hasPermission('mes:item-requisition:query')") @PreAuthorize("@ss.hasPermission('mes:item-requisition:query')")
public CommonResult<List<ItemRequisitionDetailDO>> getItemRequisitionDetailListByItemRequisitionId(@RequestParam("itemRequisitionId") Long itemRequisitionId) { public CommonResult<List<ItemRequisitionDetailRespVO>> getItemRequisitionDetailListByItemRequisitionId(@RequestParam("itemRequisitionId") Long itemRequisitionId) {
return success(itemRequisitionService.getItemRequisitionDetailListByItemRequisitionId(itemRequisitionId)); List<ItemRequisitionDetailDO>list = itemRequisitionService.getItemRequisitionDetailListByItemRequisitionId(itemRequisitionId);
return success(itemRequisitionService.buildDetailVOList(list));
} }
} }

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 领料明细 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ItemRequisitionDetailRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28224")
@ExcelProperty("ID")
private Long id;
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8370")
private Long productId;
@Schema(description = "产品", requiredMode = Schema.RequiredMode.REQUIRED, example = "8370")
@ExcelProperty("产品")
private String productName;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "1117")
private String unitName;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1117")
@ExcelProperty("单位ID")
private Long unitId;
@Schema(description = "领料单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18973")
@ExcelProperty("领料单ID")
private Long itemRequisitionId;
@Schema(description = "数量")
@ExcelProperty("数量")
private BigDecimal number;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
}

@ -48,4 +48,6 @@ public class ItemRequisitionPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
@Schema(description = "领料人ID",example = "15546")
private Long workerId;
} }

@ -23,12 +23,12 @@ public class ItemRequisitionRespVO {
@ExcelProperty("编码") @ExcelProperty("编码")
private String code; private String code;
@Schema(description = "下料时间") @Schema(description = "计划下料时间")
@ExcelProperty("下料时间") @ExcelProperty("计划下料时间")
private LocalDateTime requisitionDate; private LocalDateTime requisitionDate;
@Schema(description = "料时间") @Schema(description = "实际下料时间")
@ExcelProperty("料时间") @ExcelProperty("实际下料时间")
private LocalDateTime deliveryDate; private LocalDateTime deliveryDate;
@Schema(description = "状态", example = "2") @Schema(description = "状态", example = "2")
@ -40,8 +40,10 @@ public class ItemRequisitionRespVO {
private String processInstanceId; private String processInstanceId;
@Schema(description = "计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15546") @Schema(description = "计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15546")
@ExcelProperty("计划ID")
private Long planId; private Long planId;
@Schema(description = "计划", requiredMode = Schema.RequiredMode.REQUIRED, example = "15546")
@ExcelProperty("计划")
private String planCode;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
@ExcelProperty("备注") @ExcelProperty("备注")
@ -55,4 +57,6 @@ public class ItemRequisitionRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "领料人ID",example = "15546")
private Long workerId;
} }

@ -15,11 +15,10 @@ import javax.validation.constraints.NotNull;
@Data @Data
public class ItemRequisitionSaveReqVO { public class ItemRequisitionSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5100") @Schema(description = "ID", example = "5100")
private Long id; private Long id;
@Schema(description = "编码", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "编码")
@NotEmpty(message = "编码不能为空")
private String code; private String code;
@Schema(description = "下料时间") @Schema(description = "下料时间")
@ -34,17 +33,18 @@ public class ItemRequisitionSaveReqVO {
@Schema(description = "流程实例的编号", example = "1634") @Schema(description = "流程实例的编号", example = "1634")
private String processInstanceId; private String processInstanceId;
@Schema(description = "计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15546") @Schema(description = "计划ID",example = "15546")
@NotNull(message = "计划ID不能为空")
private Long planId; private Long planId;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
private String remark; private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "是否启用")
private Boolean isEnable; private Boolean isEnable;
@Schema(description = "领料明细列表") @Schema(description = "领料明细列表")
private List<ItemRequisitionDetailDO> itemRequisitionDetails; private List<ItemRequisitionDetailDO> itemRequisitionDetails;
@Schema(description = "领料人ID",example = "15546")
private Long workerId;
} }

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ItemRequisitionStatusEnum {
稿(1),
(2),
(3),
(4);
private final int value;
// 一个可选的方法,用于根据整数值获取对应的枚举实例
public static ItemRequisitionStatusEnum fromValue(int value) {
for (ItemRequisitionStatusEnum status : ItemRequisitionStatusEnum.values()) {
if (status.getValue() == value) {
return status;
}
}
throw new IllegalArgumentException("Unknown value: " + value);
}
}

@ -1,5 +1,10 @@
package cn.iocoder.yudao.module.mes.controller.admin.plan; package cn.iocoder.yudao.module.mes.controller.admin.plan;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.mysql.plan.PlanMapper;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemAnalysisService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -38,6 +43,9 @@ public class PlanController {
@Resource @Resource
private PlanService planService; private PlanService planService;
@Resource
private PlanMapper planMapper;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建生产计划") @Operation(summary = "创建生产计划")
@ -100,4 +108,39 @@ public class PlanController {
else else
return error(500, "insert error"); return error(500, "insert error");
} }
@Resource
private ItemAnalysisService analysisService;
@PutMapping("/paigong")
@Operation(summary = "计划派工")
@PreAuthorize("@ss.hasPermission('mes:plan:update')")
public CommonResult<Boolean> updatePlan(@Valid @RequestBody ItemRequisitionSaveReqVO saveReqVO) {
System.out.println(saveReqVO);
PlanDO planDO = planMapper.selectById(saveReqVO.getPlanId());
List<ItemRequisitionAndStock> list = analysisService.getItemAnalysis(planDO);
planService.arrangePlan(saveReqVO, planDO, list);
return success(true);
}
@PutMapping("/updateStatus")
@Operation(summary = "更新生产计划状态")
@PreAuthorize("@ss.hasPermission('mes:plan:update')")
public CommonResult<Boolean> updatePlanStatus(@Valid @RequestBody PlanStatusUpdateVO statusUpdateVO) {
System.out.println(statusUpdateVO);
PlanDO planDO = planMapper.selectById(statusUpdateVO.getId());
//开工
if("start".equals(statusUpdateVO.getCode())){
planDO.setStatus(PlanStatusEnum..getValue());
}
//暂停
else if("pause".equals(statusUpdateVO.getCode())){
planDO.setStatus(PlanStatusEnum..getValue());
}
//完工
else if("end".equals(statusUpdateVO.getCode())){
planDO.setStatus(PlanStatusEnum..getValue());
}
planMapper.updateById(planDO);
return success(true);
}
} }

@ -0,0 +1,25 @@
package cn.iocoder.yudao.module.mes.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import javax.validation.constraints.NotNull;
@Data
@AllArgsConstructor
public class PlanStatusUpdateVO {
@Schema(description = "计划id", example = "21176")
@NotNull(message = "计划id")
private Long id;
@Schema(description = "更新类型")
@NotNull(message = "更新类型")
private String code;
@Schema(description = "更新状态", example = "21176")
@NotNull(message = "更新状态")
private int status;
}

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition; package cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.time.LocalDate; import java.time.LocalDate;
@ -62,4 +63,6 @@ public class ItemRequisitionDO extends BaseDO {
*/ */
private Boolean isEnable; private Boolean isEnable;
private Long workerId;
} }

@ -26,6 +26,7 @@ public interface ItemRequisitionMapper extends BaseMapperX<ItemRequisitionDO> {
.eqIfPresent(ItemRequisitionDO::getStatus, reqVO.getStatus()) .eqIfPresent(ItemRequisitionDO::getStatus, reqVO.getStatus())
.eqIfPresent(ItemRequisitionDO::getProcessInstanceId, reqVO.getProcessInstanceId()) .eqIfPresent(ItemRequisitionDO::getProcessInstanceId, reqVO.getProcessInstanceId())
.eqIfPresent(ItemRequisitionDO::getPlanId, reqVO.getPlanId()) .eqIfPresent(ItemRequisitionDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(ItemRequisitionDO::getWorkerId, reqVO.getWorkerId())
.eqIfPresent(ItemRequisitionDO::getRemark, reqVO.getRemark()) .eqIfPresent(ItemRequisitionDO::getRemark, reqVO.getRemark())
.eqIfPresent(ItemRequisitionDO::getIsEnable, reqVO.getIsEnable()) .eqIfPresent(ItemRequisitionDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(ItemRequisitionDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(ItemRequisitionDO::getCreateTime, reqVO.getCreateTime())

@ -106,10 +106,12 @@ public class ItemAnalysisServiceImpl implements ItemAnalysisService {
if(productId ==null || number==null )return list; if(productId ==null || number==null )return list;
List<BomDetailDO> bomDetailDOList = List<BomDetailDO> bomDetailDOList =
bomService.getBomDetailListByProductId(productId, number); bomService.getBomDetailListByProductId(productId, number);
for (BomDetailDO bomDetail : bomDetailDOList) { for (BomDetailDO bomDetail : bomDetailDOList) {
Long itemId = bomDetail.getProductId(); Long itemId = bomDetail.getProductId();
ItemRequisitionAndStock temp = new ItemRequisitionAndStock() ItemRequisitionAndStock temp = new ItemRequisitionAndStock()
.setItemId(itemId) .setItemId(itemId)
.setUnitId(bomDetail.getUnitId())
.setNumber(bomDetail.getUsageNumber()); .setNumber(bomDetail.getUsageNumber());
BigDecimal stockCount = erpStockService.getStockCount(itemId); BigDecimal stockCount = erpStockService.getStockCount(itemId);

@ -63,5 +63,5 @@ public interface ItemRequisitionService {
* @return * @return
*/ */
List<ItemRequisitionDetailDO> getItemRequisitionDetailListByItemRequisitionId(Long itemRequisitionId); List<ItemRequisitionDetailDO> getItemRequisitionDetailListByItemRequisitionId(Long itemRequisitionId);
List<ItemRequisitionDetailRespVO> buildDetailVOList(List<ItemRequisitionDetailDO> list);
} }

@ -1,6 +1,16 @@
package cn.iocoder.yudao.module.mes.service.itemrequisition; package cn.iocoder.yudao.module.mes.service.itemrequisition;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomDetailRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO; import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO;
import cn.iocoder.yudao.module.mes.service.plan.PlanService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -19,6 +29,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.itemrequisition.ItemRequisitionDeta
import javax.annotation.Resource; import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
@ -37,6 +48,12 @@ public class ItemRequisitionServiceImpl implements ItemRequisitionService {
private ItemRequisitionDetailMapper itemRequisitionDetailMapper; private ItemRequisitionDetailMapper itemRequisitionDetailMapper;
@Resource @Resource
private MesNoRedisDAO noRedisDAO; private MesNoRedisDAO noRedisDAO;
@Resource
private ErpProductService productService;
@Resource
private ErpProductUnitService productUnitService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long createItemRequisition(ItemRequisitionSaveReqVO createReqVO) { public Long createItemRequisition(ItemRequisitionSaveReqVO createReqVO) {
@ -105,7 +122,23 @@ public class ItemRequisitionServiceImpl implements ItemRequisitionService {
public List<ItemRequisitionDetailDO> getItemRequisitionDetailListByItemRequisitionId(Long itemRequisitionId) { public List<ItemRequisitionDetailDO> getItemRequisitionDetailListByItemRequisitionId(Long itemRequisitionId) {
return itemRequisitionDetailMapper.selectListByItemRequisitionId(itemRequisitionId); return itemRequisitionDetailMapper.selectListByItemRequisitionId(itemRequisitionId);
} }
@Override
public List<ItemRequisitionDetailRespVO> buildDetailVOList(List<ItemRequisitionDetailDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpProductDO> map = productService.getProductMap(
convertSet(list, ItemRequisitionDetailDO::getProductId));
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(
convertSet(list, ItemRequisitionDetailDO::getUnitId));
return BeanUtils.toBean(list, ItemRequisitionDetailRespVO.class, item -> {
MapUtils.findAndThen(map, item.getProductId(),
product -> item.setProductName(product.getName()));
MapUtils.findAndThen(unitMap, item.getUnitId(),
unit -> item.setUnitName(unit.getName()));
});
}
private void createItemRequisitionDetailList(Long itemRequisitionId, List<ItemRequisitionDetailDO> list) { private void createItemRequisitionDetailList(Long itemRequisitionId, List<ItemRequisitionDetailDO> list) {
list.forEach(o -> o.setItemRequisitionId(itemRequisitionId)); list.forEach(o -> o.setItemRequisitionId(itemRequisitionId));
itemRequisitionDetailMapper.insertBatch(list); itemRequisitionDetailMapper.insertBatch(list);

@ -1,11 +1,18 @@
package cn.iocoder.yudao.module.mes.service.plan; package cn.iocoder.yudao.module.mes.service.plan;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.*; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
/** /**
* Service * Service
@ -55,4 +62,11 @@ public interface PlanService {
PlanDO selectLastOne(); PlanDO selectLastOne();
List<PlanRespVO> buildVOList(List<PlanDO> list); List<PlanRespVO> buildVOList(List<PlanDO> list);
Boolean saveBatchPlan(List<PlanDO> planDOList); Boolean saveBatchPlan(List<PlanDO> planDOList);
Boolean arrangePlan(ItemRequisitionSaveReqVO saveReqVO, PlanDO planDO ,List<ItemRequisitionAndStock> list);
List<PlanDO> getPlanList(Collection<Long> ids);
default Map<Long, PlanDO> getPlanMap(Collection<Long> ids) {
return convertMap(getPlanList(ids), PlanDO::getId);
}
} }

@ -4,13 +4,19 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionStatusEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO; import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO; import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock;
import cn.iocoder.yudao.module.mes.service.task.TaskService; import cn.iocoder.yudao.module.mes.service.task.TaskService;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.*; import java.util.*;
@ -129,4 +135,35 @@ public class PlanServiceImpl implements PlanService {
public Boolean saveBatchPlan(List<PlanDO> planDOList){ public Boolean saveBatchPlan(List<PlanDO> planDOList){
return planMapper.insertBatch(planDOList); return planMapper.insertBatch(planDOList);
} }
@Resource
private ItemRequisitionService itemRequisitionService;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean arrangePlan(ItemRequisitionSaveReqVO saveReqVO,PlanDO planDO ,List<ItemRequisitionAndStock> list){
List<ItemRequisitionDetailDO> itemRequisitionDetails = new ArrayList<>();
for (ItemRequisitionAndStock item : list) {
ItemRequisitionDetailDO detailDO = new ItemRequisitionDetailDO()
.setProductId(item.getItemId())
.setUnitId(item.getUnitId())
.setNumber(item.getNumber())
.setIsEnable(true);
itemRequisitionDetails.add(detailDO);
}
saveReqVO.setItemRequisitionDetails(itemRequisitionDetails);
saveReqVO.setStatus(ItemRequisitionStatusEnum..getValue());
itemRequisitionService.createItemRequisition(saveReqVO);
//更新计划状态
planDO.setStatus(PlanStatusEnum..getValue());
planDO.setIsEnable(true);
planMapper.updateById(planDO);
return true;
}
@Override
public List<PlanDO> getPlanList(Collection<Long> ids) {
return planMapper.selectBatchIds(ids);
}
} }
Loading…
Cancel
Save