From 356e283c2f14b3bac140c5b54143b367161ceadb Mon Sep 17 00:00:00 2001 From: chenshuichuan <1154693969@qq.com> Date: Thu, 20 Jun 2024 14:51:40 +0800 Subject: [PATCH] fix feeding --- script/temp.txt | 10 +-- .../mqttrecord/MqttServerController.java | 70 +++++++++++++++++++ .../FeedingRecordController.java | 18 ++++- .../vo/ItemRequisitionSaveReqVO.java | 4 +- .../admin/plan/vo/PlanStatusUpdateVO.java | 2 + .../module/mes/dal/mysql/plan/PlanMapper.java | 15 ++-- .../feedingrecord/FeedingRecordService.java | 3 +- .../FeedingRecordServiceImpl.java | 55 +++++++++++---- .../ItemRequisitionService.java | 2 +- .../ItemRequisitionServiceImpl.java | 5 +- .../mes/service/plan/PlanServiceImpl.java | 3 + .../StockWorkshopServiceImpl.java | 2 +- .../src/main/resources/application.yaml | 1 + 13 files changed, 157 insertions(+), 33 deletions(-) create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java diff --git a/script/temp.txt b/script/temp.txt index 0d4737158d..e2f1385c23 100644 --- a/script/temp.txt +++ b/script/temp.txt @@ -1,9 +1 @@ -字典标签 -字典键值 -入库 6 -完工 5 -开工 4 -计划 3 -下达 2 -送审 1 -草稿 0 +{"A1":{"v":"1.9"},"A10":{"v":"100.0"},"A100":{"v":"false"},"A101":{"v":"false"},"A102":{"v":"false"},"A103":{"v":"false"},"A104":{"v":"false"},"A105":{"v":"false"},"A106":{"v":"false"},"A107":{"v":"false"},"A108":{"v":"false"},"A109":{"v":"false"},"A11":{"v":"696.8"},"A110":{"v":"false"},"A111":{"v":"true"},"A112":{"v":"false"},"A113":{"v":"false"},"A114":{"v":"false"},"A115":{"v":"false"},"A116":{"v":"false"},"A117":{"v":"true"},"A118":{"v":"false"},"A119":{"v":"false"},"A12":{"v":"0.0"},"A120":{"v":"false"},"A121":{"v":"false"},"A122":{"v":"false"},"A123":{"v":"false"},"A124":{"v":"false"},"A125":{"v":"false"},"A126":{"v":"false"},"A127":{"v":"false"},"A128":{"v":"false"},"A129":{"v":"false"},"A13":{"v":"0.0"},"A130":{"v":"false"},"A131":{"v":"false"},"A132":{"v":"false"},"A133":{"v":"false"},"A134":{"v":"true"},"A135":{"v":"false"},"A136":{"v":"true"},"A137":{"v":"true"},"A138":{"v":"false"},"A139":{"v":"false"},"A14":{"v":"100.0"},"A140":{"v":"false"},"A15":{"v":"100.0"},"A16":{"v":"50.0"},"A17":{"v":"false"},"A18":{"v":"true"},"A19":{"v":"false"},"A20":{"v":"false"},"A21":{"v":"false"},"A22":{"v":"false"},"A23":{"v":"false"},"A24":{"v":"false"},"A25":{"v":"false"},"A26":{"v":"false"},"A27":{"v":"false"},"A28":{"v":"false"},"A29":{"v":"false"},"A3":{"v":"3051.1"},"A30":{"v":"true"},"A31":{"v":"false"},"A32":{"v":"true"},"A33":{"v":"false"},"A34":{"v":"true"},"A35":{"v":"true"},"A36":{"v":"false"},"A37":{"v":"false"},"A38":{"v":"false"},"A39":{"v":"false"},"A4":{"v":"287.8"},"A40":{"v":"true"},"A41":{"v":"false"},"A42":{"v":"false"},"A43":{"v":"false"},"A44":{"v":"false"},"A45":{"v":"false"},"A46":{"v":"false"},"A47":{"v":"false"},"A48":{"v":"false"},"A49":{"v":"false"},"A5":{"v":"3134.9"},"A50":{"v":"false"},"A51":{"v":"false"},"A52":{"v":"false"},"A53":{"v":"false"},"A54":{"v":"false"},"A55":{"v":"false"},"A56":{"v":"false"},"A57":{"v":"false"},"A58":{"v":"false"},"A59":{"v":"false"},"A6":{"v":"1852.8"},"A60":{"v":"false"},"A61":{"v":"false"},"A62":{"v":"false"},"A63":{"v":"false"},"A64":{"v":"false"},"A65":{"v":"false"},"A66":{"v":"true"},"A67":{"v":"false"},"A68":{"v":"true"},"A69":{"v":"true"},"A7":{"v":"1475.3"},"A70":{"v":"false"},"A71":{"v":"false"},"A72":{"v":"false"},"A8":{"v":"2601.4"},"A83":{"v":"false"},"A84":{"v":"false"},"A85":{"v":"false"},"A86":{"v":"false"},"A87":{"v":"false"},"A88":{"v":"true"},"A89":{"v":"false"},"A9":{"v":"696.8"},"A90":{"v":"false"},"A91":{"v":"false"},"A92":{"v":"false"},"A93":{"v":"false"},"A94":{"v":"false"},"A95":{"v":"false"},"A96":{"v":"false"},"A97":{"v":"false"},"A98":{"v":"false"},"A99":{"v":"false"}} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java new file mode 100644 index 0000000000..56f1bfb63b --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord; + +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.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordPageReqVO; +import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordRespVO; +import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordSaveReqVO; +import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO; +import cn.iocoder.yudao.module.iot.service.mqttrecord.MqttRecordService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 数采记录") +@RestController +@RequestMapping("/iot/mqtt-server") +@Validated +public class MqttServerController { + + @Resource + private MqttRecordService mqttRecordService; + + @PostMapping("/create") + @Operation(summary = "创建数采记录") + public CommonResult createMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO createReqVO) { + return success(mqttRecordService.createMqttRecord(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新数采记录") + public CommonResult updateMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO updateReqVO) { + mqttRecordService.updateMqttRecord(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除数采记录") + @Parameter(name = "id", description = "编号", required = true) + public CommonResult deleteMqttRecord(@RequestParam("id") Long id) { + mqttRecordService.deleteMqttRecord(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得数采记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getMqttRecord(@RequestParam("id") Long id) { + MqttRecordDO mqttRecord = mqttRecordService.getMqttRecord(id); + return success(BeanUtils.toBean(mqttRecord, MqttRecordRespVO.class)); + } + + + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/FeedingRecordController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/feedingrecord/FeedingRecordController.java index f7a7e93451..a95d19a669 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,8 +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.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.mysql.feedingrecord.FeedingRecordMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.itemrequisition.ItemRequisitionMapper; import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService; import cn.iocoder.yudao.module.mes.service.plan.PlanService; import org.springframework.web.bind.annotation.*; @@ -14,6 +17,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.time.LocalDate; import java.util.*; import java.io.IOException; @@ -149,8 +153,20 @@ public class FeedingRecordController { planItemMap.put(key, respVO); } } - feedingRecordService.updateStatus(recordDO,detailDOList, status , user.getId(),planDOList, + Map recordPlanDOMap = feedingRecordService.updateStatus(recordDO,detailDOList, status , user.getId(),planDOList, planItemListMap, planItemMap); + //更新计划对应的领料单投料时间 + Map map = new HashMap<>(); + for (String key : recordPlanDOMap.keySet()) { + FeedingRecordPlanDO item = recordPlanDOMap.get(key); + if(!map.containsKey(item.getPlanId())){ + ItemRequisitionDO itemRequisitionDO = itemRequisitionService.getItemRequisitionByPlanId(item.getPlanId()); + if(itemRequisitionDO!=null && itemRequisitionDO.getDeliveryDate()==null){ + itemRequisitionDO.setDeliveryDate(LocalDate.now()); + map.put(item.getPlanId(),item.getPlanId()); + } + } + } } else { recordDO.setRecordStatus(FeedingStatusEnum.提交.getValue()); 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 e0adf84ec6..7925f80465 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 @@ -21,10 +21,10 @@ public class ItemRequisitionSaveReqVO { @Schema(description = "编码") private String code; - @Schema(description = "下料时间") + @Schema(description = "计划下料时间") private LocalDateTime requisitionDate; - @Schema(description = "领料时间") + @Schema(description = "实际下料时间") private LocalDateTime deliveryDate; @Schema(description = "状态", example = "2") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanStatusUpdateVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanStatusUpdateVO.java index 6c95ad47e1..d5e0733e36 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanStatusUpdateVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/plan/vo/PlanStatusUpdateVO.java @@ -4,11 +4,13 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter; +import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; @Data @AllArgsConstructor +@NoArgsConstructor public class PlanStatusUpdateVO { @Schema(description = "计划id", example = "21176") @NotNull(message = "计划id") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java index 562a5c02a0..6c62098f82 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java @@ -38,8 +38,8 @@ public interface PlanMapper extends BaseMapperX { .eqIfPresent(PlanDO::getRemark, reqVO.getRemark()) .eqIfPresent(PlanDO::getIsEnable, reqVO.getIsEnable()) .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(PlanDO::getPlanStartTime) - .orderByDesc(PlanDO::getPlanEndTime)); + .orderByAsc(PlanDO::getPlanStartTime) + .orderByAsc(PlanDO::getPlanEndTime)); } default PlanDO selectByNo(String no) { return selectOne(PlanDO::getCode, no); @@ -58,7 +58,7 @@ public interface PlanMapper extends BaseMapperX { } return MapUtil.getLong(result.get(0), "sumCount", 0L); } - /**查询按日期排序最后一个未完成(已经下达)的计划**/ + /**查询按日期排序最后一个未完成(已经下达)的计划,即更未来远的时间在更近**/ default PlanDO selectLastOne(){ List status = new ArrayList<>(); status.add(PlanStatusEnum.计划.getValue()); @@ -71,9 +71,14 @@ public interface PlanMapper extends BaseMapperX { .last("limit 1")); } default List selectBy(List statusList) { - return selectList(PlanDO::getStatus, statusList); + return selectList(new LambdaQueryWrapperX() + .inIfPresent(PlanDO::getStatus,statusList)); } + //根据产线和状态查询生产计划,按照实际开工时间升序排序,即更早开工的在前面 default List selectBy(List statusList, String pipeline) { - return selectList(PlanDO::getStatus, statusList, PlanDO::getFeedingPipeline, pipeline); + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(PlanDO::getFeedingPipeline, pipeline) + .inIfPresent(PlanDO::getStatus,statusList) + .orderByAsc(PlanDO::getStartTime)); } } \ 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 4b15022ef9..1e0e66f82f 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 @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.mes.service.feedingrecord; import java.util.*; 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.dal.dataobject.feedingplan.FeedingRecordPlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDetailDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -74,7 +75,7 @@ public interface FeedingRecordService { if(ids.isEmpty())return new HashMap<>(); return convertMap(getFeedingRecordList(ids), FeedingRecordDO::getId); } - void updateStatus(FeedingRecordDO recordDO,List detailDOList, String status , Long userId + Map updateStatus(FeedingRecordDO recordDO,List detailDOList, String status , Long userId ,List planDOList,Map> planItemListMap, Map planItemMap); //提交、反提交投料记录单 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 c1906caf75..3ce1551951 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 @@ -4,6 +4,7 @@ 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.framework.bean.ProductUnitEnum; 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.feedingplan.vo.FeedingRecordPlanRespVO; @@ -87,10 +88,13 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { FeedingRecordDO feedingRecord = BeanUtils.toBean(createReqVO, FeedingRecordDO.class); feedingRecord.setRecordStatus(FeedingStatusEnum.草稿.getValue()); feedingRecordMapper.insert(feedingRecord); - //todo 检查投料原料项,如果不是kg,则转为kg + //检查投料原料项,如果不是kg,则转为kg + if(createReqVO.getFeedingType().equals(FeedingTypeEnum.领料.getValue())){ + transfer(createReqVO.getFeedingRecordDetails()); + // 插入子表 + createFeedingRecordDetailList(feedingRecord.getId(), createReqVO.getFeedingRecordDetails()); + } - // 插入子表 - createFeedingRecordDetailList(feedingRecord.getId(), createReqVO.getFeedingRecordDetails()); // 返回 return feedingRecord.getId(); } @@ -103,11 +107,29 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { // 更新 FeedingRecordDO updateObj = BeanUtils.toBean(updateReqVO, FeedingRecordDO.class); feedingRecordMapper.updateById(updateObj); - - // 更新子表 - updateFeedingRecordDetailList(updateReqVO.getId(), updateReqVO.getFeedingRecordDetails()); + if(updateReqVO.getFeedingType().equals(FeedingTypeEnum.领料.getValue())) { + transfer(updateReqVO.getFeedingRecordDetails()); + // 更新子表 + updateFeedingRecordDetailList(updateReqVO.getId(), updateReqVO.getFeedingRecordDetails()); + } + } + //将单位转到kg + private List transfer(List list){ + if (list != null) { + MathContext mc = new MathContext(3, RoundingMode.HALF_UP); + for (int i = 0; i < list.size(); i++) { + FeedingRecordDetailDO detailDO = list.get(i); + if (detailDO.getUnitId().equals(ProductUnitEnum.Gram.getUnitId())) { + detailDO.setWeight(detailDO.getWeight().divide(BigDecimal.valueOf(1000), mc)); + detailDO.setUnitId(ProductUnitEnum.Kilogram.getUnitId()); + } else if (detailDO.getUnitId().equals(ProductUnitEnum.Ton.getUnitId())) { + detailDO.setWeight(detailDO.getWeight().multiply(BigDecimal.valueOf(1000), mc)); + detailDO.setUnitId(ProductUnitEnum.Kilogram.getUnitId()); + } + } + } + return list; } - @Override @Transactional(rollbackFor = Exception.class) public void deleteFeedingRecord(Long id) { @@ -144,8 +166,10 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { } private void createFeedingRecordDetailList(Long recordId, List list) { - list.forEach(o -> o.setRecordId(recordId)); - feedingRecordDetailMapper.insertBatch(list); + if(list!=null && list.size()>0){ + list.forEach(o -> o.setRecordId(recordId)); + feedingRecordDetailMapper.insertBatch(list); + } } private void updateFeedingRecordDetailList(Long recordId, List list) { @@ -191,7 +215,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { * **/ @Override @Transactional(rollbackFor = Exception.class) - public void updateStatus(FeedingRecordDO recordDO,List detailDOList, String status , Long userId + public Map updateStatus(FeedingRecordDO recordDO,List detailDOList, String status , Long userId ,List planDOList,Map> planItemListMap, Map planItemMap) { @@ -213,14 +237,20 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { detailDOMap.get(recordDetailDO.getItemId()).setWeight(totalWeight); }else detailDOMap.put(recordDetailDO.getItemId(), recordDetailDO); } - dealPlan(detailDOMap,recordDO, userId, planDOList, planItemListMap, planItemMap); + MaprecordPlanDOMap = + dealPlan(detailDOMap,recordDO, userId, planDOList, planItemListMap, planItemMap); + + recordDO.setRecordStatus(FeedingStatusEnum.提交.getValue()); + feedingRecordMapper.updateById(recordDO); + return recordPlanDOMap; } //todo 需要回退吗? else if(status.equals(FeedingStatusEnum.草稿.getValue())) { } + return null; } - private void dealPlan(Map detailDOMap , FeedingRecordDO recordDO, Long userId, + private Map dealPlan(Map detailDOMap , FeedingRecordDO recordDO, Long userId, List planDOList,Map> planItemListMap, Map planItemMap){ MathContext mc = new MathContext(3, RoundingMode.HALF_UP); @@ -271,6 +301,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService { dealLast(detailDOMap, recordDO.getId(), userId, planDOList, totalPlanNeedItem, recordPlanDOMap, planItemMap); //插入 recordPlanMapper.insertBatch(recordPlanDOMap.values()); + return recordPlanDOMap; } //处理剩余未分配原料,按照totalPlanNeedItem 比例分配到每个计划 private Map dealLast(Map detailDOMap, Long recordId, Long userId diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionService.java index 7a29ff6a52..d4afdee415 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionService.java @@ -45,7 +45,7 @@ public interface ItemRequisitionService { * @return 生产领料 */ ItemRequisitionDO getItemRequisition(Long id); - + ItemRequisitionDO getItemRequisitionByPlanId(Long planId); /** * 获得生产领料分页 * diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java index 93fbb28819..e56d4094b2 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java @@ -117,7 +117,10 @@ public class ItemRequisitionServiceImpl implements ItemRequisitionService { public ItemRequisitionDO getItemRequisition(Long id) { return itemRequisitionMapper.selectById(id); } - + @Override + public ItemRequisitionDO getItemRequisitionByPlanId(Long planId) { + return itemRequisitionMapper.selectByPlanId(planId); + } @Override public PageResult getItemRequisitionPage(ItemRequisitionPageReqVO pageReqVO) { return itemRequisitionMapper.selectPage(pageReqVO); 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 62c5f713dc..92acd2af84 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 @@ -156,10 +156,13 @@ public class PlanServiceImpl implements PlanService { } saveReqVO.setItemRequisitionDetails(itemRequisitionDetails); saveReqVO.setStatus(ItemRequisitionStatusEnum.下达.getValue()); + if(saveReqVO.getRequisitionDate()==null) + saveReqVO.setRequisitionDate(LocalDateTime.now()); itemRequisitionService.createItemRequisition(saveReqVO); //更新计划状态 planDO.setStatus(PlanStatusEnum.派工.getValue()); planDO.setIsEnable(true); + planDO.setProductionManagerId(saveReqVO.getWorkerId()); planDO.setFeedingPipeline(saveReqVO.getFeedingPipeline()); planDO.setStartTime(LocalDateTime.now()); planMapper.updateById(planDO); 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 c2d8c71171..b85ede2b21 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 @@ -93,7 +93,7 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { @Override @Transactional(rollbackFor = Exception.class) public Long updateStock(StockWorkshopDO other, String detailType , Long id, String code){ - if(other ==null || other.getId() == null) + if(other ==null ) throw exception(STOCK_WORKSHOP_NOT_EXISTS); Long result =null; StockWorkshopDO old = stockWorkshopMapper.selectByItemId(other.getItemId()); diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index e4a69ed74a..25d6a7a6ea 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -194,6 +194,7 @@ yudao: - /admin-api/pay/notify/** # 支付回调通知,不携带租户编号 - /jmreport/* # 积木报表,无法携带租户编号 - /admin-api/mp/open/** # 微信公众号开放平台,微信回调接口,无法携带租户编号 + - /admin-api/iot/mqtt-server/** ignore-tables: - system_tenant - system_tenant_package