fix filed

plp
chenshuichuan 2 years ago
parent 51192078f9
commit d9222fed8f

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.mes.controller.admin.app; 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.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; 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.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.controller.admin.app.service.AppService; 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.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 cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; 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 java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -38,6 +51,8 @@ public class AppProductController {
private ErpProductService erpProductService; private ErpProductService erpProductService;
@Resource @Resource
private ErpProductUnitService erpProductUnitService; private ErpProductUnitService erpProductUnitService;
@Resource
private ProduceReportService produceReportService;
@GetMapping("/getItemList") @GetMapping("/getItemList")
@Operation(summary = "获得原料列表") @Operation(summary = "获得原料列表")
@ -51,4 +66,104 @@ public class AppProductController {
List<ErpProductUnitDO> list = erpProductUnitService.getProductUnitListByStatus(CommonStatusEnum.ENABLE.getStatus()); List<ErpProductUnitDO> list = erpProductUnitService.getProductUnitListByStatus(CommonStatusEnum.ENABLE.getStatus());
return success(convertList(list, unit -> new AppProductVo().setValue(unit.getId()).setText(unit.getName()))); return success(convertList(list, unit -> new AppProductVo().setValue(unit.getId()).setText(unit.getName())));
} }
@GetMapping("/get30DaysReportList")
@Operation(summary = "获得某用户近三十天报工汇总")
public CommonResult<List<ViewReportUserDateSummary>> 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<ViewReportUserDateSummary> list = produceReportService.selectBy(userId,null,days);
return success(list);
}
@GetMapping("/getThisMonthSum")
@Operation(summary = "获得某用户本月报工汇总")
public CommonResult<ViewReportUserDateSummary> 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<ViewReportUserDateSummary> 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<ViewReportUserDateSummary> 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<ProduceReportDO> 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<List<ProduceReportTimeVO>> 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<ProduceReportDO> list = produceReportService.getList(pageReqVO);
List<ProduceReportTimeVO> 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);
}
} }

@ -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;
}

@ -26,6 +26,8 @@ public class FeedingRecordPlanPageReqVO extends PageParam {
@Schema(description = "计划id", example = "17658") @Schema(description = "计划id", example = "17658")
private Long planId; private Long planId;
@Schema(description = "任务单明细id", example = "24750")
private Long taskDetailId;
@Schema(description = "原料id", example = "19133") @Schema(description = "原料id", example = "19133")
private Long itemId; private Long itemId;

@ -1,7 +1,12 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereportplan; package cn.iocoder.yudao.module.mes.controller.admin.producereportplan;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; 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.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 cn.iocoder.yudao.module.mes.service.workreportplan.WorkReportPlanService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; 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 org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -25,7 +33,10 @@ public class ReportPlanViewController {
@Resource @Resource
private WorkReportPlanService workReportPlanService; private WorkReportPlanService workReportPlanService;
@Resource
private StockInDetailService stockInDetailService;
@Resource
private PlanService planService;
@GetMapping("/getPlanProgress") @GetMapping("/getPlanProgress")
@Operation(summary = "获得计划进度") @Operation(summary = "获得计划进度")
@Parameter(name = "id", description = "计划id", required = true, example = "1024") @Parameter(name = "id", description = "计划id", required = true, example = "1024")
@ -33,6 +44,48 @@ public class ReportPlanViewController {
ReportPlanSummaryRespVO respVO = new ReportPlanSummaryRespVO(); ReportPlanSummaryRespVO respVO = new ReportPlanSummaryRespVO();
respVO.setPlanId(id); respVO.setPlanId(id);
List<ReportPlanSummaryRespVO> planSummaryDOS = workReportPlanService.getPlanSummary( respVO); List<ReportPlanSummaryRespVO> 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<List<ReportPlanSummaryRespVO>> getTaskProgress(@RequestParam("id") Long id) {
PlanPageReqVO reqVO = new PlanPageReqVO().setTaskId(id);
List<PlanDO> planList = planService.getPlanBy(reqVO);
List<Long> ids = planList.stream().map(PlanDO::getId).collect(Collectors.toList());
ReportPlanSummaryRespVO respVO = new ReportPlanSummaryRespVO();
respVO.setPlanIds(ids);
List<ReportPlanSummaryRespVO> 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); return success(planSummaryDOS);
} }
} }

