From 9d5f53ac13f03b21472401e0bc6980ff1fd7a97f Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期日, 27 三月 2022 22:43:38 +0800 Subject: [PATCH] #杰克缝纫机立库 【订单出库接口 - 合并同类项】 --- src/main/resources/mapper/OrderDetlMapper.xml | 22 ++++++++--- src/main/java/com/zy/common/model/DetlDto.java | 52 ++++++++++++++++++++++++++ src/main/java/com/zy/asrs/controller/OutController.java | 16 +++++++- 3 files changed, 82 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index f714bab..9e66c95 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -3,18 +3,20 @@ import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; -import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.OrderService; +import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Created by vincent on 2022/3/26 @@ -35,10 +37,20 @@ if (Cools.isEmpty(ids)) { return R.parse(BaseRes.PARAM); } + // 鍚堝苟鍚岀被椤� List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids); + Set<DetlDto> detlDtos = new HashSet<>(); for (OrderDetl orderDetl : orderDetls) { - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrderNo()); + if (DetlDto.hasList(detlDtos, orderDetl)) { + DetlDto detlDto = DetlDto.find(detlDtos, orderDetl.getMatnr(), orderDetl.getBatch()); + assert detlDto != null; + detlDto.setAnfme(detlDto.getAnfme() + orderDetl.getAnfme()); + } else { + detlDtos.add(new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getAnfme())); + } } + // +// List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrderNo()); return R.ok().add(orderDetls); diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java index 0729be7..daf439e 100644 --- a/src/main/java/com/zy/common/model/DetlDto.java +++ b/src/main/java/com/zy/common/model/DetlDto.java @@ -1,6 +1,10 @@ package com.zy.common.model; +import com.core.common.Cools; +import com.zy.asrs.entity.OrderDetl; import lombok.Data; + +import java.util.Set; /** * Created by vincent on 2022/3/25 @@ -24,10 +28,58 @@ this.anfme = anfme; } + public DetlDto(String matnr, String batch, Double anfme) { + this.matnr = matnr; + this.batch = batch; + this.anfme = anfme; + } + public DetlDto(String orderNo, String matnr, String batch, Double anfme) { this.orderNo = orderNo; this.matnr = matnr; this.batch = batch; this.anfme = anfme; } + + public static boolean hasList(Set<DetlDto> detlDtos, OrderDetl orderDetl) { + for (DetlDto dto : detlDtos) { + if (Cools.isEmpty(dto.getBatch()) && Cools.isEmpty(orderDetl.getBatch())) { + if (dto.getMatnr().equals(orderDetl.getMatnr())) { + return true; + } + } else { + if (!Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(orderDetl.getBatch())) { + if (dto.getMatnr().equals(orderDetl.getMatnr()) && dto.getBatch().equals(orderDetl.getBatch())) { + return true; + } + } + } + } + return false; + } + + public static DetlDto find(Set<DetlDto> detlDtos, String matnr, String batch) { + if (Cools.isEmpty(matnr)) { + return null; + } + for (DetlDto detlDto : detlDtos) { + if (!matnr.equals(detlDto.getMatnr())) { + continue; + } + if (Cools.isEmpty(batch) && Cools.isEmpty(detlDto.getBatch())) { + return detlDto; + } + if (Cools.isEmpty(batch) && !Cools.isEmpty(detlDto.getBatch())) { + continue; + } + if (Cools.isEmpty(detlDto.getBatch()) && !Cools.isEmpty(batch)) { + continue; + } + if (batch.equals(detlDto.getBatch())) { + return detlDto; + } + } + return null; + } + } diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml index ddd99a7..949aa5e 100644 --- a/src/main/resources/mapper/OrderDetlMapper.xml +++ b/src/main/resources/mapper/OrderDetlMapper.xml @@ -36,9 +36,14 @@ where 1=1 and order_id = #{orderId} and matnr = #{matnr} - <if test="batch != null and batch != ''"> - and batch = #{batch} - </if> + <choose> + <when test="batch != null and batch != ''"> + and batch = #{batch} + </when> + <otherwise> + and (batch IS NULL OR batch = '') + </otherwise> + </choose> </select> <select id="selectWorkingDetls" resultMap="BaseResultMap"> @@ -54,9 +59,14 @@ where 1=1 and order_id = #{orderId} and matnr = #{matnr} - <if test="batch != null and batch != ''"> - and batch = #{batch} - </if> + <choose> + <when test="batch != null and batch != ''"> + and batch = #{batch} + </when> + <otherwise> + and (batch IS NULL OR batch = '') + </otherwise> + </choose> </update> </mapper> -- Gitblit v1.9.1