fix:修改添加任务单字段摆放规则及包装方案

main
HuangHuiKang 4 days ago
parent 8057b2d122
commit 4bae94e9fc

@ -230,25 +230,23 @@ public class TaskController {
@GetMapping("/task-detail/page")
@Operation(summary = "获得生产任务单明细分页")
@Parameter(name = "taskId", description = "task ID")
@PreAuthorize("@ss.hasPermission('mes:task:query')")
public CommonResult<PageResult<TaskDetailRespVO>> getTaskDetailPage(PageParam pageReqVO,
@RequestParam("taskId") Long taskId) {
return success(taskService.getTaskDetailPage(pageReqVO, taskId));
public CommonResult<PageResult<TaskDetailRespVO>> getTaskDetailPage(@Valid TaskDetailPageReqVO pageReqVO) {
return success(taskService.getTaskDetailPage(pageReqVO));
}
@PostMapping("/task-detail/create")
@Operation(summary = "创建生产任务单明细")
@PreAuthorize("@ss.hasPermission('mes:task:create')")
public CommonResult<Long> createTaskDetail(@Valid @RequestBody TaskDetailDO taskDetail) {
return success(taskService.createTaskDetail(taskDetail));
public CommonResult<Long> createTaskDetail(@Valid @RequestBody TaskDetailSaveReqVO createReqVO) {
return success(taskService.createTaskDetail(createReqVO));
}
@PutMapping("/task-detail/update")
@Operation(summary = "更新生产任务单明细")
@PreAuthorize("@ss.hasPermission('mes:task:update')")
public CommonResult<Boolean> updateTaskDetail(@Valid @RequestBody TaskDetailDO taskDetail) {
taskService.updateTaskDetail(taskDetail);
public CommonResult<Boolean> updateTaskDetail(@Valid @RequestBody TaskDetailSaveReqVO updateReqVO) {
taskService.updateTaskDetail(updateReqVO);
return success(true);
}

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.mes.controller.admin.task.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 生产任务单明细分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class TaskDetailPageReqVO extends PageParam {
@Schema(description = "任务单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12825")
@NotNull(message = "任务单 ID 不能为空")
private Long taskId;
}

@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产任务单明细 Response VO")
@ -80,6 +81,30 @@ public class TaskDetailRespVO {
@Schema(description = "附件", example = "你猜")
@ExcelProperty("附件")
private String attachment;
@Schema(description = "摆放规则", example = "一横一竖")
@ExcelProperty("摆放规则")
private String placementRule;
@Schema(description = "包装方案 ID", example = "1")
@ExcelProperty("包装方案 ID")
private Long packagingSchemeId;
@Schema(description = "包装方案名称", example = "标准包装方案")
@ExcelProperty("包装方案名称")
private String packagingSchemeName;
@Schema(description = "每包数量(件)", example = "100")
@ExcelProperty("每包数量(件)")
private BigDecimal packageQuantity;
@Schema(description = "每托包数(包)", example = "20")
@ExcelProperty("每托包数(包)")
private BigDecimal palletPackageQuantity;
@Schema(description = "每托总数量(件)", example = "2000")
@ExcelProperty("每托总数量(件)")
private BigDecimal palletTotalQuantity;
/**
*
*/
@ -111,4 +136,4 @@ public class TaskDetailRespVO {
@Schema(description = "关联设备", example = "EQ-01-搅拌机,EQ-02-封口机")
private String deviceDisplayName;
}
}

@ -0,0 +1,74 @@
package cn.iocoder.yudao.module.mes.controller.admin.task.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产任务单明细新增/修改 Request VO")
@Data
public class TaskDetailSaveReqVO {
@Schema(description = "ID更新时必填", example = "2696")
private Long id;
@Schema(description = "产品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4041")
@NotNull(message = "产品 ID 不能为空")
private Long productId;
@Schema(description = "单位 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13695")
@NotNull(message = "单位 ID 不能为空")
private Long unitId;
@Schema(description = "任务单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12825")
@NotNull(message = "任务单 ID 不能为空")
private Long taskId;
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
@NotNull(message = "数量不能为空")
private Long number;
@Schema(description = "打包要求(每包/个)", example = "50")
private Long packageSize;
@Schema(description = "项目名称", example = "一期项目")
private String projectName;
@Schema(description = "技术要求", example = "按图纸生产")
private String techRequirements;
@Schema(description = "备注", example = "加急")
private String remark;
@Schema(description = "是否启用", example = "true")
private Boolean isEnable;
@Schema(description = "打包数量/包", example = "20")
private Long packageNumber;
@Schema(description = "条码", example = "BARCODE001")
private String barCode;
@Schema(description = "附件 URL", example = "https://example.com/file.pdf")
private String attachment;
@Schema(description = "摆放规则", example = "一横一竖")
private String placementRule;
@Schema(description = "包装方案 ID。前端只需传 ID后端自动保存包装方案名称、每包数量、每托包数、每托总数量", example = "1")
private Long packagingSchemeId;
@Schema(description = "工厂完成时间")
private LocalDateTime finishDate;
@Schema(description = "装柜时间")
private LocalDateTime boxingDate;
@Schema(description = "到达时间")
private LocalDateTime arriveDate;
@Schema(description = "订单单号", example = "SO202607030001")
private String saleOrderCode;
}

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@ -77,6 +78,30 @@ public class TaskDetailDO extends BaseDO {
*
*/
private String attachment;
/**
*
*/
private String placementRule;
/**
* ID
*/
private Long packagingSchemeId;
/**
*
*/
private String packagingSchemeName;
/**
*
*/
private BigDecimal packageQuantity;
/**
*
*/
private BigDecimal palletPackageQuantity;
/**
*
*/
private BigDecimal palletTotalQuantity;
/**
*
*/
@ -91,4 +116,4 @@ public class TaskDetailDO extends BaseDO {
private LocalDateTime arriveDate;
//订单单号
private String saleOrderCode;
}
}

@ -104,7 +104,7 @@ public interface TaskService {
* @param taskId task ID
* @return
*/
PageResult<TaskDetailRespVO> getTaskDetailPage(PageParam pageReqVO, Long taskId);
PageResult<TaskDetailRespVO> getTaskDetailPage(TaskDetailPageReqVO pageReqVO);
//产品汇总
List<ViewTaskProductSummary> getTaskProductSummaryList(Long taskId);
@ -115,14 +115,14 @@ public interface TaskService {
* @param taskDetail
* @return
*/
Long createTaskDetail(@Valid TaskDetailDO taskDetail);
Long createTaskDetail(@Valid TaskDetailSaveReqVO createReqVO);
/**
*
*
* @param taskDetail
*/
void updateTaskDetail(@Valid TaskDetailDO taskDetail);
void updateTaskDetail(@Valid TaskDetailSaveReqVO updateReqVO);
/**
*

@ -10,8 +10,10 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductPa
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductRelationRespVO;
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.dal.dataobject.product.ErpPackagingSchemeDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.productdevicerel.ProductDeviceRelDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.productpackagingschemerel.ProductPackagingSchemeRelDO;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpPackagingSchemeMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.productdevicerel.ProductDeviceRelMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.productpackagingschemerel.ProductPackagingSchemeRelMapper;
@ -106,6 +108,8 @@ public class TaskServiceImpl implements TaskService {
private ProductDeviceRelMapper productDeviceRelMapper;
@Resource
private ProductPackagingSchemeRelMapper productPackagingSchemeRelMapper;
@Resource
private ErpPackagingSchemeMapper erpPackagingSchemeMapper;
@Resource
private DeviceLedgerService deviceLedgerService;
@ -319,6 +323,7 @@ public class TaskServiceImpl implements TaskService {
private void createTaskDetailList(Long taskId, List<TaskDetailDO> list) {
list.forEach(o -> o.setTaskId(taskId));
fillPackagingSchemeSnapshot(list);
taskDetailMapper.insertBatch(list);
}
@ -343,8 +348,8 @@ public class TaskServiceImpl implements TaskService {
private PlanMapper planMapper;
@Override
public PageResult<TaskDetailRespVO> getTaskDetailPage(PageParam pageReqVO, Long taskId) {
PageResult<TaskDetailDO> pageResult = taskDetailMapper.selectPage(pageReqVO, taskId);
public PageResult<TaskDetailRespVO> getTaskDetailPage(TaskDetailPageReqVO pageReqVO) {
PageResult<TaskDetailDO> pageResult = taskDetailMapper.selectPage(pageReqVO, pageReqVO.getTaskId());
return new PageResult<>(buildDetailVOList(pageResult.getList()), pageResult.getTotal());
}
@ -437,19 +442,55 @@ public class TaskServiceImpl implements TaskService {
@Override
public Long createTaskDetail(TaskDetailDO taskDetail) {
public Long createTaskDetail(TaskDetailSaveReqVO createReqVO) {
TaskDetailDO taskDetail = BeanUtils.toBean(createReqVO, TaskDetailDO.class);
fillPackagingSchemeSnapshot(taskDetail);
taskDetailMapper.insert(taskDetail);
return taskDetail.getId();
}
@Override
public void updateTaskDetail(TaskDetailDO taskDetail) {
public void updateTaskDetail(TaskDetailSaveReqVO updateReqVO) {
TaskDetailDO taskDetail = BeanUtils.toBean(updateReqVO, TaskDetailDO.class);
// 校验存在
validateTaskDetailExists(taskDetail.getId());
fillPackagingSchemeSnapshot(taskDetail);
// 更新
taskDetailMapper.updateById(taskDetail);
}
private void fillPackagingSchemeSnapshot(List<TaskDetailDO> list) {
if (CollUtil.isEmpty(list)) {
return;
}
list.forEach(this::fillPackagingSchemeSnapshot);
}
private void fillPackagingSchemeSnapshot(TaskDetailDO taskDetail) {
if (taskDetail == null) {
return;
}
if (taskDetail.getPackagingSchemeId() == null) {
taskDetail.setPackagingSchemeName(null);
taskDetail.setPackageQuantity(null);
taskDetail.setPalletPackageQuantity(null);
taskDetail.setPalletTotalQuantity(null);
return;
}
ErpPackagingSchemeDO packagingScheme = erpPackagingSchemeMapper.selectById(taskDetail.getPackagingSchemeId());
if (packagingScheme == null) {
taskDetail.setPackagingSchemeName(null);
taskDetail.setPackageQuantity(null);
taskDetail.setPalletPackageQuantity(null);
taskDetail.setPalletTotalQuantity(null);
return;
}
taskDetail.setPackagingSchemeName(packagingScheme.getName());
taskDetail.setPackageQuantity(packagingScheme.getPackageQuantity());
taskDetail.setPalletPackageQuantity(packagingScheme.getPalletPackageQuantity());
taskDetail.setPalletTotalQuantity(packagingScheme.getPalletTotalQuantity());
}
@Override
public void deleteTaskDetail(Long id) {
// 校验存在

Loading…
Cancel
Save