@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Schema(description = "管理后台 - 报工分配计划 Response VO") @Schema(description = "管理后台 - 报工分配计划 Response VO")
@Data @Data
@ -44,6 +45,7 @@ public class ReportPlanSummaryRespVO {
@ExcelProperty("工序类型") @ExcelProperty("工序类型")
private String orgType; private String orgType;
private List<Long> planIds;
} }

@ -23,6 +23,8 @@ public class WorkReportPlanPageReqVO extends PageParam {
@Schema(description = "计划id", example = "30035") @Schema(description = "计划id", example = "30035")
private Long planId; private Long planId;
@Schema(description = "任务单明细id", example = "24750")
private Long taskDetailId;
@Schema(description = "产品ID", example = "9987") @Schema(description = "产品ID", example = "9987")
private Long productId; private Long productId;

@ -18,6 +18,9 @@ public class WorkReportPlanSaveReqVO {
@Schema(description = "计划id", example = "30035") @Schema(description = "计划id", example = "30035")
private Long planId; private Long planId;
@Schema(description = "任务单明细id", example = "30035")
private Long taskDetailId;
@Schema(description = "产品ID", example = "9987") @Schema(description = "产品ID", example = "9987")
private Long productId; private Long productId;

@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.mes.controller.admin.stockindetail.vo; 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 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 org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 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") @Schema(description = "计划id", example = "24750")
private Long planId; private Long planId;
@Schema(description = "任务单明细id", example = "24750")
private Long taskDetailId;
@Schema(description = "产品", example = "258") @Schema(description = "产品", example = "258")
private Long productId; private Long productId;

@ -41,6 +41,10 @@ public class FeedingRecordPlanDO extends BaseDO {
* id * id
*/ */
private Long planId; private Long planId;
/**
* id
*/
private Long taskDetailId;
/** /**
* id * id
*/ */

@ -1,12 +1,12 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.stockindetail; 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 lombok.*;
import java.util.*;
import java.math.BigDecimal; 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 * DO
@ -44,6 +44,10 @@ public class StockInDetailDO extends BaseDO {
* id * id
*/ */
private Long planId; private Long planId;
/**
* id
*/
private Long taskDetailId;
/** /**
* *
*/ */

@ -36,6 +36,10 @@ public class WorkReportPlanDO extends BaseDO {
* id * id
*/ */
private Long planId; private Long planId;
/**
* id
*/
private Long taskDetailId;
/** /**
* ID * ID
*/ */

@ -27,6 +27,7 @@ public interface FeedingRecordPlanMapper extends BaseMapperX<FeedingRecordPlanDO
.eqIfPresent(FeedingRecordPlanDO::getRecordId, reqVO.getRecordId()) .eqIfPresent(FeedingRecordPlanDO::getRecordId, reqVO.getRecordId())
.eqIfPresent(FeedingRecordPlanDO::getRecordDetailId, reqVO.getRecordDetailId()) .eqIfPresent(FeedingRecordPlanDO::getRecordDetailId, reqVO.getRecordDetailId())
.eqIfPresent(FeedingRecordPlanDO::getPlanId, reqVO.getPlanId()) .eqIfPresent(FeedingRecordPlanDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(FeedingRecordPlanDO::getTaskDetailId, reqVO.getTaskDetailId())
.eqIfPresent(FeedingRecordPlanDO::getItemId, reqVO.getItemId()) .eqIfPresent(FeedingRecordPlanDO::getItemId, reqVO.getItemId())
.eqIfPresent(FeedingRecordPlanDO::getWeight, reqVO.getWeight()) .eqIfPresent(FeedingRecordPlanDO::getWeight, reqVO.getWeight())
.eqIfPresent(FeedingRecordPlanDO::getUnitId, reqVO.getUnitId()) .eqIfPresent(FeedingRecordPlanDO::getUnitId, reqVO.getUnitId())

@ -79,7 +79,26 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
.orderByDesc("plan_end_time") .orderByDesc("plan_end_time")
.last("limit 1")); .last("limit 1"));
} }
default List<PlanDO> selectBy(PlanPageReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<PlanDO>()
.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<PlanDO> selectBy(Long productId,List<Integer> statusList) { default List<PlanDO> selectBy(Long productId,List<Integer> statusList) {
return selectList(new LambdaQueryWrapperX<PlanDO>() return selectList(new LambdaQueryWrapperX<PlanDO>()
.eqIfPresent(PlanDO::getProductId, productId) .eqIfPresent(PlanDO::getProductId, productId)

@ -1,11 +1,16 @@
package cn.iocoder.yudao.module.mes.dal.mysql.producereport; 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.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ViewReportUserDateSummary; 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 org.apache.ibatis.annotations.Mapper;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Mapper * Mapper
@ -22,4 +27,23 @@ public interface ViewReportUserDateMapper extends BaseMapperX<ViewReportUserDate
.betweenIfPresent(ViewReportUserDateSummary::getReportDay, reportDays) .betweenIfPresent(ViewReportUserDateSummary::getReportDay, reportDays)
.orderByDesc(ViewReportUserDateSummary::getReportDay)); .orderByDesc(ViewReportUserDateSummary::getReportDay));
} }
default ViewReportUserDateSummary selectSum(Long userId, String reportDay1,String reportDay2) {
// SQL sum 查询
List<Map<String, Object>> result = selectMaps(new QueryWrapper<ViewReportUserDateSummary>()
.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;
}
} }

@ -28,6 +28,7 @@ public interface StockInDetailMapper extends BaseMapperX<StockInDetailDO> {
.eqIfPresent(StockInDetailDO::getStockInNo, reqVO.getStockInNo()) .eqIfPresent(StockInDetailDO::getStockInNo, reqVO.getStockInNo())
.eqIfPresent(StockInDetailDO::getStockInItemId, reqVO.getStockInItemId()) .eqIfPresent(StockInDetailDO::getStockInItemId, reqVO.getStockInItemId())
.eqIfPresent(StockInDetailDO::getPlanId, reqVO.getPlanId()) .eqIfPresent(StockInDetailDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(StockInDetailDO::getTaskDetailId, reqVO.getTaskDetailId())
.eqIfPresent(StockInDetailDO::getProductId, reqVO.getProductId()) .eqIfPresent(StockInDetailDO::getProductId, reqVO.getProductId())
.eqIfPresent(StockInDetailDO::getNumber, reqVO.getNumber()) .eqIfPresent(StockInDetailDO::getNumber, reqVO.getNumber())
.betweenIfPresent(StockInDetailDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(StockInDetailDO::getCreateTime, reqVO.getCreateTime())
@ -47,5 +48,17 @@ public interface StockInDetailMapper extends BaseMapperX<StockInDetailDO> {
} }
return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sumCount", 0D)); return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sumCount", 0D));
} }
//查询任务单明细已经入库的总数
default BigDecimal selectSumByTaskDetailId(Long taskDetailId) {
// SQL sum 查询
List<Map<String, Object>> result = selectMaps(new QueryWrapper<StockInDetailDO>()
.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));
}
} }

