From 4a61b217533ebeddae783532f29392ef941dda74 Mon Sep 17 00:00:00 2001 From: kkk-ops <1050738955@qq.com> Date: Tue, 30 Dec 2025 17:38:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BE=E5=B7=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/stock/ErpStockOutController.java | 6 +- .../dal/dataobject/stock/ErpStockOutDO.java | 4 + .../service/stock/ErpStockOutServiceImpl.java | 3 + .../module/mes/enums/ErrorCodeConstants.java | 2 + .../FeedingRecordController.java | 42 +++++- .../vo/FeedingRecordPageReqVO.java | 2 +- .../feedingrecord/vo/FeedingRecordRespVO.java | 10 +- .../vo/FeedingRecordSaveReqVO.java | 2 +- .../feedingrecord/vo/FeedingStatusEnum.java | 6 +- .../ItemRequisitionController.java | 12 +- .../vo/ItemRequisitionRespVO.java | 5 +- .../vo/ItemRequisitionSaveReqVO.java | 2 +- .../admin/moldget/vo/MoldGetRespVO.java | 3 + .../PaigongRecordController.java | 124 ++++++++++++++++++ .../vo/PaigongRecordPageReqVO.java | 39 ++++++ .../paigongrecord/vo/PaigongRecordRespVO.java | 47 +++++++ .../vo/PaigongRecordSaveReqVO.java | 33 +++++ .../controller/admin/plan/PlanController.java | 11 +- .../feedingrecord/FeedingRecordDO.java | 6 +- .../itemrequisition/ItemRequisitionDO.java | 2 +- .../mes/dal/dataobject/moldget/MoldGetDO.java | 4 + .../paigongrecord/PaigongRecordDO.java | 53 ++++++++ .../mes/dal/dataobject/plan/PlanDO.java | 4 + .../organization/OrganizationMapper.java | 8 ++ .../paigongrecord/PaigongRecordMapper.java | 37 ++++++ .../feedingrecord/FeedingRecordService.java | 2 + .../FeedingRecordServiceImpl.java | 25 +++- .../organization/OrganizationService.java | 13 ++ .../organization/OrganizationServiceImpl.java | 21 +++ .../paigongrecord/PaigongRecordService.java | 69 ++++++++++ .../PaigongRecordServiceImpl.java | 96 ++++++++++++++ .../module/mes/service/plan/PlanService.java | 2 + .../mes/service/plan/PlanServiceImpl.java | 23 ++++ .../paigongrecord/PaigongRecordMapper.xml | 12 ++ 34 files changed, 702 insertions(+), 28 deletions(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/PaigongRecordController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordPageReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordSaveReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/paigongrecord/PaigongRecordDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/paigongrecord/PaigongRecordMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/paigongrecord/PaigongRecordService.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/paigongrecord/PaigongRecordServiceImpl.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/paigongrecord/PaigongRecordMapper.xml diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java index b784f35fba..3a145ac5dd 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java @@ -160,6 +160,10 @@ public class ErpStockOutController { // 1.4 管理员信息 Map userMap = adminUserApi.getUserMap( convertSet(pageResult.getList(), stockOut -> Long.parseLong(stockOut.getCreator()))); + // 1.4 领料员信息 + Map responserMap = adminUserApi.getUserMap( + convertSet(pageResult.getList(), ErpStockOutDO::getResponserId)); + // 2. 开始拼接 return BeanUtils.toBean(pageResult, ErpStockOutRespVO.class, stockOut -> { stockOut.setItems(BeanUtils.toBean(stockOutItemMap.get(stockOut.getId()), ErpStockOutRespVO.Item.class, @@ -168,7 +172,7 @@ public class ErpStockOutController { stockOut.setProductNames(CollUtil.join(stockOut.getItems(), ",", ErpStockOutRespVO.Item::getProductName)); MapUtils.findAndThen(customerMap, stockOut.getCustomerId(), supplier -> stockOut.setCustomerName(supplier.getName())); MapUtils.findAndThen(userMap, Long.parseLong(stockOut.getCreator()), user -> stockOut.setCreatorName(user.getNickname())); - MapUtils.findAndThen(userMap, stockOut.getResponserId(), user -> stockOut.setResponserName(user.getNickname())); + MapUtils.findAndThen(responserMap, stockOut.getResponserId(), user -> stockOut.setResponserName(user.getNickname())); }); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java index 3f0d3de435..c7ba013f9b 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java @@ -41,6 +41,10 @@ public class ErpStockOutDO extends BaseDO { */ private Long customerId; //@Schema(description = "负责人id", example = "3113") + /** + * 领料人编号 + * + */ private Long responserId; //@Schema(description = "出库类型", example = "随便") private String outType; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java index 9638e6f0ba..76179939f6 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -30,6 +31,7 @@ import java.util.Map; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; +import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; // TODO 芋艿:记录操作日志 @@ -60,6 +62,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { @Resource private ErpStockRecordService stockRecordService; + @Override @Transactional(rollbackFor = Exception.class) public Long createStockOut(ErpStockOutSaveReqVO createReqVO) { diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 7e979a34a2..d59101f8c2 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -35,6 +35,8 @@ public interface ErrorCodeConstants { ErrorCode RECORD_GANZAO_NOT_EXISTS = new ErrorCode(5_0067, "干燥记录不存在"); ErrorCode RECORD_JIASHI_NOT_EXISTS = new ErrorCode(5_0068, "加湿记录不存在"); ErrorCode RECORD_PINJIAN_NOT_EXISTS = new ErrorCode(5_0069, "品检记录不存在"); + ErrorCode PAIGONG_RECORD_NOT_EXISTS = new ErrorCode(5_0069, "派工记录不存在"); + ErrorCode WORK_TEAM_NOT_EXISTS = new ErrorCode(5_007, "生产班组不存在"); 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 9a693a9cc4..ee0e08ffb0 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 @@ -4,10 +4,15 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; 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.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.*; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionDetailRespVO; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum; @@ -15,11 +20,14 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.feedingplan.FeedingRecordPlanD import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDetailDO; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; +import cn.iocoder.yudao.module.mes.dal.mysql.feedingrecord.FeedingRecordDetailMapper; 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.feedingrecord.FeedingRecordService; import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService; +import cn.iocoder.yudao.module.mes.service.organization.OrganizationService; import cn.iocoder.yudao.module.mes.service.plan.PlanService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -42,6 +50,8 @@ import java.util.Map; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.FEEDING_RECORD_NOT_EXISTS; @@ -54,6 +64,12 @@ public class FeedingRecordController { @Resource private FeedingRecordService feedingRecordService; + @Resource + private OrganizationService organizationService; + + @Resource + private FeedingRecordDetailMapper feedingRecordDetailMapper; + @PostMapping("/create") @Operation(summary = "创建投料记录") @PreAuthorize("@ss.hasPermission('mes:feeding-record:create')") @@ -100,7 +116,13 @@ public class FeedingRecordController { @PreAuthorize("@ss.hasPermission('mes:feeding-record:query')") public CommonResult> getFeedingRecordPage(@Valid FeedingRecordPageReqVO pageReqVO) { PageResult pageResult = feedingRecordService.getFeedingRecordPage(pageReqVO); - return success(pageResult); +// List organizationList = organizationService.getOrganizationListByOutIds(convertSet(pageResult.getList(), FeedingRecordRespVO::getFeedingPipeline)); +// Map> organizationMap = convertMultiMap(organizationList, OrganizationDO::getId); + Map organizationMap = organizationService.getOrganizationVOMap( + convertSet(pageResult.getList(), FeedingRecordRespVO::getFeedingPipeline)); + return success(BeanUtils.toBean(pageResult, FeedingRecordRespVO.class, feedingRecord -> { + MapUtils.findAndThen(organizationMap, feedingRecord.getFeedingPipeline(), feedingPipeline -> feedingRecord.setFeedingPipelineName(feedingPipeline.getName())); + })); } @GetMapping("/export-excel") @@ -160,7 +182,8 @@ public class FeedingRecordController { List statusList = new ArrayList<>(); statusList.add(PlanStatusEnum.开工.getValue()); //获取正在开工的计划,按照计划完工时间从小到大排序,优先分配给最近计划完工的计划。 - List planDOList = planService.getPlanByStatusAndPipeline(statusList, recordDO.getFeedingPipeline()); + List planDOList = planService.getPlanByStatusAndPipeline(statusList, String.valueOf(recordDO.getFeedingPipeline()));/** todo 这里改了 以前固定2 5立方制浆线*/ + if (recordDO.getFeedingType().equals(FeedingTypeEnum.领料.getValue())) { List detailDOList = feedingRecordService.getFeedingRecordDetailListByRecordId(id); @@ -198,11 +221,20 @@ public class FeedingRecordController { } } } - } - else { + } else { } - recordDO.setRecordStatus(FeedingStatusEnum.提交.getValue()); +// if (recordDO.getWeight().compareTo(recordDO.getFeedingWeight()) == 0) { +// recordDO.setRecordStatus(FeedingStatusEnum.已完成.getValue()); +// } else { +// recordDO.setRecordStatus(FeedingStatusEnum.投料中.getValue()); +// +// list.forEach(o -> o.setId(null).setRecordId(recordDO.getId()) +// .setUserId(recordDO.getUserId()) +// .setFeedingTime(recordDO.getFeedingTime()) +// ); +// feedingRecordDetailMapper.insertBatch(list); +// } feedingRecordMapper.updateById(recordDO); return success(true); } else return CommonResult.error(500, "无法获取操作用户!请检查!"); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordPageReqVO.java index d9d75b2597..bb6ba5ba02 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordPageReqVO.java @@ -31,7 +31,7 @@ public class FeedingRecordPageReqVO extends PageParam { private Long itemId; @Schema(description = "制浆线") - private String feedingPipeline; + private Long feedingPipeline; @Schema(description = "投料类型", example = "2") private String feedingType; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordRespVO.java index 42d98ccc1a..e8d11ff97d 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordRespVO.java @@ -38,9 +38,13 @@ public class FeedingRecordRespVO { private Long itemId; @Schema(description = "制浆线") - @ExcelProperty(value = "制浆线", converter = DictConvert.class) - @DictFormat("mes_feeding_pipeline") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private String feedingPipeline; +// @ExcelProperty(value = "制浆线", converter = DictConvert.class) +// @DictFormat("mes_feeding_pipeline") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Long feedingPipeline; + + @Schema(description = "制浆线名称") + @ExcelProperty(value = "制浆线名称", converter = DictConvert.class) + private String feedingPipelineName; @Schema(description = "投料类型", example = "2") @ExcelProperty(value = "投料类型", converter = DictConvert.class) diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordSaveReqVO.java index 794915031e..b04c1cb9f3 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingRecordSaveReqVO.java @@ -28,7 +28,7 @@ public class FeedingRecordSaveReqVO { private Long itemId; @Schema(description = "制浆线") - private String feedingPipeline; + private Long feedingPipeline; @Schema(description = "投料类型", example = "2") private String feedingType; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingStatusEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingStatusEnum.java index 6431717edf..b61d51518f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingStatusEnum.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/vo/FeedingStatusEnum.java @@ -7,9 +7,9 @@ import lombok.Getter; @AllArgsConstructor public enum FeedingStatusEnum { - 作废("3"), - 提交("2"), - 草稿("1"); + 投料中("3"), + 已完成("2"), + 未投料("1"); private final String value; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/ItemRequisitionController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/ItemRequisitionController.java index 269c74434c..013147d7b8 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/ItemRequisitionController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/ItemRequisitionController.java @@ -8,14 +8,17 @@ 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.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionDetailRespVO; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionRespVO; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService; +import cn.iocoder.yudao.module.mes.service.organization.OrganizationService; import cn.iocoder.yudao.module.mes.service.plan.PlanService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -46,6 +49,8 @@ public class ItemRequisitionController { private ItemRequisitionService itemRequisitionService; @Resource private PlanService planService; + @Resource + private OrganizationService organizationService; @PostMapping("/create") @Operation(summary = "创建生产领料") @@ -84,7 +89,6 @@ public class ItemRequisitionController { @Operation(summary = "获得生产领料分页") @PreAuthorize("@ss.hasPermission('mes:item-requisition:query')") public CommonResult> getItemRequisitionPage(@Valid ItemRequisitionPageReqVO pageReqVO) { - PageResult pageResult = itemRequisitionService.getItemRequisitionPage(pageReqVO); return success(new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal())); } @@ -93,11 +97,13 @@ public class ItemRequisitionController { if (CollUtil.isEmpty(list)) { return Collections.emptyList(); } + Map organizationMap = organizationService.getOrganizationVOMap( + convertSet(list, ItemRequisitionDO::getFeedingPipeline)); Map map = planService.getPlanMap( convertSet(list, ItemRequisitionDO::getPlanId)); return BeanUtils.toBean(list, ItemRequisitionRespVO.class, item -> { - MapUtils.findAndThen(map, item.getPlanId(), - plan -> item.setPlanCode(plan.getCode())); + MapUtils.findAndThen(map, item.getPlanId(), plan -> item.setPlanCode(plan.getCode())); + MapUtils.findAndThen(organizationMap, item.getFeedingPipeline(), organization -> item.setFeedingPipelineName(organization.getName())); }); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/vo/ItemRequisitionRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/vo/ItemRequisitionRespVO.java index abaf25feb9..915d7cd181 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/vo/ItemRequisitionRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/vo/ItemRequisitionRespVO.java @@ -58,6 +58,9 @@ public class ItemRequisitionRespVO { private Long workerId; @Schema(description = "制浆线") + private Long feedingPipeline; + + @Schema(description = "制浆线名称") @ExcelProperty("制浆线") - private String feedingPipeline; + private String feedingPipelineName; } \ 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/itemrequisition/vo/ItemRequisitionSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/vo/ItemRequisitionSaveReqVO.java index 2c3b9d1796..44d4890651 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/vo/ItemRequisitionSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/itemrequisition/vo/ItemRequisitionSaveReqVO.java @@ -47,7 +47,7 @@ public class ItemRequisitionSaveReqVO { private String feedingPipeline; @Schema(description = "生产线") - private String pipeline; + private Long pipeline; @Schema(description = "是否试生产") private Boolean isPreProduction; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldget/vo/MoldGetRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldget/vo/MoldGetRespVO.java index fba88a6aad..7a0b56422a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldget/vo/MoldGetRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldget/vo/MoldGetRespVO.java @@ -48,6 +48,9 @@ public class MoldGetRespVO { @ExcelProperty("领取时间") private LocalDateTime getTime; + @Schema(description = "关联仓库id") + private Long warehouseId; + @Schema(description = "库管员") @ExcelProperty("库管员") private String principal; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/PaigongRecordController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/PaigongRecordController.java new file mode 100644 index 0000000000..c7990954f7 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/PaigongRecordController.java @@ -0,0 +1,124 @@ +package cn.iocoder.yudao.module.mes.controller.admin.paigongrecord; + +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionDetailRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; +import cn.iocoder.yudao.module.mes.service.organization.OrganizationService; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +import cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO; +import cn.iocoder.yudao.module.mes.service.paigongrecord.PaigongRecordService; + +@Tag(name = "管理后台 - 计划派工记录") +@RestController +@RequestMapping("/mes/paigong-record") +@Validated +public class PaigongRecordController { + + @Resource + private PaigongRecordService paigongRecordService; + + @Resource + private OrganizationService organizationService; + + + @PostMapping("/create") + @Operation(summary = "创建计划派工记录") + @PreAuthorize("@ss.hasPermission('mes:paigong-record:create')") + public CommonResult createPaigongRecord(@Valid @RequestBody PaigongRecordSaveReqVO createReqVO) { + return success(paigongRecordService.createPaigongRecord(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新计划派工记录") + @PreAuthorize("@ss.hasPermission('mes:paigong-record:update')") + public CommonResult updatePaigongRecord(@Valid @RequestBody PaigongRecordSaveReqVO updateReqVO) { + paigongRecordService.updatePaigongRecord(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除计划派工记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:paigong-record:delete')") + public CommonResult deletePaigongRecord(@RequestParam("id") Long id) { + paigongRecordService.deletePaigongRecord(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得计划派工记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:paigong-record:query')") + public CommonResult getPaigongRecord(@RequestParam("id") Long id) { + PaigongRecordDO paigongRecord = paigongRecordService.getPaigongRecord(id); + return success(BeanUtils.toBean(paigongRecord, PaigongRecordRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得计划派工记录分页") + @PreAuthorize("@ss.hasPermission('mes:paigong-record:query')") + public CommonResult> getPaigongRecordPage(@Valid PaigongRecordPageReqVO pageReqVO) { + PageResult pageResult = paigongRecordService.getPaigongRecordPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, PaigongRecordRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出计划派工记录 Excel") + @PreAuthorize("@ss.hasPermission('mes:paigong-record:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportPaigongRecordExcel(@Valid PaigongRecordPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = paigongRecordService.getPaigongRecordPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "计划派工记录.xls", "数据", PaigongRecordRespVO.class, + BeanUtils.toBean(list, PaigongRecordRespVO.class)); + } + + // ==================== 子表(派工记录) ==================== + + @GetMapping("/list-by-item-plan-id") + @Operation(summary = "获得派工记录明细列表") + @Parameter(name = "planId", description = "计划ID") + @PreAuthorize("@ss.hasPermission('mes:paigong-record:query')") + public CommonResult> getPaigongRecordListByPlanId(@RequestParam("planId") Long planId) { + List pageResult = paigongRecordService.getPaigongRecordListByPlanId(planId); + //return success(BeanUtils.toBean(pageResult, PaigongRecordRespVO.class)); + + Map organizationMap = organizationService.getOrganizationVOMap( + convertSet(pageResult, PaigongRecordDO::getPipeline)); + return success(BeanUtils.toBean(pageResult, PaigongRecordRespVO.class, paigongRecord -> { + MapUtils.findAndThen(organizationMap, paigongRecord.getPipeline(), organization -> paigongRecord.setPipelineName(organization.getName())); + })); + } + +} \ 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/paigongrecord/vo/PaigongRecordPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordPageReqVO.java new file mode 100644 index 0000000000..882a9c91b9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordPageReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.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 org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 计划派工记录分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PaigongRecordPageReqVO extends PageParam { + + @Schema(description = "关联计划id", example = "1097") + private Long planId; + + @Schema(description = "生产线") + private Long pipeline; + + @Schema(description = "派工数量") + private Long paigongNum; + + @Schema(description = "是否试生产") + private BigDecimal isPreProduction; + + @Schema(description = "派工时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] paigongTime; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/paigongrecord/vo/PaigongRecordRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordRespVO.java new file mode 100644 index 0000000000..2db41a38c8 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 计划派工记录 Response VO") +@Data +@ExcelIgnoreUnannotated +public class PaigongRecordRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6021") + @ExcelProperty("id") + private Long id; + + @Schema(description = "关联计划id", example = "1097") + @ExcelProperty("关联计划id") + private Long planId; + + @Schema(description = "生产线") + private Long pipeline; + + @Schema(description = "生产线名称") + @ExcelProperty("生产线名称") + private String pipelineName; + + @Schema(description = "派工数量") + @ExcelProperty("派工数量") + private Long paigongNum; + + @Schema(description = "是否试生产") + @ExcelProperty("是否试生产") + private BigDecimal isPreProduction; + + @Schema(description = "派工时间") + @ExcelProperty("派工时间") + private LocalDateTime paigongTime; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/paigongrecord/vo/PaigongRecordSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordSaveReqVO.java new file mode 100644 index 0000000000..cddfab10f8 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/paigongrecord/vo/PaigongRecordSaveReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 计划派工记录新增/修改 Request VO") +@Data +public class PaigongRecordSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6021") + private Long id; + + @Schema(description = "关联计划id", example = "1097") + private Long planId; + + @Schema(description = "生产线") + private Long pipeline; + + @Schema(description = "派工数量") + private Long paigongNum; + + @Schema(description = "是否试生产") + private BigDecimal isPreProduction; + + @Schema(description = "派工时间") + private LocalDateTime paigongTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/PlanController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/PlanController.java index 2daadd369a..1fa2f56087 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/PlanController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/PlanController.java @@ -111,7 +111,7 @@ public class PlanController { private ItemAnalysisService analysisService; @PutMapping("/paigong") - @Operation(summary = "计划派工") + @Operation(summary = "下料派工") //@PreAuthorize("@ss.hasPermission('mes:plan:update')") public CommonResult updatePlan(@Valid @RequestBody ItemRequisitionSaveReqVO saveReqVO) { PlanDO planDO = planMapper.selectById(saveReqVO.getPlanId()); @@ -119,6 +119,15 @@ public class PlanController { planService.arrangePlan(saveReqVO, planDO, list); return success(true); } + @PutMapping("/typePaigong") + @Operation(summary = "工序派工") + //@PreAuthorize("@ss.hasPermission('mes:plan:update')") + public CommonResult updatePlanNum(@Valid @RequestBody ItemRequisitionSaveReqVO saveReqVO) { + PlanDO planDO = planMapper.selectById(saveReqVO.getPlanId()); + //List list = analysisService.getItemAnalysis(planDO); + planService.arrangePlanNum(saveReqVO, planDO); + return success(true); + } @PutMapping("/updateStatus") @Operation(summary = "更新生产计划状态") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingrecord/FeedingRecordDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingrecord/FeedingRecordDO.java index 8a26dcccfe..ffb06a3ebb 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingrecord/FeedingRecordDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/feedingrecord/FeedingRecordDO.java @@ -50,7 +50,7 @@ public class FeedingRecordDO extends BaseDO { *

* 枚举 {@link TODO mes_feeding_pipeline 对应的类} */ - private String feedingPipeline; + private Long feedingPipeline; /** * 投料类型 *

@@ -61,6 +61,10 @@ public class FeedingRecordDO extends BaseDO { * 重量 */ private BigDecimal weight; + /** + * 重量 + */ + private BigDecimal feedingWeight; /** * 投料时间 */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/itemrequisition/ItemRequisitionDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/itemrequisition/ItemRequisitionDO.java index ae6aaba400..151ee41085 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/itemrequisition/ItemRequisitionDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/itemrequisition/ItemRequisitionDO.java @@ -65,6 +65,6 @@ public class ItemRequisitionDO extends BaseDO { // @Schema(description = "制浆线") // @ExcelProperty("制浆线") - private String feedingPipeline; + private Long feedingPipeline; } \ 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/moldget/MoldGetDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldget/MoldGetDO.java index 8451873002..b832aa04e6 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldget/MoldGetDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldget/MoldGetDO.java @@ -60,6 +60,10 @@ public class MoldGetDO extends BaseDO { * 领取时间 */ private LocalDateTime getTime; + /** + * 关联仓库id + */ + private Long warehouseId; /** * 库管员 */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/paigongrecord/PaigongRecordDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/paigongrecord/PaigongRecordDO.java new file mode 100644 index 0000000000..15053a43c1 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/paigongrecord/PaigongRecordDO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 计划派工记录 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_paigong_record") +@KeySequence("mes_paigong_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PaigongRecordDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 关联计划id + */ + private Long planId; + /** + * 生产线 + */ + private Long pipeline; + /** + * 派工数量 + */ + private Long paigongNum; + /** + * 是否试生产 + */ + private Boolean isPreProduction; + /** + * 派工时间 + */ + private LocalDateTime paigongTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/plan/PlanDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/plan/PlanDO.java index de4b8c50f9..6f20bb6ad5 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/plan/PlanDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/plan/PlanDO.java @@ -48,6 +48,10 @@ public class PlanDO extends BaseDO { * 计划成型数量 */ private Long planNumber; + /** + * 未派工数量 + */ + private Long noPaigongNumber; /** * 计划热压数量 */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java index 0197589fdb..811e25762c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java @@ -2,11 +2,14 @@ package cn.iocoder.yudao.module.mes.dal.mysql.organization; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationListReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; +import java.util.Collection; import java.util.List; /** @@ -63,4 +66,9 @@ public interface OrganizationMapper extends BaseMapperX { default OrganizationDO selectByNo(String no) { return selectOne(OrganizationDO::getCode, no); } + + default List selectListByOutIds(Collection outIds) { + return selectList(OrganizationDO::getId, outIds); + } + } \ 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/paigongrecord/PaigongRecordMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/paigongrecord/PaigongRecordMapper.java new file mode 100644 index 0000000000..9af68cc98b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/paigongrecord/PaigongRecordMapper.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.paigongrecord; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.vo.*; + +/** + * 计划派工记录 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface PaigongRecordMapper extends BaseMapperX { + + default PageResult selectPage(PaigongRecordPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(PaigongRecordDO::getPlanId, reqVO.getPlanId()) + .eqIfPresent(PaigongRecordDO::getPipeline, reqVO.getPipeline()) + .eqIfPresent(PaigongRecordDO::getPaigongNum, reqVO.getPaigongNum()) + .eqIfPresent(PaigongRecordDO::getIsPreProduction, reqVO.getIsPreProduction()) + .betweenIfPresent(PaigongRecordDO::getPaigongTime, reqVO.getPaigongTime()) + .betweenIfPresent(PaigongRecordDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(PaigongRecordDO::getId)); + } + + default List selectListByPlanId(Long planId) { + return selectList(PaigongRecordDO::getPlanId, planId); + } + + +} \ 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 118c4c951f..a8b421c082 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 @@ -94,4 +94,6 @@ public interface FeedingRecordService { void dealWithOnPlan(PlanDO plan, List detailDOList, Map planItemMap, LoginUser user,FeedingRecordDO recordDO); + + } \ 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 4610d25348..6f1cf1c852 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 @@ -80,7 +80,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { createReqVO.setFeedingRecordCode(noRedisDAO.generate3(MesNoRedisDAO.FEEDING_RECORD_CODE_PREFIX)); // 插入 FeedingRecordDO feedingRecord = BeanUtils.toBean(createReqVO, FeedingRecordDO.class); - feedingRecord.setRecordStatus(FeedingStatusEnum.草稿.getValue()); + feedingRecord.setRecordStatus(FeedingStatusEnum.未投料.getValue()); feedingRecordMapper.insert(feedingRecord); //检查投料原料项,如果不是kg,则转为kg if (createReqVO.getFeedingType().equals(FeedingTypeEnum.领料.getValue())) { @@ -93,6 +93,19 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { return feedingRecord.getId(); } +// @Override +// @Transactional(rollbackFor = Exception.class) +// public void createFeedingRecordDetail(FeedingRecordDO recordDO) { +// +// transfer(createReqVO.getFeedingRecordDetails()); +// // 插入子表 +// list.forEach(o -> o.setId(null).setRecordId(recordDO.getId()) +// .setUserId(recordDO.getUserId()) +// .setFeedingTime(recordDO.getFeedingTime()) +// ); +// feedingRecordDetailMapper.insertBatch(list); +// } + @Override @Transactional(rollbackFor = Exception.class) public void updateFeedingRecord(FeedingRecordSaveReqVO updateReqVO) { @@ -240,7 +253,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { , List planDOList, Map> planItemListMap, Map planItemMap) { - if (status.equals(FeedingStatusEnum.提交.getValue())) { + if (status.equals(FeedingStatusEnum.投料中.getValue())) { //detailDOMap 汇总投料原料 Map detailDOMap = new HashMap<>(); for (FeedingRecordDetailDO recordDetailDO : detailDOList) { @@ -261,12 +274,12 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { Map recordPlanDOMap = dealPlan(detailDOMap, recordDO, userId, planDOList, planItemListMap, planItemMap); - recordDO.setRecordStatus(FeedingStatusEnum.提交.getValue()); + recordDO.setRecordStatus(FeedingStatusEnum.投料中.getValue()); feedingRecordMapper.updateById(recordDO); return recordPlanDOMap; } //todo 需要回退吗? - else if (status.equals(FeedingStatusEnum.草稿.getValue())) { + else if (status.equals(FeedingStatusEnum.未投料.getValue())) { } return null; @@ -379,7 +392,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { 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())) { + if (status.equals(FeedingStatusEnum.投料中.getValue())) { Long totalPlanNumber = 0L; for (PlanDO plan : planDOList) { totalPlanNumber += plan.getPlanNumber(); @@ -401,7 +414,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { } //todo 需要回退吗? - else if (status.equals(FeedingStatusEnum.草稿.getValue())) { + else if (status.equals(FeedingStatusEnum.未投料.getValue())) { } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java index e7ec6d8eb2..1b5c895087 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java @@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.mes.service.organization; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationListReqVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationRespVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationSaveReqVO; @@ -13,6 +16,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + /** * 产线工位 Service 接口 * @@ -57,6 +62,8 @@ public interface OrganizationService { * @return 产线工位列表 */ List getOrganizationList(OrganizationListReqVO listReqVO); + List getOrganizationListByOutIds(Collection outIds); + List getOrganizationListNoParent(OrganizationListReqVO listReqVO); List buildVOList(List list); //派工页面渲染今天已经派工的工人 @@ -68,4 +75,10 @@ public interface OrganizationService { } return CollectionUtils.convertMap(getList(ids), OrganizationDO::getId); } + + List getOrganizationVOList(Collection ids); + default Map getOrganizationVOMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); + return convertMap(getOrganizationVOList(ids), OrganizationDO::getId); + } } \ 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/organization/OrganizationServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java index 1f884011fe..9cd5785bd1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java @@ -4,8 +4,12 @@ import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; import cn.iocoder.yudao.module.iot.service.device.DeviceService; +import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrgClassEnum; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationListReqVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationRespVO; @@ -234,4 +238,21 @@ public class OrganizationServiceImpl implements OrganizationService { } return organizationMapper.selectBatchIds(ids); } + + @Override + public List getOrganizationListByOutIds(Collection outIds) { + if (CollUtil.isEmpty(outIds)) { + return Collections.emptyList(); + } + return organizationMapper.selectListByOutIds(outIds); + } + + @Override + public List getOrganizationVOList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + List list = organizationMapper.selectBatchIds(ids); + return 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/paigongrecord/PaigongRecordService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/paigongrecord/PaigongRecordService.java new file mode 100644 index 0000000000..ef871cb1b6 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/paigongrecord/PaigongRecordService.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.mes.service.paigongrecord; + +import java.util.*; +import javax.validation.*; + +import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 计划派工记录 Service 接口 + * + * @author 内蒙必硕 + */ +public interface PaigongRecordService { + + /** + * 创建计划派工记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createPaigongRecord(@Valid PaigongRecordSaveReqVO createReqVO); + + /** + * 更新计划派工记录 + * + * @param updateReqVO 更新信息 + */ + void updatePaigongRecord(@Valid PaigongRecordSaveReqVO updateReqVO); + + /** + * 删除计划派工记录 + * + * @param id 编号 + */ + void deletePaigongRecord(Long id); + + /** + * 获得计划派工记录 + * + * @param id 编号 + * @return 计划派工记录 + */ + PaigongRecordDO getPaigongRecord(Long id); + + /** + * 获得计划派工记录分页 + * + * @param pageReqVO 分页查询 + * @return 计划派工记录分页 + */ + PageResult getPaigongRecordPage(PaigongRecordPageReqVO pageReqVO); + + /** + * 获得派工记录明细列表 + * + * @param planId 计划ID + * @return 派工明细列表 + */ + List getPaigongRecordListByPlanId(Long planId); + + PageResult getPage(PaigongRecordPageReqVO 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/paigongrecord/PaigongRecordServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/paigongrecord/PaigongRecordServiceImpl.java new file mode 100644 index 0000000000..e1dcac798b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/paigongrecord/PaigongRecordServiceImpl.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.mes.service.paigongrecord; + +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.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO; +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.paigongrecord.PaigongRecordMapper; + +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.*; + +/** + * 计划派工记录 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class PaigongRecordServiceImpl implements PaigongRecordService { + + @Resource + private PaigongRecordMapper paigongRecordMapper; + + @Override + public Long createPaigongRecord(PaigongRecordSaveReqVO createReqVO) { + // 插入 + PaigongRecordDO paigongRecord = BeanUtils.toBean(createReqVO, PaigongRecordDO.class); + paigongRecordMapper.insert(paigongRecord); + // 返回 + return paigongRecord.getId(); + } + + @Override + public void updatePaigongRecord(PaigongRecordSaveReqVO updateReqVO) { + // 校验存在 + validatePaigongRecordExists(updateReqVO.getId()); + // 更新 + PaigongRecordDO updateObj = BeanUtils.toBean(updateReqVO, PaigongRecordDO.class); + paigongRecordMapper.updateById(updateObj); + } + + @Override + public void deletePaigongRecord(Long id) { + // 校验存在 + validatePaigongRecordExists(id); + // 删除 + paigongRecordMapper.deleteById(id); + } + + private void validatePaigongRecordExists(Long id) { + if (paigongRecordMapper.selectById(id) == null) { + throw exception(PAIGONG_RECORD_NOT_EXISTS); + } + } + + @Override + public PaigongRecordDO getPaigongRecord(Long id) { + return paigongRecordMapper.selectById(id); + } + + @Override + public PageResult getPaigongRecordPage(PaigongRecordPageReqVO pageReqVO) { + return paigongRecordMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getPage(PaigongRecordPageReqVO pageReqVO) { + PageResult pageResult = paigongRecordMapper.selectPage(pageReqVO); + return new PageResult<>(BeanUtils.toBean(pageResult.getList(), PaigongRecordRespVO.class),pageResult.getTotal()); + } + + + // ==================== 子表(派工记录明细) ==================== + + @Override + public List getPaigongRecordListByPlanId(Long planId) { + return paigongRecordMapper.selectListByPlanId(planId); + } + +} \ 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/PlanService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java index ab3193e5f1..a72bc26b7a 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 @@ -74,6 +74,8 @@ public interface PlanService { Boolean arrangePlan(ItemRequisitionSaveReqVO saveReqVO, PlanDO planDO, List list); + Boolean arrangePlanNum(ItemRequisitionSaveReqVO saveReqVO, PlanDO planDO); + List getPlanList(Collection ids); default Map getPlanMap(Collection ids) { 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 2804cb1500..6d9341a86b 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 @@ -15,17 +15,21 @@ import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum; import cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskStatusEnum; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO; import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDetailDO; +import cn.iocoder.yudao.module.mes.dal.mysql.paigongrecord.PaigongRecordMapper; import cn.iocoder.yudao.module.mes.dal.mysql.plan.PlanMapper; import cn.iocoder.yudao.module.mes.dal.mysql.stockindetail.StockInDetailMapper; import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO; import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService; import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock; +import cn.iocoder.yudao.module.mes.service.paigongrecord.PaigongRecordService; import cn.iocoder.yudao.module.mes.service.task.TaskService; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import io.swagger.v3.oas.annotations.media.Schema; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -56,6 +60,8 @@ public class PlanServiceImpl implements PlanService { private MesNoRedisDAO noRedisDAO; @Resource private TaskService taskService; + @Resource + private PaigongRecordMapper paigongRecordMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -220,6 +226,23 @@ public class PlanServiceImpl implements PlanService { return true; } + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean arrangePlanNum(ItemRequisitionSaveReqVO saveReqVO, PlanDO planDO) { + // 创建派工记录 + PaigongRecordDO paigongRecordDO = new PaigongRecordDO() + .setPaigongNum(saveReqVO.getPaigongNum()) + .setPipeline(saveReqVO.getPipeline()) + .setIsPreProduction(saveReqVO.getIsPreProduction()) + .setPlanId(planDO.getId()) + .setPaigongTime(LocalDateTime.now()); + paigongRecordMapper.insert(paigongRecordDO); + // 更新未派工数量 + planDO.setNoPaigongNumber(planDO.getPlanNumber()-saveReqVO.getPaigongNum()); + planMapper.updateById(planDO); + return true; + } + @Override public List getPlanList(Collection ids) { return planMapper.selectBatchIds(ids); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/paigongrecord/PaigongRecordMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/paigongrecord/PaigongRecordMapper.xml new file mode 100644 index 0000000000..3e5d96d597 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/paigongrecord/PaigongRecordMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file