diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java index 2e57516350..0ce64075d2 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java @@ -40,6 +40,9 @@ public class ErpPurchaseOrderRespVO { @Schema(description = "采购时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("采购时间") private LocalDateTime orderTime; + @Schema(description = "预计到货时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("预计到货时间") + private LocalDateTime arrivalTime; @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") @ExcelProperty("合计数量") diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java index bac4b6d738..a2ecacc230 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java @@ -23,6 +23,8 @@ public class ErpPurchaseOrderSaveReqVO { @Schema(description = "采购时间", requiredMode = Schema.RequiredMode.REQUIRED) private LocalDateTime orderTime; + @Schema(description = "预计到货时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime arrivalTime; @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") private BigDecimal discountPercent; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java index ad60f27da7..b784f35fba 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java @@ -168,6 +168,7 @@ public class ErpStockOutController { stockOut.setProductNames(CollUtil.join(stockOut.getItems(), ",", ErpStockOutRespVO.Item::getProductName)); MapUtils.findAndThen(customerMap, stockOut.getCustomerId(), supplier -> stockOut.setCustomerName(supplier.getName())); MapUtils.findAndThen(userMap, Long.parseLong(stockOut.getCreator()), user -> stockOut.setCreatorName(user.getNickname())); + MapUtils.findAndThen(userMap, stockOut.getResponserId(), user -> stockOut.setResponserName(user.getNickname())); }); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java index bba1542e3e..d5d2dd626f 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java @@ -56,7 +56,7 @@ public class ErpPurchaseOrderDO extends BaseDO { * 下单时间 */ private LocalDateTime orderTime; - + private LocalDateTime arrivalTime; /** * 合计数量 */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/TaskItemNeedController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/TaskItemNeedController.java index ce03754d0d..a096611261 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/TaskItemNeedController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/TaskItemNeedController.java @@ -23,9 +23,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -88,8 +86,12 @@ public class TaskItemNeedController { @GetMapping("/generate-plan/byTask") @Operation(summary = "对生产任务单进行计划") public CommonResult> generatePlanByTask(@Valid TaskPlanParam planParam) { - System.out.println("planParam:" + planParam.toString()); - int sizeOfPlan = planParam.getPlanDate() != null ? planParam.getPlanDate().length : 0; + int sizeOfPlan = 0; + if(planParam.getPlanDate() != null){ + sizeOfPlan = planParam.getPlanDate().length; + //对得到的日期做一下排序,防止拿到的是乱序日期 + Arrays.sort(planParam.getPlanDate(), Comparator.naturalOrder()); + } Map> planMap = taskService.generatePlan(planParam.getTaskId(), sizeOfPlan, planParam.getProductsOfPlan()); List list = new ArrayList<>(); //拿到已经存在的计划,排最后面的未完成的计划,看planMap有无同类产品,该产品就排最前 diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java index a835d47d80..efa2b00b39 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java @@ -41,5 +41,6 @@ public class TaskPageReqVO extends PageParam { @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; - + @Schema(description = "任务单类型", example = "你猜") + private String taskType; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java index e26b5e2ffb..b9108ed8cb 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java @@ -51,5 +51,7 @@ public class TaskRespVO { @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; - + @Schema(description = "任务单类型", example = "你猜") + @ExcelProperty("任务单类型") + private String taskType; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskSaveReqVO.java index 2c471dfab2..4a2128f4ed 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskSaveReqVO.java @@ -45,4 +45,6 @@ public class TaskSaveReqVO { @Schema(description = "生产任务单明细列表") private List taskDetails; + @Schema(description = "任务单类型", example = "你猜") + private String taskType; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDO.java index 2bfa7aec0d..a45983a46a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDO.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDateTime; @@ -60,5 +61,6 @@ public class TaskDO extends BaseDO { * 枚举 {@link TODO infra_boolean_string 对应的类} */ private Boolean isEnable; - + @Schema(description = "任务单类型", example = "你猜") + private String taskType; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java index 5ec74f651e..59a644e8e8 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java @@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanRespVO; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum; +import cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskStatusEnum; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO; @@ -52,8 +53,11 @@ public class PlanServiceImpl implements PlanService { private PlanMapper planMapper; @Resource private MesNoRedisDAO noRedisDAO; + @Resource + private TaskService taskService; @Override + @Transactional(rollbackFor = Exception.class) public Long createPlan(PlanSaveReqVO createReqVO) { // 插入 PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class); @@ -69,6 +73,11 @@ public class PlanServiceImpl implements PlanService { if(plan.getPriorityNum()==null) plan.setPriorityNum(1L); planMapper.insert(plan); // 返回 + TaskDO taskDO = taskService.getTask(plan.getTaskId()); + if(taskDO!=null && taskDO.getStatus().equals(TaskStatusEnum.下达.getValue())) { + taskDO.setStatus(TaskStatusEnum.计划.getValue()); + taskService.updateTask(taskDO); + } return plan.getId(); } @@ -112,8 +121,6 @@ public class PlanServiceImpl implements PlanService { @Resource private AdminUserService userService; @Resource - private TaskService taskService; - @Resource private StockInDetailMapper stockInDetailMapper; @Override @@ -157,8 +164,18 @@ public class PlanServiceImpl implements PlanService { } @Override + @Transactional(rollbackFor = Exception.class) public Boolean saveBatchPlan(List planDOList) { - return planMapper.insertBatch(planDOList); + // 返回 + if(planDOList!=null && planDOList.size()>0){ + TaskDO taskDO = taskService.getTask(planDOList.get(0).getTaskId()); + if(taskDO!=null && taskDO.getStatus().equals(TaskStatusEnum.下达.getValue())) { + taskDO.setStatus(TaskStatusEnum.计划.getValue()); + taskService.updateTask(taskDO); + } + return planMapper.insertBatch(planDOList); + } + return false; } @Resource @@ -213,6 +230,14 @@ public class PlanServiceImpl implements PlanService { } @Override public void updateStatus( Long id,Integer status){ + if(status.equals(PlanStatusEnum.开工.getValue())){ + PlanDO plan = planMapper.selectById(id); + TaskDO taskDO = taskService.getTask(plan.getTaskId()); + if( taskDO.getStatus().equals(TaskStatusEnum.计划.getValue())) { + taskDO.setStatus(TaskStatusEnum.开工.getValue()); + taskService.updateTask(taskDO); + } + } planMapper.updateStatus(id, status); } @Override