diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/bom/vo/BomRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/bom/vo/BomRespVO.java index 17f49fa4ee..448e30931b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/bom/vo/BomRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/bom/vo/BomRespVO.java @@ -36,7 +36,6 @@ public class BomRespVO { private String productName; @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") - @ExcelProperty("单位ID") private Long unitId; @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个") @ExcelProperty("单位") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/FeedingRecordController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/FeedingRecordController.java index a95d19a669..2a600b7fc4 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/FeedingRecordController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/FeedingRecordController.java @@ -3,9 +3,11 @@ package cn.iocoder.yudao.module.mes.controller.admin.feedingrecord; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionDetailRespVO; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum; +import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkShopTypeEnum; import cn.iocoder.yudao.module.mes.dal.dataobject.feedingplan.FeedingRecordPlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO; import cn.iocoder.yudao.module.mes.dal.mysql.feedingrecord.FeedingRecordMapper; import cn.iocoder.yudao.module.mes.dal.mysql.itemrequisition.ItemRequisitionMapper; import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService; @@ -17,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; import java.io.IOException; @@ -133,13 +136,14 @@ public class FeedingRecordController { FeedingRecordDO recordDO = feedingRecordMapper.selectById(id); if(recordDO==null) throw exception(FEEDING_RECORD_NOT_EXISTS); //后续步骤只处理领料投料的投料单,湿废品和干废品投料暂不处理 + //计划及计划物料需求 + List statusList = new ArrayList<>(); + statusList.add(PlanStatusEnum.开工.getValue()); + //获取正在开工的计划,按照计划完工时间从小到大排序,优先分配给最近计划完工的计划。 + List planDOList = planService.getPlanByStatusAndPipeline(statusList,recordDO.getFeedingPipeline()); + if(recordDO.getFeedingType().equals(FeedingTypeEnum.领料.getValue())) { List detailDOList = feedingRecordService.getFeedingRecordDetailListByRecordId(id); - //计划及计划物料需求 - List statusList = new ArrayList<>(); - statusList.add(PlanStatusEnum.开工.getValue()); - //获取正在开工的计划,按照计划完工时间从小到大排序,优先分配给最近计划完工的计划。 - List planDOList = planService.getPlanByStatusAndPipeline(statusList,recordDO.getFeedingPipeline()); Map> planItemListMap = new HashMap<>(); Map planItemMap = new HashMap<>(); @@ -168,7 +172,7 @@ public class FeedingRecordController { } } } - else { + else { recordDO.setRecordStatus(FeedingStatusEnum.提交.getValue()); feedingRecordMapper.updateById(recordDO); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingTypeEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingTypeEnum.java index ffbbd5b81f..6ac20f6925 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingTypeEnum.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingTypeEnum.java @@ -7,13 +7,14 @@ import lombok.Getter; @AllArgsConstructor public enum FeedingTypeEnum { - 领料("org"), - 湿废品("wet"), - 干废品("dry"); + 领料("org",0L), + 湿废品("wet",11L), + 干废品("dry",10L); private final String value; - + //干湿品在原料表中记录id + private final Long table_id; // 一个可选的方法,用于根据整数值获取对应的枚举实例 public static FeedingTypeEnum fromValue(String value) { for (FeedingTypeEnum status : FeedingTypeEnum.values()) { diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/StockWorkshopController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/StockWorkshopController.java index 623cd53a2c..d3a6545393 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/StockWorkshopController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/StockWorkshopController.java @@ -76,7 +76,8 @@ public class StockWorkshopController { @PreAuthorize("@ss.hasPermission('mes:stock-workshop:query')") public CommonResult> getStockWorkshopPage(@Valid StockWorkshopPageReqVO pageReqVO) { PageResult pageResult = stockWorkshopService.getStockWorkshopPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, StockWorkshopRespVO.class)); + List list = stockWorkshopService.buildVOList(pageResult.getList()); + return success(new PageResult<>(list, pageResult.getTotal())); } @GetMapping("/export-excel") @@ -87,9 +88,11 @@ public class StockWorkshopController { HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = stockWorkshopService.getStockWorkshopPage(pageReqVO).getList(); + List list1 = stockWorkshopService.buildVOList(list); + // 导出 Excel ExcelUtils.write(response, "车间仓库存.xls", "数据", StockWorkshopRespVO.class, - BeanUtils.toBean(list, StockWorkshopRespVO.class)); + list1); } } \ 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/stockworkshop/StockWorkshopDetailController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/StockWorkshopDetailController.java index cf44a4d899..22a4d59b1d 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/StockWorkshopDetailController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/StockWorkshopDetailController.java @@ -76,7 +76,8 @@ public class StockWorkshopDetailController { @PreAuthorize("@ss.hasPermission('mes:stock-workshop-detail:query')") public CommonResult> getStockWorkshopDetailPage(@Valid StockWorkshopDetailPageReqVO pageReqVO) { PageResult pageResult = stockWorkshopDetailService.getStockWorkshopDetailPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, StockWorkshopDetailRespVO.class)); + List list = stockWorkshopDetailService.buildVOList(pageResult.getList()); + return success(new PageResult<>(list, pageResult.getTotal())); } @GetMapping("/export-excel") @@ -87,9 +88,11 @@ public class StockWorkshopDetailController { HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = stockWorkshopDetailService.getStockWorkshopDetailPage(pageReqVO).getList(); + List list1 = stockWorkshopDetailService.buildVOList(list); + // 导出 Excel ExcelUtils.write(response, "车间仓明细.xls", "数据", StockWorkshopDetailRespVO.class, - BeanUtils.toBean(list, StockWorkshopDetailRespVO.class)); + list1); } } \ 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/stockworkshop/vo/StockWorkshopDetailRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopDetailRespVO.java index 13d2944f7f..3a548e8103 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopDetailRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopDetailRespVO.java @@ -1,15 +1,14 @@ package cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; +import lombok.Data; + import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; @Schema(description = "管理后台 - 车间仓明细 Response VO") @Data @@ -21,12 +20,24 @@ public class StockWorkshopDetailRespVO { private Long id; @Schema(description = "原料id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7505") - @ExcelProperty("原料id") private Long itemId; + @Schema(description = "原料", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972") + @ExcelProperty("原料") + private String itemName; @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845") @ExcelProperty("数量") private BigDecimal count; + //明细后库存数量 + @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845") + @ExcelProperty("库存数量") + private BigDecimal stockCount; + + @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") + private Long unitId; + @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个") + @ExcelProperty("单位") + private String unitName; @Schema(description = "明细类别", example = "2") @ExcelProperty(value = "明细类别", converter = DictConvert.class) @@ -50,8 +61,10 @@ public class StockWorkshopDetailRespVO { private Long feedingRecordId; @Schema(description = "操作人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "26362") - @ExcelProperty("操作人员") private Long userId; + @Schema(description = "操作人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "26362") + @ExcelProperty("操作人员") + private String userName; @Schema(description = "单据时间") @ExcelProperty("单据时间") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopDetailSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopDetailSaveReqVO.java index aff1a29cba..9432fd8315 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopDetailSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopDetailSaveReqVO.java @@ -22,7 +22,8 @@ public class StockWorkshopDetailSaveReqVO { @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845") @NotNull(message = "数量不能为空") private BigDecimal count; - + @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") + private Long unitId; @Schema(description = "明细类别", example = "2") private String detailType; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopRespVO.java index 762467e57e..c55e31711b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopRespVO.java @@ -19,16 +19,26 @@ public class StockWorkshopRespVO { private Long id; @Schema(description = "原料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972") - @ExcelProperty("原料编号") private Long itemId; + @Schema(description = "原料", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972") + @ExcelProperty("原料") + private String itemName; @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30971") @ExcelProperty("库存数量") private BigDecimal count; + @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") + private Long unitId; + @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个") + @ExcelProperty("单位") + private String unitName; + @Schema(description = "分类", example = "2548") - @ExcelProperty("分类") private Long categoryId; + @Schema(description = "分类", example = "2548") + @ExcelProperty("分类") + private String categoryName; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopSaveReqVO.java index 026ea50a10..2e3acc1414 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkshopSaveReqVO.java @@ -20,7 +20,8 @@ public class StockWorkshopSaveReqVO { @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30971") @NotNull(message = "库存数量不能为空") private BigDecimal count; - + @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") + private Long unitId; @Schema(description = "分类", example = "2548") private Long categoryId; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockworkshop/StockWorkshopDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockworkshop/StockWorkshopDO.java index 620a601dc5..a9cec20108 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockworkshop/StockWorkshopDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockworkshop/StockWorkshopDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import java.math.BigDecimal; @@ -40,5 +41,6 @@ public class StockWorkshopDO extends BaseDO { * 分类 */ private Long categoryId; - + //@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") + private Long unitId; } \ 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/stockworkshop/StockWorkshopDetailDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockworkshop/StockWorkshopDetailDO.java index 888ca01683..a75d1d0c15 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockworkshop/StockWorkshopDetailDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/stockworkshop/StockWorkshopDetailDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import java.math.BigDecimal; @@ -37,6 +38,8 @@ public class StockWorkshopDetailDO extends BaseDO { * 数量 */ private BigDecimal count; + //明细后库存数量 + private BigDecimal stockCount; /** * 明细类别 * @@ -67,5 +70,6 @@ public class StockWorkshopDetailDO extends BaseDO { * 单据时间 */ private LocalDateTime operateTime; - + //@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") + private Long unitId; } \ 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/FeedingRecordService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/feedingrecord/FeedingRecordService.java index 1e0e66f82f..1d2695ba31 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/feedingrecord/FeedingRecordService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/feedingrecord/FeedingRecordService.java @@ -75,10 +75,11 @@ public interface FeedingRecordService { if(ids.isEmpty())return new HashMap<>(); return convertMap(getFeedingRecordList(ids), FeedingRecordDO::getId); } + //提交、反提交投料记录单 Map updateStatus(FeedingRecordDO recordDO,List detailDOList, String status , Long userId ,List planDOList,Map> planItemListMap, Map planItemMap); - //提交、反提交投料记录单 - + //提交干废品和湿废品投料记录,分配给计划 + void dealOtherRecord(FeedingRecordDO recordDO, String status , Long userId,List 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/feedingrecord/FeedingRecordServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/feedingrecord/FeedingRecordServiceImpl.java index 3ce1551951..a29e1c2864 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 @@ -225,7 +225,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { for (FeedingRecordDetailDO recordDetailDO: detailDOList) { //车间仓投料出库 StockWorkshopDO workshopDO = new StockWorkshopDO() - .setItemId(recordDetailDO.getItemId()) + .setItemId(recordDetailDO.getItemId()).setUnitId(recordDetailDO.getUnitId()) .setCount(recordDetailDO.getWeight().multiply(BigDecimal.valueOf(-1))) .setCategoryId(1L); workshopService.updateStock(workshopDO, StockWorkShopTypeEnum.投料出库.getValue(), @@ -341,4 +341,49 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { private String getMapKey(Long planId, Long itemId){ return planId + "-" + itemId; } + + + //干废品和湿废品投料分配计划 + @Override + @Transactional(rollbackFor = Exception.class) + public void dealOtherRecord(FeedingRecordDO recordDO, String status , Long userId,List planDOList) { + FeedingTypeEnum typeEnum = FeedingTypeEnum.fromValue(recordDO.getFeedingType()); + MathContext mc = new MathContext(3, RoundingMode.HALF_UP); + if(status.equals(FeedingStatusEnum.提交.getValue())) { + Long totalPlanNumber = 0L; + for (PlanDO plan : planDOList) { + totalPlanNumber += plan.getPlanNumber(); + } + List recordPlanDOList = new ArrayList<>(); + for (PlanDO plan : planDOList) { + BigDecimal weight = recordDO.getWeight().multiply(BigDecimal.valueOf(plan.getPlanNumber()/totalPlanNumber),mc); + FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO() + .setPlanId(plan.getId()).setItemId(typeEnum.getTable_id()) + .setRecordId(recordDO.getId()).setUserId(userId).setUnitId(ProductUnitEnum.Kilogram.getUnitId()) + .setRecordDetailId(0L) + .setFeedingTime(recordDO.getFeedingTime()) + .setWeight(weight); + recordPlanDOList.add(recordPlanDO); + } + if (recordPlanDOList.size()>0) + recordPlanMapper.insertBatch(recordPlanDOList); + + } + //todo 需要回退吗? + else if(status.equals(FeedingStatusEnum.草稿.getValue())) { + + } + + //车间仓也进行出入库记录 + StockWorkshopDO workshopDO = new StockWorkshopDO() + .setItemId(typeEnum.getTable_id()).setUnitId(ProductUnitEnum.Kilogram.getUnitId()) + .setCount(recordDO.getWeight()) + .setCategoryId(1L); + workshopService.updateStock(workshopDO, StockWorkShopTypeEnum.领料入库.getValue(), + 0L, ""); + + workshopService.updateStock(workshopDO, StockWorkShopTypeEnum.投料出库.getValue(), + recordDO.getId(), recordDO.getFeedingRecordCode()); + return; + } } \ 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/stockworkshop/MesStockOutServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutServiceImpl.java index 9be2e44319..b55b2a6238 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutServiceImpl.java @@ -112,7 +112,7 @@ public class MesStockOutServiceImpl implements MesStockOutService { stockOutItems.forEach(stockOutItem -> { Long categoryId = productMap.get(stockOutItem.getProductId()).getCategoryId(); StockWorkshopDO workshopDO = new StockWorkshopDO(null, stockOutItem.getProductId(), - stockOutItem.getCount(),categoryId); + stockOutItem.getCount(),categoryId,stockOutItem.getProductUnitId()); stockWorkshopService.updateStock(workshopDO, StockWorkShopTypeEnum.领料入库.getValue(), stockOut.getId(), stockOut.getNo() ); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopDetailService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopDetailService.java index 001a64be92..670825f344 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopDetailService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopDetailService.java @@ -52,5 +52,5 @@ public interface StockWorkshopDetailService { * @return 车间仓明细分页 */ PageResult getStockWorkshopDetailPage(StockWorkshopDetailPageReqVO pageReqVO); - + List buildVOList(List list); } \ 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/stockworkshop/StockWorkshopDetailServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopDetailServiceImpl.java index 20504b009a..47aba76474 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopDetailServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopDetailServiceImpl.java @@ -1,5 +1,16 @@ package cn.iocoder.yudao.module.mes.service.stockworkshop; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; +import cn.iocoder.yudao.module.erp.service.product.ErpProductService; +import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService; +import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.feedingplan.FeedingRecordPlanDO; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; @@ -16,6 +27,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopDetailMa import javax.annotation.Resource; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** @@ -29,6 +41,12 @@ public class StockWorkshopDetailServiceImpl implements StockWorkshopDetailServic @Resource private StockWorkshopDetailMapper stockWorkshopDetailMapper; + @Resource + private ErpProductService productService; + @Resource + private ErpProductUnitService productUnitService; + @Resource + private AdminUserApi adminUserApi; @Override public Long createStockWorkshopDetail(StockWorkshopDetailSaveReqVO createReqVO) { @@ -71,5 +89,27 @@ public class StockWorkshopDetailServiceImpl implements StockWorkshopDetailServic public PageResult getStockWorkshopDetailPage(StockWorkshopDetailPageReqVO pageReqVO) { return stockWorkshopDetailMapper.selectPage(pageReqVO); } + @Override + public List buildVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map map = productService.getProductMap( + convertSet(list, StockWorkshopDetailDO::getItemId)); + Map unitMap = productUnitService.getProductUnitMap( + convertSet(list, StockWorkshopDetailDO::getUnitId)); + // 1.4 管理员信息 + Map userMap = adminUserApi.getUserMap( + convertSet(list, StockWorkshopDetailDO::getUserId)); + + return BeanUtils.toBean(list, StockWorkshopDetailRespVO.class, item -> { + MapUtils.findAndThen(map, item.getItemId(), + product -> item.setItemName(product.getName())); + MapUtils.findAndThen(unitMap, item.getUnitId(), + unit -> item.setUnitName(unit.getName())); + MapUtils.findAndThen(userMap, item.getUserId(), + user -> item.setUserName(user.getNickname())); + }); + } } \ 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/stockworkshop/StockWorkshopService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopService.java index dbf9997ba5..e8428f0541 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopService.java @@ -53,7 +53,7 @@ public interface StockWorkshopService { * @return 车间仓库存分页 */ PageResult getStockWorkshopPage(StockWorkshopPageReqVO pageReqVO); - + List buildVOList(List list); /** * 获得原料库存数量 * diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java index b85ede2b21..9f4ba8b76a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java @@ -1,28 +1,37 @@ package cn.iocoder.yudao.module.mes.service.stockworkshop; -import cn.iocoder.yudao.framework.common.exception.ErrorCode; -import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; +import cn.iocoder.yudao.module.erp.service.product.ErpProductCategoryService; +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.stockworkshop.vo.StockWorkShopTypeEnum; +import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkshopPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkshopRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkshopSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO; import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDetailDO; import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopDetailMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopMapper; import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.*; -import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.*; -import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - -import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopMapper; +import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.STOCK_WORKSHOP_NOT_EXISTS; /** * 车间仓库存 Service 实现类 @@ -35,10 +44,16 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { @Resource private StockWorkshopMapper stockWorkshopMapper; - @Resource - private StockWorkshopDetailService workshopDetailService; + @Resource private StockWorkshopDetailMapper detailMapper; + @Resource + private ErpProductService productService; + @Resource + private ErpProductUnitService productUnitService; + @Resource + private ErpProductCategoryService categoryService; + @Override public Long createStockWorkshop(StockWorkshopSaveReqVO createReqVO) { // 插入 @@ -52,8 +67,10 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { // 校验存在 validateStockWorkshopExists(updateReqVO.getId()); // 更新 - StockWorkshopDO updateObj = BeanUtils.toBean(updateReqVO, StockWorkshopDO.class); - stockWorkshopMapper.updateById(updateObj); + StockWorkshopDO updateObj = stockWorkshopMapper.selectById(updateReqVO.getId()); + updateObj.setCount(updateReqVO.getCount()); + updateStock(updateObj,StockWorkShopTypeEnum.损耗调整.getValue(), null,null); + //stockWorkshopMapper.updateById(updateObj); } //删除车间仓库存,则先做一次损耗调整为0,再删除记录 @@ -83,7 +100,28 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { public PageResult getStockWorkshopPage(StockWorkshopPageReqVO pageReqVO) { return stockWorkshopMapper.selectPage(pageReqVO); } + @Override + public List buildVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map map = productService.getProductMap( + convertSet(list, StockWorkshopDO::getItemId)); + Map unitMap = productUnitService.getProductUnitMap( + convertSet(list, StockWorkshopDO::getUnitId)); + Map cateMap = categoryService.getProductCategoryMap( + convertSet(list, StockWorkshopDO::getCategoryId)); + + return BeanUtils.toBean(list, StockWorkshopRespVO.class, item -> { + MapUtils.findAndThen(map, item.getItemId(), + product -> item.setItemName(product.getName())); + MapUtils.findAndThen(unitMap, item.getUnitId(), + unit -> item.setUnitName(unit.getName())); + MapUtils.findAndThen(cateMap, item.getCategoryId(), + cate -> item.setCategoryName(cate.getName())); + }); + } @Override public BigDecimal getStockCount(Long productId) { BigDecimal count = stockWorkshopMapper.selectSumByProductId(productId); @@ -97,10 +135,13 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { throw exception(STOCK_WORKSHOP_NOT_EXISTS); Long result =null; StockWorkshopDO old = stockWorkshopMapper.selectByItemId(other.getItemId()); + BigDecimal stockCount = other.getCount(); if(old!=null){ old.setCount(old.getCount().add(other.getCount())); + old.setCreateTime(LocalDateTime.now()); stockWorkshopMapper.updateById(old); result = old.getId(); + stockCount = old.getCount(); } else { result = (long)stockWorkshopMapper.insert(other); @@ -109,7 +150,9 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { StockWorkshopDetailDO detailDO = new StockWorkshopDetailDO() .setDetailType(detailType) .setItemId(other.getItemId()) - .setCount(other.getCount()); + .setUnitId(other.getUnitId()) + .setCount(other.getCount()) + .setStockCount(stockCount); if(detailType.equals(StockWorkShopTypeEnum.领料入库.getValue())){ detailDO.setItemRequisitionCode(code); detailDO.setItemRequisitionDetailId(id);