@ -33,6 +33,7 @@ public interface ReportPlanSummaryMapper extends BaseMapperX<ReportPlanSummaryDO
.eqIfPresent(ReportPlanSummaryDO::getPlanId, respVO.getPlanId()) .eqIfPresent(ReportPlanSummaryDO::getPlanId, respVO.getPlanId())
.eqIfPresent(ReportPlanSummaryDO::getProductId, respVO.getProductId()) .eqIfPresent(ReportPlanSummaryDO::getProductId, respVO.getProductId())
.eqIfPresent(ReportPlanSummaryDO::getOrgType, respVO.getOrgType()) .eqIfPresent(ReportPlanSummaryDO::getOrgType, respVO.getOrgType())
.inIfPresent(ReportPlanSummaryDO::getPlanId, respVO.getPlanIds())
.orderByDesc(ReportPlanSummaryDO::getOrgType); .orderByDesc(ReportPlanSummaryDO::getOrgType);
List<ReportPlanSummaryDO> list = selectList(wrapper); List<ReportPlanSummaryDO> list = selectList(wrapper);
return list; return list;

@ -19,6 +19,7 @@ public interface WorkReportPlanMapper extends BaseMapperX<WorkReportPlanDO> {
return selectPage(reqVO, new LambdaQueryWrapperX<WorkReportPlanDO>() return selectPage(reqVO, new LambdaQueryWrapperX<WorkReportPlanDO>()
.eqIfPresent(WorkReportPlanDO::getReportId, reqVO.getReportId()) .eqIfPresent(WorkReportPlanDO::getReportId, reqVO.getReportId())
.eqIfPresent(WorkReportPlanDO::getPlanId, reqVO.getPlanId()) .eqIfPresent(WorkReportPlanDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(WorkReportPlanDO::getTaskDetailId, reqVO.getTaskDetailId())
.eqIfPresent(WorkReportPlanDO::getProductId, reqVO.getProductId()) .eqIfPresent(WorkReportPlanDO::getProductId, reqVO.getProductId())
.eqIfPresent(WorkReportPlanDO::getQualityNumberPlan, reqVO.getQualityNumberPlan()) .eqIfPresent(WorkReportPlanDO::getQualityNumberPlan, reqVO.getQualityNumberPlan())
.eqIfPresent(WorkReportPlanDO::getWasteNumberPlan, reqVO.getWasteNumberPlan()) .eqIfPresent(WorkReportPlanDO::getWasteNumberPlan, reqVO.getWasteNumberPlan())

@ -306,6 +306,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService {
} else { } else {
FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO()
.setPlanId(planDOList.get(i).getId()) .setPlanId(planDOList.get(i).getId())
.setTaskDetailId(planDOList.get(i).getTaskDetailId())
.setItemId(respVO.getProductId()) .setItemId(respVO.getProductId())
.setRecordId(recordDO.getId()).setUserId(userId).setUnitId(respVO.getUnitId()) .setRecordId(recordDO.getId()).setUserId(userId).setUnitId(respVO.getUnitId())
.setRecordDetailId(respVO.getId()).setFeedingTime(detailDO.getFeedingTime()) .setRecordDetailId(respVO.getId()).setFeedingTime(detailDO.getFeedingTime())
@ -355,6 +356,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService {
} else { } else {
FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO()
.setPlanId(plan.getId()).setItemId(itemId) .setPlanId(plan.getId()).setItemId(itemId)
.setTaskDetailId(plan.getTaskDetailId())
.setRecordId(recordId).setUserId(userId).setUnitId(detailRespVO.getUnitId()) .setRecordId(recordId).setUserId(userId).setUnitId(detailRespVO.getUnitId())
.setRecordDetailId(detailDOMap.get(itemId).getId()) .setRecordDetailId(detailDOMap.get(itemId).getId())
.setFeedingTime(detailDOMap.get(itemId).getFeedingTime()) .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); BigDecimal weight = recordDO.getWeight().multiply(BigDecimal.valueOf(plan.getPlanNumber() / totalPlanNumber), mc);
FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO()
.setPlanId(plan.getId()).setItemId(typeEnum.getTable_id()) .setPlanId(plan.getId()).setItemId(typeEnum.getTable_id())
.setTaskDetailId(plan.getTaskDetailId())
.setRecordId(recordDO.getId()).setUserId(userId).setUnitId(ProductUnitEnum.Kilogram.getUnitId()) .setRecordId(recordDO.getId()).setUserId(userId).setUnitId(ProductUnitEnum.Kilogram.getUnitId())
.setRecordDetailId(0L) .setRecordDetailId(0L)
.setFeedingTime(recordDO.getFeedingTime()) .setFeedingTime(recordDO.getFeedingTime())
@ -434,6 +437,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService {
//分配给计划 //分配给计划
FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO()
.setPlanId(plan.getId()) .setPlanId(plan.getId())
.setTaskDetailId(plan.getTaskDetailId())
.setItemId(detail.getItemId()) .setItemId(detail.getItemId())
.setRecordId(detail.getRecordId()).setUserId(user.getId()).setUnitId(detail.getUnitId()) .setRecordId(detail.getRecordId()).setUserId(user.getId()).setUnitId(detail.getUnitId())
.setRecordDetailId(detail.getId()).setFeedingTime(detail.getFeedingTime()) .setRecordDetailId(detail.getId()).setFeedingTime(detail.getFeedingTime())

@ -90,5 +90,5 @@ public interface PlanService {
/**获取当前某些状态的计划的产品列表**/ /**获取当前某些状态的计划的产品列表**/
List<ErpProductRespVO> getProductByPlanStatus(List<Integer> statusList); List<ErpProductRespVO> getProductByPlanStatus(List<Integer> statusList);
List<PlanDO> getPlanBy(PlanPageReqVO pageReqVO);
} }

@ -259,4 +259,10 @@ public class PlanServiceImpl implements PlanService {
} }
return new ArrayList<>(); return new ArrayList<>();
} }
@Override
public List<PlanDO> getPlanBy(PlanPageReqVO pageReqVO){
List<PlanDO> planDOList = planMapper.selectBy(pageReqVO);
return planDOList;
}
} }

