diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/app/AppProductController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/app/AppProductController.java index eeeb0f0c19..e46b34379c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/app/AppProductController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/app/AppProductController.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.mes.controller.admin.app; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; @@ -9,15 +11,26 @@ 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.app.service.AppService; import cn.iocoder.yudao.module.mes.controller.admin.app.vo.AppProductVo; +import cn.iocoder.yudao.module.mes.controller.admin.app.vo.ProduceReportTimeVO; +import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ReportStatusEnum; +import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ViewReportUserDateSummary; +import cn.iocoder.yudao.module.mes.service.producereport.ProduceReportService; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -38,6 +51,8 @@ public class AppProductController { private ErpProductService erpProductService; @Resource private ErpProductUnitService erpProductUnitService; + @Resource + private ProduceReportService produceReportService; @GetMapping("/getItemList") @Operation(summary = "获得原料列表") @@ -51,4 +66,104 @@ public class AppProductController { List list = erpProductUnitService.getProductUnitListByStatus(CommonStatusEnum.ENABLE.getStatus()); return success(convertList(list, unit -> new AppProductVo().setValue(unit.getId()).setText(unit.getName()))); } + + @GetMapping("/get30DaysReportList") + @Operation(summary = "获得某用户近三十天报工汇总") + public CommonResult> get30DaysReportList(@RequestParam("userId") Long userId) { + if(userId==null) return success(new ArrayList<>()); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime day30 = now.plusDays(-30); + + String[] days = {LocalDateTimeUtil.format(day30,DatePattern.NORM_DATE_PATTERN), + LocalDateTimeUtil.format(now,DatePattern.NORM_DATE_PATTERN)}; + List list = produceReportService.selectBy(userId,null,days); + return success(list); + } + @GetMapping("/getThisMonthSum") + @Operation(summary = "获得某用户本月报工汇总") + public CommonResult getThisMonthSum(@RequestParam("userId") Long userId) { + ViewReportUserDateSummary result = new ViewReportUserDateSummary().setUserId(userId) + .setSumNumber(BigDecimal.ZERO).setTotalQualityNumber(BigDecimal.ZERO).setTotalWasteNumber(BigDecimal.ZERO); + if(userId==null) return success(result); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime firstDay = now.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天 + + String[] days = {LocalDateTimeUtil.format(firstDay,DatePattern.NORM_DATE_PATTERN), + LocalDateTimeUtil.format(now,DatePattern.NORM_DATE_PATTERN)}; + + result = produceReportService.selectSumBy(userId,days); + return success(result); + } + @GetMapping("/getLastMonthSum") + @Operation(summary = "获得某用户上个月的报工汇总") + public CommonResult getLastMonthSum(@RequestParam("userId") Long userId) { + ViewReportUserDateSummary result = new ViewReportUserDateSummary().setUserId(userId) + .setSumNumber(BigDecimal.ZERO).setTotalQualityNumber(BigDecimal.ZERO).setTotalWasteNumber(BigDecimal.ZERO); + if(userId==null) return success(result); + LocalDateTime lastMonth = LocalDateTime.now().plusMonths(-1); + LocalDateTime firstDay = lastMonth.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天 + LocalDateTime lastDay = lastMonth.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天 + + String[] days = {LocalDateTimeUtil.format(firstDay,DatePattern.NORM_DATE_PATTERN), + LocalDateTimeUtil.format(lastDay,DatePattern.NORM_DATE_PATTERN)}; + + result = produceReportService.selectSumBy(userId,days); + return success(result); + } + + @GetMapping("/getSumReportTime") + @Operation(summary = "获得某用户本月和上个月的计时汇总") + public CommonResult getSumReportTime(@RequestParam("userId") Long userId) { + ViewReportUserDateSummary result = new ViewReportUserDateSummary().setUserId(userId) + .setSumNumber(BigDecimal.ZERO).setTotalQualityNumber(BigDecimal.ZERO).setTotalWasteNumber(BigDecimal.ZERO); + if(userId==null) return success(result); + LocalDateTime lastMonth = LocalDateTime.now().plusMonths(-1); + LocalDateTime firstDay = lastMonth.with(TemporalAdjusters.firstDayOfMonth()); // 获取前月的第一天 + LocalDateTime lastDay = lastMonth.with(TemporalAdjusters.lastDayOfMonth()); // 获取前月的最后一天 + LocalDateTime[] days = {firstDay,lastDay}; + + ProduceReportPageReqVO pageReqVO = new ProduceReportPageReqVO().setUserId(userId) + .setReportStatus(ReportStatusEnum.通过.getValue()); + pageReqVO.setReportDate(days); + List list = produceReportService.getList(pageReqVO); + BigDecimal lastMonthTime = list.stream() + .map(ProduceReportDO::getTotalTime).reduce(BigDecimal.ZERO, BigDecimal::add); + + + firstDay = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天 + firstDay = firstDay.withHour(0); + LocalDateTime[] days2 = {firstDay,LocalDateTime.now()}; + + pageReqVO.setReportDate(days2); + list = produceReportService.getList(pageReqVO); + BigDecimal thisMonthTime = list.stream() + .map(ProduceReportDO::getTotalTime).reduce(BigDecimal.ZERO, BigDecimal::add); + + ViewReportUserDateSummary summary = new ViewReportUserDateSummary().setUserId(userId) + .setSumNumber(BigDecimal.ZERO).setTotalQualityNumber(thisMonthTime).setTotalWasteNumber(lastMonthTime); + return success(summary); + } + @GetMapping("/getDay30ReportTime") + @Operation(summary = "获得某用户30天的计时列表") + public CommonResult> getDay30ReportTime(@RequestParam("userId") Long userId) { + if(userId==null) return success(new ArrayList<>()); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime day30 = now.plusDays(-30); + LocalDateTime[] days = {day30,now}; + ProduceReportPageReqVO pageReqVO = new ProduceReportPageReqVO().setUserId(userId) + .setReportStatus(ReportStatusEnum.通过.getValue());; + pageReqVO.setReportDate(days); + List list = produceReportService.getList(pageReqVO); + List timeList = new ArrayList<>(); + for (ProduceReportDO reportDO: list) { + if(reportDO.getTotalTime().compareTo(BigDecimal.ZERO)==1){ + ProduceReportTimeVO timeVO = new ProduceReportTimeVO(); + timeVO.setUserId(userId); + timeVO.setReportDay(LocalDateTimeUtil.format(reportDO.getReportDate(),DatePattern.NORM_DATE_PATTERN)); + timeVO.setReportTime(reportDO.getTotalTime()); + timeList.add(timeVO); + } + } + return success(timeList); + } } \ 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/app/vo/ProduceReportTimeVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/app/vo/ProduceReportTimeVO.java new file mode 100644 index 0000000000..4a8586199e --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/app/vo/ProduceReportTimeVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.mes.controller.admin.app.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "计时报表 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProduceReportTimeVO { + + @Schema(description = "工人id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4727") + private Long userId; + /** + * 日期 + */ + @Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "4727") + private String reportDay; + /** + * 计时 + */ + @Schema(description = "计时", requiredMode = Schema.RequiredMode.REQUIRED, example = "4727") + private BigDecimal reportTime; + +} \ 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/feedingplan/vo/FeedingRecordPlanPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingplan/vo/FeedingRecordPlanPageReqVO.java index 902c19c848..06df1126c8 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingplan/vo/FeedingRecordPlanPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingplan/vo/FeedingRecordPlanPageReqVO.java @@ -26,6 +26,8 @@ public class FeedingRecordPlanPageReqVO extends PageParam { @Schema(description = "计划id", example = "17658") private Long planId; + @Schema(description = "任务单明细id", example = "24750") + private Long taskDetailId; @Schema(description = "原料id", example = "19133") private Long itemId; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/ReportPlanViewController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/ReportPlanViewController.java index a82f6ab9ce..8fb0c5ea30 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/ReportPlanViewController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/ReportPlanViewController.java @@ -1,7 +1,12 @@ package cn.iocoder.yudao.module.mes.controller.admin.producereportplan; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.ProcessTypeEnum; +import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.producereportplan.vo.ReportPlanSummaryRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; +import cn.iocoder.yudao.module.mes.service.plan.PlanService; +import cn.iocoder.yudao.module.mes.service.stockindetail.StockInDetailService; import cn.iocoder.yudao.module.mes.service.workreportplan.WorkReportPlanService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -13,7 +18,10 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -25,7 +33,10 @@ public class ReportPlanViewController { @Resource private WorkReportPlanService workReportPlanService; - + @Resource + private StockInDetailService stockInDetailService; + @Resource + private PlanService planService; @GetMapping("/getPlanProgress") @Operation(summary = "获得计划进度") @Parameter(name = "id", description = "计划id", required = true, example = "1024") @@ -33,6 +44,48 @@ public class ReportPlanViewController { ReportPlanSummaryRespVO respVO = new ReportPlanSummaryRespVO(); respVO.setPlanId(id); List planSummaryDOS = workReportPlanService.getPlanSummary( respVO); + if(planSummaryDOS.size()>0){ + //按照工序枚举顺序排序 + planSummaryDOS.sort(Comparator.comparing(book -> { + ProcessTypeEnum type = ProcessTypeEnum.valueOf(book.getOrgType()); + return type.ordinal(); + })); + /****加上生产入库数量 todo + */ + BigDecimal stockInNumber = stockInDetailService.selectSumBy(id); + respVO.setTotalQualityNumber(stockInNumber); + respVO.setTotalWasteNumber(BigDecimal.ZERO); + respVO.setOrgType("成品入库"); + planSummaryDOS.add(respVO); + } + return success(planSummaryDOS); + } + + @GetMapping("/getTaskProgress") + @Operation(summary = "获得任务明细进度") + @Parameter(name = "id", description = "任务明细id", required = true, example = "1024") + public CommonResult> getTaskProgress(@RequestParam("id") Long id) { + PlanPageReqVO reqVO = new PlanPageReqVO().setTaskId(id); + List planList = planService.getPlanBy(reqVO); + List ids = planList.stream().map(PlanDO::getId).collect(Collectors.toList()); + ReportPlanSummaryRespVO respVO = new ReportPlanSummaryRespVO(); + respVO.setPlanIds(ids); + List planSummaryDOS = workReportPlanService.getPlanSummary( respVO); + + if(planSummaryDOS.size()>0){ + //按照工序枚举顺序排序 + planSummaryDOS.sort(Comparator.comparing(book -> { + ProcessTypeEnum type = ProcessTypeEnum.valueOf(book.getOrgType()); + return type.ordinal(); + })); + /****加上生产入库数量 todo + */ + BigDecimal stockInNumber = stockInDetailService.selectSumByTaskDetailId(id); + respVO.setTotalQualityNumber(stockInNumber); + respVO.setTotalWasteNumber(BigDecimal.ZERO); + respVO.setOrgType("成品入库"); + planSummaryDOS.add(respVO); + } return success(planSummaryDOS); } } \ 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/producereportplan/vo/ReportPlanSummaryRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/ReportPlanSummaryRespVO.java index c56152d001..52e369a22f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/ReportPlanSummaryRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/ReportPlanSummaryRespVO.java @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; +import java.util.List; @Schema(description = "管理后台 - 报工分配计划 Response VO") @Data @@ -44,6 +45,7 @@ public class ReportPlanSummaryRespVO { @ExcelProperty("工序类型") private String orgType; + private List planIds; } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanPageReqVO.java index d04aed9966..d096fcd4fd 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanPageReqVO.java @@ -23,6 +23,8 @@ public class WorkReportPlanPageReqVO extends PageParam { @Schema(description = "计划id", example = "30035") private Long planId; + @Schema(description = "任务单明细id", example = "24750") + private Long taskDetailId; @Schema(description = "产品ID", example = "9987") private Long productId; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanSaveReqVO.java index 0625d5741d..ed6f3256ab 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereportplan/vo/WorkReportPlanSaveReqVO.java @@ -18,6 +18,9 @@ public class WorkReportPlanSaveReqVO { @Schema(description = "计划id", example = "30035") private Long planId; + @Schema(description = "任务单明细id", example = "30035") + private Long taskDetailId; + @Schema(description = "产品ID", example = "9987") private Long productId; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockindetail/vo/StockInDetailPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockindetail/vo/StockInDetailPageReqVO.java index 4095f799fd..7979a8537b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockindetail/vo/StockInDetailPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockindetail/vo/StockInDetailPageReqVO.java @@ -1,11 +1,13 @@ package cn.iocoder.yudao.module.mes.controller.admin.stockindetail.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -28,6 +30,9 @@ public class StockInDetailPageReqVO extends PageParam { @Schema(description = "计划id", example = "24750") private Long planId; + @Schema(description = "任务单明细id", example = "24750") + private Long taskDetailId; + @Schema(description = "产品", example = "258") private Long productId; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingplan/FeedingRecordPlanDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingplan/FeedingRecordPlanDO.java index 373c270e48..7339f02d14 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingplan/FeedingRecordPlanDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingplan/FeedingRecordPlanDO.java @@ -41,6 +41,10 @@ public class FeedingRecordPlanDO extends BaseDO { * 计划id */ private Long planId; + /** + * 任务单明细id + */ + private Long taskDetailId; /** * 原料id */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockindetail/StockInDetailDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockindetail/StockInDetailDO.java index 51da80323f..7fed21cab1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockindetail/StockInDetailDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockindetail/StockInDetailDO.java @@ -1,12 +1,12 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.stockindetail; +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 lombok.*; -import java.util.*; + import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 生产入库分配明细 DO @@ -44,6 +44,10 @@ public class StockInDetailDO extends BaseDO { * 计划id */ private Long planId; + /** + * 任务单明细id + */ + private Long taskDetailId; /** * 产品 */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workreportplan/WorkReportPlanDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workreportplan/WorkReportPlanDO.java index 5db16bd7a8..36136c7e54 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workreportplan/WorkReportPlanDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workreportplan/WorkReportPlanDO.java @@ -36,6 +36,10 @@ public class WorkReportPlanDO extends BaseDO { * 计划id */ private Long planId; + /** + * 任务单明细id + */ + private Long taskDetailId; /** * 产品ID */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/feedingplan/FeedingRecordPlanMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/feedingplan/FeedingRecordPlanMapper.java index 40fc0f3fb1..6da10e9857 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/feedingplan/FeedingRecordPlanMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/feedingplan/FeedingRecordPlanMapper.java @@ -27,6 +27,7 @@ public interface FeedingRecordPlanMapper extends BaseMapperX { .orderByDesc("plan_end_time") .last("limit 1")); } - + default List selectBy(PlanPageReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(PlanDO::getProductId, reqVO.getProductId()) + .eqIfPresent(PlanDO::getTaskDetailId, reqVO.getTaskDetailId()) + .eqIfPresent(PlanDO::getTaskId, reqVO.getTaskId()) + .eqIfPresent(PlanDO::getPlanNumber, reqVO.getPlanNumber()) + .eqIfPresent(PlanDO::getFinishNumber, reqVO.getFinishNumber()) + .eqIfPresent(PlanDO::getStatus, reqVO.getStatus()) + .eqIfPresent(PlanDO::getFeedingPipeline, reqVO.getFeedingPipeline()) + .betweenIfPresent(PlanDO::getPlanStartTime, reqVO.getPlanStartTime()) + .betweenIfPresent(PlanDO::getPlanEndTime, reqVO.getPlanEndTime()) + .betweenIfPresent(PlanDO::getStartTime, reqVO.getStartTime()) + .betweenIfPresent(PlanDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(PlanDO::getProductionManagerId, reqVO.getProductionManagerId()) + .eqIfPresent(PlanDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(PlanDO::getPriorityNum) + .orderByAsc(PlanDO::getPlanStartTime) + .orderByAsc(PlanDO::getPlanEndTime)); + } default List selectBy(Long productId,List statusList) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PlanDO::getProductId, productId) diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/producereport/ViewReportUserDateMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/producereport/ViewReportUserDateMapper.java index 39dbc8f9bd..5bcd78d307 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/producereport/ViewReportUserDateMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/producereport/ViewReportUserDateMapper.java @@ -1,11 +1,16 @@ package cn.iocoder.yudao.module.mes.dal.mysql.producereport; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.map.MapUtil; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ViewReportUserDateSummary; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * 报工工人日期汇总 Mapper @@ -22,4 +27,23 @@ public interface ViewReportUserDateMapper extends BaseMapperX> result = selectMaps(new QueryWrapper() + .select("SUM(sumNumber) AS sumCount1, SUM(totalQualityNumber) AS sumCount2, SUM(totalWasteNumber) AS sumCount3") + .eq(userId!=null, "user_id", userId) + .between(reportDay1 != null && reportDay2!=null,"report_day", reportDay1, reportDay2)); + // 获得数量 + ViewReportUserDateSummary data = new ViewReportUserDateSummary().setUserId(userId).setSumNumber(BigDecimal.ZERO) + .setTotalQualityNumber(BigDecimal.ZERO).setTotalWasteNumber(BigDecimal.ZERO); + if (!CollUtil.isEmpty(result)) { + BigDecimal sum = BigDecimal.valueOf(MapUtil.getLong(result.get(0), "sumCount1", 0L)); + data.setSumNumber(sum); + BigDecimal sum2 = BigDecimal.valueOf(MapUtil.getLong(result.get(0), "sumCount2", 0L)); + data.setTotalQualityNumber(sum2); + BigDecimal sum3 = BigDecimal.valueOf(MapUtil.getLong(result.get(0), "sumCount3", 0L)); + data.setTotalWasteNumber(sum3); + } + return data; + } } \ 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/mysql/stockindetail/StockInDetailMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/stockindetail/StockInDetailMapper.java index c14a1a4319..7bd00cf61b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/stockindetail/StockInDetailMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/stockindetail/StockInDetailMapper.java @@ -28,6 +28,7 @@ public interface StockInDetailMapper extends BaseMapperX { .eqIfPresent(StockInDetailDO::getStockInNo, reqVO.getStockInNo()) .eqIfPresent(StockInDetailDO::getStockInItemId, reqVO.getStockInItemId()) .eqIfPresent(StockInDetailDO::getPlanId, reqVO.getPlanId()) + .eqIfPresent(StockInDetailDO::getTaskDetailId, reqVO.getTaskDetailId()) .eqIfPresent(StockInDetailDO::getProductId, reqVO.getProductId()) .eqIfPresent(StockInDetailDO::getNumber, reqVO.getNumber()) .betweenIfPresent(StockInDetailDO::getCreateTime, reqVO.getCreateTime()) @@ -47,5 +48,17 @@ public interface StockInDetailMapper extends BaseMapperX { } return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sumCount", 0D)); } + //查询任务单明细已经入库的总数 + default BigDecimal selectSumByTaskDetailId(Long taskDetailId) { + // SQL sum 查询 + List> result = selectMaps(new QueryWrapper() + .select("SUM(number) AS sumCount") + .eq("task_detail_id", taskDetailId)); + // 获得数量 + if (CollUtil.isEmpty(result)) { + return BigDecimal.ZERO; + } + return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sumCount", 0D)); + } } \ 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/mysql/workreportplan/ReportPlanSummaryMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workreportplan/ReportPlanSummaryMapper.java index 3f61a875fc..6f224a95a4 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workreportplan/ReportPlanSummaryMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workreportplan/ReportPlanSummaryMapper.java @@ -33,6 +33,7 @@ public interface ReportPlanSummaryMapper extends BaseMapperX list = selectList(wrapper); return list; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workreportplan/WorkReportPlanMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workreportplan/WorkReportPlanMapper.java index a58b524f88..356015e1d2 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workreportplan/WorkReportPlanMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workreportplan/WorkReportPlanMapper.java @@ -19,6 +19,7 @@ public interface WorkReportPlanMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(WorkReportPlanDO::getReportId, reqVO.getReportId()) .eqIfPresent(WorkReportPlanDO::getPlanId, reqVO.getPlanId()) + .eqIfPresent(WorkReportPlanDO::getTaskDetailId, reqVO.getTaskDetailId()) .eqIfPresent(WorkReportPlanDO::getProductId, reqVO.getProductId()) .eqIfPresent(WorkReportPlanDO::getQualityNumberPlan, reqVO.getQualityNumberPlan()) .eqIfPresent(WorkReportPlanDO::getWasteNumberPlan, reqVO.getWasteNumberPlan()) 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 816482d057..4610d25348 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 @@ -306,6 +306,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { } else { FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() .setPlanId(planDOList.get(i).getId()) + .setTaskDetailId(planDOList.get(i).getTaskDetailId()) .setItemId(respVO.getProductId()) .setRecordId(recordDO.getId()).setUserId(userId).setUnitId(respVO.getUnitId()) .setRecordDetailId(respVO.getId()).setFeedingTime(detailDO.getFeedingTime()) @@ -355,6 +356,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { } else { FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() .setPlanId(plan.getId()).setItemId(itemId) + .setTaskDetailId(plan.getTaskDetailId()) .setRecordId(recordId).setUserId(userId).setUnitId(detailRespVO.getUnitId()) .setRecordDetailId(detailDOMap.get(itemId).getId()) .setFeedingTime(detailDOMap.get(itemId).getFeedingTime()) @@ -387,6 +389,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { BigDecimal weight = recordDO.getWeight().multiply(BigDecimal.valueOf(plan.getPlanNumber() / totalPlanNumber), mc); FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() .setPlanId(plan.getId()).setItemId(typeEnum.getTable_id()) + .setTaskDetailId(plan.getTaskDetailId()) .setRecordId(recordDO.getId()).setUserId(userId).setUnitId(ProductUnitEnum.Kilogram.getUnitId()) .setRecordDetailId(0L) .setFeedingTime(recordDO.getFeedingTime()) @@ -434,6 +437,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { //分配给计划 FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() .setPlanId(plan.getId()) + .setTaskDetailId(plan.getTaskDetailId()) .setItemId(detail.getItemId()) .setRecordId(detail.getRecordId()).setUserId(user.getId()).setUnitId(detail.getUnitId()) .setRecordDetailId(detail.getId()).setFeedingTime(detail.getFeedingTime()) diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java index b6da89cd8a..ab3193e5f1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java @@ -90,5 +90,5 @@ public interface PlanService { /**获取当前某些状态的计划的产品列表**/ List getProductByPlanStatus(List statusList); - + List getPlanBy(PlanPageReqVO pageReqVO); } \ 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 6b438c8739..f09fdd3173 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 @@ -259,4 +259,10 @@ public class PlanServiceImpl implements PlanService { } return new ArrayList<>(); } + + @Override + public List getPlanBy(PlanPageReqVO pageReqVO){ + List planDOList = planMapper.selectBy(pageReqVO); + return planDOList; + } } \ 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/producereport/ProduceReportDetailServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/producereport/ProduceReportDetailServiceImpl.java index 4497ea7ba6..2cf991d736 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/producereport/ProduceReportDetailServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/producereport/ProduceReportDetailServiceImpl.java @@ -159,7 +159,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic /**更改报工单状态***/ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void updateStatus(Long id, Integer status) { ProduceReportDetailDO reportDetailDO = produceReportDetailMapper.selectById(id); reportDetailDO.setReportStatus(status); @@ -182,6 +182,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic if(planList.size()==1){ WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() .setReportId(id).setPlanId(planList.get(0).getId()) + .setTaskDetailId(planList.get(0).getTaskDetailId()) .setProductId(reportDetailDO.getProductId()) .setQualityNumberPlan(reportDetailDO.getQualityNumber()) .setWasteNumberPlan(reportDetailDO.getWasteNumber()); @@ -190,22 +191,25 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic else{ MathContext mc = new MathContext(0, RoundingMode.HALF_UP); long totalNeed = 0; - Map planDOMap = new HashMap<>(); + Map planNeedMap = new HashMap<>(); + Map planMap = new HashMap<>(); for (PlanDO plan : planList) { BigDecimal finishNumber = workReportPlanService.selectSumBy(plan.getId(),reportDetailDO.getOrgType()); long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0; totalNeed += planNeed; - planDOMap.put(plan.getId(), planNeed); + planNeedMap.put(plan.getId(), planNeed); + planMap.put(plan.getId(),plan); } //根据计划各自的需求比例分配给计划 - for (Long planId : planDOMap.keySet()) { - Long planNeed = planDOMap.get(planId); + for (Long planId : planNeedMap.keySet()) { + Long planNeed = planNeedMap.get(planId); if(planNeed>0){ BigDecimal planNumber = reportDetailDO.getQualityNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); BigDecimal wasteNumber = reportDetailDO.getWasteNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() .setReportId(id).setPlanId(planId) + .setTaskDetailId(planMap.get(planId).getTaskDetailId()) .setProductId(reportDetailDO.getProductId()) .setQualityNumberPlan(planNumber) .setWasteNumberPlan(wasteNumber); @@ -220,7 +224,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic //通过报工单 @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void updateStatus2( ProduceReportDetailDO reportDetailDO, Integer status) { reportDetailDO.setReportStatus(status); produceReportDetailMapper.updateById(reportDetailDO); @@ -233,6 +237,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic if(planList.size()==1){ WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() .setReportId(reportDetailDO.getId()).setPlanId(planList.get(0).getId()) + .setTaskDetailId(planList.get(0).getTaskDetailId()) .setProductId(reportDetailDO.getProductId()) .setQualityNumberPlan(reportDetailDO.getQualityNumber()) .setWasteNumberPlan(reportDetailDO.getWasteNumber()); @@ -241,22 +246,25 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic else{ MathContext mc = new MathContext(0, RoundingMode.HALF_UP); long totalNeed = 0; - Map planDOMap = new HashMap<>(); + Map planNeedMap = new HashMap<>(); + Map planMap = new HashMap<>(); for (PlanDO plan : planList) { BigDecimal finishNumber = workReportPlanService.selectSumBy(plan.getId(),reportDetailDO.getOrgType()); long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0; totalNeed += planNeed; - planDOMap.put(plan.getId(), planNeed); + planNeedMap.put(plan.getId(), planNeed); + planMap.put(plan.getId(),plan); } //根据计划各自的需求比例分配给计划 - for (Long planId : planDOMap.keySet()) { - Long planNeed = planDOMap.get(planId); + for (Long planId : planNeedMap.keySet()) { + Long planNeed = planNeedMap.get(planId); if(planNeed>0){ BigDecimal planNumber = reportDetailDO.getQualityNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); BigDecimal wasteNumber = reportDetailDO.getWasteNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() .setReportId(reportDetailDO.getId()).setPlanId(planId) + .setTaskDetailId(planMap.get(planId).getTaskDetailId()) .setProductId(reportDetailDO.getProductId()) .setQualityNumberPlan(planNumber) .setWasteNumberPlan(wasteNumber); @@ -276,13 +284,15 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic //报工明细固定对应分配计划 @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void updateStatus3( ProduceReportDetailDO reportDetailDO, Integer status) { reportDetailDO.setReportStatus(status); produceReportDetailMapper.updateById(reportDetailDO); + PlanDO planDO = planService.getPlan(reportDetailDO.getPlanId()); //分配给开工中的计划 WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() .setReportId(reportDetailDO.getId()).setPlanId(reportDetailDO.getPlanId()) + .setTaskDetailId(planDO.getTaskDetailId()) .setProductId(reportDetailDO.getProductId()) .setQualityNumberPlan(reportDetailDO.getQualityNumber()) .setWasteNumberPlan(reportDetailDO.getWasteNumber()); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailService.java index 83b9019ac9..52eff0d140 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailService.java @@ -53,6 +53,8 @@ public interface StockInDetailService { */ PageResult getStockInDetailPage(StockInDetailPageReqVO pageReqVO); BigDecimal selectSumBy(Long planId); + BigDecimal selectSumByTaskDetailId(Long taskDetailId); + /** * 更新生产入库单的状态 diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailServiceImpl.java index d646f9febe..357563cfda 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockindetail/StockInDetailServiceImpl.java @@ -94,6 +94,10 @@ public class StockInDetailServiceImpl implements StockInDetailService { public BigDecimal selectSumBy(Long planId){ return stockInDetailMapper.selectSumBy(planId); } + @Override + public BigDecimal selectSumByTaskDetailId(Long taskDetailId){ + return stockInDetailMapper.selectSumByTaskDetailId(taskDetailId); + } @Resource private ErpStockInMapper stockInMapper; @Resource @@ -149,7 +153,8 @@ public class StockInDetailServiceImpl implements StockInDetailService { StockInDetailDO detailDO = new StockInDetailDO() .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .setProductId(inItem.getProductId()).setStockInItemId(inItem.getId()) - .setNumber(inItem.getCount()).setPlanId(planList.get(0).getId()); + .setNumber(inItem.getCount()).setPlanId(planList.get(0).getId()) + .setTaskDetailId(planList.get(0).getTaskDetailId()); resultList.add(detailDO); } else @@ -159,7 +164,7 @@ public class StockInDetailServiceImpl implements StockInDetailService { StockInDetailDO detailDO = new StockInDetailDO() .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .setProductId(inItem.getProductId()).setStockInItemId(inItem.getId()) - .setNumber(inItem.getCount()).setPlanId(null); + .setNumber(inItem.getCount()).setPlanId(null).setTaskDetailId(null); resultList.add(detailDO); } } @@ -178,22 +183,25 @@ public class StockInDetailServiceImpl implements StockInDetailService { List detailDOS = new ArrayList<>(); MathContext mc = new MathContext(0, RoundingMode.HALF_UP); long totalNeed = 0; - Map planDOMap = new HashMap<>(); + Map planNeedMap = new HashMap<>(); + Map planDoMap = new HashMap<>(); for (PlanDO plan : planList) { BigDecimal finishNumber = stockInDetailMapper.selectSumBy(plan.getId()); long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0; totalNeed += planNeed; - planDOMap.put(plan.getId(), planNeed); + planNeedMap.put(plan.getId(), planNeed); + planDoMap.put(plan.getId(),plan); } //根据计划各自的需求比例分配给计划 - for (Long planId : planDOMap.keySet()) { - Long planNeed = planDOMap.get(planId); + for (Long planId : planNeedMap.keySet()) { + Long planNeed = planNeedMap.get(planId); if(planNeed>0){ BigDecimal planNumber = inItem.getCount().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); StockInDetailDO detailDO = new StockInDetailDO() .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .setProductId(inItem.getProductId()).setStockInItemId(inItem.getId()) - .setNumber(planNumber).setPlanId(planId); + .setNumber(planNumber).setPlanId(planId) + .setTaskDetailId(planDoMap.get(planId).getTaskDetailId()); detailDOS.add(detailDO); } } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockInServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockInServiceImpl.java index 0ab18834ab..5de939e5ee 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockInServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockInServiceImpl.java @@ -155,7 +155,8 @@ public class MesStockInServiceImpl implements MesStockInService { StockInDetailDO detailDO = new StockInDetailDO() .setStockInItemId(itemDO.getId()) .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) - .setPlanId(plan.getId()).setProductId(plan.getProductId()); + .setPlanId(plan.getId()).setProductId(plan.getProductId()) + .setTaskDetailId(plan.getTaskDetailId()); if(itemDO.getCount().compareTo(BigDecimal.valueOf(needNumber)) > 0){ detailDO.setNumber(BigDecimal.valueOf(needNumber)); @@ -179,7 +180,8 @@ public class MesStockInServiceImpl implements MesStockInService { StockInDetailDO detailDO = new StockInDetailDO() .setStockInItemId(itemDO.getId()) .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) - .setPlanId(plan.getId()).setProductId(plan.getProductId()); + .setPlanId(plan.getId()).setProductId(plan.getProductId()) + .setTaskDetailId(plan.getTaskDetailId()); if(itemDO.getCount().compareTo(BigDecimal.valueOf(needNumber)) > 0){ detailDO.setNumber(BigDecimal.valueOf(needNumber)); @@ -204,7 +206,8 @@ public class MesStockInServiceImpl implements MesStockInService { StockInDetailDO detailDO = new StockInDetailDO() .setStockInItemId(itemDO.getId()) .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) - .setPlanId(null).setProductId(itemDO.getProductId()); + .setPlanId(null).setProductId(itemDO.getProductId()) + .setTaskDetailId(null); detailDO.setNumber(itemDO.getCount()); stockInDetailDOMap.put(itemDO.getId(), detailDO); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workreportplan/WorkReportPlanServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workreportplan/WorkReportPlanServiceImpl.java index ba4606bb7e..041d39f8a1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workreportplan/WorkReportPlanServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workreportplan/WorkReportPlanServiceImpl.java @@ -146,7 +146,6 @@ public class WorkReportPlanServiceImpl implements WorkReportPlanService { @Override public List getPlanSummary(ReportPlanSummaryRespVO respVO){ List list = planSummaryMapper.selectList(respVO); - return buildSummaryList(list); }