Showing
2 changed files
with
73 additions
and
31 deletions
xingyun-sc/src/main/java/com/lframework/xingyun/sc/impl/shipments/ShipmentsOrderInfoServiceImpl.java
| @@ -44,6 +44,7 @@ import com.lframework.xingyun.sc.vo.shipments.plan.QueryShipmentsPlanDetailVo; | @@ -44,6 +44,7 @@ import com.lframework.xingyun.sc.vo.shipments.plan.QueryShipmentsPlanDetailVo; | ||
| 44 | import lombok.extern.slf4j.Slf4j; | 44 | import lombok.extern.slf4j.Slf4j; |
| 45 | import org.apache.commons.collections4.CollectionUtils; | 45 | import org.apache.commons.collections4.CollectionUtils; |
| 46 | import org.apache.commons.collections4.MapUtils; | 46 | import org.apache.commons.collections4.MapUtils; |
| 47 | +import org.apache.commons.lang3.BooleanUtils; | ||
| 47 | import org.apache.commons.lang3.StringUtils; | 48 | import org.apache.commons.lang3.StringUtils; |
| 48 | import org.springframework.transaction.annotation.Transactional; | 49 | import org.springframework.transaction.annotation.Transactional; |
| 49 | import com.lframework.xingyun.sc.mappers.ShipmentsOrderInfoMapper; | 50 | import com.lframework.xingyun.sc.mappers.ShipmentsOrderInfoMapper; |
| @@ -471,7 +472,39 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr | @@ -471,7 +472,39 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr | ||
| 471 | return; | 472 | return; |
| 472 | } | 473 | } |
| 473 | List<String> orderIds = detailList.stream().map(ShipmentsPlanDetail::getOrderId).distinct().collect(Collectors.toList()); | 474 | List<String> orderIds = detailList.stream().map(ShipmentsPlanDetail::getOrderId).distinct().collect(Collectors.toList()); |
| 474 | - purchaseOrderInfoService.updateStatus(orderIds, "DELIVERED"); | 475 | + // 获取订货单规格数据 |
| 476 | + List<PurchaseOrderLine> orderLineList = purchaseOrderLineService.listByOrderIds(orderIds, true); | ||
| 477 | + if (CollectionUtils.isEmpty(orderLineList)) { | ||
| 478 | + return; | ||
| 479 | + } | ||
| 480 | + // 按照订货单分组 | ||
| 481 | + Map<String, List<PurchaseOrderLine>> orderLineMap = new HashMap<>(); | ||
| 482 | + for (PurchaseOrderLine orderLine : orderLineList) { | ||
| 483 | + String orderId = orderLine.getPurchaseOrderId(); | ||
| 484 | + List<PurchaseOrderLine> list = orderLineMap.computeIfAbsent(orderId, k -> new ArrayList<>()); | ||
| 485 | + list.add(orderLine); | ||
| 486 | + } | ||
| 487 | + List<String> needDeliveryOrderIds = new ArrayList<>(); | ||
| 488 | + for (String orderId : orderIds) { | ||
| 489 | + List<PurchaseOrderLine> lineList = orderLineMap.get(orderId); | ||
| 490 | + if (CollectionUtils.isEmpty(lineList)) { | ||
| 491 | + log.info("========================== 订货单 {} 不存在规格数据!", orderId); | ||
| 492 | + continue; | ||
| 493 | + } | ||
| 494 | + boolean needDelivery = true; | ||
| 495 | + for (PurchaseOrderLine line : lineList) { | ||
| 496 | + Boolean shipment = line.getShipment(); | ||
| 497 | + if (!BooleanUtils.isTrue(shipment)) { | ||
| 498 | + needDelivery = false; | ||
| 499 | + break; | ||
| 500 | + } | ||
| 501 | + } | ||
| 502 | + if (needDelivery) { | ||
| 503 | + needDeliveryOrderIds.add(orderId); | ||
| 504 | + } | ||
| 505 | + } | ||
| 506 | + | ||
| 507 | + purchaseOrderInfoService.updateStatus(needDeliveryOrderIds, "DELIVERED"); | ||
| 475 | } | 508 | } |
| 476 | 509 | ||
| 477 | @Override | 510 | @Override |
| @@ -186,40 +186,49 @@ | @@ -186,40 +186,49 @@ | ||
| 186 | AND tb.standard_approved = #{vo.standardApproved} | 186 | AND tb.standard_approved = #{vo.standardApproved} |
| 187 | </if> | 187 | </if> |
| 188 | <if test="vo.workshopIdList != null and vo.workshopIdList.size() > 0"> | 188 | <if test="vo.workshopIdList != null and vo.workshopIdList.size() > 0"> |
| 189 | - OR tb.workshop_id IN | 189 | + AND tb.workshop_id IN |
| 190 | <foreach collection="vo.workshopIdList" open="(" separator="," close=")" item="item"> | 190 | <foreach collection="vo.workshopIdList" open="(" separator="," close=")" item="item"> |
| 191 | #{item} | 191 | #{item} |
| 192 | </foreach> | 192 | </foreach> |
| 193 | </if> | 193 | </if> |
| 194 | - <choose> | ||
| 195 | - <when test="vo.contractIdList != null and vo.contractIdList.size() > 0"> | ||
| 196 | - AND (tb.id IN | ||
| 197 | - <foreach collection="vo.contractIdList" open="(" separator="," close=")" item="item"> | ||
| 198 | - #{item} | ||
| 199 | - </foreach> | ||
| 200 | - <if test="vo.createById != null and vo.createById != ''"> | ||
| 201 | - OR tb.create_by_id = #{vo.createById} | ||
| 202 | - </if> | ||
| 203 | - <if test="vo.createByIdList != null and vo.createByIdList.size() > 0"> | ||
| 204 | - OR tb.create_by_id IN | ||
| 205 | - <foreach collection="vo.createByIdList" open="(" separator="," close=")" item="item"> | ||
| 206 | - #{item} | ||
| 207 | - </foreach> | ||
| 208 | - </if> | ||
| 209 | - ) | ||
| 210 | - </when> | ||
| 211 | - <otherwise> | ||
| 212 | - <if test="vo.createById != null and vo.createById != ''"> | ||
| 213 | - AND tb.create_by_id = #{vo.createById} | ||
| 214 | - </if> | ||
| 215 | - <if test="vo.createByIdList != null and vo.createByIdList.size() > 0"> | ||
| 216 | - AND tb.create_by_id IN | ||
| 217 | - <foreach collection="vo.createByIdList" open="(" separator="," close=")" item="item"> | ||
| 218 | - #{item} | ||
| 219 | - </foreach> | ||
| 220 | - </if> | ||
| 221 | - </otherwise> | ||
| 222 | - </choose> | 194 | + <if test="vo.createById != null and vo.createById != ''"> |
| 195 | + AND tb.create_by_id = #{vo.createById} | ||
| 196 | + </if> | ||
| 197 | + <if test="vo.createByIdList != null and vo.createByIdList.size() > 0"> | ||
| 198 | + AND tb.create_by_id IN | ||
| 199 | + <foreach collection="vo.createByIdList" open="(" separator="," close=")" item="item"> | ||
| 200 | + #{item} | ||
| 201 | + </foreach> | ||
| 202 | + </if> | ||
| 203 | +<!-- <choose>--> | ||
| 204 | +<!-- <when test="vo.contractIdList != null and vo.contractIdList.size() > 0">--> | ||
| 205 | +<!-- AND (tb.id IN--> | ||
| 206 | +<!-- <foreach collection="vo.contractIdList" open="(" separator="," close=")" item="item">--> | ||
| 207 | +<!-- #{item}--> | ||
| 208 | +<!-- </foreach>--> | ||
| 209 | +<!-- <if test="vo.createById != null and vo.createById != ''">--> | ||
| 210 | +<!-- OR tb.create_by_id = #{vo.createById}--> | ||
| 211 | +<!-- </if>--> | ||
| 212 | +<!-- <if test="vo.createByIdList != null and vo.createByIdList.size() > 0">--> | ||
| 213 | +<!-- OR tb.create_by_id IN--> | ||
| 214 | +<!-- <foreach collection="vo.createByIdList" open="(" separator="," close=")" item="item">--> | ||
| 215 | +<!-- #{item}--> | ||
| 216 | +<!-- </foreach>--> | ||
| 217 | +<!-- </if>--> | ||
| 218 | +<!-- )--> | ||
| 219 | +<!-- </when>--> | ||
| 220 | +<!-- <otherwise>--> | ||
| 221 | +<!-- <if test="vo.createById != null and vo.createById != ''">--> | ||
| 222 | +<!-- AND tb.create_by_id = #{vo.createById}--> | ||
| 223 | +<!-- </if>--> | ||
| 224 | +<!-- <if test="vo.createByIdList != null and vo.createByIdList.size() > 0">--> | ||
| 225 | +<!-- AND tb.create_by_id IN--> | ||
| 226 | +<!-- <foreach collection="vo.createByIdList" open="(" separator="," close=")" item="item">--> | ||
| 227 | +<!-- #{item}--> | ||
| 228 | +<!-- </foreach>--> | ||
| 229 | +<!-- </if>--> | ||
| 230 | +<!-- </otherwise>--> | ||
| 231 | +<!-- </choose>--> | ||
| 223 | </where> | 232 | </where> |
| 224 | order by tb.create_time desc | 233 | order by tb.create_time desc |
| 225 | </select> | 234 | </select> |