@ -159,7 +159,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
/**更改报工单状态***/ /**更改报工单状态***/
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void updateStatus(Long id, Integer status) { public void updateStatus(Long id, Integer status) {
ProduceReportDetailDO reportDetailDO = produceReportDetailMapper.selectById(id); ProduceReportDetailDO reportDetailDO = produceReportDetailMapper.selectById(id);
reportDetailDO.setReportStatus(status); reportDetailDO.setReportStatus(status);
@ -182,6 +182,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
if(planList.size()==1){ if(planList.size()==1){
WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO()
.setReportId(id).setPlanId(planList.get(0).getId()) .setReportId(id).setPlanId(planList.get(0).getId())
.setTaskDetailId(planList.get(0).getTaskDetailId())
.setProductId(reportDetailDO.getProductId()) .setProductId(reportDetailDO.getProductId())
.setQualityNumberPlan(reportDetailDO.getQualityNumber()) .setQualityNumberPlan(reportDetailDO.getQualityNumber())
.setWasteNumberPlan(reportDetailDO.getWasteNumber()); .setWasteNumberPlan(reportDetailDO.getWasteNumber());
@ -190,22 +191,25 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
else{ else{
MathContext mc = new MathContext(0, RoundingMode.HALF_UP); MathContext mc = new MathContext(0, RoundingMode.HALF_UP);
long totalNeed = 0; long totalNeed = 0;
Map<Long, Long> planDOMap = new HashMap<>(); Map<Long, Long> planNeedMap = new HashMap<>();
Map<Long, PlanDO> planMap = new HashMap<>();
for (PlanDO plan : planList) { for (PlanDO plan : planList) {
BigDecimal finishNumber = workReportPlanService.selectSumBy(plan.getId(),reportDetailDO.getOrgType()); BigDecimal finishNumber = workReportPlanService.selectSumBy(plan.getId(),reportDetailDO.getOrgType());
long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0; long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0;
totalNeed += planNeed; totalNeed += planNeed;
planDOMap.put(plan.getId(), planNeed); planNeedMap.put(plan.getId(), planNeed);
planMap.put(plan.getId(),plan);
} }
//根据计划各自的需求比例分配给计划 //根据计划各自的需求比例分配给计划
for (Long planId : planDOMap.keySet()) { for (Long planId : planNeedMap.keySet()) {
Long planNeed = planDOMap.get(planId); Long planNeed = planNeedMap.get(planId);
if(planNeed>0){ if(planNeed>0){
BigDecimal planNumber = reportDetailDO.getQualityNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); BigDecimal planNumber = reportDetailDO.getQualityNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc);
BigDecimal wasteNumber = reportDetailDO.getWasteNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); BigDecimal wasteNumber = reportDetailDO.getWasteNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc);
WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO()
.setReportId(id).setPlanId(planId) .setReportId(id).setPlanId(planId)
.setTaskDetailId(planMap.get(planId).getTaskDetailId())
.setProductId(reportDetailDO.getProductId()) .setProductId(reportDetailDO.getProductId())
.setQualityNumberPlan(planNumber) .setQualityNumberPlan(planNumber)
.setWasteNumberPlan(wasteNumber); .setWasteNumberPlan(wasteNumber);
@ -220,7 +224,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
//通过报工单 //通过报工单
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void updateStatus2( ProduceReportDetailDO reportDetailDO, Integer status) { public void updateStatus2( ProduceReportDetailDO reportDetailDO, Integer status) {
reportDetailDO.setReportStatus(status); reportDetailDO.setReportStatus(status);
produceReportDetailMapper.updateById(reportDetailDO); produceReportDetailMapper.updateById(reportDetailDO);
@ -233,6 +237,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
if(planList.size()==1){ if(planList.size()==1){
WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO()
.setReportId(reportDetailDO.getId()).setPlanId(planList.get(0).getId()) .setReportId(reportDetailDO.getId()).setPlanId(planList.get(0).getId())
.setTaskDetailId(planList.get(0).getTaskDetailId())
.setProductId(reportDetailDO.getProductId()) .setProductId(reportDetailDO.getProductId())
.setQualityNumberPlan(reportDetailDO.getQualityNumber()) .setQualityNumberPlan(reportDetailDO.getQualityNumber())
.setWasteNumberPlan(reportDetailDO.getWasteNumber()); .setWasteNumberPlan(reportDetailDO.getWasteNumber());
@ -241,22 +246,25 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
else{ else{
MathContext mc = new MathContext(0, RoundingMode.HALF_UP); MathContext mc = new MathContext(0, RoundingMode.HALF_UP);
long totalNeed = 0; long totalNeed = 0;
Map<Long, Long> planDOMap = new HashMap<>(); Map<Long, Long> planNeedMap = new HashMap<>();
Map<Long, PlanDO> planMap = new HashMap<>();
for (PlanDO plan : planList) { for (PlanDO plan : planList) {
BigDecimal finishNumber = workReportPlanService.selectSumBy(plan.getId(),reportDetailDO.getOrgType()); BigDecimal finishNumber = workReportPlanService.selectSumBy(plan.getId(),reportDetailDO.getOrgType());
long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0; long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0;
totalNeed += planNeed; totalNeed += planNeed;
planDOMap.put(plan.getId(), planNeed); planNeedMap.put(plan.getId(), planNeed);
planMap.put(plan.getId(),plan);
} }
//根据计划各自的需求比例分配给计划 //根据计划各自的需求比例分配给计划
for (Long planId : planDOMap.keySet()) { for (Long planId : planNeedMap.keySet()) {
Long planNeed = planDOMap.get(planId); Long planNeed = planNeedMap.get(planId);
if(planNeed>0){ if(planNeed>0){
BigDecimal planNumber = reportDetailDO.getQualityNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); BigDecimal planNumber = reportDetailDO.getQualityNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc);
BigDecimal wasteNumber = reportDetailDO.getWasteNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); BigDecimal wasteNumber = reportDetailDO.getWasteNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc);
WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO()
.setReportId(reportDetailDO.getId()).setPlanId(planId) .setReportId(reportDetailDO.getId()).setPlanId(planId)
.setTaskDetailId(planMap.get(planId).getTaskDetailId())
.setProductId(reportDetailDO.getProductId()) .setProductId(reportDetailDO.getProductId())
.setQualityNumberPlan(planNumber) .setQualityNumberPlan(planNumber)
.setWasteNumberPlan(wasteNumber); .setWasteNumberPlan(wasteNumber);
@ -276,13 +284,15 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
//报工明细固定对应分配计划 //报工明细固定对应分配计划
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void updateStatus3( ProduceReportDetailDO reportDetailDO, Integer status) { public void updateStatus3( ProduceReportDetailDO reportDetailDO, Integer status) {
reportDetailDO.setReportStatus(status); reportDetailDO.setReportStatus(status);
produceReportDetailMapper.updateById(reportDetailDO); produceReportDetailMapper.updateById(reportDetailDO);
PlanDO planDO = planService.getPlan(reportDetailDO.getPlanId());
//分配给开工中的计划 //分配给开工中的计划
WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO() WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO()
.setReportId(reportDetailDO.getId()).setPlanId(reportDetailDO.getPlanId()) .setReportId(reportDetailDO.getId()).setPlanId(reportDetailDO.getPlanId())
.setTaskDetailId(planDO.getTaskDetailId())
.setProductId(reportDetailDO.getProductId()) .setProductId(reportDetailDO.getProductId())
.setQualityNumberPlan(reportDetailDO.getQualityNumber()) .setQualityNumberPlan(reportDetailDO.getQualityNumber())
.setWasteNumberPlan(reportDetailDO.getWasteNumber()); .setWasteNumberPlan(reportDetailDO.getWasteNumber());

@ -53,6 +53,8 @@ public interface StockInDetailService {
*/ */
PageResult<StockInDetailDO> getStockInDetailPage(StockInDetailPageReqVO pageReqVO); PageResult<StockInDetailDO> getStockInDetailPage(StockInDetailPageReqVO pageReqVO);
BigDecimal selectSumBy(Long planId); BigDecimal selectSumBy(Long planId);
BigDecimal selectSumByTaskDetailId(Long taskDetailId);
/** /**
* *

@ -94,6 +94,10 @@ public class StockInDetailServiceImpl implements StockInDetailService {
public BigDecimal selectSumBy(Long planId){ public BigDecimal selectSumBy(Long planId){
return stockInDetailMapper.selectSumBy(planId); return stockInDetailMapper.selectSumBy(planId);
} }
@Override
public BigDecimal selectSumByTaskDetailId(Long taskDetailId){
return stockInDetailMapper.selectSumByTaskDetailId(taskDetailId);
}
@Resource @Resource
private ErpStockInMapper stockInMapper; private ErpStockInMapper stockInMapper;
@Resource @Resource
@ -149,7 +153,8 @@ public class StockInDetailServiceImpl implements StockInDetailService {
StockInDetailDO detailDO = new StockInDetailDO() StockInDetailDO detailDO = new StockInDetailDO()
.setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo())
.setProductId(inItem.getProductId()).setStockInItemId(inItem.getId()) .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); resultList.add(detailDO);
} }
else else
@ -159,7 +164,7 @@ public class StockInDetailServiceImpl implements StockInDetailService {
StockInDetailDO detailDO = new StockInDetailDO() StockInDetailDO detailDO = new StockInDetailDO()
.setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo())
.setProductId(inItem.getProductId()).setStockInItemId(inItem.getId()) .setProductId(inItem.getProductId()).setStockInItemId(inItem.getId())
.setNumber(inItem.getCount()).setPlanId(null); .setNumber(inItem.getCount()).setPlanId(null).setTaskDetailId(null);
resultList.add(detailDO); resultList.add(detailDO);
} }
} }
@ -178,22 +183,25 @@ public class StockInDetailServiceImpl implements StockInDetailService {
List<StockInDetailDO> detailDOS = new ArrayList<>(); List<StockInDetailDO> detailDOS = new ArrayList<>();
MathContext mc = new MathContext(0, RoundingMode.HALF_UP); MathContext mc = new MathContext(0, RoundingMode.HALF_UP);
long totalNeed = 0; long totalNeed = 0;
Map<Long, Long> planDOMap = new HashMap<>(); Map<Long, Long> planNeedMap = new HashMap<>();
Map<Long, PlanDO> planDoMap = new HashMap<>();
for (PlanDO plan : planList) { for (PlanDO plan : planList) {
BigDecimal finishNumber = stockInDetailMapper.selectSumBy(plan.getId()); BigDecimal finishNumber = stockInDetailMapper.selectSumBy(plan.getId());
long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0; long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0;
totalNeed += planNeed; totalNeed += planNeed;
planDOMap.put(plan.getId(), planNeed); planNeedMap.put(plan.getId(), planNeed);
planDoMap.put(plan.getId(),plan);
} }
//根据计划各自的需求比例分配给计划 //根据计划各自的需求比例分配给计划
for (Long planId : planDOMap.keySet()) { for (Long planId : planNeedMap.keySet()) {
Long planNeed = planDOMap.get(planId); Long planNeed = planNeedMap.get(planId);
if(planNeed>0){ if(planNeed>0){
BigDecimal planNumber = inItem.getCount().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc); BigDecimal planNumber = inItem.getCount().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc);
StockInDetailDO detailDO = new StockInDetailDO() StockInDetailDO detailDO = new StockInDetailDO()
.setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo())
.setProductId(inItem.getProductId()).setStockInItemId(inItem.getId()) .setProductId(inItem.getProductId()).setStockInItemId(inItem.getId())
.setNumber(planNumber).setPlanId(planId); .setNumber(planNumber).setPlanId(planId)
.setTaskDetailId(planDoMap.get(planId).getTaskDetailId());
detailDOS.add(detailDO); detailDOS.add(detailDO);
} }
} }

@ -155,7 +155,8 @@ public class MesStockInServiceImpl implements MesStockInService {
StockInDetailDO detailDO = new StockInDetailDO() StockInDetailDO detailDO = new StockInDetailDO()
.setStockInItemId(itemDO.getId()) .setStockInItemId(itemDO.getId())
.setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .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){ if(itemDO.getCount().compareTo(BigDecimal.valueOf(needNumber)) > 0){
detailDO.setNumber(BigDecimal.valueOf(needNumber)); detailDO.setNumber(BigDecimal.valueOf(needNumber));
@ -179,7 +180,8 @@ public class MesStockInServiceImpl implements MesStockInService {
StockInDetailDO detailDO = new StockInDetailDO() StockInDetailDO detailDO = new StockInDetailDO()
.setStockInItemId(itemDO.getId()) .setStockInItemId(itemDO.getId())
.setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .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){ if(itemDO.getCount().compareTo(BigDecimal.valueOf(needNumber)) > 0){
detailDO.setNumber(BigDecimal.valueOf(needNumber)); detailDO.setNumber(BigDecimal.valueOf(needNumber));
@ -204,7 +206,8 @@ public class MesStockInServiceImpl implements MesStockInService {
StockInDetailDO detailDO = new StockInDetailDO() StockInDetailDO detailDO = new StockInDetailDO()
.setStockInItemId(itemDO.getId()) .setStockInItemId(itemDO.getId())
.setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo()) .setStockInId(stockIn.getId()).setStockInNo(stockIn.getNo())
.setPlanId(null).setProductId(itemDO.getProductId()); .setPlanId(null).setProductId(itemDO.getProductId())
.setTaskDetailId(null);
detailDO.setNumber(itemDO.getCount()); detailDO.setNumber(itemDO.getCount());
stockInDetailDOMap.put(itemDO.getId(), detailDO); stockInDetailDOMap.put(itemDO.getId(), detailDO);
} }

@ -146,7 +146,6 @@ public class WorkReportPlanServiceImpl implements WorkReportPlanService {
@Override @Override
public List<ReportPlanSummaryRespVO> getPlanSummary(ReportPlanSummaryRespVO respVO){ public List<ReportPlanSummaryRespVO> getPlanSummary(ReportPlanSummaryRespVO respVO){
List<ReportPlanSummaryDO> list = planSummaryMapper.selectList(respVO); List<ReportPlanSummaryDO> list = planSummaryMapper.selectList(respVO);
return buildSummaryList(list); return buildSummaryList(list);
} }

Loading…
Cancel
Save