diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/BaogongRecordController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/BaogongRecordController.java index 42c4785d43..52a24e170c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/BaogongRecordController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/BaogongRecordController.java @@ -3,9 +3,12 @@ package cn.iocoder.yudao.module.mes.controller.admin.baogongrecord; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionRespVO; +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.dal.dataobject.itemrequisition.ItemRequisitionDO; import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; +import cn.iocoder.yudao.module.mes.service.plan.PlanService; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import org.springframework.web.bind.annotation.*; @@ -19,6 +22,8 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.constraints.*; import javax.validation.*; import javax.servlet.http.*; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.io.IOException; @@ -47,6 +52,9 @@ public class BaogongRecordController { @Resource private BaogongRecordService baogongRecordService; + @Resource + private PlanService planService; + @Resource private AdminUserApi adminUserApi; @@ -54,6 +62,27 @@ public class BaogongRecordController { @Operation(summary = "创建报工") @PreAuthorize("@ss.hasPermission('mes:baogong-record:create')") public CommonResult createBaogongRecord(@Valid @RequestBody BaogongRecordSaveReqVO createReqVO) { + PlanDO plan = planService.getPlan(createReqVO.getPlanId()); + if (plan.getWangongNumber() == null) { + plan.setWangongNumber(0L); + } + if (plan.getPassNumber() == null) { + plan.setPassNumber(0L); + } + if (plan.getNoPassNumber() == null) { + plan.setNoPassNumber(0L); + } + plan.setWangongNumber(plan.getWangongNumber() + createReqVO.getNum() + createReqVO.getNoPassNum()); + plan.setPassNumber(plan.getPassNumber() + createReqVO.getNum()); + plan.setNoPassNumber(plan.getNoPassNumber() + createReqVO.getNoPassNum()); + if (plan.getWangongNumber() <= 0) { + plan.setPassRate(BigDecimal.ZERO); + } else { + BigDecimal rate = new BigDecimal(plan.getPassNumber()) + .divide(new BigDecimal(plan.getWangongNumber()), 4, RoundingMode.HALF_UP); + plan.setPassRate(rate.multiply(new BigDecimal("100"))); + } + planService.updatePlan(BeanUtils.toBean(plan, PlanSaveReqVO.class)); return success(baogongRecordService.createBaogongRecord(createReqVO)); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordPageReqVO.java index c9b1a776d3..05212746a4 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordPageReqVO.java @@ -32,4 +32,10 @@ public class BaogongRecordPageReqVO extends PageParam { @Schema(description = "报工人", requiredMode = Schema.RequiredMode.REQUIRED) private String creator; + + @Schema(description = "不合格数量") + private Long noPassNum; + + @Schema(description = "原因") + private String remark; } \ 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/baogongrecord/vo/BaogongRecordRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordRespVO.java index 696aed7068..f748b575d3 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordRespVO.java @@ -20,8 +20,8 @@ public class BaogongRecordRespVO { @ExcelProperty("关联计划id") private Long planId; - @Schema(description = "派工数量") - @ExcelProperty("派工数量") + @Schema(description = "报工数量") + @ExcelProperty("报工数量") private Long num; @Schema(description = "派工时间") @@ -35,4 +35,12 @@ public class BaogongRecordRespVO { @Schema(description = "报工人", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("报工人") private String creator; + + @Schema(description = "不合格数量") + @ExcelProperty("不合格数量") + private Long noPassNum; + + @Schema(description = "原因") + @ExcelProperty("原因") + private String remark; } \ 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/baogongrecord/vo/BaogongRecordSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordSaveReqVO.java index 1b2c6caffb..f07274392f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/baogongrecord/vo/BaogongRecordSaveReqVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.controller.admin.baogongrecord.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -24,4 +25,10 @@ public class BaogongRecordSaveReqVO { @Schema(description = "派工时间") private LocalDateTime baogongTime; + @Schema(description = "不合格数量") + private Long noPassNum; + + @Schema(description = "原因") + private String remark; + } \ 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/feedingrecord/vo/FeedingRecordDetailRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordDetailRespVO.java index 980547961e..b6dc3dff96 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordDetailRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordDetailRespVO.java @@ -24,11 +24,17 @@ public class FeedingRecordDetailRespVO { @ExcelProperty("记录") private String recordCode; - @Schema(description = "原料id", example = "19133") - private Long itemId; - @Schema(description = "原料", example = "19133") +// @Schema(description = "原料id", example = "19133") +// private Long itemId; +// @Schema(description = "原料", example = "19133") +// @ExcelProperty("原料") +// private String itemName; + + @Schema(description = "物料id", example = "19133") + private Long productId; + @Schema(description = "物料", example = "19133") @ExcelProperty("原料") - private String itemName; + private String productName; @Schema(description = "重量") @ExcelProperty("重量") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanPageReqVO.java index 830690c78d..7cf20423fe 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanPageReqVO.java @@ -83,4 +83,16 @@ public class PlanPageReqVO extends PageParam { @Schema(description = "是否完成质检") private BigDecimal isZj; + + @Schema(description = "完工数量") + private Long wangongNumber; + + @Schema(description = "合格数量") + private Long passNumber; + + @Schema(description = "不合格数量") + private Long noPassNumber; + + @Schema(description = "合格率") + private BigDecimal passRate; } \ 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/plan/vo/PlanRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanRespVO.java index 1dab78af1e..0bad43b68e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanRespVO.java @@ -129,4 +129,20 @@ public class PlanRespVO { @Schema(description = "是否完成质检") @ExcelProperty("是否完成质检") private BigDecimal isZj; + + @Schema(description = "完工数量") + @ExcelProperty("完工数量") + private Long wangongNumber; + + @Schema(description = "合格数量") + @ExcelProperty("合格数量") + private Long passNumber; + + @Schema(description = "不合格数量") + @ExcelProperty("不合格数量") + private Long noPassNumber; + + @Schema(description = "合格率") + @ExcelProperty("合格率") + private BigDecimal passRate; } \ 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/plan/vo/PlanSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanSaveReqVO.java index ee7a0c28f9..56e69f6fa7 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanSaveReqVO.java @@ -83,4 +83,16 @@ public class PlanSaveReqVO { @Schema(description = "是否完成质检") private BigDecimal isZj; + + @Schema(description = "完工数量") + private Long wangongNumber; + + @Schema(description = "合格数量") + private Long passNumber; + + @Schema(description = "不合格数量") + private Long noPassNumber; + + @Schema(description = "合格率") + private BigDecimal passRate; } \ 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/baogongrecord/BaogongRecordDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/baogongrecord/BaogongRecordDO.java index 40e9b6cfdd..d09d418489 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/baogongrecord/BaogongRecordDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/baogongrecord/BaogongRecordDO.java @@ -40,5 +40,14 @@ public class BaogongRecordDO extends BaseDO { * 派工时间 */ private LocalDateTime baogongTime; + /** + * 不合格数量 + */ + private Long noPassNum; + + /** + * 备注 + */ + private String remark; } \ 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/feedingrecord/FeedingRecordDetailDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingrecord/FeedingRecordDetailDO.java index 07752a7824..b703fa840e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingrecord/FeedingRecordDetailDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingrecord/FeedingRecordDetailDO.java @@ -53,5 +53,8 @@ public class FeedingRecordDetailDO extends BaseDO { * 投料时间 */ private LocalDateTime feedingTime; - + /** + * 物料id + */ + private Long productId; } \ 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/plan/PlanDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/plan/PlanDO.java index 479de3cbe8..e52b57d5e8 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/plan/PlanDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/plan/PlanDO.java @@ -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; /** @@ -121,4 +122,23 @@ public class PlanDO extends BaseDO { * 是否完成质检 */ private Boolean isZj; + + /** + * 完工数量 + */ + private Long wangongNumber; + /** + * 合格数量 + */ + private Long passNumber; + /** + * 不合格数量 + */ + private Long noPassNumber; + + /** + * 合格率 + */ + private BigDecimal passRate; + } \ 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/feedingrecord/FeedingRecordServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/feedingrecord/FeedingRecordServiceImpl.java index 6f1cf1c852..0f3f32e868 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/feedingrecord/FeedingRecordServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/feedingrecord/FeedingRecordServiceImpl.java @@ -219,7 +219,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { return Collections.emptyList(); } Map map = productService.getProductMap( - convertSet(list, FeedingRecordDetailDO::getItemId)); + convertSet(list, FeedingRecordDetailDO::getProductId)); Map unitMap = productUnitService.getProductUnitMap( convertSet(list, FeedingRecordDetailDO::getUnitId)); // 1.4 管理员信息 @@ -227,8 +227,8 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { convertSet(list, FeedingRecordDetailDO::getUserId)); return BeanUtils.toBean(list, FeedingRecordDetailRespVO.class, item -> { - MapUtils.findAndThen(map, item.getItemId(), - product -> item.setItemName(product.getName())); + MapUtils.findAndThen(map, item.getProductId(), + product -> item.setProductName(product.getName())); MapUtils.findAndThen(unitMap, item.getUnitId(), unit -> item.setUnitName(unit.getName())); MapUtils.findAndThen(userMap, item.getUserId(),